summaryrefslogtreecommitdiff
path: root/fpdfsdk/src
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/src')
-rw-r--r--fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp503
-rw-r--r--fpdfsdk/src/formfiller/FFL_CheckBox.cpp213
-rw-r--r--fpdfsdk/src/formfiller/FFL_ComboBox.cpp528
-rw-r--r--fpdfsdk/src/formfiller/FFL_FormFiller.cpp1116
-rw-r--r--fpdfsdk/src/formfiller/FFL_IFormFiller.cpp1467
-rw-r--r--fpdfsdk/src/formfiller/FFL_ListBox.cpp431
-rw-r--r--fpdfsdk/src/formfiller/FFL_Notify.cpp230
-rw-r--r--fpdfsdk/src/formfiller/FFL_PushButton.cpp45
-rw-r--r--fpdfsdk/src/formfiller/FFL_RadioButton.cpp205
-rw-r--r--fpdfsdk/src/formfiller/FFL_TextField.cpp473
-rw-r--r--fpdfsdk/src/formfiller/FFL_Utils.cpp173
-rw-r--r--fpdfsdk/src/fpdf_dataavail.cpp240
-rw-r--r--fpdfsdk/src/fpdf_dataavail_embeddertest.cpp3
-rw-r--r--fpdfsdk/src/fpdf_ext.cpp378
-rw-r--r--fpdfsdk/src/fpdf_flatten.cpp965
-rw-r--r--fpdfsdk/src/fpdf_progressive.cpp134
-rw-r--r--fpdfsdk/src/fpdf_searchex.cpp12
-rw-r--r--fpdfsdk/src/fpdf_sysfontinfo.cpp286
-rw-r--r--fpdfsdk/src/fpdf_transformpage.cpp584
-rw-r--r--fpdfsdk/src/fpdfdoc.cpp490
-rw-r--r--fpdfsdk/src/fpdfdoc_embeddertest.cpp3
-rw-r--r--fpdfsdk/src/fpdfeditimg.cpp114
-rw-r--r--fpdfsdk/src/fpdfeditpage.cpp562
-rw-r--r--fpdfsdk/src/fpdfformfill.cpp500
-rw-r--r--fpdfsdk/src/fpdfformfill_embeddertest.cpp4
-rw-r--r--fpdfsdk/src/fpdfppo.cpp709
-rw-r--r--fpdfsdk/src/fpdfsave.cpp119
-rw-r--r--fpdfsdk/src/fpdftext.cpp450
-rw-r--r--fpdfsdk/src/fpdftext_embeddertest.cpp71
-rw-r--r--fpdfsdk/src/fpdfview.cpp1510
-rw-r--r--fpdfsdk/src/fpdfview_embeddertest.cpp15
-rw-r--r--fpdfsdk/src/fsdk_actionhandler.cpp1450
-rw-r--r--fpdfsdk/src/fsdk_annothandler.cpp1382
-rw-r--r--fpdfsdk/src/fsdk_baseannot.cpp1603
-rw-r--r--fpdfsdk/src/fsdk_baseform.cpp4267
-rw-r--r--fpdfsdk/src/fsdk_mgr.cpp1790
-rw-r--r--fpdfsdk/src/fsdk_rendercontext.cpp53
-rw-r--r--fpdfsdk/src/fxedit/fxet_ap.cpp392
-rw-r--r--fpdfsdk/src/fxedit/fxet_edit.cpp5306
-rw-r--r--fpdfsdk/src/fxedit/fxet_list.cpp1511
-rw-r--r--fpdfsdk/src/fxedit/fxet_module.cpp37
-rw-r--r--fpdfsdk/src/fxedit/fxet_pageobjs.cpp1243
-rw-r--r--fpdfsdk/src/javascript/Consts.cpp373
-rw-r--r--fpdfsdk/src/javascript/Document.cpp2834
-rw-r--r--fpdfsdk/src/javascript/Field.cpp6336
-rw-r--r--fpdfsdk/src/javascript/Icon.cpp51
-rw-r--r--fpdfsdk/src/javascript/JS_Context.cpp474
-rw-r--r--fpdfsdk/src/javascript/JS_EventHandler.cpp927
-rw-r--r--fpdfsdk/src/javascript/JS_GlobalData.cpp840
-rw-r--r--fpdfsdk/src/javascript/JS_Object.cpp171
-rw-r--r--fpdfsdk/src/javascript/JS_Runtime.cpp484
-rw-r--r--fpdfsdk/src/javascript/JS_Value.cpp784
-rw-r--r--fpdfsdk/src/javascript/PublicMethods.cpp3818
-rw-r--r--fpdfsdk/src/javascript/app.cpp1529
-rw-r--r--fpdfsdk/src/javascript/color.cpp367
-rw-r--r--fpdfsdk/src/javascript/console.cpp60
-rw-r--r--fpdfsdk/src/javascript/event.cpp590
-rw-r--r--fpdfsdk/src/javascript/global.cpp857
-rw-r--r--fpdfsdk/src/javascript/report.cpp26
-rw-r--r--fpdfsdk/src/javascript/resource.cpp64
-rw-r--r--fpdfsdk/src/javascript/util.cpp960
-rw-r--r--fpdfsdk/src/jsapi/fxjs_v8.cpp2029
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Button.cpp46
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Caret.cpp292
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp886
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Edit.cpp2170
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_EditCtrl.cpp985
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_FontMap.cpp835
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Icon.cpp370
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_IconList.cpp893
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Label.cpp231
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_ListBox.cpp922
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_ListCtrl.cpp305
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Note.cpp2869
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_ScrollBar.cpp2158
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Signature.cpp274
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_SpecialButton.cpp99
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Utils.cpp6294
-rw-r--r--fpdfsdk/src/pdfwindow/PWL_Wnd.cpp1674
-rw-r--r--fpdfsdk/src/resource.h8
80 files changed, 37334 insertions, 39118 deletions
diff --git a/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp b/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
index 699a7e4ffe..3a8853cb24 100644
--- a/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
+++ b/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
@@ -7,293 +7,280 @@
#include "../../include/formfiller/FormFiller.h"
#include "../../include/formfiller/FFL_CBA_Fontmap.h"
-CBA_FontMap::CBA_FontMap(CPDFSDK_Annot* pAnnot, IFX_SystemHandler* pSystemHandler) :
- CPWL_FontMap(pSystemHandler),
- m_pDocument(NULL),
- m_pAnnotDict(NULL),
- m_pDefaultFont(NULL),
- m_sAPType("N")
-{
- ASSERT(pAnnot != NULL);
-
- CPDF_Page* pPage = pAnnot->GetPDFPage();
-
- m_pDocument = pPage->m_pDocument;
- m_pAnnotDict = pAnnot->GetPDFAnnot()->GetAnnotDict();
+CBA_FontMap::CBA_FontMap(CPDFSDK_Annot* pAnnot,
+ IFX_SystemHandler* pSystemHandler)
+ : CPWL_FontMap(pSystemHandler),
+ m_pDocument(NULL),
+ m_pAnnotDict(NULL),
+ m_pDefaultFont(NULL),
+ m_sAPType("N") {
+ ASSERT(pAnnot != NULL);
+
+ CPDF_Page* pPage = pAnnot->GetPDFPage();
+
+ m_pDocument = pPage->m_pDocument;
+ m_pAnnotDict = pAnnot->GetPDFAnnot()->GetAnnotDict();
}
-CBA_FontMap::CBA_FontMap(CPDF_Document* pDocument, CPDF_Dictionary* pAnnotDict,
- IFX_SystemHandler* pSystemHandler) :
- CPWL_FontMap(pSystemHandler),
- m_pDocument(pDocument),
- m_pAnnotDict(pAnnotDict),
- m_pDefaultFont(NULL),
- m_sAPType("N")
-{
+CBA_FontMap::CBA_FontMap(CPDF_Document* pDocument,
+ CPDF_Dictionary* pAnnotDict,
+ IFX_SystemHandler* pSystemHandler)
+ : CPWL_FontMap(pSystemHandler),
+ m_pDocument(pDocument),
+ m_pAnnotDict(pAnnotDict),
+ m_pDefaultFont(NULL),
+ m_sAPType("N") {}
+
+CBA_FontMap::~CBA_FontMap() {}
+
+void CBA_FontMap::Reset() {
+ Empty();
+ m_pDefaultFont = NULL;
+ m_sDefaultFontName = "";
}
-CBA_FontMap::~CBA_FontMap()
-{
+void CBA_FontMap::Initial(const FX_CHAR* fontname) {
+ int32_t nCharset = DEFAULT_CHARSET;
+
+ if (!m_pDefaultFont) {
+ m_pDefaultFont = GetAnnotDefaultFont(m_sDefaultFontName);
+ if (m_pDefaultFont) {
+ if (const CFX_SubstFont* pSubstFont = m_pDefaultFont->GetSubstFont())
+ nCharset = pSubstFont->m_Charset;
+ else {
+ if (m_sDefaultFontName == "Wingdings" ||
+ m_sDefaultFontName == "Wingdings2" ||
+ m_sDefaultFontName == "Wingdings3" ||
+ m_sDefaultFontName == "Webdings")
+ nCharset = SYMBOL_CHARSET;
+ else
+ nCharset = ANSI_CHARSET;
+ }
+ AddFontData(m_pDefaultFont, m_sDefaultFontName, nCharset);
+ AddFontToAnnotDict(m_pDefaultFont, m_sDefaultFontName);
+ }
+ }
+
+ if (nCharset != ANSI_CHARSET)
+ CPWL_FontMap::Initial(fontname);
}
-void CBA_FontMap::Reset()
-{
- Empty();
- m_pDefaultFont = NULL;
- m_sDefaultFontName = "";
-}
-
-void CBA_FontMap::Initial(const FX_CHAR* fontname)
-{
- int32_t nCharset = DEFAULT_CHARSET;
-
- if (!m_pDefaultFont)
- {
- m_pDefaultFont = GetAnnotDefaultFont(m_sDefaultFontName);
- if (m_pDefaultFont)
- {
- if (const CFX_SubstFont* pSubstFont = m_pDefaultFont->GetSubstFont())
- nCharset = pSubstFont->m_Charset;
- else
- {
- if (m_sDefaultFontName == "Wingdings" || m_sDefaultFontName == "Wingdings2" ||
- m_sDefaultFontName == "Wingdings3" || m_sDefaultFontName == "Webdings")
- nCharset = SYMBOL_CHARSET;
- else
- nCharset = ANSI_CHARSET;
- }
- AddFontData(m_pDefaultFont, m_sDefaultFontName, nCharset);
- AddFontToAnnotDict(m_pDefaultFont, m_sDefaultFontName);
- }
- }
-
- if (nCharset != ANSI_CHARSET)
- CPWL_FontMap::Initial(fontname);
-}
+void CBA_FontMap::SetDefaultFont(CPDF_Font* pFont,
+ const CFX_ByteString& sFontName) {
+ ASSERT(pFont != NULL);
-void CBA_FontMap::SetDefaultFont(CPDF_Font * pFont, const CFX_ByteString & sFontName)
-{
- ASSERT(pFont != NULL);
+ if (m_pDefaultFont)
+ return;
- if (m_pDefaultFont) return;
+ m_pDefaultFont = pFont;
+ m_sDefaultFontName = sFontName;
- m_pDefaultFont = pFont;
- m_sDefaultFontName = sFontName;
+ // if (m_sDefaultFontName.IsEmpty())
+ // m_sDefaultFontName = pFont->GetFontTypeName();
-// if (m_sDefaultFontName.IsEmpty())
-// m_sDefaultFontName = pFont->GetFontTypeName();
-
- int32_t nCharset = DEFAULT_CHARSET;
- if (const CFX_SubstFont* pSubstFont = m_pDefaultFont->GetSubstFont())
- nCharset = pSubstFont->m_Charset;
- AddFontData(m_pDefaultFont, m_sDefaultFontName, nCharset);
+ int32_t nCharset = DEFAULT_CHARSET;
+ if (const CFX_SubstFont* pSubstFont = m_pDefaultFont->GetSubstFont())
+ nCharset = pSubstFont->m_Charset;
+ AddFontData(m_pDefaultFont, m_sDefaultFontName, nCharset);
}
-CPDF_Font* CBA_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, int32_t nCharset)
-{
- ASSERT(m_pAnnotDict != NULL);
+CPDF_Font* CBA_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias,
+ int32_t nCharset) {
+ ASSERT(m_pAnnotDict != NULL);
- if (m_pAnnotDict->GetString("Subtype") == "Widget")
- {
- CPDF_Document* pDocument = GetDocument();
- ASSERT(pDocument != NULL);
+ if (m_pAnnotDict->GetString("Subtype") == "Widget") {
+ CPDF_Document* pDocument = GetDocument();
+ ASSERT(pDocument != NULL);
- CPDF_Dictionary * pRootDict = pDocument->GetRoot();
- if (!pRootDict) return NULL;
+ CPDF_Dictionary* pRootDict = pDocument->GetRoot();
+ if (!pRootDict)
+ return NULL;
- CPDF_Dictionary* pAcroFormDict = pRootDict->GetDict("AcroForm");
- if (!pAcroFormDict) return NULL;
+ CPDF_Dictionary* pAcroFormDict = pRootDict->GetDict("AcroForm");
+ if (!pAcroFormDict)
+ return NULL;
- CPDF_Dictionary * pDRDict = pAcroFormDict->GetDict("DR");
- if (!pDRDict) return NULL;
+ CPDF_Dictionary* pDRDict = pAcroFormDict->GetDict("DR");
+ if (!pDRDict)
+ return NULL;
- return FindResFontSameCharset(pDRDict, sFontAlias, nCharset);
- }
+ return FindResFontSameCharset(pDRDict, sFontAlias, nCharset);
+ }
- return NULL;
+ return NULL;
}
-CPDF_Document* CBA_FontMap::GetDocument()
-{
- return m_pDocument;
+CPDF_Document* CBA_FontMap::GetDocument() {
+ return m_pDocument;
}
-CPDF_Font* CBA_FontMap::FindResFontSameCharset(CPDF_Dictionary* pResDict, CFX_ByteString& sFontAlias,
- int32_t nCharset)
-{
- if (!pResDict) return NULL;
-
- CPDF_Document* pDocument = GetDocument();
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pFonts = pResDict->GetDict("Font");
- if (pFonts == NULL) return NULL;
-
- CPDF_Font* pFind = NULL;
-
- FX_POSITION pos = pFonts->GetStartPos();
- while (pos)
- {
- CPDF_Object* pObj = NULL;
- CFX_ByteString csKey;
- pObj = pFonts->GetNextElement(pos, csKey);
- if (pObj == NULL) continue;
-
- CPDF_Object* pDirect = pObj->GetDirect();
- if (pDirect == NULL || pDirect->GetType() != PDFOBJ_DICTIONARY) continue;
-
- CPDF_Dictionary* pElement = (CPDF_Dictionary*)pDirect;
- if (pElement->GetString("Type") != "Font") continue;
-
- CPDF_Font* pFont = pDocument->LoadFont(pElement);
- if (pFont == NULL) continue;
- const CFX_SubstFont* pSubst = pFont->GetSubstFont();
- if (pSubst == NULL) continue;
- if (pSubst->m_Charset == nCharset)
- {
- sFontAlias = csKey;
- pFind = pFont;
- }
- }
- return pFind;
+CPDF_Font* CBA_FontMap::FindResFontSameCharset(CPDF_Dictionary* pResDict,
+ CFX_ByteString& sFontAlias,
+ int32_t nCharset) {
+ if (!pResDict)
+ return NULL;
+
+ CPDF_Document* pDocument = GetDocument();
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pFonts = pResDict->GetDict("Font");
+ if (pFonts == NULL)
+ return NULL;
+
+ CPDF_Font* pFind = NULL;
+
+ FX_POSITION pos = pFonts->GetStartPos();
+ while (pos) {
+ CPDF_Object* pObj = NULL;
+ CFX_ByteString csKey;
+ pObj = pFonts->GetNextElement(pos, csKey);
+ if (pObj == NULL)
+ continue;
+
+ CPDF_Object* pDirect = pObj->GetDirect();
+ if (pDirect == NULL || pDirect->GetType() != PDFOBJ_DICTIONARY)
+ continue;
+
+ CPDF_Dictionary* pElement = (CPDF_Dictionary*)pDirect;
+ if (pElement->GetString("Type") != "Font")
+ continue;
+
+ CPDF_Font* pFont = pDocument->LoadFont(pElement);
+ if (pFont == NULL)
+ continue;
+ const CFX_SubstFont* pSubst = pFont->GetSubstFont();
+ if (pSubst == NULL)
+ continue;
+ if (pSubst->m_Charset == nCharset) {
+ sFontAlias = csKey;
+ pFind = pFont;
+ }
+ }
+ return pFind;
}
-void CBA_FontMap::AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias)
-{
- AddFontToAnnotDict(pFont, sFontAlias);
+void CBA_FontMap::AddedFont(CPDF_Font* pFont,
+ const CFX_ByteString& sFontAlias) {
+ AddFontToAnnotDict(pFont, sFontAlias);
}
-void CBA_FontMap::AddFontToAnnotDict(CPDF_Font* pFont, const CFX_ByteString& sAlias)
-{
- if (!pFont) return;
-
- ASSERT(m_pAnnotDict != NULL);
- ASSERT(m_pDocument != NULL);
-
- CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDict("AP");
-
- if (pAPDict == NULL)
- {
- pAPDict = new CPDF_Dictionary;
- m_pAnnotDict->SetAt("AP", pAPDict);
- }
-
- //to avoid checkbox and radiobutton
- CPDF_Object* pObject = pAPDict->GetElement(m_sAPType);
- if (pObject && pObject->GetType() == PDFOBJ_DICTIONARY)
- return;
-
- CPDF_Stream* pStream = pAPDict->GetStream(m_sAPType);
- if (pStream == NULL)
- {
- pStream = new CPDF_Stream(NULL, 0, NULL);
- int32_t objnum = m_pDocument->AddIndirectObject(pStream);
- pAPDict->SetAtReference(m_sAPType, m_pDocument, objnum);
- }
-
- CPDF_Dictionary * pStreamDict = pStream->GetDict();
-
- if (!pStreamDict)
- {
- pStreamDict = new CPDF_Dictionary;
- pStream->InitStream(NULL, 0, pStreamDict);
- }
-
- if (pStreamDict)
- {
- CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources");
- if (!pStreamResList)
- {
- pStreamResList = new CPDF_Dictionary();
- pStreamDict->SetAt("Resources", pStreamResList);
- }
-
- if (pStreamResList)
- {
- CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDict("Font");
- if (!pStreamResFontList)
- {
- pStreamResFontList = new CPDF_Dictionary;
- int32_t objnum = m_pDocument->AddIndirectObject(pStreamResFontList);
- pStreamResList->SetAtReference("Font", m_pDocument, objnum);
- }
- if (!pStreamResFontList->KeyExist(sAlias))
- pStreamResFontList->SetAtReference(sAlias, m_pDocument, pFont->GetFontDict());
- }
- }
+void CBA_FontMap::AddFontToAnnotDict(CPDF_Font* pFont,
+ const CFX_ByteString& sAlias) {
+ if (!pFont)
+ return;
+
+ ASSERT(m_pAnnotDict != NULL);
+ ASSERT(m_pDocument != NULL);
+
+ CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDict("AP");
+
+ if (pAPDict == NULL) {
+ pAPDict = new CPDF_Dictionary;
+ m_pAnnotDict->SetAt("AP", pAPDict);
+ }
+
+ // to avoid checkbox and radiobutton
+ CPDF_Object* pObject = pAPDict->GetElement(m_sAPType);
+ if (pObject && pObject->GetType() == PDFOBJ_DICTIONARY)
+ return;
+
+ CPDF_Stream* pStream = pAPDict->GetStream(m_sAPType);
+ if (pStream == NULL) {
+ pStream = new CPDF_Stream(NULL, 0, NULL);
+ int32_t objnum = m_pDocument->AddIndirectObject(pStream);
+ pAPDict->SetAtReference(m_sAPType, m_pDocument, objnum);
+ }
+
+ CPDF_Dictionary* pStreamDict = pStream->GetDict();
+
+ if (!pStreamDict) {
+ pStreamDict = new CPDF_Dictionary;
+ pStream->InitStream(NULL, 0, pStreamDict);
+ }
+
+ if (pStreamDict) {
+ CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources");
+ if (!pStreamResList) {
+ pStreamResList = new CPDF_Dictionary();
+ pStreamDict->SetAt("Resources", pStreamResList);
+ }
+
+ if (pStreamResList) {
+ CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDict("Font");
+ if (!pStreamResFontList) {
+ pStreamResFontList = new CPDF_Dictionary;
+ int32_t objnum = m_pDocument->AddIndirectObject(pStreamResFontList);
+ pStreamResList->SetAtReference("Font", m_pDocument, objnum);
+ }
+ if (!pStreamResFontList->KeyExist(sAlias))
+ pStreamResFontList->SetAtReference(sAlias, m_pDocument,
+ pFont->GetFontDict());
+ }
+ }
}
-CPDF_Font* CBA_FontMap::GetAnnotDefaultFont(CFX_ByteString &sAlias)
-{
- ASSERT(m_pAnnotDict != NULL);
- ASSERT(m_pDocument != NULL);
-
- CPDF_Dictionary* pAcroFormDict = NULL;
-
- FX_BOOL bWidget = (m_pAnnotDict->GetString("Subtype") == "Widget");
-
- if (bWidget)
- {
- if (CPDF_Dictionary * pRootDict = m_pDocument->GetRoot())
- pAcroFormDict = pRootDict->GetDict("AcroForm");
- }
-
- CFX_ByteString sDA;
- CPDF_Object* pObj;
- if ((pObj = FPDF_GetFieldAttr(m_pAnnotDict, "DA")))
- sDA = pObj->GetString();
-
- if (bWidget)
- {
- if (sDA.IsEmpty())
- {
- pObj = FPDF_GetFieldAttr(pAcroFormDict, "DA");
- sDA = pObj ? pObj->GetString() : CFX_ByteString();
- }
- }
-
- CPDF_Dictionary * pFontDict = NULL;
-
- if (!sDA.IsEmpty())
- {
- CPDF_SimpleParser syntax(sDA);
- syntax.FindTagParam("Tf", 2);
- CFX_ByteString sFontName = syntax.GetWord();
- sAlias = PDF_NameDecode(sFontName).Mid(1);
-
- if (CPDF_Dictionary * pDRDict = m_pAnnotDict->GetDict("DR"))
- if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDict("Font"))
- pFontDict = pDRFontDict->GetDict(sAlias);
-
- if (!pFontDict)
- if (CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDict("AP"))
- if (CPDF_Dictionary* pNormalDict = pAPDict->GetDict("N"))
- if (CPDF_Dictionary* pNormalResDict = pNormalDict->GetDict("Resources"))
- if (CPDF_Dictionary* pResFontDict = pNormalResDict->GetDict("Font"))
- pFontDict = pResFontDict->GetDict(sAlias);
-
- if (bWidget)
- {
- if (!pFontDict)
- {
- if (pAcroFormDict)
- {
- if (CPDF_Dictionary * pDRDict = pAcroFormDict->GetDict("DR"))
- if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDict("Font"))
- pFontDict = pDRFontDict->GetDict(sAlias);
- }
- }
- }
- }
-
- return pFontDict ? m_pDocument->LoadFont(pFontDict) : nullptr;
+CPDF_Font* CBA_FontMap::GetAnnotDefaultFont(CFX_ByteString& sAlias) {
+ ASSERT(m_pAnnotDict != NULL);
+ ASSERT(m_pDocument != NULL);
+
+ CPDF_Dictionary* pAcroFormDict = NULL;
+
+ FX_BOOL bWidget = (m_pAnnotDict->GetString("Subtype") == "Widget");
+
+ if (bWidget) {
+ if (CPDF_Dictionary* pRootDict = m_pDocument->GetRoot())
+ pAcroFormDict = pRootDict->GetDict("AcroForm");
+ }
+
+ CFX_ByteString sDA;
+ CPDF_Object* pObj;
+ if ((pObj = FPDF_GetFieldAttr(m_pAnnotDict, "DA")))
+ sDA = pObj->GetString();
+
+ if (bWidget) {
+ if (sDA.IsEmpty()) {
+ pObj = FPDF_GetFieldAttr(pAcroFormDict, "DA");
+ sDA = pObj ? pObj->GetString() : CFX_ByteString();
+ }
+ }
+
+ CPDF_Dictionary* pFontDict = NULL;
+
+ if (!sDA.IsEmpty()) {
+ CPDF_SimpleParser syntax(sDA);
+ syntax.FindTagParam("Tf", 2);
+ CFX_ByteString sFontName = syntax.GetWord();
+ sAlias = PDF_NameDecode(sFontName).Mid(1);
+
+ if (CPDF_Dictionary* pDRDict = m_pAnnotDict->GetDict("DR"))
+ if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDict("Font"))
+ pFontDict = pDRFontDict->GetDict(sAlias);
+
+ if (!pFontDict)
+ if (CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDict("AP"))
+ if (CPDF_Dictionary* pNormalDict = pAPDict->GetDict("N"))
+ if (CPDF_Dictionary* pNormalResDict =
+ pNormalDict->GetDict("Resources"))
+ if (CPDF_Dictionary* pResFontDict = pNormalResDict->GetDict("Font"))
+ pFontDict = pResFontDict->GetDict(sAlias);
+
+ if (bWidget) {
+ if (!pFontDict) {
+ if (pAcroFormDict) {
+ if (CPDF_Dictionary* pDRDict = pAcroFormDict->GetDict("DR"))
+ if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDict("Font"))
+ pFontDict = pDRFontDict->GetDict(sAlias);
+ }
+ }
+ }
+ }
+
+ return pFontDict ? m_pDocument->LoadFont(pFontDict) : nullptr;
}
-void CBA_FontMap::SetAPType(const CFX_ByteString& sAPType)
-{
- m_sAPType = sAPType;
+void CBA_FontMap::SetAPType(const CFX_ByteString& sAPType) {
+ m_sAPType = sAPType;
- Reset();
- Initial();
+ Reset();
+ Initial();
}
-
diff --git a/fpdfsdk/src/formfiller/FFL_CheckBox.cpp b/fpdfsdk/src/formfiller/FFL_CheckBox.cpp
index 55d2d45bc2..42c6251d68 100644
--- a/fpdfsdk/src/formfiller/FFL_CheckBox.cpp
+++ b/fpdfsdk/src/formfiller/FFL_CheckBox.cpp
@@ -8,137 +8,122 @@
#include "../../include/formfiller/FFL_FormFiller.h"
#include "../../include/formfiller/FFL_CheckBox.h"
+/* ------------------------------- CFFL_CheckBox -------------------------------
+ */
-/* ------------------------------- CFFL_CheckBox ------------------------------- */
+CFFL_CheckBox::CFFL_CheckBox(CPDFDoc_Environment* pApp, CPDFSDK_Widget* pWidget)
+ : CFFL_Button(pApp, pWidget) {}
-CFFL_CheckBox::CFFL_CheckBox(CPDFDoc_Environment* pApp, CPDFSDK_Widget* pWidget) :
- CFFL_Button(pApp, pWidget)
-{
-}
-
-CFFL_CheckBox::~CFFL_CheckBox()
-{
-}
+CFFL_CheckBox::~CFFL_CheckBox() {}
-CPWL_Wnd* CFFL_CheckBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_CheckBox* pWnd = new CPWL_CheckBox();
- pWnd->Create(cp);
+CPWL_Wnd* CFFL_CheckBox::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_CheckBox* pWnd = new CPWL_CheckBox();
+ pWnd->Create(cp);
- ASSERT(m_pWidget != NULL);
- pWnd->SetCheck(m_pWidget->IsChecked());
+ ASSERT(m_pWidget != NULL);
+ pWnd->SetCheck(m_pWidget->IsChecked());
- return pWnd;
+ return pWnd;
}
-FX_BOOL CFFL_CheckBox::OnKeyDown(CPDFSDK_Annot* pAnnot, FX_UINT nKeyCode, FX_UINT nFlags)
-{
- switch (nKeyCode)
- {
- case FWL_VKEY_Return:
- case FWL_VKEY_Space:
- return TRUE;
- default:
- return CFFL_FormFiller::OnKeyDown(pAnnot, nKeyCode, nFlags);
- }
+FX_BOOL CFFL_CheckBox::OnKeyDown(CPDFSDK_Annot* pAnnot,
+ FX_UINT nKeyCode,
+ FX_UINT nFlags) {
+ switch (nKeyCode) {
+ case FWL_VKEY_Return:
+ case FWL_VKEY_Space:
+ return TRUE;
+ default:
+ return CFFL_FormFiller::OnKeyDown(pAnnot, nKeyCode, nFlags);
+ }
}
-FX_BOOL CFFL_CheckBox::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- switch (nChar)
- {
- case FWL_VKEY_Return:
- case FWL_VKEY_Space:
- {
- CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
- ASSERT(pIFormFiller != NULL);
-
- CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
- ASSERT(pPageView != NULL);
-
- FX_BOOL bReset = FALSE;
- FX_BOOL bExit = FALSE;
-
- pIFormFiller->OnButtonUp(m_pWidget, pPageView, bReset, bExit,nFlags);
-
- if (bReset) return TRUE;
- if (bExit) return TRUE;
-
- CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
-
- if (CPWL_CheckBox * pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, TRUE))
- pWnd->SetCheck(!pWnd->IsChecked());
-
- CommitData(pPageView,nFlags);
- return TRUE;
- }
- default:
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
- }
+FX_BOOL CFFL_CheckBox::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ switch (nChar) {
+ case FWL_VKEY_Return:
+ case FWL_VKEY_Space: {
+ CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
+ ASSERT(pIFormFiller != NULL);
+
+ CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
+ ASSERT(pPageView != NULL);
+
+ FX_BOOL bReset = FALSE;
+ FX_BOOL bExit = FALSE;
+
+ pIFormFiller->OnButtonUp(m_pWidget, pPageView, bReset, bExit, nFlags);
+
+ if (bReset)
+ return TRUE;
+ if (bExit)
+ return TRUE;
+
+ CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+
+ if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, TRUE))
+ pWnd->SetCheck(!pWnd->IsChecked());
+
+ CommitData(pPageView, nFlags);
+ return TRUE;
+ }
+ default:
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+ }
}
-FX_BOOL CFFL_CheckBox::OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- CFFL_Button::OnLButtonUp(pPageView, pAnnot, nFlags, point);
+FX_BOOL CFFL_CheckBox::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ CFFL_Button::OnLButtonUp(pPageView, pAnnot, nFlags, point);
- if (IsValid())
- {
- if (CPWL_CheckBox * pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, TRUE))
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- pWnd->SetCheck(!pWidget->IsChecked());
- // pWnd->SetCheck(!pWnd->IsChecked());
- }
+ if (IsValid()) {
+ if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, TRUE)) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ pWnd->SetCheck(!pWidget->IsChecked());
+ // pWnd->SetCheck(!pWnd->IsChecked());
+ }
- if (!CommitData(pPageView, nFlags)) return FALSE;
- }
+ if (!CommitData(pPageView, nFlags))
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CFFL_CheckBox::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
+FX_BOOL CFFL_CheckBox::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- ASSERT(m_pWidget != NULL);
+ if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, FALSE)) {
+ return pWnd->IsChecked() != m_pWidget->IsChecked();
+ }
- if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, FALSE))
- {
- return pWnd->IsChecked() != m_pWidget->IsChecked();
- }
-
- return FALSE;
+ return FALSE;
}
-void CFFL_CheckBox::SaveData(CPDFSDK_PageView* pPageView)
-{
-
- ASSERT(m_pWidget != NULL);
-
- if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, FALSE))
- {
-
- FX_BOOL bNewChecked = pWnd->IsChecked();
-
-
- if (bNewChecked)
- {
- CPDF_FormField* pField = m_pWidget->GetFormField();
- ASSERT(pField != NULL);
-
- for (int32_t i=0,sz=pField->CountControls(); i<sz; i++)
- {
- if (CPDF_FormControl* pCtrl = pField->GetControl(i))
- {
- if (pCtrl->IsChecked())
- {
- break;
- }
- }
- }
- }
-
- m_pWidget->SetCheck(bNewChecked, FALSE);
- m_pWidget->UpdateField();
- SetChangeMark();
- }
-
+void CFFL_CheckBox::SaveData(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
+
+ if (CPWL_CheckBox* pWnd = (CPWL_CheckBox*)GetPDFWindow(pPageView, FALSE)) {
+ FX_BOOL bNewChecked = pWnd->IsChecked();
+
+ if (bNewChecked) {
+ CPDF_FormField* pField = m_pWidget->GetFormField();
+ ASSERT(pField != NULL);
+
+ for (int32_t i = 0, sz = pField->CountControls(); i < sz; i++) {
+ if (CPDF_FormControl* pCtrl = pField->GetControl(i)) {
+ if (pCtrl->IsChecked()) {
+ break;
+ }
+ }
+ }
+ }
+
+ m_pWidget->SetCheck(bNewChecked, FALSE);
+ m_pWidget->UpdateField();
+ SetChangeMark();
+ }
}
diff --git a/fpdfsdk/src/formfiller/FFL_ComboBox.cpp b/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
index 841b45ecba..b49726d5ab 100644
--- a/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
+++ b/fpdfsdk/src/formfiller/FFL_ComboBox.cpp
@@ -10,381 +10,335 @@
#include "../../include/formfiller/FFL_CBA_Fontmap.h"
#include "../../include/formfiller/FFL_ComboBox.h"
-
-/* ------------------------------- CFFL_ComboBox ------------------------------- */
-
-CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) :
- CFFL_FormFiller(pApp, pAnnot), m_pFontMap( NULL )
-{
- m_State.nIndex = 0;
- m_State.nStart = 0;
- m_State.nEnd = 0;
+/* ------------------------------- CFFL_ComboBox -------------------------------
+ */
+
+CFFL_ComboBox::CFFL_ComboBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot)
+ : CFFL_FormFiller(pApp, pAnnot), m_pFontMap(NULL) {
+ m_State.nIndex = 0;
+ m_State.nStart = 0;
+ m_State.nEnd = 0;
}
-CFFL_ComboBox::~CFFL_ComboBox()
-{
- delete m_pFontMap;
+CFFL_ComboBox::~CFFL_ComboBox() {
+ delete m_pFontMap;
}
-PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam()
-{
- PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
+PWL_CREATEPARAM CFFL_ComboBox::GetCreateParam() {
+ PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
- ASSERT(m_pWidget != NULL);
+ ASSERT(m_pWidget != NULL);
- int nFlags = m_pWidget->GetFieldFlags();
+ int nFlags = m_pWidget->GetFieldFlags();
- if (nFlags & FIELDFLAG_EDIT)
- {
- cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT;
- }
+ if (nFlags & FIELDFLAG_EDIT) {
+ cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT;
+ }
- if (!m_pFontMap)
- {
- m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler());
- m_pFontMap->Initial();
- }
+ if (!m_pFontMap) {
+ m_pFontMap = new CBA_FontMap(m_pWidget, GetSystemHandler());
+ m_pFontMap->Initial();
+ }
- cp.pFontMap = m_pFontMap;
- cp.pFocusHandler = this;
+ cp.pFontMap = m_pFontMap;
+ cp.pFocusHandler = this;
- return cp;
+ return cp;
}
-CPWL_Wnd* CFFL_ComboBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_ComboBox * pWnd = new CPWL_ComboBox();
- pWnd->AttachFFLData(this);
- pWnd->Create(cp);
-
- CFFL_IFormFiller* pFormFiller = m_pApp->GetIFormFiller();
- pWnd->SetFillerNotify(pFormFiller);
-
- int32_t nCurSel = m_pWidget->GetSelectedIndex(0);
- CFX_WideString swText;
- if (nCurSel < 0)
- swText = m_pWidget->GetValue();
- else
- swText = m_pWidget->GetOptionLabel(nCurSel);
-
- for (int32_t i=0,sz=m_pWidget->CountOptions(); i<sz; i++)
- {
- pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str());
- }
-
- pWnd->SetSelect(nCurSel);
- pWnd->SetText(swText.c_str());
- return pWnd;
+CPWL_Wnd* CFFL_ComboBox::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_ComboBox* pWnd = new CPWL_ComboBox();
+ pWnd->AttachFFLData(this);
+ pWnd->Create(cp);
+
+ CFFL_IFormFiller* pFormFiller = m_pApp->GetIFormFiller();
+ pWnd->SetFillerNotify(pFormFiller);
+
+ int32_t nCurSel = m_pWidget->GetSelectedIndex(0);
+ CFX_WideString swText;
+ if (nCurSel < 0)
+ swText = m_pWidget->GetValue();
+ else
+ swText = m_pWidget->GetOptionLabel(nCurSel);
+
+ for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) {
+ pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str());
+ }
+
+ pWnd->SetSelect(nCurSel);
+ pWnd->SetText(swText.c_str());
+ return pWnd;
}
-
-FX_BOOL CFFL_ComboBox::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+FX_BOOL CFFL_ComboBox::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
}
-FX_BOOL CFFL_ComboBox::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
- CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE);
- if (!pWnd)
- return FALSE;
+FX_BOOL CFFL_ComboBox::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE);
+ if (!pWnd)
+ return FALSE;
- int32_t nCurSel = pWnd->GetSelect();
- if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT))
- return nCurSel != m_pWidget->GetSelectedIndex(0);
+ int32_t nCurSel = pWnd->GetSelect();
+ if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT))
+ return nCurSel != m_pWidget->GetSelectedIndex(0);
- if (nCurSel >= 0)
- return nCurSel != m_pWidget->GetSelectedIndex(0);
+ if (nCurSel >= 0)
+ return nCurSel != m_pWidget->GetSelectedIndex(0);
- return pWnd->GetText() != m_pWidget->GetValue();
+ return pWnd->GetText() != m_pWidget->GetValue();
}
-void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
-
- if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- CFX_WideString swText = pWnd->GetText();
- int32_t nCurSel = pWnd->GetSelect();
-
- //mantis:0004157
- FX_BOOL bSetValue = TRUE;
-
- if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT)
- {
- if (nCurSel >= 0)
- {
- if (swText != m_pWidget->GetOptionLabel(nCurSel))
- bSetValue = TRUE;
- else
- bSetValue = FALSE;
- }
- else
- bSetValue = TRUE;
- }
- else
- bSetValue = FALSE;
+void CFFL_ComboBox::SaveData(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- CFX_WideString sOldValue;
+ if (CPWL_ComboBox* pWnd = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ CFX_WideString swText = pWnd->GetText();
+ int32_t nCurSel = pWnd->GetSelect();
+ // mantis:0004157
+ FX_BOOL bSetValue = TRUE;
- if (bSetValue)
- {
- sOldValue = m_pWidget->GetValue();
- m_pWidget->SetValue(swText, FALSE);
- }
+ if (m_pWidget->GetFieldFlags() & FIELDFLAG_EDIT) {
+ if (nCurSel >= 0) {
+ if (swText != m_pWidget->GetOptionLabel(nCurSel))
+ bSetValue = TRUE;
else
- {
- m_pWidget->GetSelectedIndex(0);
- m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE);
- }
-
- m_pWidget->ResetFieldAppearance(TRUE);
- m_pWidget->UpdateField();
- SetChangeMark();
-
- m_pWidget->GetPDFPage();
+ bSetValue = FALSE;
+ } else
+ bSetValue = TRUE;
+ } else
+ bSetValue = FALSE;
+
+ CFX_WideString sOldValue;
+
+ if (bSetValue) {
+ sOldValue = m_pWidget->GetValue();
+ m_pWidget->SetValue(swText, FALSE);
+ } else {
+ m_pWidget->GetSelectedIndex(0);
+ m_pWidget->SetOptionSelection(nCurSel, TRUE, FALSE);
+ }
+ m_pWidget->ResetFieldAppearance(TRUE);
+ m_pWidget->UpdateField();
+ SetChangeMark();
- }
+ m_pWidget->GetPDFPage();
+ }
}
- void CFFL_ComboBox::GetActionData( CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type, PDFSDK_FieldAction& fa)
-{
- switch (type)
- {
+void CFFL_ComboBox::GetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& fa) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox)
- {
- fa.bFieldFull = pEdit->IsTextFull();
- int nSelStart = 0;
- int nSelEnd = 0;
- pEdit->GetSel(nSelStart, nSelEnd);
- fa.nSelEnd = nSelEnd;
- fa.nSelStart = nSelStart;
- fa.sValue = pEdit->GetText();
- fa.sChangeEx = GetSelectExportText();
-
- if (fa.bFieldFull)
- {
- fa.sChange = L"";
- fa.sChangeEx = L"";
- }
- }
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) {
+ fa.bFieldFull = pEdit->IsTextFull();
+ int nSelStart = 0;
+ int nSelEnd = 0;
+ pEdit->GetSel(nSelStart, nSelEnd);
+ fa.nSelEnd = nSelEnd;
+ fa.nSelStart = nSelStart;
+ fa.sValue = pEdit->GetText();
+ fa.sChangeEx = GetSelectExportText();
+
+ if (fa.bFieldFull) {
+ fa.sChange = L"";
+ fa.sChangeEx = L"";
+ }
}
- break;
+ }
+ break;
case CPDF_AAction::Validate:
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox)
- {
- fa.sValue = pEdit->GetText();
- }
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) {
+ fa.sValue = pEdit->GetText();
}
- break;
+ }
+ break;
case CPDF_AAction::LoseFocus:
case CPDF_AAction::GetFocus:
- ASSERT(m_pWidget != NULL);
- fa.sValue = m_pWidget->GetValue();
- break;
+ ASSERT(m_pWidget != NULL);
+ fa.sValue = m_pWidget->GetValue();
+ break;
default:
- break;
- }
+ break;
+ }
}
-
-
-void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- const PDFSDK_FieldAction& fa)
-{
- switch (type)
- {
+void CFFL_ComboBox::SetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& fa) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox)
- {
- pEdit->SetSel(fa.nSelStart, fa.nSelEnd);
- pEdit->ReplaceSel(fa.sChange.c_str());
- }
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) {
+ pEdit->SetSel(fa.nSelStart, fa.nSelEnd);
+ pEdit->ReplaceSel(fa.sChange.c_str());
}
- break;
+ }
+ break;
default:
- break;
- }
+ break;
+ }
}
-FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type, const PDFSDK_FieldAction& faOld,
- const PDFSDK_FieldAction& faNew)
-{
- switch (type)
- {
+FX_BOOL CFFL_ComboBox::IsActionDataChanged(CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& faOld,
+ const PDFSDK_FieldAction& faNew) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || faOld.nSelStart != faNew.nSelStart ||
- faOld.sChange != faNew.sChange;
+ return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) ||
+ faOld.nSelStart != faNew.nSelStart ||
+ faOld.sChange != faNew.sChange;
default:
- break;
- }
+ break;
+ }
- return FALSE;
+ return FALSE;
}
-void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView)
-{
- ASSERT(pPageView != NULL);
+void CFFL_ComboBox::SaveState(CPDFSDK_PageView* pPageView) {
+ ASSERT(pPageView != NULL);
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- m_State.nIndex = pComboBox->GetSelect();
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ m_State.nIndex = pComboBox->GetSelect();
- if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox)
- {
- pEdit->GetSel(m_State.nStart, m_State.nEnd);
- m_State.sValue = pEdit->GetText();
- }
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) {
+ pEdit->GetSel(m_State.nStart, m_State.nEnd);
+ m_State.sValue = pEdit->GetText();
}
+ }
}
-void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView)
-{
- ASSERT(pPageView != NULL);
-
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, TRUE))
- {
- if (m_State.nIndex >= 0)
- pComboBox->SetSelect(m_State.nIndex);
- else
- {
- if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox)
- {
- pEdit->SetText(m_State.sValue.c_str());
- pEdit->SetSel(m_State.nStart, m_State.nEnd);
- }
- }
+void CFFL_ComboBox::RestoreState(CPDFSDK_PageView* pPageView) {
+ ASSERT(pPageView != NULL);
+
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, TRUE)) {
+ if (m_State.nIndex >= 0)
+ pComboBox->SetSelect(m_State.nIndex);
+ else {
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)*pComboBox) {
+ pEdit->SetText(m_State.sValue.c_str());
+ pEdit->SetSel(m_State.nStart, m_State.nEnd);
+ }
}
+ }
}
-CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue)
-{
- if (bRestoreValue)
- SaveState(pPageView);
+CPWL_Wnd* CFFL_ComboBox::ResetPDFWindow(CPDFSDK_PageView* pPageView,
+ FX_BOOL bRestoreValue) {
+ if (bRestoreValue)
+ SaveState(pPageView);
- DestroyPDFWindow(pPageView);
+ DestroyPDFWindow(pPageView);
- CPWL_Wnd* pRet = NULL;
+ CPWL_Wnd* pRet = NULL;
- if (bRestoreValue)
- {
- RestoreState(pPageView);
- pRet = GetPDFWindow(pPageView, FALSE);
- }
- else
- pRet = GetPDFWindow(pPageView, TRUE);
+ if (bRestoreValue) {
+ RestoreState(pPageView);
+ pRet = GetPDFWindow(pPageView, FALSE);
+ } else
+ pRet = GetPDFWindow(pPageView, TRUE);
- m_pWidget->UpdateField();
+ m_pWidget->UpdateField();
- return pRet;
+ return pRet;
}
-void CFFL_ComboBox::OnKeyStroke(FX_BOOL bKeyDown, FX_UINT nFlag)
-{
- ASSERT(m_pWidget != NULL);
+void CFFL_ComboBox::OnKeyStroke(FX_BOOL bKeyDown, FX_UINT nFlag) {
+ ASSERT(m_pWidget != NULL);
- int nFlags = m_pWidget->GetFieldFlags();
+ int nFlags = m_pWidget->GetFieldFlags();
- if (nFlags & FIELDFLAG_COMMITONSELCHANGE)
- {
- if (m_bValid)
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
+ if (nFlags & FIELDFLAG_COMMITONSELCHANGE) {
+ if (m_bValid) {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
- if (CommitData(pPageView, nFlag))
- {
- DestroyPDFWindow(pPageView);
- m_bValid = FALSE;
- }
- }
+ if (CommitData(pPageView, nFlag)) {
+ DestroyPDFWindow(pPageView);
+ m_bValid = FALSE;
+ }
}
+ }
}
-void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd)
-{
- ASSERT(m_pApp != NULL);
+void CFFL_ComboBox::OnSetFocus(CPWL_Wnd* pWnd) {
+ ASSERT(m_pApp != NULL);
- ASSERT(pWnd != NULL);
+ ASSERT(pWnd != NULL);
- if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT)
- {
- CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
- pEdit->SetCharSet(134);
- pEdit->SetCodePage(936);
+ if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) {
+ CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
+ pEdit->SetCharSet(134);
+ pEdit->SetCodePage(936);
- pEdit->SetReadyToInput();
- CFX_WideString wsText = pEdit->GetText();
- int nCharacters = wsText.GetLength();
- CFX_ByteString bsUTFText = wsText.UTF16LE_Encode();
- unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str();
- m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer, nCharacters, TRUE);
+ pEdit->SetReadyToInput();
+ CFX_WideString wsText = pEdit->GetText();
+ int nCharacters = wsText.GetLength();
+ CFX_ByteString bsUTFText = wsText.UTF16LE_Encode();
+ unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str();
+ m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer,
+ nCharacters, TRUE);
- pEdit->SetEditNotify(this);
- }
+ pEdit->SetEditNotify(this);
+ }
}
-void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd)
-{
- ASSERT(m_pApp != NULL);
+void CFFL_ComboBox::OnKillFocus(CPWL_Wnd* pWnd) {
+ ASSERT(m_pApp != NULL);
}
-FX_BOOL CFFL_ComboBox::CanCopy(CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CFFL_ComboBox::CanCopy(CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_ComboBox::CanCut(CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CFFL_ComboBox::CanCut(CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_ComboBox::CanPaste(CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CFFL_ComboBox::CanPaste(CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- return FALSE;
+ return FALSE;
}
-void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit)
-{
- ASSERT(pEdit != NULL);
+void CFFL_ComboBox::OnAddUndo(CPWL_Edit* pEdit) {
+ ASSERT(pEdit != NULL);
}
-CFX_WideString CFFL_ComboBox::GetSelectExportText()
-{
- CFX_WideString swRet;
-
- int nExport = -1;
- CPDFSDK_PageView *pPageView = GetCurPageView();
- if (CPWL_ComboBox * pComboBox = (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE))
- {
- nExport = pComboBox->GetSelect();
- }
-
- if (nExport >= 0)
- {
- if (CPDF_FormField * pFormField = m_pWidget->GetFormField())
- {
- swRet = pFormField->GetOptionValue(nExport);
- if (swRet.IsEmpty())
- swRet = pFormField->GetOptionLabel(nExport);
- }
+CFX_WideString CFFL_ComboBox::GetSelectExportText() {
+ CFX_WideString swRet;
+
+ int nExport = -1;
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ if (CPWL_ComboBox* pComboBox =
+ (CPWL_ComboBox*)GetPDFWindow(pPageView, FALSE)) {
+ nExport = pComboBox->GetSelect();
+ }
+
+ if (nExport >= 0) {
+ if (CPDF_FormField* pFormField = m_pWidget->GetFormField()) {
+ swRet = pFormField->GetOptionValue(nExport);
+ if (swRet.IsEmpty())
+ swRet = pFormField->GetOptionLabel(nExport);
}
+ }
- return swRet;
+ return swRet;
}
diff --git a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
index 1811cb0424..4fb7542091 100644
--- a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
+++ b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp
@@ -4,803 +4,737 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
#include "../../include/formfiller/FFL_FormFiller.h"
#include "../../include/formfiller/FFL_Notify.h"
#include "../../include/formfiller/FFL_CBA_Fontmap.h"
-#define GetRed(rgb) ((uint8_t)(rgb))
-#define GetGreen(rgb) ((uint8_t)(((FX_WORD)(rgb)) >> 8))
-#define GetBlue(rgb) ((uint8_t)((rgb)>>16))
+#define GetRed(rgb) ((uint8_t)(rgb))
+#define GetGreen(rgb) ((uint8_t)(((FX_WORD)(rgb)) >> 8))
+#define GetBlue(rgb) ((uint8_t)((rgb) >> 16))
-#define FFL_HINT_ELAPSE 800
+#define FFL_HINT_ELAPSE 800
/* ------------------------- CFFL_FormFiller ------------------------- */
-CFFL_FormFiller::CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot)
- : m_pApp(pApp),
- m_pAnnot(pAnnot),
- m_bValid(FALSE),
- m_ptOldPos(0,0)
-{
- m_pWidget = (CPDFSDK_Widget*) pAnnot;
-}
-
-CFFL_FormFiller::~CFFL_FormFiller()
-{
- for (auto& it : m_Maps) {
- CPWL_Wnd* pWnd = it.second;
- CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
- pWnd->Destroy();
- delete pWnd;
- delete pData;
- }
- m_Maps.clear();
+CFFL_FormFiller::CFFL_FormFiller(CPDFDoc_Environment* pApp,
+ CPDFSDK_Annot* pAnnot)
+ : m_pApp(pApp), m_pAnnot(pAnnot), m_bValid(FALSE), m_ptOldPos(0, 0) {
+ m_pWidget = (CPDFSDK_Widget*)pAnnot;
}
-void CFFL_FormFiller::SetWindowRect(CPDFSDK_PageView* pPageView, const CPDF_Rect& rcWindow)
-{
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
- {
- pWnd->Move(CPDF_Rect(rcWindow), TRUE, FALSE);
- }
+CFFL_FormFiller::~CFFL_FormFiller() {
+ for (auto& it : m_Maps) {
+ CPWL_Wnd* pWnd = it.second;
+ CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
+ pWnd->Destroy();
+ delete pWnd;
+ delete pData;
+ }
+ m_Maps.clear();
}
-CPDF_Rect CFFL_FormFiller::GetWindowRect(CPDFSDK_PageView* pPageView)
-{
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
- {
- return pWnd->GetWindowRect();
- }
-
- return CPDF_Rect(0,0,0,0);
+void CFFL_FormFiller::SetWindowRect(CPDFSDK_PageView* pPageView,
+ const CPDF_Rect& rcWindow) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ pWnd->Move(CPDF_Rect(rcWindow), TRUE, FALSE);
+ }
}
-FX_RECT CFFL_FormFiller::GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pPageView != NULL);
- ASSERT(pAnnot != NULL);
+CPDF_Rect CFFL_FormFiller::GetWindowRect(CPDFSDK_PageView* pPageView) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ return pWnd->GetWindowRect();
+ }
- CPDF_Rect rcAnnot = m_pWidget->GetRect();
+ return CPDF_Rect(0, 0, 0, 0);
+}
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
- {
- CPDF_Rect rcWindow = pWnd->GetWindowRect();
- rcAnnot = PWLtoFFL(rcWindow);
- }
+FX_RECT CFFL_FormFiller::GetViewBBox(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ ASSERT(pPageView != NULL);
+ ASSERT(pAnnot != NULL);
- CPDF_Rect rcWin = rcAnnot;
+ CPDF_Rect rcAnnot = m_pWidget->GetRect();
- CPDF_Rect rcFocus = GetFocusBox(pPageView);
- if (!rcFocus.IsEmpty())
- rcWin.Union(rcFocus);
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ CPDF_Rect rcWindow = pWnd->GetWindowRect();
+ rcAnnot = PWLtoFFL(rcWindow);
+ }
- CPDF_Rect rect = CPWL_Utils::InflateRect(rcWin,1);
+ CPDF_Rect rcWin = rcAnnot;
- return rect.GetOutterRect();
-}
+ CPDF_Rect rcFocus = GetFocusBox(pPageView);
+ if (!rcFocus.IsEmpty())
+ rcWin.Union(rcFocus);
-void CFFL_FormFiller::OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_DWORD dwFlags)
-{
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ CPDF_Rect rect = CPWL_Utils::InflateRect(rcWin, 1);
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- CPDF_Matrix mt = GetCurMatrix();
- mt.Concat(*pUser2Device);
- pWnd->DrawAppearance(pDevice,&mt);
- }
- else
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (CFFL_IFormFiller::IsVisible(pWidget))
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
+ return rect.GetOutterRect();
}
-void CFFL_FormFiller::OnDrawDeactive(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_DWORD dwFlags)
-{
+void CFFL_FormFiller::OnDraw(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ CPDF_Matrix mt = GetCurMatrix();
+ mt.Concat(*pUser2Device);
+ pWnd->DrawAppearance(pDevice, &mt);
+ } else {
CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+ if (CFFL_IFormFiller::IsVisible(pWidget))
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+ }
}
-
-void CFFL_FormFiller::OnCreate(CPDFSDK_Annot* pAnnot)
-{
+void CFFL_FormFiller::OnDrawDeactive(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
}
-void CFFL_FormFiller::OnLoad(CPDFSDK_Annot* pAnnot)
-{
-}
+void CFFL_FormFiller::OnCreate(CPDFSDK_Annot* pAnnot) {}
-void CFFL_FormFiller::OnDelete(CPDFSDK_Annot* pAnnot)
-{
-}
+void CFFL_FormFiller::OnLoad(CPDFSDK_Annot* pAnnot) {}
-void CFFL_FormFiller::OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
-}
+void CFFL_FormFiller::OnDelete(CPDFSDK_Annot* pAnnot) {}
-void CFFL_FormFiller::OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- EndTimer();
- ASSERT(m_pWidget != NULL);
+void CFFL_FormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {}
+
+void CFFL_FormFiller::OnMouseExit(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ EndTimer();
+ ASSERT(m_pWidget != NULL);
}
-FX_BOOL CFFL_FormFiller::OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, TRUE))
- {
- m_bValid = TRUE;
- FX_RECT rect = GetViewBBox(pPageView,pAnnot);
- InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
+FX_BOOL CFFL_FormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) {
+ m_bValid = TRUE;
+ FX_RECT rect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
- if(!rect.Contains((int)point.x, (int)point.y))
- return FALSE;
+ if (!rect.Contains((int)point.x, (int)point.y))
+ return FALSE;
- return pWnd->OnLButtonDown(WndtoPWL(pPageView, point),nFlags);
- }
+ return pWnd->OnLButtonDown(WndtoPWL(pPageView, point), nFlags);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- FX_RECT rcFFL = GetViewBBox(pPageView, pAnnot);
- InvalidateRect(rcFFL.left, rcFFL.top, rcFFL.right, rcFFL.bottom);
- pWnd->OnLButtonUp(WndtoPWL(pPageView, point),nFlags);
- return TRUE;
- }
+FX_BOOL CFFL_FormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ FX_RECT rcFFL = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rcFFL.left, rcFFL.top, rcFFL.right, rcFFL.bottom);
+ pWnd->OnLButtonUp(WndtoPWL(pPageView, point), nFlags);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- pWnd->OnLButtonDblClk(WndtoPWL(pPageView, point),nFlags);
- return TRUE;
- }
+FX_BOOL CFFL_FormFiller::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ pWnd->OnLButtonDblClk(WndtoPWL(pPageView, point), nFlags);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if ((m_ptOldPos.x != point.x) || (m_ptOldPos.y != point.y))
- {
- m_ptOldPos = point;
- }
+FX_BOOL CFFL_FormFiller::OnMouseMove(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if ((m_ptOldPos.x != point.x) || (m_ptOldPos.y != point.y)) {
+ m_ptOldPos = point;
+ }
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- pWnd->OnMouseMove(WndtoPWL(pPageView, point),nFlags);
- return TRUE;
- }
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ pWnd->OnMouseMove(WndtoPWL(pPageView, point), nFlags);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, short zDelta, const CPDF_Point& point)
-{
- if (!IsValid()) return FALSE;
+FX_BOOL CFFL_FormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ short zDelta,
+ const CPDF_Point& point) {
+ if (!IsValid())
+ return FALSE;
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, TRUE))
- {
- return pWnd->OnMouseWheel(zDelta, WndtoPWL(pPageView, point),nFlags);
- }
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) {
+ return pWnd->OnMouseWheel(zDelta, WndtoPWL(pPageView, point), nFlags);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, TRUE))
- {
- pWnd->OnRButtonDown(WndtoPWL(pPageView, point),nFlags);
- return TRUE;
- }
+FX_BOOL CFFL_FormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) {
+ pWnd->OnRButtonDown(WndtoPWL(pPageView, point), nFlags);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- pWnd->OnRButtonUp(WndtoPWL(pPageView, point),nFlags);
- return TRUE;
- }
+FX_BOOL CFFL_FormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ pWnd->OnRButtonUp(WndtoPWL(pPageView, point), nFlags);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, FX_UINT nKeyCode, FX_UINT nFlags)
-{
- if (IsValid())
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
+FX_BOOL CFFL_FormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot,
+ FX_UINT nKeyCode,
+ FX_UINT nFlags) {
+ if (IsValid()) {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- return pWnd->OnKeyDown(nKeyCode,nFlags);
- }
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ return pWnd->OnKeyDown(nKeyCode, nFlags);
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- if (IsValid())
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
+FX_BOOL CFFL_FormFiller::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ if (IsValid()) {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
- if (CPWL_Wnd * pWnd = GetPDFWindow(pPageView, FALSE))
- {
- return pWnd->OnChar(nChar,nFlags);
- }
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ return pWnd->OnChar(nChar, nFlags);
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_FormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag)
-{
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- CPDF_Page* pPage = pWidget->GetPDFPage();
- CPDFSDK_Document* pDoc = m_pApp->GetSDKDocument();
- CPDFSDK_PageView* pPageView = pDoc->GetPageView(pPage);
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
- pWnd->SetFocus();
+FX_BOOL CFFL_FormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ CPDF_Page* pPage = pWidget->GetPDFPage();
+ CPDFSDK_Document* pDoc = m_pApp->GetSDKDocument();
+ CPDFSDK_PageView* pPageView = pDoc->GetPageView(pPage);
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
+ pWnd->SetFocus();
- m_bValid = TRUE;
- FX_RECT rcRect = GetViewBBox(pPageView,pAnnot);
- InvalidateRect(rcRect.left, rcRect.top, rcRect.right, rcRect.bottom);
- return TRUE;
+ m_bValid = TRUE;
+ FX_RECT rcRect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rcRect.left, rcRect.top, rcRect.right, rcRect.bottom);
+ return TRUE;
}
-FX_BOOL CFFL_FormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag)
-{
- if (!IsValid())
- return TRUE;
+FX_BOOL CFFL_FormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+ if (!IsValid())
+ return TRUE;
- CPDFSDK_PageView* pPageView = GetCurPageView();
- CommitData(pPageView, nFlag);
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ CommitData(pPageView, nFlag);
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
- pWnd->KillFocus();
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
+ pWnd->KillFocus();
- switch (m_pWidget->GetFieldType())
- {
+ switch (m_pWidget->GetFieldType()) {
case FIELDTYPE_PUSHBUTTON:
case FIELDTYPE_CHECKBOX:
case FIELDTYPE_RADIOBUTTON:
- EscapeFiller(pPageView, TRUE);
- break;
+ EscapeFiller(pPageView, TRUE);
+ break;
default:
- EscapeFiller(pPageView, FALSE);
- break;
- }
- return TRUE;
+ EscapeFiller(pPageView, FALSE);
+ break;
+ }
+ return TRUE;
}
-FX_BOOL CFFL_FormFiller::IsValid() const
-{
- return m_bValid;
+FX_BOOL CFFL_FormFiller::IsValid() const {
+ return m_bValid;
}
-PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam()
-{
- ASSERT(m_pApp != NULL);
+PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam() {
+ ASSERT(m_pApp != NULL);
- PWL_CREATEPARAM cp;
- cp.pParentWnd = NULL;
- cp.pProvider = this;
- cp.rcRectWnd = GetPDFWindowRect();
+ PWL_CREATEPARAM cp;
+ cp.pParentWnd = NULL;
+ cp.pProvider = this;
+ cp.rcRectWnd = GetPDFWindowRect();
- FX_DWORD dwCreateFlags = PWS_BORDER | PWS_BACKGROUND | PWS_VISIBLE;
- FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags();
- if (dwFieldFlag & FIELDFLAG_READONLY)
- {
- dwCreateFlags |= PWS_READONLY;
- }
+ FX_DWORD dwCreateFlags = PWS_BORDER | PWS_BACKGROUND | PWS_VISIBLE;
+ FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags();
+ if (dwFieldFlag & FIELDFLAG_READONLY) {
+ dwCreateFlags |= PWS_READONLY;
+ }
- FX_COLORREF color;
- if (m_pWidget->GetFillColor(color))
- {
- cp.sBackgroundColor = CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
- }
+ FX_COLORREF color;
+ if (m_pWidget->GetFillColor(color)) {
+ cp.sBackgroundColor =
+ CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
+ }
- if (m_pWidget->GetBorderColor(color))
- {
- cp.sBorderColor = CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
- }
+ if (m_pWidget->GetBorderColor(color)) {
+ cp.sBorderColor =
+ CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
+ }
- cp.sTextColor = CPWL_Color(COLORTYPE_GRAY,0);
+ cp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
- if (m_pWidget->GetTextColor(color))
- {
- cp.sTextColor = CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
- }
+ if (m_pWidget->GetTextColor(color)) {
+ cp.sTextColor = CPWL_Color(GetRed(color), GetGreen(color), GetBlue(color));
+ }
- cp.fFontSize = m_pWidget->GetFontSize();
- cp.dwBorderWidth = m_pWidget->GetBorderWidth();
+ cp.fFontSize = m_pWidget->GetFontSize();
+ cp.dwBorderWidth = m_pWidget->GetBorderWidth();
- int nBorderStyle = m_pWidget->GetBorderStyle();
+ int nBorderStyle = m_pWidget->GetBorderStyle();
- switch (nBorderStyle)
- {
+ switch (nBorderStyle) {
case BBS_SOLID:
- cp.nBorderStyle = PBS_SOLID;
- break;
+ cp.nBorderStyle = PBS_SOLID;
+ break;
case BBS_DASH:
- cp.nBorderStyle = PBS_DASH;
- cp.sDash = CPWL_Dash(3,3,0);
- break;
+ cp.nBorderStyle = PBS_DASH;
+ cp.sDash = CPWL_Dash(3, 3, 0);
+ break;
case BBS_BEVELED:
- cp.nBorderStyle = PBS_BEVELED;
- cp.dwBorderWidth *= 2;
- break;
+ cp.nBorderStyle = PBS_BEVELED;
+ cp.dwBorderWidth *= 2;
+ break;
case BBS_INSET:
- cp.nBorderStyle = PBS_INSET;
- cp.dwBorderWidth *= 2;
- break;
+ cp.nBorderStyle = PBS_INSET;
+ cp.dwBorderWidth *= 2;
+ break;
case BBS_UNDERLINE:
- cp.nBorderStyle = PBS_UNDERLINED;
- break;
- }
+ cp.nBorderStyle = PBS_UNDERLINED;
+ break;
+ }
- if (cp.fFontSize <= 0)
- {
- dwCreateFlags |= PWS_AUTOFONTSIZE;
- }
+ if (cp.fFontSize <= 0) {
+ dwCreateFlags |= PWS_AUTOFONTSIZE;
+ }
- cp.dwFlags = dwCreateFlags;
- cp.pSystemHandler = m_pApp->GetSysHandler();
- return cp;
+ cp.dwFlags = dwCreateFlags;
+ cp.pSystemHandler = m_pApp->GetSysHandler();
+ return cp;
}
-CPWL_Wnd* CFFL_FormFiller::GetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bNew)
-{
- ASSERT(pPageView);
+CPWL_Wnd* CFFL_FormFiller::GetPDFWindow(CPDFSDK_PageView* pPageView,
+ FX_BOOL bNew) {
+ ASSERT(pPageView);
- auto it = m_Maps.find(pPageView);
- const bool found = it != m_Maps.end();
- CPWL_Wnd* pWnd = found ? it->second : nullptr;
- if (!bNew)
- return pWnd;
+ auto it = m_Maps.find(pPageView);
+ const bool found = it != m_Maps.end();
+ CPWL_Wnd* pWnd = found ? it->second : nullptr;
+ if (!bNew)
+ return pWnd;
- if (found) {
- CFFL_PrivateData* pPrivateData =
- (CFFL_PrivateData*)pWnd->GetAttachedData();
- if (pPrivateData->nWidgetAge != m_pWidget->GetAppearanceAge()) {
- return ResetPDFWindow(
- pPageView, m_pWidget->GetValueAge() == pPrivateData->nValueAge);
- }
- } else {
- PWL_CREATEPARAM cp = GetCreateParam();
- cp.hAttachedWnd = (FX_HWND)m_pWidget;
+ if (found) {
+ CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pWnd->GetAttachedData();
+ if (pPrivateData->nWidgetAge != m_pWidget->GetAppearanceAge()) {
+ return ResetPDFWindow(
+ pPageView, m_pWidget->GetValueAge() == pPrivateData->nValueAge);
+ }
+ } else {
+ PWL_CREATEPARAM cp = GetCreateParam();
+ cp.hAttachedWnd = (FX_HWND)m_pWidget;
- CFFL_PrivateData* pPrivateData = new CFFL_PrivateData;
- pPrivateData->pWidget = m_pWidget;
- pPrivateData->pPageView = pPageView;
- pPrivateData->nWidgetAge = m_pWidget->GetAppearanceAge();
- pPrivateData->nValueAge = 0;
+ CFFL_PrivateData* pPrivateData = new CFFL_PrivateData;
+ pPrivateData->pWidget = m_pWidget;
+ pPrivateData->pPageView = pPageView;
+ pPrivateData->nWidgetAge = m_pWidget->GetAppearanceAge();
+ pPrivateData->nValueAge = 0;
- cp.pAttachedData = pPrivateData;
+ cp.pAttachedData = pPrivateData;
- pWnd = NewPDFWindow(cp, pPageView);
- m_Maps[pPageView] = pWnd;
- }
+ pWnd = NewPDFWindow(cp, pPageView);
+ m_Maps[pPageView] = pWnd;
+ }
- return pWnd;
+ return pWnd;
}
-void CFFL_FormFiller::DestroyPDFWindow(CPDFSDK_PageView* pPageView)
-{
- auto it = m_Maps.find(pPageView);
- if (it == m_Maps.end())
- return;
+void CFFL_FormFiller::DestroyPDFWindow(CPDFSDK_PageView* pPageView) {
+ auto it = m_Maps.find(pPageView);
+ if (it == m_Maps.end())
+ return;
- CPWL_Wnd* pWnd = it->second;
- CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
- pWnd->Destroy();
- delete pWnd;
- delete pData;
+ CPWL_Wnd* pWnd = it->second;
+ CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
+ pWnd->Destroy();
+ delete pWnd;
+ delete pData;
- m_Maps.erase(it);
+ m_Maps.erase(it);
}
-CPDF_Matrix CFFL_FormFiller::GetWindowMatrix(void* pAttachedData)
-{
- if (CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pAttachedData)
- {
- if (pPrivateData->pPageView)
- {
- CPDF_Matrix mtPageView;
- pPrivateData->pPageView->GetCurrentMatrix(mtPageView);
- CPDF_Matrix mt = GetCurMatrix();
- mt.Concat(mtPageView);
+CPDF_Matrix CFFL_FormFiller::GetWindowMatrix(void* pAttachedData) {
+ if (CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pAttachedData) {
+ if (pPrivateData->pPageView) {
+ CPDF_Matrix mtPageView;
+ pPrivateData->pPageView->GetCurrentMatrix(mtPageView);
+ CPDF_Matrix mt = GetCurMatrix();
+ mt.Concat(mtPageView);
- return mt;
- }
+ return mt;
}
- return CPDF_Matrix(1,0,0,1,0,0);
+ }
+ return CPDF_Matrix(1, 0, 0, 1, 0, 0);
}
-CPDF_Matrix CFFL_FormFiller::GetCurMatrix()
-{
- CPDF_Matrix mt;
+CPDF_Matrix CFFL_FormFiller::GetCurMatrix() {
+ CPDF_Matrix mt;
- ASSERT(m_pWidget != NULL);
+ ASSERT(m_pWidget != NULL);
- CPDF_Rect rcDA ;
- m_pWidget->GetPDFAnnot()->GetRect(rcDA);
+ CPDF_Rect rcDA;
+ m_pWidget->GetPDFAnnot()->GetRect(rcDA);
-
- switch (m_pWidget->GetRotate())
- {
+ switch (m_pWidget->GetRotate()) {
default:
case 0:
- mt = CPDF_Matrix(1,0,0,1,0,0);
- break;
+ mt = CPDF_Matrix(1, 0, 0, 1, 0, 0);
+ break;
case 90:
- mt = CPDF_Matrix(0,1,-1,0,rcDA.right - rcDA.left,0);
- break;
+ mt = CPDF_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0);
+ break;
case 180:
- mt = CPDF_Matrix(-1,0,0,-1,rcDA.right - rcDA.left,rcDA.top - rcDA.bottom);
- break;
+ mt = CPDF_Matrix(-1, 0, 0, -1, rcDA.right - rcDA.left,
+ rcDA.top - rcDA.bottom);
+ break;
case 270:
- mt = CPDF_Matrix(0,-1,1,0,0,rcDA.top - rcDA.bottom);
- break;
- }
- mt.e += rcDA.left;
- mt.f += rcDA.bottom;
+ mt = CPDF_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom);
+ break;
+ }
+ mt.e += rcDA.left;
+ mt.f += rcDA.bottom;
- return mt;
+ return mt;
}
-CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex)
-{
- ASSERT(m_pApp != NULL);
+CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) {
+ ASSERT(m_pApp != NULL);
- return L"";
+ return L"";
}
-CPDF_Rect CFFL_FormFiller::GetPDFWindowRect() const
-{
- CPDF_Rect rectAnnot;
- m_pWidget->GetPDFAnnot()->GetRect(rectAnnot);
+CPDF_Rect CFFL_FormFiller::GetPDFWindowRect() const {
+ CPDF_Rect rectAnnot;
+ m_pWidget->GetPDFAnnot()->GetRect(rectAnnot);
- FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left;
- FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom;
- if ((m_pWidget->GetRotate() / 90) & 0x01)
- return CPDF_Rect(0, 0, fHeight, fWidth);
+ FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left;
+ FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom;
+ if ((m_pWidget->GetRotate() / 90) & 0x01)
+ return CPDF_Rect(0, 0, fHeight, fWidth);
- return CPDF_Rect(0, 0, fWidth, fHeight);
+ return CPDF_Rect(0, 0, fWidth, fHeight);
}
-CPDFSDK_PageView* CFFL_FormFiller::GetCurPageView()
-{
- CPDF_Page* pPage = m_pAnnot->GetPDFPage();
- CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument();
- return pSDKDoc ? pSDKDoc->GetPageView(pPage) : nullptr;
+CPDFSDK_PageView* CFFL_FormFiller::GetCurPageView() {
+ CPDF_Page* pPage = m_pAnnot->GetPDFPage();
+ CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument();
+ return pSDKDoc ? pSDKDoc->GetPageView(pPage) : nullptr;
}
-CPDF_Rect CFFL_FormFiller::GetFocusBox(CPDFSDK_PageView* pPageView)
-{
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE))
- {
- CPDF_Rect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect()));
- CPDF_Rect rcPage = pPageView->GetPDFPage()->GetPageBBox();
- if (rcPage.Contains(rcFocus))
- return rcFocus;
- }
- return CPDF_Rect(0,0,0,0);
+CPDF_Rect CFFL_FormFiller::GetFocusBox(CPDFSDK_PageView* pPageView) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) {
+ CPDF_Rect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect()));
+ CPDF_Rect rcPage = pPageView->GetPDFPage()->GetPageBBox();
+ if (rcPage.Contains(rcFocus))
+ return rcFocus;
+ }
+ return CPDF_Rect(0, 0, 0, 0);
}
-CPDF_Rect CFFL_FormFiller::FFLtoPWL(const CPDF_Rect& rect)
-{
- CPDF_Matrix mt;
- mt.SetReverse(GetCurMatrix());
+CPDF_Rect CFFL_FormFiller::FFLtoPWL(const CPDF_Rect& rect) {
+ CPDF_Matrix mt;
+ mt.SetReverse(GetCurMatrix());
- CPDF_Rect temp = rect;
- mt.TransformRect(temp);
+ CPDF_Rect temp = rect;
+ mt.TransformRect(temp);
- return temp;
+ return temp;
}
-CPDF_Rect CFFL_FormFiller::PWLtoFFL(const CPDF_Rect& rect)
-{
- CPDF_Matrix mt = GetCurMatrix();
+CPDF_Rect CFFL_FormFiller::PWLtoFFL(const CPDF_Rect& rect) {
+ CPDF_Matrix mt = GetCurMatrix();
- CPDF_Rect temp = rect;
- mt.TransformRect(temp);
+ CPDF_Rect temp = rect;
+ mt.TransformRect(temp);
- return temp;
+ return temp;
}
-CPDF_Point CFFL_FormFiller::FFLtoPWL(const CPDF_Point& point)
-{
- CPDF_Matrix mt;
- mt.SetReverse(GetCurMatrix());
+CPDF_Point CFFL_FormFiller::FFLtoPWL(const CPDF_Point& point) {
+ CPDF_Matrix mt;
+ mt.SetReverse(GetCurMatrix());
- CPDF_Point pt = point;
- mt.Transform(pt.x,pt.y);
+ CPDF_Point pt = point;
+ mt.Transform(pt.x, pt.y);
- return pt;
+ return pt;
}
-CPDF_Point CFFL_FormFiller::PWLtoFFL(const CPDF_Point & point)
-{
- CPDF_Matrix mt = GetCurMatrix();
-
- CPDF_Point pt = point;
- mt.Transform(pt.x,pt.y);
-
- return pt;
-}
-
-CPDF_Point CFFL_FormFiller::WndtoPWL(CPDFSDK_PageView* pPageView, const CPDF_Point& pt)
-{
- return FFLtoPWL(pt);
-}
-
-CPDF_Rect CFFL_FormFiller::FFLtoWnd(CPDFSDK_PageView* pPageView, const CPDF_Rect & rect)
-{
- return rect;
-}
-
-FX_BOOL CFFL_FormFiller::CommitData(CPDFSDK_PageView* pPageView, FX_UINT nFlag)
-{
- if (IsDataChanged(pPageView))
- {
- FX_BOOL bRC = TRUE;
- FX_BOOL bExit = FALSE;
- CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
- pIFormFiller->OnKeyStrokeCommit(m_pWidget, pPageView, bRC, bExit, nFlag);
- if (bExit)
- return TRUE;
- if (!bRC)
- {
- ResetPDFWindow(pPageView, FALSE);
- return TRUE;
- }
-
- pIFormFiller->OnValidate(m_pWidget, pPageView, bRC, bExit, nFlag);
- if (bExit)
- return TRUE;
- if (!bRC)
- {
- ResetPDFWindow(pPageView, FALSE);
- return TRUE;
- }
-
- SaveData(pPageView);
- pIFormFiller->OnCalculate(m_pWidget, pPageView, bExit,nFlag);
- if (bExit)
- return TRUE;
-
- pIFormFiller->OnFormat(m_pWidget, pPageView, bExit,nFlag);
- }
- return TRUE;
-}
+CPDF_Point CFFL_FormFiller::PWLtoFFL(const CPDF_Point& point) {
+ CPDF_Matrix mt = GetCurMatrix();
-FX_BOOL CFFL_FormFiller::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
- return FALSE;
-}
+ CPDF_Point pt = point;
+ mt.Transform(pt.x, pt.y);
-void CFFL_FormFiller::SaveData(CPDFSDK_PageView* pPageView)
-{
+ return pt;
}
-void CFFL_FormFiller::SetChangeMark()
-{
- m_pApp->FFI_OnChange();
+CPDF_Point CFFL_FormFiller::WndtoPWL(CPDFSDK_PageView* pPageView,
+ const CPDF_Point& pt) {
+ return FFLtoPWL(pt);
}
-void CFFL_FormFiller::GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- PDFSDK_FieldAction& fa)
-{
- fa.sValue = m_pWidget->GetValue();
+CPDF_Rect CFFL_FormFiller::FFLtoWnd(CPDFSDK_PageView* pPageView,
+ const CPDF_Rect& rect) {
+ return rect;
}
-void CFFL_FormFiller::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- const PDFSDK_FieldAction& fa)
-{
-}
+FX_BOOL CFFL_FormFiller::CommitData(CPDFSDK_PageView* pPageView,
+ FX_UINT nFlag) {
+ if (IsDataChanged(pPageView)) {
+ FX_BOOL bRC = TRUE;
+ FX_BOOL bExit = FALSE;
+ CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
+ pIFormFiller->OnKeyStrokeCommit(m_pWidget, pPageView, bRC, bExit, nFlag);
+ if (bExit)
+ return TRUE;
+ if (!bRC) {
+ ResetPDFWindow(pPageView, FALSE);
+ return TRUE;
+ }
-FX_BOOL CFFL_FormFiller::IsActionDataChanged(CPDF_AAction::AActionType type, const PDFSDK_FieldAction& faOld,
- const PDFSDK_FieldAction& faNew)
-{
- return FALSE;
-}
+ pIFormFiller->OnValidate(m_pWidget, pPageView, bRC, bExit, nFlag);
+ if (bExit)
+ return TRUE;
+ if (!bRC) {
+ ResetPDFWindow(pPageView, FALSE);
+ return TRUE;
+ }
-void CFFL_FormFiller::SaveState(CPDFSDK_PageView* pPageView)
-{
-}
+ SaveData(pPageView);
+ pIFormFiller->OnCalculate(m_pWidget, pPageView, bExit, nFlag);
+ if (bExit)
+ return TRUE;
-void CFFL_FormFiller::RestoreState(CPDFSDK_PageView* pPageView)
-{
+ pIFormFiller->OnFormat(m_pWidget, pPageView, bExit, nFlag);
+ }
+ return TRUE;
}
-CPWL_Wnd* CFFL_FormFiller::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue)
-{
- return GetPDFWindow(pPageView, FALSE);
+FX_BOOL CFFL_FormFiller::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ return FALSE;
}
-void CFFL_FormFiller::TimerProc()
-{
+void CFFL_FormFiller::SaveData(CPDFSDK_PageView* pPageView) {}
+void CFFL_FormFiller::SetChangeMark() {
+ m_pApp->FFI_OnChange();
}
-IFX_SystemHandler* CFFL_FormFiller::GetSystemHandler() const
-{
- return m_pApp->GetSysHandler();
+void CFFL_FormFiller::GetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& fa) {
+ fa.sValue = m_pWidget->GetValue();
}
-void CFFL_FormFiller::OnKeyStroke(FX_BOOL bKeyDown)
-{
+void CFFL_FormFiller::SetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& fa) {}
+
+FX_BOOL CFFL_FormFiller::IsActionDataChanged(CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& faOld,
+ const PDFSDK_FieldAction& faNew) {
+ return FALSE;
}
-void CFFL_FormFiller::EscapeFiller(CPDFSDK_PageView* pPageView, FX_BOOL bDestroyPDFWindow)
-{
- m_bValid = FALSE;
+void CFFL_FormFiller::SaveState(CPDFSDK_PageView* pPageView) {}
- FX_RECT rcRect = GetViewBBox(pPageView, m_pWidget);
- InvalidateRect(rcRect.left, rcRect.top, rcRect.right, rcRect.bottom);
+void CFFL_FormFiller::RestoreState(CPDFSDK_PageView* pPageView) {}
- if(bDestroyPDFWindow)
- DestroyPDFWindow(pPageView);
+CPWL_Wnd* CFFL_FormFiller::ResetPDFWindow(CPDFSDK_PageView* pPageView,
+ FX_BOOL bRestoreValue) {
+ return GetPDFWindow(pPageView, FALSE);
}
-FX_BOOL CFFL_FormFiller::CanCopy(CPDFSDK_Document* pDocument)
-{
- return FALSE;
-}
+void CFFL_FormFiller::TimerProc() {}
-FX_BOOL CFFL_FormFiller::CanCut(CPDFSDK_Document* pDocument)
-{
- return FALSE;
+IFX_SystemHandler* CFFL_FormFiller::GetSystemHandler() const {
+ return m_pApp->GetSysHandler();
}
-FX_BOOL CFFL_FormFiller::CanPaste(CPDFSDK_Document* pDocument)
-{
- return FALSE;
-}
+void CFFL_FormFiller::OnKeyStroke(FX_BOOL bKeyDown) {}
-void CFFL_FormFiller::DoCopy(CPDFSDK_Document* pDocument)
-{
-}
+void CFFL_FormFiller::EscapeFiller(CPDFSDK_PageView* pPageView,
+ FX_BOOL bDestroyPDFWindow) {
+ m_bValid = FALSE;
-void CFFL_FormFiller::DoCut(CPDFSDK_Document* pDocument)
-{
-}
+ FX_RECT rcRect = GetViewBBox(pPageView, m_pWidget);
+ InvalidateRect(rcRect.left, rcRect.top, rcRect.right, rcRect.bottom);
-void CFFL_FormFiller::DoPaste(CPDFSDK_Document* pDocument)
-{
+ if (bDestroyPDFWindow)
+ DestroyPDFWindow(pPageView);
}
-void CFFL_FormFiller::InvalidateRect(double left, double top, double right, double bottom)
-{
- CPDF_Page * pPage = m_pWidget->GetPDFPage();
- m_pApp->FFI_Invalidate(pPage, left, top, right, bottom);
+FX_BOOL CFFL_FormFiller::CanCopy(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-/* ------------------------- CFFL_Button ------------------------- */
-
-CFFL_Button::CFFL_Button(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget) :
- CFFL_FormFiller(pApp, pWidget),
- m_bMouseIn(FALSE),
- m_bMouseDown(FALSE)
-{
+FX_BOOL CFFL_FormFiller::CanCut(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-CFFL_Button::~CFFL_Button()
-{
+FX_BOOL CFFL_FormFiller::CanPaste(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-void CFFL_Button::OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- m_bMouseIn = TRUE;
- FX_RECT rect = GetViewBBox(pPageView,pAnnot);
- InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
-}
+void CFFL_FormFiller::DoCopy(CPDFSDK_Document* pDocument) {}
-void CFFL_Button::OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- m_bMouseIn = FALSE;
+void CFFL_FormFiller::DoCut(CPDFSDK_Document* pDocument) {}
- FX_RECT rect = GetViewBBox(pPageView,pAnnot);
- InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
- EndTimer();
- ASSERT(m_pWidget != NULL);
+void CFFL_FormFiller::DoPaste(CPDFSDK_Document* pDocument) {}
+
+void CFFL_FormFiller::InvalidateRect(double left,
+ double top,
+ double right,
+ double bottom) {
+ CPDF_Page* pPage = m_pWidget->GetPDFPage();
+ m_pApp->FFI_Invalidate(pPage, left, top, right, bottom);
}
-FX_BOOL CFFL_Button::OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- CPDF_Rect rcAnnot = pAnnot->GetRect();
- if(!rcAnnot.Contains(point.x, point.y))
- return FALSE;
+/* ------------------------- CFFL_Button ------------------------- */
- m_bMouseDown = TRUE;
- m_bValid = TRUE;
- FX_RECT rect = GetViewBBox(pPageView, pAnnot);
- InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
- return TRUE;
-}
+CFFL_Button::CFFL_Button(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget)
+ : CFFL_FormFiller(pApp, pWidget), m_bMouseIn(FALSE), m_bMouseDown(FALSE) {}
-FX_BOOL CFFL_Button::OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- CPDF_Rect rcAnnot = pAnnot->GetRect();
- if(!rcAnnot.Contains(point.x, point.y))
- return FALSE;
+CFFL_Button::~CFFL_Button() {}
- m_bMouseDown = FALSE;
- m_pWidget->GetPDFPage();
+void CFFL_Button::OnMouseEnter(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ m_bMouseIn = TRUE;
+ FX_RECT rect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
+}
+void CFFL_Button::OnMouseExit(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ m_bMouseIn = FALSE;
- FX_RECT rect = GetViewBBox(pPageView, pAnnot);
- InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
- return TRUE;
+ FX_RECT rect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
+ EndTimer();
+ ASSERT(m_pWidget != NULL);
}
-FX_BOOL CFFL_Button::OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(m_pApp != NULL);
+FX_BOOL CFFL_Button::OnLButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ CPDF_Rect rcAnnot = pAnnot->GetRect();
+ if (!rcAnnot.Contains(point.x, point.y))
+ return FALSE;
- return TRUE;
+ m_bMouseDown = TRUE;
+ m_bValid = TRUE;
+ FX_RECT rect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
+ return TRUE;
}
-void CFFL_Button::OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_DWORD dwFlags)
-{
- ASSERT(pPageView != NULL);
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- CPDF_FormControl* pCtrl = pWidget->GetFormControl();
- CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode();
-
- if (eHM == CPDF_FormControl::Push)
- {
- if (m_bMouseDown)
- {
- if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down))
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL);
- else
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
- else if (m_bMouseIn)
- {
- if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Rollover))
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Rollover, NULL);
- else
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
- else
- {
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
+FX_BOOL CFFL_Button::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ CPDF_Rect rcAnnot = pAnnot->GetRect();
+ if (!rcAnnot.Contains(point.x, point.y))
+ return FALSE;
+
+ m_bMouseDown = FALSE;
+ m_pWidget->GetPDFPage();
+
+ FX_RECT rect = GetViewBBox(pPageView, pAnnot);
+ InvalidateRect(rect.left, rect.top, rect.right, rect.bottom);
+ return TRUE;
+}
+
+FX_BOOL CFFL_Button::OnMouseMove(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(m_pApp != NULL);
+
+ return TRUE;
+}
+
+void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ ASSERT(pPageView != NULL);
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ CPDF_FormControl* pCtrl = pWidget->GetFormControl();
+ CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode();
+
+ if (eHM == CPDF_FormControl::Push) {
+ if (m_bMouseDown) {
+ if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down))
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL);
+ else
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal,
+ NULL);
+ } else if (m_bMouseIn) {
+ if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Rollover))
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Rollover,
+ NULL);
+ else
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal,
+ NULL);
+ } else {
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
}
- else
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+ } else
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
}
-
-void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_DWORD dwFlags)
-{
- OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
+void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
}
diff --git a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
index 7ce811e85b..ad573470bd 100644
--- a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
+++ b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
@@ -13,941 +13,898 @@
#include "../../include/formfiller/FFL_RadioButton.h"
#include "../../include/formfiller/FFL_TextField.h"
-#define FFL_MAXLISTBOXHEIGHT 140.0f
+#define FFL_MAXLISTBOXHEIGHT 140.0f
// HHOOK CFFL_IFormFiller::m_hookSheet = NULL;
// MSG CFFL_IFormFiller::g_Msg;
-/* ----------------------------- CFFL_IFormFiller ----------------------------- */
+/* ----------------------------- CFFL_IFormFiller -----------------------------
+ */
-CFFL_IFormFiller::CFFL_IFormFiller(CPDFDoc_Environment* pApp) :
- m_pApp(pApp),
- m_bNotifying(FALSE)
-{
-}
-
-CFFL_IFormFiller::~CFFL_IFormFiller()
-{
- for (auto& it : m_Maps)
- delete it.second;
- m_Maps.clear();
-}
+CFFL_IFormFiller::CFFL_IFormFiller(CPDFDoc_Environment* pApp)
+ : m_pApp(pApp), m_bNotifying(FALSE) {}
-FX_BOOL CFFL_IFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView,CPDFSDK_Annot* pAnnot, CPDF_Point point)
-{
- CPDF_Rect rc = pAnnot->GetRect();
- if(rc.Contains(point.x, point.y))
- return TRUE;
- return FALSE;
+CFFL_IFormFiller::~CFFL_IFormFiller() {
+ for (auto& it : m_Maps)
+ delete it.second;
+ m_Maps.clear();
}
-FX_RECT CFFL_IFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot)
-{
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- return pFormFiller->GetViewBBox(pPageView, pAnnot);
-
- ASSERT(pPageView != NULL);
-
- CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
- CPDF_Rect rcAnnot;
- pPDFAnnot->GetRect(rcAnnot);
-
- CPDF_Rect rcWin = CPWL_Utils::InflateRect(rcAnnot, 1);
- return rcWin.GetOutterRect();
-}
-
-void CFFL_IFormFiller::OnDraw(CPDFSDK_PageView* pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- /*const CRect& rcWindow,*/ FX_DWORD dwFlags)
-{
- ASSERT(pPageView != NULL);
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
-
- if (IsVisible(pWidget))
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- if (pFormFiller->IsValid())
- {
- pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
- pAnnot->GetPDFPage();
-
- CPDFSDK_Document* pDocument = m_pApp->GetSDKDocument();
- if (pDocument->GetFocusAnnot() == pAnnot)
- {
- CPDF_Rect rcFocus = pFormFiller->GetFocusBox(pPageView);
- if (!rcFocus.IsEmpty())
- {
- CFX_PathData path;
- path.SetPointCount(5);
- path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO);
- path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO);
- path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO);
- path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO);
- path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO);
-
- CFX_GraphStateData gsd;
- gsd.SetDashCount(1);
- gsd.m_DashArray[0] = 1.0f;
- gsd.m_DashPhase = 0;
- gsd.m_LineWidth = 1.0f;
- pDevice->DrawPath(&path, pUser2Device, &gsd, 0, ArgbEncode(255,0,0,0), FXFILL_ALTERNATE);
- }
- }
- return;
- }
+FX_BOOL CFFL_IFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CPDF_Point point) {
+ CPDF_Rect rc = pAnnot->GetRect();
+ if (rc.Contains(point.x, point.y))
+ return TRUE;
+ return FALSE;
+}
+
+FX_RECT CFFL_IFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
+ return pFormFiller->GetViewBBox(pPageView, pAnnot);
+
+ ASSERT(pPageView != NULL);
+
+ CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
+ CPDF_Rect rcAnnot;
+ pPDFAnnot->GetRect(rcAnnot);
+
+ CPDF_Rect rcWin = CPWL_Utils::InflateRect(rcAnnot, 1);
+ return rcWin.GetOutterRect();
+}
+
+void CFFL_IFormFiller::OnDraw(CPDFSDK_PageView* pPageView,
+ /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ /*const CRect& rcWindow,*/ FX_DWORD dwFlags) {
+ ASSERT(pPageView != NULL);
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+
+ if (IsVisible(pWidget)) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ if (pFormFiller->IsValid()) {
+ pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
+ pAnnot->GetPDFPage();
+
+ CPDFSDK_Document* pDocument = m_pApp->GetSDKDocument();
+ if (pDocument->GetFocusAnnot() == pAnnot) {
+ CPDF_Rect rcFocus = pFormFiller->GetFocusBox(pPageView);
+ if (!rcFocus.IsEmpty()) {
+ CFX_PathData path;
+ path.SetPointCount(5);
+ path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO);
+ path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO);
+ path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO);
+ path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO);
+ path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO);
+
+ CFX_GraphStateData gsd;
+ gsd.SetDashCount(1);
+ gsd.m_DashArray[0] = 1.0f;
+ gsd.m_DashPhase = 0;
+ gsd.m_LineWidth = 1.0f;
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0,
+ ArgbEncode(255, 0, 0, 0), FXFILL_ALTERNATE);
+ }
}
-
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
- else
- pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
-
- if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget))
- pWidget->DrawShadow(pDevice, pPageView);
+ return;
+ }
}
-}
-void CFFL_IFormFiller::OnCreate(CPDFSDK_Annot* pAnnot)
-{
if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- pFormFiller->OnCreate(pAnnot);
- }
-}
+ pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device,
+ dwFlags);
+ else
+ pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
-void CFFL_IFormFiller::OnLoad(CPDFSDK_Annot* pAnnot)
-{
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- pFormFiller->OnLoad(pAnnot);
- }
+ if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget))
+ pWidget->DrawShadow(pDevice, pPageView);
+ }
}
-void CFFL_IFormFiller::OnDelete(CPDFSDK_Annot* pAnnot)
-{
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- pFormFiller->OnDelete(pAnnot);
- }
+void CFFL_IFormFiller::OnCreate(CPDFSDK_Annot* pAnnot) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ pFormFiller->OnCreate(pAnnot);
+ }
+}
- UnRegisterFormFiller(pAnnot);
+void CFFL_IFormFiller::OnLoad(CPDFSDK_Annot* pAnnot) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ pFormFiller->OnLoad(pAnnot);
+ }
}
-void CFFL_IFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlag)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+void CFFL_IFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ pFormFiller->OnDelete(pAnnot);
+ }
- if (!m_bNotifying)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (pWidget->GetAAction(CPDF_AAction::CursorEnter))
- {
- m_bNotifying = TRUE;
+ UnRegisterFormFiller(pAnnot);
+}
- int nValueAge = pWidget->GetValueAge();
+void CFFL_IFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlag) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- pWidget->ClearAppModified();
+ if (!m_bNotifying) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (pWidget->GetAAction(CPDF_AAction::CursorEnter)) {
+ m_bNotifying = TRUE;
- ASSERT(pPageView != NULL);
+ int nValueAge = pWidget->GetValueAge();
+ pWidget->ClearAppModified();
+ ASSERT(pPageView != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView );
- m_bNotifying = FALSE;
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+ pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView);
+ m_bNotifying = FALSE;
- //if ( !IsValidAnnot(pPageView, pAnnot) ) return;
+ // if ( !IsValidAnnot(pPageView, pAnnot) ) return;
- if (pWidget->IsAppModified())
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE))
- {
- pFormFiller->ResetPDFWindow(pPageView, pWidget->GetValueAge() == nValueAge);
- }
- }
+ if (pWidget->IsAppModified()) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
+ pFormFiller->ResetPDFWindow(pPageView,
+ pWidget->GetValueAge() == nValueAge);
}
+ }
}
+ }
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE))
- {
- pFormFiller->OnMouseEnter(pPageView, pAnnot);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) {
+ pFormFiller->OnMouseEnter(pPageView, pAnnot);
+ }
}
-void CFFL_IFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlag)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
-
- if (!m_bNotifying)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (pWidget->GetAAction(CPDF_AAction::CursorExit))
- {
- m_bNotifying = TRUE;
- pWidget->GetAppearanceAge();
- int nValueAge = pWidget->GetValueAge();
- pWidget->ClearAppModified();
-
- ASSERT(pPageView != NULL);
+void CFFL_IFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlag) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ if (!m_bNotifying) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (pWidget->GetAAction(CPDF_AAction::CursorExit)) {
+ m_bNotifying = TRUE;
+ pWidget->GetAppearanceAge();
+ int nValueAge = pWidget->GetValueAge();
+ pWidget->ClearAppModified();
+ ASSERT(pPageView != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView);
- m_bNotifying = FALSE;
+ pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView);
+ m_bNotifying = FALSE;
- //if (!IsValidAnnot(pPageView, pAnnot)) return;
+ // if (!IsValidAnnot(pPageView, pAnnot)) return;
- if (pWidget->IsAppModified())
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE))
- {
- pFormFiller->ResetPDFWindow(pPageView, nValueAge == pWidget->GetValueAge());
- }
- }
+ if (pWidget->IsAppModified()) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
+ pFormFiller->ResetPDFWindow(pPageView,
+ nValueAge == pWidget->GetValueAge());
}
+ }
}
+ }
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- pFormFiller->OnMouseExit(pPageView, pAnnot);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ pFormFiller->OnMouseExit(pPageView, pAnnot);
+ }
}
-FX_BOOL CFFL_IFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
-
- if (!m_bNotifying)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (Annot_HitTest(pPageView, pAnnot, point) && pWidget->GetAAction(CPDF_AAction::ButtonDown))
- {
- m_bNotifying = TRUE;
- pWidget->GetAppearanceAge();
- int nValueAge = pWidget->GetValueAge();
- pWidget->ClearAppModified();
-
- ASSERT(pPageView != NULL);
+FX_BOOL CFFL_IFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ if (!m_bNotifying) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (Annot_HitTest(pPageView, pAnnot, point) &&
+ pWidget->GetAAction(CPDF_AAction::ButtonDown)) {
+ m_bNotifying = TRUE;
+ pWidget->GetAppearanceAge();
+ int nValueAge = pWidget->GetValueAge();
+ pWidget->ClearAppModified();
+
+ ASSERT(pPageView != NULL);
+
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlags);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlags);
+ pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView);
+ m_bNotifying = FALSE;
+
+ if (!IsValidAnnot(pPageView, pAnnot))
+ return TRUE;
-
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlags);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlags);
- pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView);
- m_bNotifying = FALSE;
-
- if (!IsValidAnnot(pPageView, pAnnot)) return TRUE;
-
- if (pWidget->IsAppModified())
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE))
- {
- pFormFiller->ResetPDFWindow(pPageView, nValueAge == pWidget->GetValueAge());
- }
- }
+ if (pWidget->IsAppModified()) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
+ pFormFiller->ResetPDFWindow(pPageView,
+ nValueAge == pWidget->GetValueAge());
}
+ }
}
+ }
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- CPDFSDK_Document* pDocument = m_pApp->GetSDKDocument();
+FX_BOOL CFFL_IFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ CPDFSDK_Document* pDocument = m_pApp->GetSDKDocument();
- switch (pWidget->GetFieldType())
- {
+ switch (pWidget->GetFieldType()) {
case FIELDTYPE_PUSHBUTTON:
case FIELDTYPE_CHECKBOX:
case FIELDTYPE_RADIOBUTTON:
- if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y))
- pDocument->SetFocusAnnot(pAnnot);
- break;
- default:
+ if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y))
pDocument->SetFocusAnnot(pAnnot);
- break;
- }
-
- FX_BOOL bRet = FALSE;
+ break;
+ default:
+ pDocument->SetFocusAnnot(pAnnot);
+ break;
+ }
+
+ FX_BOOL bRet = FALSE;
+
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
+ }
+
+ if (pDocument->GetFocusAnnot() == pAnnot) {
+ FX_BOOL bExit = FALSE;
+ FX_BOOL bReset = FALSE;
+ OnButtonUp(pWidget, pPageView, bReset, bExit, nFlags);
+ if (bExit)
+ return TRUE;
+ }
+ return bRet;
+}
+
+void CFFL_IFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget,
+ CPDFSDK_PageView* pPageView,
+ FX_BOOL& bReset,
+ FX_BOOL& bExit,
+ FX_UINT nFlag) {
+ ASSERT(pWidget != NULL);
+
+ if (!m_bNotifying) {
+ if (pWidget->GetAAction(CPDF_AAction::ButtonUp)) {
+ m_bNotifying = TRUE;
+ int nAge = pWidget->GetAppearanceAge();
+ int nValueAge = pWidget->GetValueAge();
+
+ ASSERT(pPageView != NULL);
+ // CReader_DocView* pDocView = pPageView->GetDocView();
+ // ASSERT(pDocView != NULL);
+
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+
+ pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView);
+ m_bNotifying = FALSE;
+
+ if (!IsValidAnnot(pPageView, pWidget)) {
+ bExit = TRUE;
+ return;
+ }
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
- }
+ if (nAge != pWidget->GetAppearanceAge()) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
+ pFormFiller->ResetPDFWindow(pPageView,
+ nValueAge == pWidget->GetValueAge());
+ }
- if (pDocument->GetFocusAnnot() == pAnnot)
- {
- FX_BOOL bExit = FALSE;
- FX_BOOL bReset = FALSE;
- OnButtonUp(pWidget, pPageView, bReset, bExit,nFlags);
- if (bExit) return TRUE;
+ bReset = TRUE;
+ }
}
- return bRet;
+ }
}
-void CFFL_IFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView, FX_BOOL& bReset, FX_BOOL& bExit,FX_UINT nFlag)
-{
- ASSERT(pWidget != NULL);
-
- if (!m_bNotifying)
- {
- if (pWidget->GetAAction(CPDF_AAction::ButtonUp))
- {
- m_bNotifying = TRUE;
- int nAge = pWidget->GetAppearanceAge();
- int nValueAge = pWidget->GetValueAge();
-
- ASSERT(pPageView != NULL);
-// CReader_DocView* pDocView = pPageView->GetDocView();
-// ASSERT(pDocView != NULL);
-
+FX_BOOL CFFL_IFormFiller::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
+ }
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
-
- pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView);
- m_bNotifying = FALSE;
+ return FALSE;
+}
- if (!IsValidAnnot(pPageView, pWidget))
- {
- bExit = TRUE;
- return;
- }
+FX_BOOL CFFL_IFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (nAge != pWidget->GetAppearanceAge())
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE))
- {
- pFormFiller->ResetPDFWindow(pPageView, nValueAge == pWidget->GetValueAge());
- }
+ // change cursor
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) {
+ return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
+ }
- bReset = TRUE;
- }
- }
- }
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnLButtonDblClk(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ short zDelta,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- //change cursor
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE))
- {
- return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, short zDelta, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot,
+ FX_UINT nKeyCode,
+ FX_UINT nFlags) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ if (nChar == FWL_VKEY_Tab)
+ return TRUE;
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
+ return pFormFiller->OnChar(pAnnot, nChar, nFlags);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFFL_IFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, FX_UINT nKeyCode, FX_UINT nFlags)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
-
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags);
- }
-
+FX_BOOL CFFL_IFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+ if (!pAnnot)
return FALSE;
-}
-FX_BOOL CFFL_IFormFiller::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (nChar == FWL_VKEY_Tab)
- return TRUE;
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- return pFormFiller->OnChar(pAnnot, nChar, nFlags);
+ if (!m_bNotifying) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (pWidget->GetAAction(CPDF_AAction::GetFocus)) {
+ m_bNotifying = TRUE;
+ pWidget->GetAppearanceAge();
- return FALSE;
-}
+ int nValueAge = pWidget->GetValueAge();
+ pWidget->ClearAppModified();
-FX_BOOL CFFL_IFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot,FX_UINT nFlag)
-{
- if (!pAnnot)
- return FALSE;
+ CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
+ ASSERT(pPageView != NULL);
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- if (!m_bNotifying)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (pWidget->GetAAction(CPDF_AAction::GetFocus))
- {
- m_bNotifying = TRUE;
- pWidget->GetAppearanceAge();
-
- int nValueAge = pWidget->GetValueAge();
- pWidget->ClearAppModified();
-
- CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
- ASSERT(pPageView != NULL);
-
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
-
- CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE);
- if(!pFormFiller) return FALSE;
- pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa);
- pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView);
- m_bNotifying = FALSE;
-
- if (pWidget->IsAppModified())
- {
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE))
- {
- pFormFiller->ResetPDFWindow(pPageView, nValueAge == pWidget->GetValueAge());
- }
- }
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE);
+ if (!pFormFiller)
+ return FALSE;
+ pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa);
+ pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView);
+ m_bNotifying = FALSE;
+
+ if (pWidget->IsAppModified()) {
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
+ pFormFiller->ResetPDFWindow(pPageView,
+ nValueAge == pWidget->GetValueAge());
}
+ }
}
+ }
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE))
- return pFormFiller->OnSetFocus(pAnnot, nFlag);
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE))
+ return pFormFiller->OnSetFocus(pAnnot, nFlag);
- return TRUE;
+ return TRUE;
}
-FX_BOOL CFFL_IFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot,FX_UINT nFlag)
-{
- if(!pAnnot) return FALSE;
- ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
+FX_BOOL CFFL_IFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+ if (!pAnnot)
+ return FALSE;
+ ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget");
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
- {
- if (pFormFiller->OnKillFocus(pAnnot, nFlag))
- {
- if (!m_bNotifying)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (pWidget->GetAAction(CPDF_AAction::LoseFocus))
- {
- m_bNotifying = TRUE;
- pWidget->ClearAppModified();
-
- CPDFSDK_PageView* pPageView = pWidget->GetPageView();
- ASSERT(pPageView != NULL);
-
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
-
- pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
-
- pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
- m_bNotifying = FALSE;
-
- }
- }
- }
- else
- return FALSE;
- }
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
+ if (pFormFiller->OnKillFocus(pAnnot, nFlag)) {
+ if (!m_bNotifying) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (pWidget->GetAAction(CPDF_AAction::LoseFocus)) {
+ m_bNotifying = TRUE;
+ pWidget->ClearAppModified();
- return TRUE;
-}
+ CPDFSDK_PageView* pPageView = pWidget->GetPageView();
+ ASSERT(pPageView != NULL);
-FX_BOOL CFFL_IFormFiller::IsVisible(CPDFSDK_Widget* pWidget)
-{
- return pWidget->IsVisible();
-}
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
-FX_BOOL CFFL_IFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget)
-{
- ASSERT(pWidget != NULL);
+ pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
- int nFieldFlags = pWidget->GetFieldFlags();
+ pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
+ m_bNotifying = FALSE;
+ }
+ }
+ } else
+ return FALSE;
+ }
- return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY;
+ return TRUE;
}
-FX_BOOL CFFL_IFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget)
-{
- ASSERT(pWidget != NULL);
+FX_BOOL CFFL_IFormFiller::IsVisible(CPDFSDK_Widget* pWidget) {
+ return pWidget->IsVisible();
+}
- if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON)
- return TRUE;
- else
- {
- CPDF_Page* pPage = pWidget->GetPDFPage();
- ASSERT(pPage != NULL);
+FX_BOOL CFFL_IFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) {
+ ASSERT(pWidget != NULL);
- CPDF_Document* pDocument = pPage->m_pDocument;
- ASSERT(pDocument != NULL);
+ int nFieldFlags = pWidget->GetFieldFlags();
- FX_DWORD dwPermissions = pDocument->GetUserPermissions();
- return (dwPermissions&FPDFPERM_FILL_FORM) ||
- (dwPermissions&FPDFPERM_ANNOT_FORM) ||
- (dwPermissions&FPDFPERM_MODIFY);
- }
- return TRUE;
+ return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY;
}
-CFFL_FormFiller* CFFL_IFormFiller::GetFormFiller(CPDFSDK_Annot* pAnnot, FX_BOOL bRegister)
-{
- auto it = m_Maps.find(pAnnot);
- if (it != m_Maps.end())
- return it->second;
+FX_BOOL CFFL_IFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) {
+ ASSERT(pWidget != NULL);
- if (!bRegister)
- return nullptr;
-
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- int nFieldType = pWidget->GetFieldType();
- CFFL_FormFiller* pFormFiller;
- switch (nFieldType) {
- case FIELDTYPE_PUSHBUTTON:
- pFormFiller = new CFFL_PushButton(m_pApp, pWidget);
- break;
- case FIELDTYPE_CHECKBOX:
- pFormFiller = new CFFL_CheckBox(m_pApp, pWidget);
- break;
- case FIELDTYPE_RADIOBUTTON:
- pFormFiller = new CFFL_RadioButton(m_pApp, pWidget);
- break;
- case FIELDTYPE_TEXTFIELD:
- pFormFiller = new CFFL_TextField(m_pApp, pWidget);
- break;
- case FIELDTYPE_LISTBOX:
- pFormFiller = new CFFL_ListBox(m_pApp, pWidget);
- break;
- case FIELDTYPE_COMBOBOX:
- pFormFiller = new CFFL_ComboBox(m_pApp, pWidget);
- break;
- case FIELDTYPE_UNKNOWN:
- default:
- pFormFiller = nullptr;
- break;
- }
+ if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON)
+ return TRUE;
+ else {
+ CPDF_Page* pPage = pWidget->GetPDFPage();
+ ASSERT(pPage != NULL);
+
+ CPDF_Document* pDocument = pPage->m_pDocument;
+ ASSERT(pDocument != NULL);
+
+ FX_DWORD dwPermissions = pDocument->GetUserPermissions();
+ return (dwPermissions & FPDFPERM_FILL_FORM) ||
+ (dwPermissions & FPDFPERM_ANNOT_FORM) ||
+ (dwPermissions & FPDFPERM_MODIFY);
+ }
+ return TRUE;
+}
+
+CFFL_FormFiller* CFFL_IFormFiller::GetFormFiller(CPDFSDK_Annot* pAnnot,
+ FX_BOOL bRegister) {
+ auto it = m_Maps.find(pAnnot);
+ if (it != m_Maps.end())
+ return it->second;
+
+ if (!bRegister)
+ return nullptr;
+
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ int nFieldType = pWidget->GetFieldType();
+ CFFL_FormFiller* pFormFiller;
+ switch (nFieldType) {
+ case FIELDTYPE_PUSHBUTTON:
+ pFormFiller = new CFFL_PushButton(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_CHECKBOX:
+ pFormFiller = new CFFL_CheckBox(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_RADIOBUTTON:
+ pFormFiller = new CFFL_RadioButton(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_TEXTFIELD:
+ pFormFiller = new CFFL_TextField(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_LISTBOX:
+ pFormFiller = new CFFL_ListBox(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_COMBOBOX:
+ pFormFiller = new CFFL_ComboBox(m_pApp, pWidget);
+ break;
+ case FIELDTYPE_UNKNOWN:
+ default:
+ pFormFiller = nullptr;
+ break;
+ }
- if (!pFormFiller)
- return nullptr;
+ if (!pFormFiller)
+ return nullptr;
- m_Maps[pAnnot] = pFormFiller;
- return pFormFiller;
+ m_Maps[pAnnot] = pFormFiller;
+ return pFormFiller;
}
-void CFFL_IFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot)
-{
- if ( pAnnot != NULL )
- {
- UnRegisterFormFiller( pAnnot );
- }
+void CFFL_IFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot) {
+ if (pAnnot != NULL) {
+ UnRegisterFormFiller(pAnnot);
+ }
}
-void CFFL_IFormFiller::UnRegisterFormFiller(CPDFSDK_Annot* pAnnot)
-{
- auto it = m_Maps.find(pAnnot);
- if (it == m_Maps.end())
- return;
+void CFFL_IFormFiller::UnRegisterFormFiller(CPDFSDK_Annot* pAnnot) {
+ auto it = m_Maps.find(pAnnot);
+ if (it == m_Maps.end())
+ return;
- delete it->second;
- m_Maps.erase(it);
+ delete it->second;
+ m_Maps.erase(it);
}
-void CFFL_IFormFiller::QueryWherePopup(void* pPrivateData, FX_FLOAT fPopupMin,FX_FLOAT fPopupMax, int32_t & nRet, FX_FLOAT & fPopupRet)
-{
- ASSERT(pPrivateData != NULL);
-
- CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
+void CFFL_IFormFiller::QueryWherePopup(void* pPrivateData,
+ FX_FLOAT fPopupMin,
+ FX_FLOAT fPopupMax,
+ int32_t& nRet,
+ FX_FLOAT& fPopupRet) {
+ ASSERT(pPrivateData != NULL);
+ CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
+ CPDF_Rect rcPageView(0, 0, 0, 0);
+ rcPageView.right = pData->pWidget->GetPDFPage()->GetPageWidth();
+ rcPageView.bottom = pData->pWidget->GetPDFPage()->GetPageHeight();
+ rcPageView.Normalize();
+ ASSERT(pData->pWidget != NULL);
+ CPDF_Rect rcAnnot = pData->pWidget->GetRect();
- CPDF_Rect rcPageView(0,0,0,0);
- rcPageView.right = pData->pWidget->GetPDFPage()->GetPageWidth();
- rcPageView.bottom = pData->pWidget->GetPDFPage()->GetPageHeight();
- rcPageView.Normalize();
+ FX_FLOAT fTop = 0.0f;
+ FX_FLOAT fBottom = 0.0f;
-
- ASSERT(pData->pWidget != NULL);
- CPDF_Rect rcAnnot = pData->pWidget->GetRect();
-
- FX_FLOAT fTop = 0.0f;
- FX_FLOAT fBottom = 0.0f;
-
- CPDFSDK_Widget * pWidget = (CPDFSDK_Widget*)pData->pWidget;
- switch (pWidget->GetRotate() / 90)
- {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pData->pWidget;
+ switch (pWidget->GetRotate() / 90) {
default:
case 0:
- fTop = rcPageView.top - rcAnnot.top;
- fBottom = rcAnnot.bottom - rcPageView.bottom;
- break;
+ fTop = rcPageView.top - rcAnnot.top;
+ fBottom = rcAnnot.bottom - rcPageView.bottom;
+ break;
case 1:
- fTop = rcAnnot.left - rcPageView.left;
- fBottom = rcPageView.right - rcAnnot.right;
- break;
+ fTop = rcAnnot.left - rcPageView.left;
+ fBottom = rcPageView.right - rcAnnot.right;
+ break;
case 2:
- fTop = rcAnnot.bottom - rcPageView.bottom;
- fBottom = rcPageView.top - rcAnnot.top;
- break;
+ fTop = rcAnnot.bottom - rcPageView.bottom;
+ fBottom = rcPageView.top - rcAnnot.top;
+ break;
case 3:
- fTop = rcPageView.right - rcAnnot.right;
- fBottom = rcAnnot.left - rcPageView.left;
- break;
- }
-
- FX_FLOAT fFactHeight = 0;
- FX_BOOL bBottom = TRUE;
- FX_FLOAT fMaxListBoxHeight = 0;
- if (fPopupMax > FFL_MAXLISTBOXHEIGHT)
- {
- if (fPopupMin > FFL_MAXLISTBOXHEIGHT)
- {
- fMaxListBoxHeight = fPopupMin;
- }
- else
- {
- fMaxListBoxHeight = FFL_MAXLISTBOXHEIGHT;
- }
- }
- else
- fMaxListBoxHeight = fPopupMax;
-
- if (fBottom > fMaxListBoxHeight)
- {
- fFactHeight = fMaxListBoxHeight;
+ fTop = rcPageView.right - rcAnnot.right;
+ fBottom = rcAnnot.left - rcPageView.left;
+ break;
+ }
+
+ FX_FLOAT fFactHeight = 0;
+ FX_BOOL bBottom = TRUE;
+ FX_FLOAT fMaxListBoxHeight = 0;
+ if (fPopupMax > FFL_MAXLISTBOXHEIGHT) {
+ if (fPopupMin > FFL_MAXLISTBOXHEIGHT) {
+ fMaxListBoxHeight = fPopupMin;
+ } else {
+ fMaxListBoxHeight = FFL_MAXLISTBOXHEIGHT;
+ }
+ } else
+ fMaxListBoxHeight = fPopupMax;
+
+ if (fBottom > fMaxListBoxHeight) {
+ fFactHeight = fMaxListBoxHeight;
+ bBottom = TRUE;
+ } else {
+ if (fTop > fMaxListBoxHeight) {
+ fFactHeight = fMaxListBoxHeight;
+ bBottom = FALSE;
+ } else {
+ if (fTop > fBottom) {
+ fFactHeight = fTop;
+ bBottom = FALSE;
+ } else {
+ fFactHeight = fBottom;
bBottom = TRUE;
+ }
}
- else
- {
- if (fTop > fMaxListBoxHeight)
- {
- fFactHeight = fMaxListBoxHeight;
- bBottom = FALSE;
- }
- else
- {
- if (fTop > fBottom)
- {
- fFactHeight = fTop;
- bBottom = FALSE;
- }
- else
- {
- fFactHeight = fBottom;
- bBottom = TRUE;
- }
- }
- }
+ }
- nRet = bBottom ? 0 : 1;
- fPopupRet = fFactHeight;
+ nRet = bBottom ? 0 : 1;
+ fPopupRet = fFactHeight;
}
-void CFFL_IFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView, FX_BOOL& bRC, FX_BOOL& bExit, FX_DWORD nFlag)
-{
- if (!m_bNotifying)
- {
- ASSERT(pWidget != NULL);
- if (pWidget->GetAAction(CPDF_AAction::KeyStroke))
- {
- m_bNotifying = TRUE;
- pWidget->ClearAppModified();
+void CFFL_IFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget,
+ CPDFSDK_PageView* pPageView,
+ FX_BOOL& bRC,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_bNotifying) {
+ ASSERT(pWidget != NULL);
+ if (pWidget->GetAAction(CPDF_AAction::KeyStroke)) {
+ m_bNotifying = TRUE;
+ pWidget->ClearAppModified();
- ASSERT(pPageView != NULL);
+ ASSERT(pPageView != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- fa.bWillCommit = TRUE;
- fa.bKeyDown = TRUE;
- fa.bRC = TRUE;
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+ fa.bWillCommit = TRUE;
+ fa.bKeyDown = TRUE;
+ fa.bRC = TRUE;
- CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
- ASSERT(pFormFiller != NULL);
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
+ ASSERT(pFormFiller != NULL);
- pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa);
- pFormFiller->SaveState(pPageView);
+ pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa);
+ pFormFiller->SaveState(pPageView);
- PDFSDK_FieldAction faOld = fa;
- pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView);
+ PDFSDK_FieldAction faOld = fa;
+ pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView);
- bRC = fa.bRC;
-// bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView, pWidget);
+ bRC = fa.bRC;
+ // bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView,
+ // pWidget);
- m_bNotifying = FALSE;
- }
+ m_bNotifying = FALSE;
}
+ }
}
-void CFFL_IFormFiller::OnValidate(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView, FX_BOOL& bRC, FX_BOOL& bExit, FX_DWORD nFlag)
-{
- if (!m_bNotifying)
- {
- ASSERT(pWidget != NULL);
- if (pWidget->GetAAction(CPDF_AAction::Validate))
- {
- m_bNotifying = TRUE;
- pWidget->ClearAppModified();
-
- ASSERT(pPageView != NULL);
-// CReader_DocView* pDocView = pPageView->GetDocView();
-// ASSERT(pDocView != NULL);
-
+void CFFL_IFormFiller::OnValidate(CPDFSDK_Widget* pWidget,
+ CPDFSDK_PageView* pPageView,
+ FX_BOOL& bRC,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_bNotifying) {
+ ASSERT(pWidget != NULL);
+ if (pWidget->GetAAction(CPDF_AAction::Validate)) {
+ m_bNotifying = TRUE;
+ pWidget->ClearAppModified();
+ ASSERT(pPageView != NULL);
+ // CReader_DocView* pDocView = pPageView->GetDocView();
+ // ASSERT(pDocView != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- fa.bKeyDown = TRUE;
- fa.bRC = TRUE;
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+ fa.bKeyDown = TRUE;
+ fa.bRC = TRUE;
- CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
- ASSERT(pFormFiller != NULL);
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
+ ASSERT(pFormFiller != NULL);
- pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa);
- pFormFiller->SaveState(pPageView);
+ pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa);
+ pFormFiller->SaveState(pPageView);
- PDFSDK_FieldAction faOld = fa;
- pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView);
+ PDFSDK_FieldAction faOld = fa;
+ pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView);
- bRC = fa.bRC;
-// bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView, pWidget);
+ bRC = fa.bRC;
+ // bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView,
+ // pWidget);
- m_bNotifying = FALSE;
- }
+ m_bNotifying = FALSE;
}
+ }
}
-void CFFL_IFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView, FX_BOOL& bExit, FX_DWORD nFlag)
-{
- if (!m_bNotifying)
- {
- ASSERT(pWidget != NULL);
- ASSERT(pPageView != NULL);
-// CReader_DocView* pDocView = pPageView->GetDocView();
-// ASSERT(pDocView != NULL);
- CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
- ASSERT(pDocument != NULL);
+void CFFL_IFormFiller::OnCalculate(CPDFSDK_Widget* pWidget,
+ CPDFSDK_PageView* pPageView,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_bNotifying) {
+ ASSERT(pWidget != NULL);
+ ASSERT(pPageView != NULL);
+ // CReader_DocView* pDocView = pPageView->GetDocView();
+ // ASSERT(pDocView != NULL);
+ CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- pInterForm->OnCalculate(pWidget->GetFormField());
+ pInterForm->OnCalculate(pWidget->GetFormField());
-// bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView, pWidget);
+ // bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView,
+ // pWidget);
- m_bNotifying = FALSE;
- }
+ m_bNotifying = FALSE;
+ }
}
-void CFFL_IFormFiller::OnFormat(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView, FX_BOOL& bExit, FX_DWORD nFlag)
-{
- if (!m_bNotifying)
- {
- ASSERT(pWidget != NULL);
- ASSERT(pPageView != NULL);
-// CReader_DocView* pDocView = pPageView->GetDocView();
-// ASSERT(pDocView != NULL);
- CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
- ASSERT(pDocument != NULL);
-
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+void CFFL_IFormFiller::OnFormat(CPDFSDK_Widget* pWidget,
+ CPDFSDK_PageView* pPageView,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_bNotifying) {
+ ASSERT(pWidget != NULL);
+ ASSERT(pPageView != NULL);
+ // CReader_DocView* pDocView = pPageView->GetDocView();
+ // ASSERT(pDocView != NULL);
+ CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
+ ASSERT(pDocument != NULL);
- FX_BOOL bFormated = FALSE;
- CFX_WideString sValue = pInterForm->OnFormat(pWidget->GetFormField(), bFormated);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
-// bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView, pWidget);
+ FX_BOOL bFormated = FALSE;
+ CFX_WideString sValue =
+ pInterForm->OnFormat(pWidget->GetFormField(), bFormated);
- if (bExit) return;
+ // bExit = !IsValidAnnot(m_pApp, pDocument, pDocView, pPageView,
+ // pWidget);
- if (bFormated)
- {
- pInterForm->ResetFieldAppearance(pWidget->GetFormField(), sValue.c_str(), TRUE);
- pInterForm->UpdateField(pWidget->GetFormField());
- }
+ if (bExit)
+ return;
- m_bNotifying = FALSE;
+ if (bFormated) {
+ pInterForm->ResetFieldAppearance(pWidget->GetFormField(), sValue.c_str(),
+ TRUE);
+ pInterForm->UpdateField(pWidget->GetFormField());
}
+
+ m_bNotifying = FALSE;
+ }
}
-FX_BOOL CFFL_IFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot)
-{
+FX_BOOL CFFL_IFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ ASSERT(pPageView != NULL);
+ ASSERT(pAnnot != NULL);
- ASSERT(pPageView != NULL);
- ASSERT(pAnnot != NULL);
-
- if(pPageView)
- return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot());
- else
- return FALSE;
+ if (pPageView)
+ return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot());
+ else
+ return FALSE;
}
-void CFFL_IFormFiller::OnBeforeKeyStroke(FX_BOOL bEditOrList, void* pPrivateData, int32_t nKeyCode,
- CFX_WideString & strChange, const CFX_WideString& strChangeEx,
- int nSelStart, int nSelEnd,
- FX_BOOL bKeyDown, FX_BOOL & bRC, FX_BOOL & bExit, FX_DWORD nFlag)
-{
- ASSERT(pPrivateData != NULL);
- CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
- ASSERT(pData->pWidget != NULL);
-
- CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE);
- ASSERT(pFormFiller != NULL);
-
- if (!m_bNotifying)
- {
- if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke))
- {
- m_bNotifying = TRUE;
- int nAge = pData->pWidget->GetAppearanceAge();
- int nValueAge = pData->pWidget->GetValueAge();
-
- ASSERT(pData->pPageView != NULL);
- CPDFSDK_Document* pDocument = pData->pPageView->GetSDKDocument();
-
- PDFSDK_FieldAction fa;
- fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
- fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
- fa.sChange = strChange;
- fa.sChangeEx = strChangeEx;
- fa.bKeyDown = bKeyDown;
- fa.bWillCommit = FALSE;
- fa.bRC = TRUE;
- fa.nSelStart = nSelStart;
- fa.nSelEnd = nSelEnd;
-
-
- pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa);
- pFormFiller->SaveState(pData->pPageView);
-
- if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pData->pPageView))
- {
- if (!IsValidAnnot(pData->pPageView, pData->pWidget))
- {
- bExit = TRUE;
- m_bNotifying = FALSE;
- return;
- }
-
- if (nAge != pData->pWidget->GetAppearanceAge())
- {
- CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow(pData->pPageView, nValueAge == pData->pWidget->GetValueAge());
- pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
- bExit = TRUE;
- }
-
- if (fa.bRC)
- {
- pFormFiller->SetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa);
- bRC = FALSE;
- }
- else
- {
- pFormFiller->RestoreState(pData->pPageView);
- bRC = FALSE;
- }
-
- if (pDocument->GetFocusAnnot() != pData->pWidget)
- {
- pFormFiller->CommitData(pData->pPageView,nFlag);
- bExit = TRUE;
- }
- }
- else
- {
- if (!IsValidAnnot(pData->pPageView, pData->pWidget))
- {
- bExit = TRUE;
- m_bNotifying = FALSE;
- return;
- }
- }
-
- m_bNotifying = FALSE;
+void CFFL_IFormFiller::OnBeforeKeyStroke(FX_BOOL bEditOrList,
+ void* pPrivateData,
+ int32_t nKeyCode,
+ CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ int nSelStart,
+ int nSelEnd,
+ FX_BOOL bKeyDown,
+ FX_BOOL& bRC,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ ASSERT(pPrivateData != NULL);
+ CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
+ ASSERT(pData->pWidget != NULL);
+
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE);
+ ASSERT(pFormFiller != NULL);
+
+ if (!m_bNotifying) {
+ if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke)) {
+ m_bNotifying = TRUE;
+ int nAge = pData->pWidget->GetAppearanceAge();
+ int nValueAge = pData->pWidget->GetValueAge();
+
+ ASSERT(pData->pPageView != NULL);
+ CPDFSDK_Document* pDocument = pData->pPageView->GetSDKDocument();
+
+ PDFSDK_FieldAction fa;
+ fa.bModifier = m_pApp->FFI_IsCTRLKeyDown(nFlag);
+ fa.bShift = m_pApp->FFI_IsSHIFTKeyDown(nFlag);
+ fa.sChange = strChange;
+ fa.sChangeEx = strChangeEx;
+ fa.bKeyDown = bKeyDown;
+ fa.bWillCommit = FALSE;
+ fa.bRC = TRUE;
+ fa.nSelStart = nSelStart;
+ fa.nSelEnd = nSelEnd;
+
+ pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa);
+ pFormFiller->SaveState(pData->pPageView);
+
+ if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa,
+ pData->pPageView)) {
+ if (!IsValidAnnot(pData->pPageView, pData->pWidget)) {
+ bExit = TRUE;
+ m_bNotifying = FALSE;
+ return;
+ }
+
+ if (nAge != pData->pWidget->GetAppearanceAge()) {
+ CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow(
+ pData->pPageView, nValueAge == pData->pWidget->GetValueAge());
+ pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
+ bExit = TRUE;
+ }
+
+ if (fa.bRC) {
+ pFormFiller->SetActionData(pData->pPageView, CPDF_AAction::KeyStroke,
+ fa);
+ bRC = FALSE;
+ } else {
+ pFormFiller->RestoreState(pData->pPageView);
+ bRC = FALSE;
+ }
+
+ if (pDocument->GetFocusAnnot() != pData->pWidget) {
+ pFormFiller->CommitData(pData->pPageView, nFlag);
+ bExit = TRUE;
}
+ } else {
+ if (!IsValidAnnot(pData->pPageView, pData->pWidget)) {
+ bExit = TRUE;
+ m_bNotifying = FALSE;
+ return;
+ }
+ }
+
+ m_bNotifying = FALSE;
}
+ }
}
-void CFFL_IFormFiller::OnAfterKeyStroke(FX_BOOL bEditOrList, void* pPrivateData, FX_BOOL & bExit,FX_DWORD nFlag)
-{
- ASSERT(pPrivateData != NULL);
- CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
- ASSERT(pData->pWidget != NULL);
+void CFFL_IFormFiller::OnAfterKeyStroke(FX_BOOL bEditOrList,
+ void* pPrivateData,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ ASSERT(pPrivateData != NULL);
+ CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
+ ASSERT(pData->pWidget != NULL);
- CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE);
- ASSERT(pFormFiller != NULL);
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE);
+ ASSERT(pFormFiller != NULL);
- if (!bEditOrList)
- pFormFiller->OnKeyStroke(bExit);
+ if (!bEditOrList)
+ pFormFiller->OnKeyStroke(bExit);
}
diff --git a/fpdfsdk/src/formfiller/FFL_ListBox.cpp b/fpdfsdk/src/formfiller/FFL_ListBox.cpp
index c105cfcbdd..0735f48cf3 100644
--- a/fpdfsdk/src/formfiller/FFL_ListBox.cpp
+++ b/fpdfsdk/src/formfiller/FFL_ListBox.cpp
@@ -12,286 +12,237 @@
//#include "../../include/formfiller/FFL_Undo.h"
#include "../../include/formfiller/FFL_CBA_Fontmap.h"
+#define FFL_DEFAULTLISTBOXFONTSIZE 12.0f
-#define FFL_DEFAULTLISTBOXFONTSIZE 12.0f
+/* ------------------------------- CFFL_ListBox -------------------------------
+ */
+CFFL_ListBox::CFFL_ListBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget)
+ : CFFL_FormFiller(pApp, pWidget), m_pFontMap(NULL) {}
-/* ------------------------------- CFFL_ListBox ------------------------------- */
-
-CFFL_ListBox::CFFL_ListBox(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget) :
- CFFL_FormFiller(pApp, pWidget),
- m_pFontMap(NULL)
-{
+CFFL_ListBox::~CFFL_ListBox() {
+ delete m_pFontMap;
}
-CFFL_ListBox::~CFFL_ListBox()
-{
- delete m_pFontMap;
+PWL_CREATEPARAM CFFL_ListBox::GetCreateParam() {
+ PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
+
+ ASSERT(m_pWidget != NULL);
+ FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags();
+
+ if (dwFieldFlag & FIELDFLAG_MULTISELECT) {
+ cp.dwFlags |= PLBS_MULTIPLESEL;
+ }
+
+ cp.dwFlags |= PWS_VSCROLL;
+
+ if (cp.dwFlags & PWS_AUTOFONTSIZE)
+ cp.fFontSize = FFL_DEFAULTLISTBOXFONTSIZE;
+
+ if (!m_pFontMap) {
+ m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler());
+ m_pFontMap->Initial();
+ }
+ cp.pFontMap = m_pFontMap;
+
+ return cp;
}
-PWL_CREATEPARAM CFFL_ListBox::GetCreateParam()
-{
- PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
+CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_ListBox* pWnd = new CPWL_ListBox();
+ pWnd->AttachFFLData(this);
+ pWnd->Create(cp);
- ASSERT(m_pWidget != NULL);
- FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags();
+ ASSERT(m_pApp != NULL);
+ CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
+ pWnd->SetFillerNotify(pIFormFiller);
- if (dwFieldFlag & FIELDFLAG_MULTISELECT)
- {
- cp.dwFlags |= PLBS_MULTIPLESEL;
- }
+ for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++)
+ pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str());
- cp.dwFlags |= PWS_VSCROLL;
+ if (pWnd->HasFlag(PLBS_MULTIPLESEL)) {
+ m_OriginSelections.clear();
- if (cp.dwFlags & PWS_AUTOFONTSIZE)
- cp.fFontSize = FFL_DEFAULTLISTBOXFONTSIZE;
+ FX_BOOL bSetCaret = FALSE;
+ for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) {
+ if (m_pWidget->IsOptionSelected(i)) {
+ if (!bSetCaret) {
+ pWnd->SetCaret(i);
+ bSetCaret = TRUE;
+ }
+ pWnd->Select(i);
+ m_OriginSelections.insert(i);
+ }
+ }
+ } else {
+ for (int i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) {
+ if (m_pWidget->IsOptionSelected(i)) {
+ pWnd->Select(i);
+ break;
+ }
+ }
+ }
- if (!m_pFontMap)
- {
- m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler());
- m_pFontMap->Initial();
- }
- cp.pFontMap = m_pFontMap;
+ pWnd->SetTopVisibleIndex(m_pWidget->GetTopVisibleIndex());
- return cp;
+ return pWnd;
}
-CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_ListBox* pWnd = new CPWL_ListBox();
- pWnd->AttachFFLData(this);
- pWnd->Create(cp);
-
- ASSERT(m_pApp != NULL);
- CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
- pWnd->SetFillerNotify(pIFormFiller);
-
- for (int32_t i=0,sz=m_pWidget->CountOptions(); i<sz; i++)
- pWnd->AddString(m_pWidget->GetOptionLabel(i).c_str());
-
- if (pWnd->HasFlag(PLBS_MULTIPLESEL))
- {
- m_OriginSelections.clear();
-
- FX_BOOL bSetCaret = FALSE;
- for (int32_t i=0,sz=m_pWidget->CountOptions(); i<sz; i++)
- {
- if (m_pWidget->IsOptionSelected(i))
- {
- if (!bSetCaret)
- {
- pWnd->SetCaret(i);
- bSetCaret = TRUE;
- }
- pWnd->Select(i);
- m_OriginSelections.insert(i);
- }
- }
- }
- else
- {
- for (int i=0,sz=m_pWidget->CountOptions(); i<sz; i++)
- {
- if (m_pWidget->IsOptionSelected(i))
- {
- pWnd->Select(i);
- break;
- }
- }
- }
-
- pWnd->SetTopVisibleIndex(m_pWidget->GetTopVisibleIndex());
-
- return pWnd;
+FX_BOOL CFFL_ListBox::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
}
+FX_BOOL CFFL_ListBox::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE);
+ if (!pListBox)
+ return FALSE;
-FX_BOOL CFFL_ListBox::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+ if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) {
+ int nSelCount = 0;
+ for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; ++i) {
+ if (pListBox->IsItemSelected(i)) {
+ if (m_OriginSelections.count(i) == 0)
+ return TRUE;
+
+ nSelCount++;
+ }
+ }
+
+ return nSelCount != m_OriginSelections.size();
+ }
+ return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0);
}
-FX_BOOL CFFL_ListBox::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
- CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE);
- if (!pListBox)
- return FALSE;
+void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) {
- int nSelCount = 0;
- for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; ++i) {
- if (pListBox->IsItemSelected(i)) {
- if (m_OriginSelections.count(i) == 0)
- return TRUE;
-
- nSelCount++;
- }
+ if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) {
+ CFX_IntArray aOldSelect, aNewSelect;
+
+ {
+ for (int i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) {
+ if (m_pWidget->IsOptionSelected(i)) {
+ aOldSelect.Add(i);
}
+ }
+ }
+
+ int32_t nNewTopIndex = pListBox->GetTopVisibleIndex();
- return nSelCount != m_OriginSelections.size();
+ m_pWidget->ClearSelection(FALSE);
+
+ if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) {
+ for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; i++) {
+ if (pListBox->IsItemSelected(i)) {
+ m_pWidget->SetOptionSelection(i, TRUE, FALSE);
+ aNewSelect.Add(i);
+ }
+ }
+ } else {
+ m_pWidget->SetOptionSelection(pListBox->GetCurSel(), TRUE, FALSE);
+ aNewSelect.Add(pListBox->GetCurSel());
}
- return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0);
-}
-void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
-
- if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE))
- {
- CFX_IntArray aOldSelect, aNewSelect;
-
- {
- for (int i=0,sz=m_pWidget->CountOptions(); i<sz; i++)
- {
- if (m_pWidget->IsOptionSelected(i))
- {
- aOldSelect.Add(i);
- }
- }
- }
-
-
- int32_t nNewTopIndex = pListBox->GetTopVisibleIndex();
-
- m_pWidget->ClearSelection(FALSE);
-
- if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT)
- {
- for (int32_t i=0,sz=pListBox->GetCount(); i<sz; i++)
- {
- if (pListBox->IsItemSelected(i))
- {
- m_pWidget->SetOptionSelection(i, TRUE, FALSE);
- aNewSelect.Add(i);
- }
- }
- }
- else
- {
- m_pWidget->SetOptionSelection(pListBox->GetCurSel(), TRUE, FALSE);
- aNewSelect.Add(pListBox->GetCurSel());
- }
-
- m_pWidget->SetTopVisibleIndex(nNewTopIndex);
- m_pWidget->ResetFieldAppearance(TRUE);
- m_pWidget->UpdateField();
- SetChangeMark();
- }
+ m_pWidget->SetTopVisibleIndex(nNewTopIndex);
+ m_pWidget->ResetFieldAppearance(TRUE);
+ m_pWidget->UpdateField();
+ SetChangeMark();
+ }
}
-void CFFL_ListBox::GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- PDFSDK_FieldAction& fa)
-{
- switch (type)
- {
- case CPDF_AAction::Validate:
- if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT)
- {
- fa.sValue = L"";
- }
- else
- {
- if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE))
- {
- ASSERT(m_pWidget != NULL);
- int32_t nCurSel = pListBox->GetCurSel();
- if (nCurSel >= 0)
- fa.sValue = m_pWidget->GetOptionLabel(nCurSel);
- }
- }
- break;
- case CPDF_AAction::LoseFocus:
- case CPDF_AAction::GetFocus:
- if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT)
- {
- fa.sValue = L"";
- }
- else
- {
- ASSERT(m_pWidget != NULL);
- int32_t nCurSel = m_pWidget->GetSelectedIndex(0);
- if (nCurSel >= 0)
- fa.sValue = m_pWidget->GetOptionLabel(nCurSel);
- }
- break;
- default:
- break;
- }
+void CFFL_ListBox::GetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& fa) {
+ switch (type) {
+ case CPDF_AAction::Validate:
+ if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) {
+ fa.sValue = L"";
+ } else {
+ if (CPWL_ListBox* pListBox =
+ (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) {
+ ASSERT(m_pWidget != NULL);
+ int32_t nCurSel = pListBox->GetCurSel();
+ if (nCurSel >= 0)
+ fa.sValue = m_pWidget->GetOptionLabel(nCurSel);
+ }
+ }
+ break;
+ case CPDF_AAction::LoseFocus:
+ case CPDF_AAction::GetFocus:
+ if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) {
+ fa.sValue = L"";
+ } else {
+ ASSERT(m_pWidget != NULL);
+ int32_t nCurSel = m_pWidget->GetSelectedIndex(0);
+ if (nCurSel >= 0)
+ fa.sValue = m_pWidget->GetOptionLabel(nCurSel);
+ }
+ break;
+ default:
+ break;
+ }
}
+void CFFL_ListBox::SetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& fa) {}
-void CFFL_ListBox::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- const PDFSDK_FieldAction& fa)
-{
-}
+void CFFL_ListBox::SaveState(CPDFSDK_PageView* pPageView) {
+ ASSERT(pPageView != NULL);
-void CFFL_ListBox::SaveState(CPDFSDK_PageView* pPageView)
-{
- ASSERT(pPageView != NULL);
-
- if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE))
- {
- for (int32_t i=0,sz=pListBox->GetCount(); i<sz; i++)
- {
- if (pListBox->IsItemSelected(i))
- {
- m_State.Add(i);
- }
- }
- }
+ if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) {
+ for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; i++) {
+ if (pListBox->IsItemSelected(i)) {
+ m_State.Add(i);
+ }
+ }
+ }
}
-void CFFL_ListBox::RestoreState(CPDFSDK_PageView* pPageView)
-{
- if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE))
- {
- for (int i=0,sz=m_State.GetSize(); i<sz; i++)
- pListBox->Select(m_State[i]);
- }
+void CFFL_ListBox::RestoreState(CPDFSDK_PageView* pPageView) {
+ if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) {
+ for (int i = 0, sz = m_State.GetSize(); i < sz; i++)
+ pListBox->Select(m_State[i]);
+ }
}
-CPWL_Wnd* CFFL_ListBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue)
-{
- if (bRestoreValue)
- SaveState(pPageView);
+CPWL_Wnd* CFFL_ListBox::ResetPDFWindow(CPDFSDK_PageView* pPageView,
+ FX_BOOL bRestoreValue) {
+ if (bRestoreValue)
+ SaveState(pPageView);
- DestroyPDFWindow(pPageView);
+ DestroyPDFWindow(pPageView);
- CPWL_Wnd* pRet = NULL;
+ CPWL_Wnd* pRet = NULL;
- if (bRestoreValue)
- {
- RestoreState(pPageView);
- pRet = GetPDFWindow(pPageView, FALSE);
- }
- else
- pRet = GetPDFWindow(pPageView, TRUE);
+ if (bRestoreValue) {
+ RestoreState(pPageView);
+ pRet = GetPDFWindow(pPageView, FALSE);
+ } else
+ pRet = GetPDFWindow(pPageView, TRUE);
- m_pWidget->UpdateField();
+ m_pWidget->UpdateField();
- return pRet;
+ return pRet;
}
-void CFFL_ListBox::OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag)
-{
- ASSERT(m_pWidget != NULL);
-
- int nFlags = m_pWidget->GetFieldFlags();
-
- if (nFlags & FIELDFLAG_COMMITONSELCHANGE)
- {
- if (m_bValid)
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
-
- if (CommitData(pPageView, nFlag))
- {
- DestroyPDFWindow(pPageView);
- m_bValid = FALSE;
- }
- }
- }
-}
+void CFFL_ListBox::OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag) {
+ ASSERT(m_pWidget != NULL);
+
+ int nFlags = m_pWidget->GetFieldFlags();
+ if (nFlags & FIELDFLAG_COMMITONSELCHANGE) {
+ if (m_bValid) {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
+
+ if (CommitData(pPageView, nFlag)) {
+ DestroyPDFWindow(pPageView);
+ m_bValid = FALSE;
+ }
+ }
+ }
+}
diff --git a/fpdfsdk/src/formfiller/FFL_Notify.cpp b/fpdfsdk/src/formfiller/FFL_Notify.cpp
index 58a2202b61..e348f8e0b9 100644
--- a/fpdfsdk/src/formfiller/FFL_Notify.cpp
+++ b/fpdfsdk/src/formfiller/FFL_Notify.cpp
@@ -10,164 +10,168 @@
// #include "../../include/formfiller/FFL_ComboBox.h"
// #include "../../include/formfiller/FFL_Module.h"
-/* -------------------------------- CFFL_Notify ------------------------------ */
+/* -------------------------------- CFFL_Notify ------------------------------
+ */
//#pragma warning(disable: 4800)
-CFFL_Notify::CFFL_Notify(CFFL_FormFiller * pFormFiller) :
- m_bDoActioning(FALSE),
- m_nNotifyFlag(0)
-{
- ASSERT(pFormFiller != NULL);
+CFFL_Notify::CFFL_Notify(CFFL_FormFiller* pFormFiller)
+ : m_bDoActioning(FALSE), m_nNotifyFlag(0) {
+ ASSERT(pFormFiller != NULL);
}
-CFFL_Notify::~CFFL_Notify()
-{
-}
+CFFL_Notify::~CFFL_Notify() {}
-void CFFL_Notify::BeforeNotify()
-{
- m_nNotifyFlag ++;
+void CFFL_Notify::BeforeNotify() {
+ m_nNotifyFlag++;
}
-
-void CFFL_Notify::AfterNotify()
-{
- m_nNotifyFlag --;
+void CFFL_Notify::AfterNotify() {
+ m_nNotifyFlag--;
}
-FX_BOOL CFFL_Notify::OnMouseUp(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::ButtonUp, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnMouseUp(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::ButtonUp, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnMouseDown(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::ButtonDown, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnMouseDown(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::ButtonDown, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnMouseEnter(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::CursorEnter, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnMouseEnter(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::CursorEnter, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnMouseExit(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::CursorExit, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnMouseExit(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::CursorExit, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnSetFocus(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::GetFocus, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnSetFocus(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::GetFocus, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnKillFocus(FX_BOOL & bExit)
-{
- BeforeNotify();
- FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::LoseFocus, bExit);
- AfterNotify();
- return bRet;
+FX_BOOL CFFL_Notify::OnKillFocus(FX_BOOL& bExit) {
+ BeforeNotify();
+ FX_BOOL bRet =
+ FALSE; // DoAAction(CPDF_AAction::AActionType::LoseFocus, bExit);
+ AfterNotify();
+ return bRet;
}
-FX_BOOL CFFL_Notify::OnCalculate()
-{
- return TRUE;
+FX_BOOL CFFL_Notify::OnCalculate() {
+ return TRUE;
}
-FX_BOOL CFFL_Notify::OnFormat(int iCommitKey)
-{
- return TRUE;
+FX_BOOL CFFL_Notify::OnFormat(int iCommitKey) {
+ return TRUE;
}
-FX_BOOL CFFL_Notify::OnKeyStroke(CPDF_FormField* pFormField, int nCommitKey, CFX_WideString& strValue, CFX_WideString& strChange,
- const CFX_WideString& strChangeEx, FX_BOOL bKeyDown, FX_BOOL bModifier,
- FX_BOOL bShift, FX_BOOL bWillCommit, FX_BOOL bFieldFull,
- int& nSelStart, int& nSelEnd, FX_BOOL& bRC)
-{
- return TRUE;
+FX_BOOL CFFL_Notify::OnKeyStroke(CPDF_FormField* pFormField,
+ int nCommitKey,
+ CFX_WideString& strValue,
+ CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ FX_BOOL bShift,
+ FX_BOOL bWillCommit,
+ FX_BOOL bFieldFull,
+ int& nSelStart,
+ int& nSelEnd,
+ FX_BOOL& bRC) {
+ return TRUE;
}
-FX_BOOL CFFL_Notify::OnValidate(CPDF_FormField* pFormField, CFX_WideString& strValue, CFX_WideString & strChange,
- const CFX_WideString& strChangeEx, FX_BOOL bKeyDown, FX_BOOL bModifier,
- FX_BOOL bShift, FX_BOOL & bRC)
-{
- return TRUE;
+FX_BOOL CFFL_Notify::OnValidate(CPDF_FormField* pFormField,
+ CFX_WideString& strValue,
+ CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ FX_BOOL bShift,
+ FX_BOOL& bRC) {
+ return TRUE;
}
-FX_BOOL CFFL_Notify::DoAAction(CPDF_AAction::AActionType eAAT, FX_BOOL & bExit)
-{
- if (m_bDoActioning)
- return FALSE;
+FX_BOOL CFFL_Notify::DoAAction(CPDF_AAction::AActionType eAAT, FX_BOOL& bExit) {
+ if (m_bDoActioning)
+ return FALSE;
- CPDF_Action action;
- if (!FindAAction(eAAT, action))
- return FALSE;
+ CPDF_Action action;
+ if (!FindAAction(eAAT, action))
+ return FALSE;
- m_bDoActioning = TRUE;
- ExecuteActionTree(eAAT,action,bExit);
- m_bDoActioning = FALSE;
- return TRUE;
+ m_bDoActioning = TRUE;
+ ExecuteActionTree(eAAT, action, bExit);
+ m_bDoActioning = FALSE;
+ return TRUE;
}
-FX_BOOL CFFL_Notify::ExecuteActionTree(CPDF_AAction::AActionType eAAT,CPDF_Action & action, FX_BOOL& bExit)
-{
- if (!ExecuteAction(eAAT,action,bExit)) return FALSE;
- if (bExit) return TRUE;
+FX_BOOL CFFL_Notify::ExecuteActionTree(CPDF_AAction::AActionType eAAT,
+ CPDF_Action& action,
+ FX_BOOL& bExit) {
+ if (!ExecuteAction(eAAT, action, bExit))
+ return FALSE;
+ if (bExit)
+ return TRUE;
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteActionTree(eAAT,subaction,bExit)) return FALSE;
- if (bExit) break;
- }
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteActionTree(eAAT, subaction, bExit))
+ return FALSE;
+ if (bExit)
+ break;
+ }
- return TRUE;
+ return TRUE;
}
-
-FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action)
-{
- return FALSE;
+FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction::AActionType eAAT,
+ CPDF_Action& action) {
+ return FALSE;
}
-FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction aaction,CPDF_AAction::AActionType eAAT,CPDF_Action & action)
-{
- CPDF_Action MyAction;
-
- if (aaction.ActionExist(eAAT))
- {
- MyAction = aaction.GetAction(eAAT);
- }
- else
- return FALSE;
+FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction aaction,
+ CPDF_AAction::AActionType eAAT,
+ CPDF_Action& action) {
+ CPDF_Action MyAction;
+ if (aaction.ActionExist(eAAT)) {
+ MyAction = aaction.GetAction(eAAT);
+ } else
+ return FALSE;
- if (MyAction.GetType() == CPDF_Action::Unknown)
- return FALSE;
+ if (MyAction.GetType() == CPDF_Action::Unknown)
+ return FALSE;
- action = MyAction;
+ action = MyAction;
- return TRUE;
+ return TRUE;
}
-FX_BOOL CFFL_Notify::ExecuteAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action,FX_BOOL& bExit)
-{
- return FALSE;
+FX_BOOL CFFL_Notify::ExecuteAction(CPDF_AAction::AActionType eAAT,
+ CPDF_Action& action,
+ FX_BOOL& bExit) {
+ return FALSE;
}
//#pragma warning(default: 4800)
-
diff --git a/fpdfsdk/src/formfiller/FFL_PushButton.cpp b/fpdfsdk/src/formfiller/FFL_PushButton.cpp
index a5df48840c..533d786177 100644
--- a/fpdfsdk/src/formfiller/FFL_PushButton.cpp
+++ b/fpdfsdk/src/formfiller/FFL_PushButton.cpp
@@ -8,36 +8,33 @@
#include "../../include/formfiller/FFL_FormFiller.h"
#include "../../include/formfiller/FFL_PushButton.h"
-/* ------------------------------- CFFL_PushButton ------------------------------- */
+/* ------------------------------- CFFL_PushButton
+ * ------------------------------- */
-CFFL_PushButton::CFFL_PushButton(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot):
- CFFL_Button( pApp, pAnnot)
-{
-}
+CFFL_PushButton::CFFL_PushButton(CPDFDoc_Environment* pApp,
+ CPDFSDK_Annot* pAnnot)
+ : CFFL_Button(pApp, pAnnot) {}
-CFFL_PushButton::~CFFL_PushButton()
-{
-}
+CFFL_PushButton::~CFFL_PushButton() {}
-CPWL_Wnd* CFFL_PushButton::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_PushButton* pWnd = new CPWL_PushButton();
- pWnd->Create(cp);
+CPWL_Wnd* CFFL_PushButton::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_PushButton* pWnd = new CPWL_PushButton();
+ pWnd->Create(cp);
- return pWnd;
+ return pWnd;
}
-
-FX_BOOL CFFL_PushButton::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+FX_BOOL CFFL_PushButton::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
}
-void CFFL_PushButton::OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot,
- CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_DWORD dwFlags)
-{
- CFFL_Button::OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
+void CFFL_PushButton::OnDraw(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ CFFL_Button::OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
}
-
-
diff --git a/fpdfsdk/src/formfiller/FFL_RadioButton.cpp b/fpdfsdk/src/formfiller/FFL_RadioButton.cpp
index 1f73e8ccaa..7c4f9a9e49 100644
--- a/fpdfsdk/src/formfiller/FFL_RadioButton.cpp
+++ b/fpdfsdk/src/formfiller/FFL_RadioButton.cpp
@@ -9,129 +9,124 @@
#include "../../include/formfiller/FFL_RadioButton.h"
//#include "../include/FFL_Undo.h"
-/* ------------------------------- CFFL_RadioButton ------------------------------- */
+/* ------------------------------- CFFL_RadioButton
+ * ------------------------------- */
-CFFL_RadioButton::CFFL_RadioButton(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget) :
- CFFL_Button(pApp, pWidget)
-{
-}
+CFFL_RadioButton::CFFL_RadioButton(CPDFDoc_Environment* pApp,
+ CPDFSDK_Annot* pWidget)
+ : CFFL_Button(pApp, pWidget) {}
-CFFL_RadioButton::~CFFL_RadioButton()
-{
-}
+CFFL_RadioButton::~CFFL_RadioButton() {}
-CPWL_Wnd* CFFL_RadioButton::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_RadioButton* pWnd = new CPWL_RadioButton();
- pWnd->Create(cp);
+CPWL_Wnd* CFFL_RadioButton::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_RadioButton* pWnd = new CPWL_RadioButton();
+ pWnd->Create(cp);
- ASSERT(m_pWidget != NULL);
- pWnd->SetCheck(m_pWidget->IsChecked());
+ ASSERT(m_pWidget != NULL);
+ pWnd->SetCheck(m_pWidget->IsChecked());
- return pWnd;
+ return pWnd;
}
-FX_BOOL CFFL_RadioButton::OnKeyDown(CPDFSDK_Annot* pAnnot, FX_UINT nKeyCode, FX_UINT nFlags)
-{
- switch (nKeyCode)
- {
- case FWL_VKEY_Return:
- case FWL_VKEY_Space:
- return TRUE;
- default:
- return CFFL_FormFiller::OnKeyDown(pAnnot, nKeyCode, nFlags);
- }
+FX_BOOL CFFL_RadioButton::OnKeyDown(CPDFSDK_Annot* pAnnot,
+ FX_UINT nKeyCode,
+ FX_UINT nFlags) {
+ switch (nKeyCode) {
+ case FWL_VKEY_Return:
+ case FWL_VKEY_Space:
+ return TRUE;
+ default:
+ return CFFL_FormFiller::OnKeyDown(pAnnot, nKeyCode, nFlags);
+ }
}
-FX_BOOL CFFL_RadioButton::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- switch (nChar)
- {
- case FWL_VKEY_Return:
- case FWL_VKEY_Space:
- {
- CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
- ASSERT(pIFormFiller != NULL);
-
- CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
- ASSERT(pPageView != NULL);
-
- FX_BOOL bReset = FALSE;
- FX_BOOL bExit = FALSE;
-
- pIFormFiller->OnButtonUp(m_pWidget, pPageView, bReset, bExit,nFlags);
-
- if (bReset) return TRUE;
- if (bExit) return TRUE;
-
- CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
-
- if (CPWL_RadioButton * pWnd = (CPWL_RadioButton*)GetPDFWindow(pPageView, TRUE))
- pWnd->SetCheck(TRUE);
- CommitData(pPageView,nFlags);
- return TRUE;
- }
- default:
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
- }
+FX_BOOL CFFL_RadioButton::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ switch (nChar) {
+ case FWL_VKEY_Return:
+ case FWL_VKEY_Space: {
+ CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
+ ASSERT(pIFormFiller != NULL);
+
+ CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
+ ASSERT(pPageView != NULL);
+
+ FX_BOOL bReset = FALSE;
+ FX_BOOL bExit = FALSE;
+
+ pIFormFiller->OnButtonUp(m_pWidget, pPageView, bReset, bExit, nFlags);
+
+ if (bReset)
+ return TRUE;
+ if (bExit)
+ return TRUE;
+
+ CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+
+ if (CPWL_RadioButton* pWnd =
+ (CPWL_RadioButton*)GetPDFWindow(pPageView, TRUE))
+ pWnd->SetCheck(TRUE);
+ CommitData(pPageView, nFlags);
+ return TRUE;
+ }
+ default:
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+ }
}
-FX_BOOL CFFL_RadioButton::OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point)
-{
- CFFL_Button::OnLButtonUp(pPageView, pAnnot, nFlags, point);
+FX_BOOL CFFL_RadioButton::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_UINT nFlags,
+ const CPDF_Point& point) {
+ CFFL_Button::OnLButtonUp(pPageView, pAnnot, nFlags, point);
- if (IsValid())
- {
- if (CPWL_RadioButton * pWnd = (CPWL_RadioButton*)GetPDFWindow(pPageView, TRUE))
- pWnd->SetCheck(TRUE);
+ if (IsValid()) {
+ if (CPWL_RadioButton* pWnd =
+ (CPWL_RadioButton*)GetPDFWindow(pPageView, TRUE))
+ pWnd->SetCheck(TRUE);
- if (!CommitData(pPageView,nFlags)) return FALSE;
- }
+ if (!CommitData(pPageView, nFlags))
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CFFL_RadioButton::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
+FX_BOOL CFFL_RadioButton::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- if (CPWL_RadioButton* pWnd = (CPWL_RadioButton*)GetPDFWindow(pPageView, FALSE))
- {
- return pWnd->IsChecked() != m_pWidget->IsChecked();
- }
+ if (CPWL_RadioButton* pWnd =
+ (CPWL_RadioButton*)GetPDFWindow(pPageView, FALSE)) {
+ return pWnd->IsChecked() != m_pWidget->IsChecked();
+ }
- return FALSE;
+ return FALSE;
}
-void CFFL_RadioButton::SaveData(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
-
- if (CPWL_RadioButton* pWnd = (CPWL_RadioButton*)GetPDFWindow(pPageView, FALSE))
- {
-
- FX_BOOL bNewChecked = pWnd->IsChecked();
-
- if (bNewChecked)
- {
- CPDF_FormField* pField = m_pWidget->GetFormField();
- ASSERT(pField != NULL);
-
- for (int32_t i=0,sz=pField->CountControls(); i<sz; i++)
- {
- if (CPDF_FormControl* pCtrl = pField->GetControl(i))
- {
- if (pCtrl->IsChecked())
- {
- break;
- }
- }
- }
- }
-
- m_pWidget->SetCheck(bNewChecked, FALSE);
- m_pWidget->UpdateField();
- SetChangeMark();
- }
+void CFFL_RadioButton::SaveData(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
+
+ if (CPWL_RadioButton* pWnd =
+ (CPWL_RadioButton*)GetPDFWindow(pPageView, FALSE)) {
+ FX_BOOL bNewChecked = pWnd->IsChecked();
+
+ if (bNewChecked) {
+ CPDF_FormField* pField = m_pWidget->GetFormField();
+ ASSERT(pField != NULL);
+
+ for (int32_t i = 0, sz = pField->CountControls(); i < sz; i++) {
+ if (CPDF_FormControl* pCtrl = pField->GetControl(i)) {
+ if (pCtrl->IsChecked()) {
+ break;
+ }
+ }
+ }
+ }
+
+ m_pWidget->SetCheck(bNewChecked, FALSE);
+ m_pWidget->UpdateField();
+ SetChangeMark();
+ }
}
-
diff --git a/fpdfsdk/src/formfiller/FFL_TextField.cpp b/fpdfsdk/src/formfiller/FFL_TextField.cpp
index a4b87263ed..2acf6b8fda 100644
--- a/fpdfsdk/src/formfiller/FFL_TextField.cpp
+++ b/fpdfsdk/src/formfiller/FFL_TextField.cpp
@@ -7,353 +7,302 @@
#include "../../include/formfiller/FFL_TextField.h"
#include "../../include/formfiller/FFL_CBA_Fontmap.h"
-/* ------------------------------- CFFL_TextField ------------------------------- */
+/* ------------------------------- CFFL_TextField
+ * ------------------------------- */
-CFFL_TextField::CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) :
- CFFL_FormFiller(pApp, pAnnot),
- m_pFontMap(NULL)//,
- //m_pSpellCheck(NULL)
+CFFL_TextField::CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot)
+ : CFFL_FormFiller(pApp, pAnnot),
+ m_pFontMap(NULL) //,
+// m_pSpellCheck(NULL)
{
- m_State.nStart = m_State.nEnd = 0;
+ m_State.nStart = m_State.nEnd = 0;
}
-CFFL_TextField::~CFFL_TextField()
-{
- delete m_pFontMap;
+CFFL_TextField::~CFFL_TextField() {
+ delete m_pFontMap;
}
-PWL_CREATEPARAM CFFL_TextField::GetCreateParam()
-{
- PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
+PWL_CREATEPARAM CFFL_TextField::GetCreateParam() {
+ PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
- ASSERT(m_pWidget != NULL);
- int nFlags = m_pWidget->GetFieldFlags();
+ ASSERT(m_pWidget != NULL);
+ int nFlags = m_pWidget->GetFieldFlags();
+ if (nFlags & FIELDFLAG_PASSWORD) {
+ cp.dwFlags |= PES_PASSWORD;
+ }
- if (nFlags & FIELDFLAG_PASSWORD)
- {
- cp.dwFlags |= PES_PASSWORD;
- }
+ if (!(nFlags & FIELDFLAG_DONOTSPELLCHECK)) {
+ }
- if (!(nFlags & FIELDFLAG_DONOTSPELLCHECK))
- {
- }
+ if (nFlags & FIELDFLAG_MULTILINE) {
+ cp.dwFlags |= PES_MULTILINE | PES_AUTORETURN | PES_TOP;
- if (nFlags & FIELDFLAG_MULTILINE)
- {
- cp.dwFlags |= PES_MULTILINE | PES_AUTORETURN | PES_TOP;
-
- if (!(nFlags & FIELDFLAG_DONOTSCROLL))
- {
- cp.dwFlags |= PWS_VSCROLL | PES_AUTOSCROLL;
- }
+ if (!(nFlags & FIELDFLAG_DONOTSCROLL)) {
+ cp.dwFlags |= PWS_VSCROLL | PES_AUTOSCROLL;
}
- else
- {
- cp.dwFlags |= PES_CENTER;
+ } else {
+ cp.dwFlags |= PES_CENTER;
- if (!(nFlags & FIELDFLAG_DONOTSCROLL))
- {
- cp.dwFlags |= PES_AUTOSCROLL;
- }
+ if (!(nFlags & FIELDFLAG_DONOTSCROLL)) {
+ cp.dwFlags |= PES_AUTOSCROLL;
}
+ }
- if (nFlags & FIELDFLAG_COMB)
- {
- cp.dwFlags |= PES_CHARARRAY;
- }
+ if (nFlags & FIELDFLAG_COMB) {
+ cp.dwFlags |= PES_CHARARRAY;
+ }
- if (nFlags & FIELDFLAG_RICHTEXT)
- {
- cp.dwFlags |= PES_RICH;
- }
+ if (nFlags & FIELDFLAG_RICHTEXT) {
+ cp.dwFlags |= PES_RICH;
+ }
- cp.dwFlags |= PES_UNDO;
+ cp.dwFlags |= PES_UNDO;
- switch (m_pWidget->GetAlignment())
- {
+ switch (m_pWidget->GetAlignment()) {
default:
case BF_ALIGN_LEFT:
- cp.dwFlags |= PES_LEFT;
- break;
+ cp.dwFlags |= PES_LEFT;
+ break;
case BF_ALIGN_MIDDLE:
- cp.dwFlags |= PES_MIDDLE;
- break;
+ cp.dwFlags |= PES_MIDDLE;
+ break;
case BF_ALIGN_RIGHT:
- cp.dwFlags |= PES_RIGHT;
- break;
- }
-
- if (!m_pFontMap)
- {
- m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler());
- m_pFontMap->Initial();
- }
- cp.pFontMap = m_pFontMap;
- cp.pFocusHandler = this;
-
- return cp;
+ cp.dwFlags |= PES_RIGHT;
+ break;
+ }
+
+ if (!m_pFontMap) {
+ m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler());
+ m_pFontMap->Initial();
+ }
+ cp.pFontMap = m_pFontMap;
+ cp.pFocusHandler = this;
+
+ return cp;
}
-CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView)
-{
- CPWL_Edit * pWnd = new CPWL_Edit();
- pWnd->AttachFFLData(this);
- pWnd->Create(cp);
-
-
-
- ASSERT(m_pApp != NULL);
- CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
- pWnd->SetFillerNotify(pIFormFiller);
-
- ASSERT(m_pWidget != NULL);
- int32_t nMaxLen = m_pWidget->GetMaxLen();
- CFX_WideString swValue = m_pWidget->GetValue();
-
- if (nMaxLen > 0)
- {
- if (pWnd->HasFlag(PES_CHARARRAY))
- {
- pWnd->SetCharArray(nMaxLen);
- pWnd->SetAlignFormatV(PEAV_CENTER);
- }
- else
- {
- pWnd->SetLimitChar(nMaxLen);
- }
+CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp,
+ CPDFSDK_PageView* pPageView) {
+ CPWL_Edit* pWnd = new CPWL_Edit();
+ pWnd->AttachFFLData(this);
+ pWnd->Create(cp);
+
+ ASSERT(m_pApp != NULL);
+ CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
+ pWnd->SetFillerNotify(pIFormFiller);
+
+ ASSERT(m_pWidget != NULL);
+ int32_t nMaxLen = m_pWidget->GetMaxLen();
+ CFX_WideString swValue = m_pWidget->GetValue();
+
+ if (nMaxLen > 0) {
+ if (pWnd->HasFlag(PES_CHARARRAY)) {
+ pWnd->SetCharArray(nMaxLen);
+ pWnd->SetAlignFormatV(PEAV_CENTER);
+ } else {
+ pWnd->SetLimitChar(nMaxLen);
}
+ }
- pWnd->SetText(swValue.c_str());
- return pWnd;
+ pWnd->SetText(swValue.c_str());
+ return pWnd;
}
-
-FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags)
-{
- switch (nChar)
- {
+FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_UINT nChar,
+ FX_UINT nFlags) {
+ switch (nChar) {
case FWL_VKEY_Return:
- if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE))
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
- m_bValid = !m_bValid;
- CPDF_Rect rcAnnot = pAnnot->GetRect();
- m_pApp->FFI_Invalidate(pAnnot->GetPDFPage(), rcAnnot.left, rcAnnot.top, rcAnnot.right, rcAnnot.bottom);
-
- if (m_bValid)
- {
- if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
- pWnd->SetFocus();
- }
- else
- {
- if (CommitData(pPageView, nFlags))
- {
- DestroyPDFWindow(pPageView);
- return TRUE;
- }
- return FALSE;
- }
- }
- break;
- case FWL_VKEY_Escape:
- {
- CPDFSDK_PageView* pPageView = GetCurPageView();
- ASSERT(pPageView != NULL);
- EscapeFiller(pPageView,TRUE);
+ if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
+ m_bValid = !m_bValid;
+ CPDF_Rect rcAnnot = pAnnot->GetRect();
+ m_pApp->FFI_Invalidate(pAnnot->GetPDFPage(), rcAnnot.left, rcAnnot.top,
+ rcAnnot.right, rcAnnot.bottom);
+
+ if (m_bValid) {
+ if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
+ pWnd->SetFocus();
+ } else {
+ if (CommitData(pPageView, nFlags)) {
+ DestroyPDFWindow(pPageView);
return TRUE;
+ }
+ return FALSE;
}
+ }
+ break;
+ case FWL_VKEY_Escape: {
+ CPDFSDK_PageView* pPageView = GetCurPageView();
+ ASSERT(pPageView != NULL);
+ EscapeFiller(pPageView, TRUE);
+ return TRUE;
}
+ }
- return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
+ return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
}
-FX_BOOL CFFL_TextField::IsDataChanged(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
+FX_BOOL CFFL_TextField::IsDataChanged(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- if (CPWL_Edit * pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- return pEdit->GetText() != m_pWidget->GetValue();
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
+ return pEdit->GetText() != m_pWidget->GetValue();
- return FALSE;
+ return FALSE;
}
-void CFFL_TextField::SaveData(CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pWidget != NULL);
+void CFFL_TextField::SaveData(CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pWidget != NULL);
- if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- {
- CFX_WideString sOldValue = m_pWidget->GetValue();
- CFX_WideString sNewValue = pWnd->GetText();
+ if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
+ CFX_WideString sOldValue = m_pWidget->GetValue();
+ CFX_WideString sNewValue = pWnd->GetText();
- m_pWidget->SetValue(sNewValue, FALSE);
- m_pWidget->ResetFieldAppearance(TRUE);
- m_pWidget->UpdateField();
- SetChangeMark();
- }
+ m_pWidget->SetValue(sNewValue, FALSE);
+ m_pWidget->ResetFieldAppearance(TRUE);
+ m_pWidget->UpdateField();
+ SetChangeMark();
+ }
}
-void CFFL_TextField::GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- PDFSDK_FieldAction& fa)
-{
- switch (type)
- {
+void CFFL_TextField::GetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& fa) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- {
- fa.bFieldFull = pWnd->IsTextFull();
+ if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
+ fa.bFieldFull = pWnd->IsTextFull();
- fa.sValue = pWnd->GetText();
+ fa.sValue = pWnd->GetText();
- if (fa.bFieldFull)
- {
- fa.sChange = L"";
- fa.sChangeEx = L"";
- }
+ if (fa.bFieldFull) {
+ fa.sChange = L"";
+ fa.sChangeEx = L"";
}
- break;
+ }
+ break;
case CPDF_AAction::Validate:
- if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- {
- fa.sValue = pWnd->GetText();
- }
- break;
+ if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
+ fa.sValue = pWnd->GetText();
+ }
+ break;
case CPDF_AAction::LoseFocus:
case CPDF_AAction::GetFocus:
- ASSERT(m_pWidget != NULL);
- fa.sValue = m_pWidget->GetValue();
- break;
+ ASSERT(m_pWidget != NULL);
+ fa.sValue = m_pWidget->GetValue();
+ break;
default:
- break;
- }
+ break;
+ }
}
-void CFFL_TextField::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
- const PDFSDK_FieldAction& fa)
-{
- switch (type)
- {
+void CFFL_TextField::SetActionData(CPDFSDK_PageView* pPageView,
+ CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& fa) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- if (CPWL_Edit * pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- {
- pEdit->SetFocus();
- pEdit->SetSel(fa.nSelStart, fa.nSelEnd);
- pEdit->ReplaceSel(fa.sChange.c_str());
- }
- break;
+ if (CPWL_Edit* pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
+ pEdit->SetFocus();
+ pEdit->SetSel(fa.nSelStart, fa.nSelEnd);
+ pEdit->ReplaceSel(fa.sChange.c_str());
+ }
+ break;
default:
- break;
- }
+ break;
+ }
}
-
-FX_BOOL CFFL_TextField::IsActionDataChanged(CPDF_AAction::AActionType type, const PDFSDK_FieldAction& faOld,
- const PDFSDK_FieldAction& faNew)
-{
- switch (type)
- {
+FX_BOOL CFFL_TextField::IsActionDataChanged(CPDF_AAction::AActionType type,
+ const PDFSDK_FieldAction& faOld,
+ const PDFSDK_FieldAction& faNew) {
+ switch (type) {
case CPDF_AAction::KeyStroke:
- return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || faOld.nSelStart != faNew.nSelStart ||
- faOld.sChange != faNew.sChange;
+ return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) ||
+ faOld.nSelStart != faNew.nSelStart ||
+ faOld.sChange != faNew.sChange;
default:
- break;
- }
+ break;
+ }
- return FALSE;
+ return FALSE;
}
-void CFFL_TextField::SaveState(CPDFSDK_PageView* pPageView)
-{
- ASSERT(pPageView != NULL);
+void CFFL_TextField::SaveState(CPDFSDK_PageView* pPageView) {
+ ASSERT(pPageView != NULL);
- if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
- {
- pWnd->GetSel(m_State.nStart, m_State.nEnd);
- m_State.sValue = pWnd->GetText();
- }
+ if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
+ pWnd->GetSel(m_State.nStart, m_State.nEnd);
+ m_State.sValue = pWnd->GetText();
+ }
}
-void CFFL_TextField::RestoreState(CPDFSDK_PageView* pPageView)
-{
- ASSERT(pPageView != NULL);
+void CFFL_TextField::RestoreState(CPDFSDK_PageView* pPageView) {
+ ASSERT(pPageView != NULL);
- if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, TRUE))
- {
- pWnd->SetText(m_State.sValue.c_str());
- pWnd->SetSel(m_State.nStart, m_State.nEnd);
- }
+ if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, TRUE)) {
+ pWnd->SetText(m_State.sValue.c_str());
+ pWnd->SetSel(m_State.nStart, m_State.nEnd);
+ }
}
-CPWL_Wnd* CFFL_TextField::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue)
-{
- if (bRestoreValue)
- SaveState(pPageView);
+CPWL_Wnd* CFFL_TextField::ResetPDFWindow(CPDFSDK_PageView* pPageView,
+ FX_BOOL bRestoreValue) {
+ if (bRestoreValue)
+ SaveState(pPageView);
- DestroyPDFWindow(pPageView);
+ DestroyPDFWindow(pPageView);
- CPWL_Wnd* pRet = NULL;
+ CPWL_Wnd* pRet = NULL;
- if (bRestoreValue)
- {
- RestoreState(pPageView);
- pRet = GetPDFWindow(pPageView, FALSE);
- }
- else
- pRet = GetPDFWindow(pPageView, TRUE);
+ if (bRestoreValue) {
+ RestoreState(pPageView);
+ pRet = GetPDFWindow(pPageView, FALSE);
+ } else
+ pRet = GetPDFWindow(pPageView, TRUE);
- m_pWidget->UpdateField();
+ m_pWidget->UpdateField();
- return pRet;
+ return pRet;
}
-void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd)
-{
- ASSERT(m_pApp != NULL);
+void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) {
+ ASSERT(m_pApp != NULL);
- ASSERT(pWnd != NULL);
+ ASSERT(pWnd != NULL);
- if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT)
- {
- CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
- pEdit->SetCharSet(134);
- pEdit->SetCodePage(936);
+ if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) {
+ CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
+ pEdit->SetCharSet(134);
+ pEdit->SetCodePage(936);
- pEdit->SetReadyToInput();
- CFX_WideString wsText = pEdit->GetText();
- int nCharacters = wsText.GetLength();
- CFX_ByteString bsUTFText = wsText.UTF16LE_Encode();
- unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str();
- m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer, nCharacters, TRUE);
+ pEdit->SetReadyToInput();
+ CFX_WideString wsText = pEdit->GetText();
+ int nCharacters = wsText.GetLength();
+ CFX_ByteString bsUTFText = wsText.UTF16LE_Encode();
+ unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str();
+ m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer,
+ nCharacters, TRUE);
- pEdit->SetEditNotify(this);
- //pUndo->BeginEdit(pDocument);
- }
+ pEdit->SetEditNotify(this);
+ // pUndo->BeginEdit(pDocument);
+ }
}
-void CFFL_TextField::OnKillFocus(CPWL_Wnd* pWnd)
-{
+void CFFL_TextField::OnKillFocus(CPWL_Wnd* pWnd) {}
+FX_BOOL CFFL_TextField::CanCopy(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-FX_BOOL CFFL_TextField::CanCopy(CPDFSDK_Document* pDocument)
-{
- return FALSE;
+FX_BOOL CFFL_TextField::CanCut(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-FX_BOOL CFFL_TextField::CanCut(CPDFSDK_Document* pDocument)
-{
- return FALSE;
-}
-
-FX_BOOL CFFL_TextField::CanPaste(CPDFSDK_Document* pDocument)
-{
- return FALSE;
-}
-
-void CFFL_TextField::OnAddUndo(CPWL_Edit* pEdit)
-{
+FX_BOOL CFFL_TextField::CanPaste(CPDFSDK_Document* pDocument) {
+ return FALSE;
}
+void CFFL_TextField::OnAddUndo(CPWL_Edit* pEdit) {}
diff --git a/fpdfsdk/src/formfiller/FFL_Utils.cpp b/fpdfsdk/src/formfiller/FFL_Utils.cpp
index 8d2d76d73c..d2ce56ac52 100644
--- a/fpdfsdk/src/formfiller/FFL_Utils.cpp
+++ b/fpdfsdk/src/formfiller/FFL_Utils.cpp
@@ -9,106 +9,91 @@
#include "../../include/formfiller/FormFiller.h"
#include "../../include/formfiller/FFL_Utils.h"
-CPDF_Rect CFFL_Utils::MaxRect(const CPDF_Rect & rect1,const CPDF_Rect & rect2)
-{
- CPDF_Rect rcRet;
+CPDF_Rect CFFL_Utils::MaxRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2) {
+ CPDF_Rect rcRet;
- rcRet.left = std::min(rect1.left, rect2.left);
- rcRet.bottom = std::min(rect1.bottom, rect2.bottom);
- rcRet.right = std::max(rect1.right, rect2.right);
- rcRet.top = std::max(rect1.top, rect2.top);
+ rcRet.left = std::min(rect1.left, rect2.left);
+ rcRet.bottom = std::min(rect1.bottom, rect2.bottom);
+ rcRet.right = std::max(rect1.right, rect2.right);
+ rcRet.top = std::max(rect1.top, rect2.top);
- return rcRet;
+ return rcRet;
}
-CPDF_Rect CFFL_Utils::InflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSize)
-{
- CPDF_Rect crNew(crRect.left - fSize,
- crRect.bottom - fSize,
- crRect.right + fSize,
- crRect.top + fSize);
- crNew.Normalize();
- return crNew;
+CPDF_Rect CFFL_Utils::InflateRect(const CPDF_Rect& crRect,
+ const FX_FLOAT& fSize) {
+ CPDF_Rect crNew(crRect.left - fSize, crRect.bottom - fSize,
+ crRect.right + fSize, crRect.top + fSize);
+ crNew.Normalize();
+ return crNew;
}
-CPDF_Rect CFFL_Utils::DeflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSize)
-{
- CPDF_Rect crNew(crRect.left + fSize,
- crRect.bottom + fSize,
- crRect.right - fSize,
- crRect.top - fSize);
- crNew.Normalize();
- return crNew;
+CPDF_Rect CFFL_Utils::DeflateRect(const CPDF_Rect& crRect,
+ const FX_FLOAT& fSize) {
+ CPDF_Rect crNew(crRect.left + fSize, crRect.bottom + fSize,
+ crRect.right - fSize, crRect.top - fSize);
+ crNew.Normalize();
+ return crNew;
}
-FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj)
-{
- if (!pObj) return FALSE;
-
- FX_DWORD dwObjNum = pObj->GetObjNum();
- switch (pObj->GetType())
- {
- case PDFOBJ_ARRAY:
- {
- CPDF_Array* pArray = (CPDF_Array*)pObj;
- for (FX_DWORD i = 0; i < pArray->GetCount(); i ++)
- {
- CPDF_Object* pElement = pArray->GetElementValue(i);
- TraceObject(pElement);
- }
- }
- break;
-
- case PDFOBJ_DICTIONARY:
- {
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj;
-
- FX_POSITION fPos = pDict->GetStartPos();
- CFX_ByteString csKey;
- do
- {
- CPDF_Object* pElement = pDict->GetNextElement(fPos, csKey);
- //TRACE(csKey + "\n");
- if (!pElement) break;
- TraceObject(pElement);
- }while (TRUE);
- }
- break;
-
- case PDFOBJ_STREAM:
- {
- CPDF_Stream* pStream = (CPDF_Stream*)pObj;
- CPDF_Dictionary* pDict = pStream->GetDict();
- TraceObject(pDict);
- }
- break;
-
- case PDFOBJ_REFERENCE:
- {
- CPDF_Object* pDirectObj = pObj->GetDirect();
- TraceObject(pDirectObj);
- }
- break;
-
- case PDFOBJ_BOOLEAN:
- break;
- case PDFOBJ_NUMBER:
- //TRACE("%d\n",(int32_t)pObj);
- break;
- case PDFOBJ_STRING:
- //TRACE(((CPDF_String*)pObj)->GetString() + "\n");
- break;
- case PDFOBJ_NAME:
- //TRACE(((CPDF_Name*)pObj)->GetString() + "\n");
- break;
- case PDFOBJ_NULL:
-// case PDFOBJ_KEYWORD:
-// case PDFOBJ_EOF:
- default:
- break;
- }
- if (dwObjNum == 0) return FALSE;
-
- return TRUE;
+FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj) {
+ if (!pObj)
+ return FALSE;
+
+ FX_DWORD dwObjNum = pObj->GetObjNum();
+ switch (pObj->GetType()) {
+ case PDFOBJ_ARRAY: {
+ CPDF_Array* pArray = (CPDF_Array*)pObj;
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) {
+ CPDF_Object* pElement = pArray->GetElementValue(i);
+ TraceObject(pElement);
+ }
+ } break;
+
+ case PDFOBJ_DICTIONARY: {
+ CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj;
+
+ FX_POSITION fPos = pDict->GetStartPos();
+ CFX_ByteString csKey;
+ do {
+ CPDF_Object* pElement = pDict->GetNextElement(fPos, csKey);
+ // TRACE(csKey + "\n");
+ if (!pElement)
+ break;
+ TraceObject(pElement);
+ } while (TRUE);
+ } break;
+
+ case PDFOBJ_STREAM: {
+ CPDF_Stream* pStream = (CPDF_Stream*)pObj;
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ TraceObject(pDict);
+ } break;
+
+ case PDFOBJ_REFERENCE: {
+ CPDF_Object* pDirectObj = pObj->GetDirect();
+ TraceObject(pDirectObj);
+ } break;
+
+ case PDFOBJ_BOOLEAN:
+ break;
+ case PDFOBJ_NUMBER:
+ // TRACE("%d\n",(int32_t)pObj);
+ break;
+ case PDFOBJ_STRING:
+ // TRACE(((CPDF_String*)pObj)->GetString() + "\n");
+ break;
+ case PDFOBJ_NAME:
+ // TRACE(((CPDF_Name*)pObj)->GetString() + "\n");
+ break;
+ case PDFOBJ_NULL:
+ // case PDFOBJ_KEYWORD:
+ // case PDFOBJ_EOF:
+ default:
+ break;
+ }
+ if (dwObjNum == 0)
+ return FALSE;
+
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/fpdf_dataavail.cpp b/fpdfsdk/src/fpdf_dataavail.cpp
index b26d2af10a..8f9638d90a 100644
--- a/fpdfsdk/src/fpdf_dataavail.cpp
+++ b/fpdfsdk/src/fpdf_dataavail.cpp
@@ -8,157 +8,135 @@
#include "../include/fsdk_define.h"
extern void ProcessParseError(FX_DWORD err_code);
-class CFPDF_FileAvailWrap : public IFX_FileAvail
-{
-public:
- CFPDF_FileAvailWrap()
- {
- m_pfileAvail = NULL;
- }
-
- void Set(FX_FILEAVAIL* pfileAvail)
- {
- m_pfileAvail = pfileAvail;
- }
-
- virtual FX_BOOL IsDataAvail( FX_FILESIZE offset, FX_DWORD size)
- {
- return m_pfileAvail->IsDataAvail(m_pfileAvail, offset, size);
- }
-
-private:
- FX_FILEAVAIL* m_pfileAvail;
+class CFPDF_FileAvailWrap : public IFX_FileAvail {
+ public:
+ CFPDF_FileAvailWrap() { m_pfileAvail = NULL; }
+
+ void Set(FX_FILEAVAIL* pfileAvail) { m_pfileAvail = pfileAvail; }
+
+ virtual FX_BOOL IsDataAvail(FX_FILESIZE offset, FX_DWORD size) {
+ return m_pfileAvail->IsDataAvail(m_pfileAvail, offset, size);
+ }
+
+ private:
+ FX_FILEAVAIL* m_pfileAvail;
};
-class CFPDF_FileAccessWrap : public IFX_FileRead
-{
-public:
- CFPDF_FileAccessWrap()
- {
- m_pFileAccess = NULL;
- }
-
- void Set(FPDF_FILEACCESS* pFile)
- {
- m_pFileAccess = pFile;
- }
-
- virtual FX_FILESIZE GetSize()
- {
- return m_pFileAccess->m_FileLen;
- }
-
- virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
- {
- return m_pFileAccess->m_GetBlock(m_pFileAccess->m_Param, offset, (uint8_t*)buffer, size);
- }
-
- virtual void Release()
- {
- }
-
-private:
- FPDF_FILEACCESS* m_pFileAccess;
+class CFPDF_FileAccessWrap : public IFX_FileRead {
+ public:
+ CFPDF_FileAccessWrap() { m_pFileAccess = NULL; }
+
+ void Set(FPDF_FILEACCESS* pFile) { m_pFileAccess = pFile; }
+
+ virtual FX_FILESIZE GetSize() { return m_pFileAccess->m_FileLen; }
+
+ virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) {
+ return m_pFileAccess->m_GetBlock(m_pFileAccess->m_Param, offset,
+ (uint8_t*)buffer, size);
+ }
+
+ virtual void Release() {}
+
+ private:
+ FPDF_FILEACCESS* m_pFileAccess;
};
-class CFPDF_DownloadHintsWrap : public IFX_DownloadHints
-{
-public:
- CFPDF_DownloadHintsWrap(FX_DOWNLOADHINTS* pDownloadHints)
- {
- m_pDownloadHints = pDownloadHints;
- }
-public:
- virtual void AddSegment(FX_FILESIZE offset, FX_DWORD size)
- {
- m_pDownloadHints->AddSegment(m_pDownloadHints, offset, size);
- }
-private:
- FX_DOWNLOADHINTS* m_pDownloadHints;
+class CFPDF_DownloadHintsWrap : public IFX_DownloadHints {
+ public:
+ CFPDF_DownloadHintsWrap(FX_DOWNLOADHINTS* pDownloadHints) {
+ m_pDownloadHints = pDownloadHints;
+ }
+
+ public:
+ virtual void AddSegment(FX_FILESIZE offset, FX_DWORD size) {
+ m_pDownloadHints->AddSegment(m_pDownloadHints, offset, size);
+ }
+
+ private:
+ FX_DOWNLOADHINTS* m_pDownloadHints;
};
-class CFPDF_DataAvail
-{
-public:
- CFPDF_DataAvail()
- {
- m_pDataAvail = NULL;
- }
-
- ~CFPDF_DataAvail()
- {
- delete m_pDataAvail;
- }
-
- IPDF_DataAvail* m_pDataAvail;
- CFPDF_FileAvailWrap m_FileAvail;
- CFPDF_FileAccessWrap m_FileRead;
+class CFPDF_DataAvail {
+ public:
+ CFPDF_DataAvail() { m_pDataAvail = NULL; }
+
+ ~CFPDF_DataAvail() { delete m_pDataAvail; }
+
+ IPDF_DataAvail* m_pDataAvail;
+ CFPDF_FileAvailWrap m_FileAvail;
+ CFPDF_FileAccessWrap m_FileRead;
};
-DLLEXPORT FPDF_AVAIL STDCALL FPDFAvail_Create(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file)
-{
- CFPDF_DataAvail* pAvail = new CFPDF_DataAvail;
- pAvail->m_FileAvail.Set(file_avail);
- pAvail->m_FileRead.Set(file);
- pAvail->m_pDataAvail = IPDF_DataAvail::Create(&pAvail->m_FileAvail, &pAvail->m_FileRead);
- return pAvail;
+DLLEXPORT FPDF_AVAIL STDCALL FPDFAvail_Create(FX_FILEAVAIL* file_avail,
+ FPDF_FILEACCESS* file) {
+ CFPDF_DataAvail* pAvail = new CFPDF_DataAvail;
+ pAvail->m_FileAvail.Set(file_avail);
+ pAvail->m_FileRead.Set(file);
+ pAvail->m_pDataAvail =
+ IPDF_DataAvail::Create(&pAvail->m_FileAvail, &pAvail->m_FileRead);
+ return pAvail;
}
-DLLEXPORT void STDCALL FPDFAvail_Destroy(FPDF_AVAIL avail)
-{
- delete (CFPDF_DataAvail*)avail;
+DLLEXPORT void STDCALL FPDFAvail_Destroy(FPDF_AVAIL avail) {
+ delete (CFPDF_DataAvail*)avail;
}
-DLLEXPORT int STDCALL FPDFAvail_IsDocAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints)
-{
- if (avail == NULL || hints == NULL) return 0;
- CFPDF_DownloadHintsWrap hints_wrap(hints);
- return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsDocAvail(&hints_wrap);
+DLLEXPORT int STDCALL FPDFAvail_IsDocAvail(FPDF_AVAIL avail,
+ FX_DOWNLOADHINTS* hints) {
+ if (avail == NULL || hints == NULL)
+ return 0;
+ CFPDF_DownloadHintsWrap hints_wrap(hints);
+ return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsDocAvail(&hints_wrap);
}
-extern void CheckUnSupportError(CPDF_Document * pDoc, FX_DWORD err_code);
-
-DLLEXPORT FPDF_DOCUMENT STDCALL FPDFAvail_GetDocument(FPDF_AVAIL avail, FPDF_BYTESTRING password)
-{
- if (avail == NULL) return NULL;
- CPDF_Parser* pParser = new CPDF_Parser;
- pParser->SetPassword(password);
-
- FX_DWORD err_code = pParser->StartAsynParse(((CFPDF_DataAvail*)avail)->m_pDataAvail->GetFileRead());
- if (err_code) {
- delete pParser;
- ProcessParseError(err_code);
- return NULL;
- }
- ((CFPDF_DataAvail*)avail)->m_pDataAvail->SetDocument(pParser->GetDocument());
- CheckUnSupportError(pParser->GetDocument(), FPDF_ERR_SUCCESS);
- return pParser->GetDocument();
+extern void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code);
+
+DLLEXPORT FPDF_DOCUMENT STDCALL
+FPDFAvail_GetDocument(FPDF_AVAIL avail, FPDF_BYTESTRING password) {
+ if (avail == NULL)
+ return NULL;
+ CPDF_Parser* pParser = new CPDF_Parser;
+ pParser->SetPassword(password);
+
+ FX_DWORD err_code = pParser->StartAsynParse(
+ ((CFPDF_DataAvail*)avail)->m_pDataAvail->GetFileRead());
+ if (err_code) {
+ delete pParser;
+ ProcessParseError(err_code);
+ return NULL;
+ }
+ ((CFPDF_DataAvail*)avail)->m_pDataAvail->SetDocument(pParser->GetDocument());
+ CheckUnSupportError(pParser->GetDocument(), FPDF_ERR_SUCCESS);
+ return pParser->GetDocument();
}
-DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc)
-{
- if (doc == NULL) return 0;
- CPDF_Document* pDoc = (CPDF_Document*)doc;
- return ((CPDF_Parser*)pDoc->GetParser())->GetFirstPageNo();
+DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc) {
+ if (doc == NULL)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)doc;
+ return ((CPDF_Parser*)pDoc->GetParser())->GetFirstPageNo();
}
-DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(FPDF_AVAIL avail, int page_index, FX_DOWNLOADHINTS* hints)
-{
- if (avail == NULL || hints == NULL) return 0;
- CFPDF_DownloadHintsWrap hints_wrap(hints);
- return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsPageAvail(page_index, &hints_wrap);
+DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(FPDF_AVAIL avail,
+ int page_index,
+ FX_DOWNLOADHINTS* hints) {
+ if (avail == NULL || hints == NULL)
+ return 0;
+ CFPDF_DownloadHintsWrap hints_wrap(hints);
+ return ((CFPDF_DataAvail*)avail)
+ ->m_pDataAvail->IsPageAvail(page_index, &hints_wrap);
}
-DLLEXPORT int STDCALL FPDFAvail_IsFormAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints)
-{
- if (avail == NULL || hints == NULL) return -1;
- CFPDF_DownloadHintsWrap hints_wrap(hints);
- return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsFormAvail(&hints_wrap);
+DLLEXPORT int STDCALL FPDFAvail_IsFormAvail(FPDF_AVAIL avail,
+ FX_DOWNLOADHINTS* hints) {
+ if (avail == NULL || hints == NULL)
+ return -1;
+ CFPDF_DownloadHintsWrap hints_wrap(hints);
+ return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsFormAvail(&hints_wrap);
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFAvail_IsLinearized(FPDF_AVAIL avail)
-{
- if (avail == NULL) return -1;
- return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsLinearizedPDF();
-
+DLLEXPORT FPDF_BOOL STDCALL FPDFAvail_IsLinearized(FPDF_AVAIL avail) {
+ if (avail == NULL)
+ return -1;
+ return ((CFPDF_DataAvail*)avail)->m_pDataAvail->IsLinearizedPDF();
}
diff --git a/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp b/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
index 3207802d48..65e9348f55 100644
--- a/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
+++ b/fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
@@ -7,8 +7,7 @@
#include "../../testing/embedder_test.h"
#include "testing/gtest/include/gtest/gtest.h"
-class FPDFDataAvailEmbeddertest : public EmbedderTest {
-};
+class FPDFDataAvailEmbeddertest : public EmbedderTest {};
TEST_F(FPDFDataAvailEmbeddertest, TrailerUnterminated) {
// Document must open without crashing but is too malformed to be available.
diff --git a/fpdfsdk/src/fpdf_ext.cpp b/fpdfsdk/src/fpdf_ext.cpp
index 0d8db417ac..e95a2f0094 100644
--- a/fpdfsdk/src/fpdf_ext.cpp
+++ b/fpdfsdk/src/fpdf_ext.cpp
@@ -8,238 +8,206 @@
#include "../../public/fpdf_ext.h"
#include "../include/fsdk_define.h"
-#define FPDFSDK_UNSUPPORT_CALL 100
-
-class CFSDK_UnsupportInfo_Adapter
-{
-public:
- CFSDK_UnsupportInfo_Adapter(UNSUPPORT_INFO* unsp_info){ m_unsp_info = unsp_info;}
-// FX_BOOL NeedToPauseNow();
- void ReportError(int nErrorType);
-
-private:
- UNSUPPORT_INFO* m_unsp_info;
+#define FPDFSDK_UNSUPPORT_CALL 100
+
+class CFSDK_UnsupportInfo_Adapter {
+ public:
+ CFSDK_UnsupportInfo_Adapter(UNSUPPORT_INFO* unsp_info) {
+ m_unsp_info = unsp_info;
+ }
+ // FX_BOOL NeedToPauseNow();
+ void ReportError(int nErrorType);
+
+ private:
+ UNSUPPORT_INFO* m_unsp_info;
};
-void CFSDK_UnsupportInfo_Adapter::ReportError(int nErrorType)
-{
- if(m_unsp_info && m_unsp_info->FSDK_UnSupport_Handler)
- {
- m_unsp_info->FSDK_UnSupport_Handler(m_unsp_info,nErrorType);
- }
+void CFSDK_UnsupportInfo_Adapter::ReportError(int nErrorType) {
+ if (m_unsp_info && m_unsp_info->FSDK_UnSupport_Handler) {
+ m_unsp_info->FSDK_UnSupport_Handler(m_unsp_info, nErrorType);
+ }
}
-void FreeUnsupportInfo(void* pData)
-{
- CFSDK_UnsupportInfo_Adapter * pAdapter = (CFSDK_UnsupportInfo_Adapter *)pData;
- delete pAdapter;
+void FreeUnsupportInfo(void* pData) {
+ CFSDK_UnsupportInfo_Adapter* pAdapter = (CFSDK_UnsupportInfo_Adapter*)pData;
+ delete pAdapter;
}
-FX_BOOL FPDF_UnSupportError(int nError)
-{
- CFSDK_UnsupportInfo_Adapter * pAdapter = (CFSDK_UnsupportInfo_Adapter *)CPDF_ModuleMgr::Get()->GetPrivateData((void *)FPDFSDK_UNSUPPORT_CALL);
+FX_BOOL FPDF_UnSupportError(int nError) {
+ CFSDK_UnsupportInfo_Adapter* pAdapter =
+ (CFSDK_UnsupportInfo_Adapter*)CPDF_ModuleMgr::Get()->GetPrivateData(
+ (void*)FPDFSDK_UNSUPPORT_CALL);
- if(!pAdapter)
- return FALSE;
- pAdapter->ReportError(nError);
- return TRUE;
+ if (!pAdapter)
+ return FALSE;
+ pAdapter->ReportError(nError);
+ return TRUE;
}
-DLLEXPORT FPDF_BOOL STDCALL FSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_info)
-{
- if (!unsp_info || unsp_info->version!=1)
- return FALSE;
- CFSDK_UnsupportInfo_Adapter * pAdapter = new CFSDK_UnsupportInfo_Adapter(unsp_info);
+DLLEXPORT FPDF_BOOL STDCALL
+FSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_info) {
+ if (!unsp_info || unsp_info->version != 1)
+ return FALSE;
+ CFSDK_UnsupportInfo_Adapter* pAdapter =
+ new CFSDK_UnsupportInfo_Adapter(unsp_info);
- CPDF_ModuleMgr::Get()->SetPrivateData((void *)FPDFSDK_UNSUPPORT_CALL,pAdapter, &FreeUnsupportInfo);
+ CPDF_ModuleMgr::Get()->SetPrivateData((void*)FPDFSDK_UNSUPPORT_CALL, pAdapter,
+ &FreeUnsupportInfo);
- return TRUE;
+ return TRUE;
}
-void CheckUnSupportAnnot(CPDF_Document * pDoc, CPDF_Annot* pPDFAnnot)
-{
- CFX_ByteString cbSubType = pPDFAnnot->GetSubType();
- if(cbSubType.Compare("3D") == 0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_3DANNOT);
- }
- else if(cbSubType.Compare("Screen") ==0)
- {
- CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict();
- CFX_ByteString cbString;
- if(pAnnotDict->KeyExist("IT"))
- cbString = pAnnotDict->GetString("IT");
- if(cbString.Compare("Img") != 0)
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_MEDIA);
+void CheckUnSupportAnnot(CPDF_Document* pDoc, CPDF_Annot* pPDFAnnot) {
+ CFX_ByteString cbSubType = pPDFAnnot->GetSubType();
+ if (cbSubType.Compare("3D") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_3DANNOT);
+ } else if (cbSubType.Compare("Screen") == 0) {
+ CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict();
+ CFX_ByteString cbString;
+ if (pAnnotDict->KeyExist("IT"))
+ cbString = pAnnotDict->GetString("IT");
+ if (cbString.Compare("Img") != 0)
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_MEDIA);
+ } else if (cbSubType.Compare("Movie") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_MOVIE);
+ } else if (cbSubType.Compare("Sound") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_SOUND);
+ } else if (cbSubType.Compare("RichMedia") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA);
+ } else if (cbSubType.Compare("FileAttachment") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_ATTACHMENT);
+ } else if (cbSubType.Compare("Widget") == 0) {
+ CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict();
+ CFX_ByteString cbString;
+ if (pAnnotDict->KeyExist("FT")) {
+ cbString = pAnnotDict->GetString("FT");
}
- else if(cbSubType.Compare("Movie") ==0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_MOVIE);
- }
- else if(cbSubType.Compare("Sound") ==0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_SOUND);
- }
- else if(cbSubType.Compare("RichMedia") ==0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA);
- }
- else if(cbSubType.Compare("FileAttachment") ==0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_ATTACHMENT);
- }
- else if(cbSubType.Compare("Widget") ==0)
- {
- CPDF_Dictionary* pAnnotDict = pPDFAnnot->GetAnnotDict();
- CFX_ByteString cbString;
- if(pAnnotDict->KeyExist("FT"))
- {
- cbString = pAnnotDict->GetString("FT");
- }
- if(cbString.Compare("Sig") == 0)
- {
- FPDF_UnSupportError(FPDF_UNSP_ANNOT_SIG);
- }
+ if (cbString.Compare("Sig") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_ANNOT_SIG);
}
-
+ }
}
-FX_BOOL CheckSharedForm(CXML_Element * pElement, CFX_ByteString cbName)
-{
- int count = pElement->CountAttrs();
- int i=0;
- for (i = 0; i < count; i++)
- {
- CFX_ByteString space, name;
- CFX_WideString value;
- pElement->GetAttrByIndex(i, space, name, value);
- if (space == FX_BSTRC("xmlns") && name == FX_BSTRC("adhocwf") && value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/")
- {
- CXML_Element *pVersion = pElement->GetElement("adhocwf",cbName);
- if (!pVersion)
- continue;
- CFX_WideString wsContent = pVersion->GetContent(0); // == 1.1
- int nType = wsContent.GetInteger();
- switch(nType)
- {
- case 1:
- FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACROBAT);
- break;
- case 2:
- FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM);
- break;
- case 0:
- FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMAIL);
- break;
- }
- }
+FX_BOOL CheckSharedForm(CXML_Element* pElement, CFX_ByteString cbName) {
+ int count = pElement->CountAttrs();
+ int i = 0;
+ for (i = 0; i < count; i++) {
+ CFX_ByteString space, name;
+ CFX_WideString value;
+ pElement->GetAttrByIndex(i, space, name, value);
+ if (space == FX_BSTRC("xmlns") && name == FX_BSTRC("adhocwf") &&
+ value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/") {
+ CXML_Element* pVersion = pElement->GetElement("adhocwf", cbName);
+ if (!pVersion)
+ continue;
+ CFX_WideString wsContent = pVersion->GetContent(0); // == 1.1
+ int nType = wsContent.GetInteger();
+ switch (nType) {
+ case 1:
+ FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACROBAT);
+ break;
+ case 2:
+ FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM);
+ break;
+ case 0:
+ FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMAIL);
+ break;
+ }
}
-
- FX_DWORD nCount = pElement->CountChildren();
- for(i=0; i<(int)nCount; i++)
- {
- CXML_Element::ChildType childType = pElement->GetChildType(i);
- if(childType == CXML_Element::Element)
- {
- CXML_Element * pChild = pElement->GetElement(i);
- if(CheckSharedForm(pChild, cbName))
- return TRUE;
- }
+ }
+
+ FX_DWORD nCount = pElement->CountChildren();
+ for (i = 0; i < (int)nCount; i++) {
+ CXML_Element::ChildType childType = pElement->GetChildType(i);
+ if (childType == CXML_Element::Element) {
+ CXML_Element* pChild = pElement->GetElement(i);
+ if (CheckSharedForm(pChild, cbName))
+ return TRUE;
}
- return FALSE;
+ }
+ return FALSE;
}
-void CheckUnSupportError(CPDF_Document * pDoc, FX_DWORD err_code)
-{
- // Security
- if(err_code == FPDF_ERR_SECURITY)
- {
- FPDF_UnSupportError(FPDF_UNSP_DOC_SECURITY);
- return ;
+void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code) {
+ // Security
+ if (err_code == FPDF_ERR_SECURITY) {
+ FPDF_UnSupportError(FPDF_UNSP_DOC_SECURITY);
+ return;
+ }
+ if (!pDoc)
+ return;
+
+ // Portfolios and Packages
+ CPDF_Dictionary* pRootDict = pDoc->GetRoot();
+ if (pRootDict) {
+ CFX_ByteString cbString;
+ if (pRootDict->KeyExist("Collection")) {
+ FPDF_UnSupportError(FPDF_UNSP_DOC_PORTABLECOLLECTION);
+ return;
}
- if(!pDoc)
- return ;
-
- // Portfolios and Packages
- CPDF_Dictionary * pRootDict = pDoc->GetRoot();
- if(pRootDict)
- {
- CFX_ByteString cbString;
- if(pRootDict->KeyExist("Collection"))
- {
- FPDF_UnSupportError(FPDF_UNSP_DOC_PORTABLECOLLECTION);
- return ;
- }
- if(pRootDict->KeyExist("Names"))
- {
- CPDF_Dictionary* pNameDict = pRootDict->GetDict("Names");
- if (pNameDict && pNameDict->KeyExist("EmbeddedFiles"))
- {
- FPDF_UnSupportError(FPDF_UNSP_DOC_ATTACHMENT);
- return;
- }
- if (pNameDict && pNameDict->KeyExist("JavaScript"))
- {
- CPDF_Dictionary* pJSDict = pNameDict->GetDict("JavaScript");
- CPDF_Array * pArray = pJSDict ? pJSDict->GetArray("Names") : NULL;
- if (pArray) {
- int nCount = pArray->GetCount();
- for(int i=0; i<nCount; i++)
- {
- CFX_ByteString cbStr = pArray->GetString(i);
- if(cbStr.Compare("com.adobe.acrobat.SharedReview.Register") == 0)
- {
- FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDREVIEW);
- return;
- }
- }
- }
+ if (pRootDict->KeyExist("Names")) {
+ CPDF_Dictionary* pNameDict = pRootDict->GetDict("Names");
+ if (pNameDict && pNameDict->KeyExist("EmbeddedFiles")) {
+ FPDF_UnSupportError(FPDF_UNSP_DOC_ATTACHMENT);
+ return;
+ }
+ if (pNameDict && pNameDict->KeyExist("JavaScript")) {
+ CPDF_Dictionary* pJSDict = pNameDict->GetDict("JavaScript");
+ CPDF_Array* pArray = pJSDict ? pJSDict->GetArray("Names") : NULL;
+ if (pArray) {
+ int nCount = pArray->GetCount();
+ for (int i = 0; i < nCount; i++) {
+ CFX_ByteString cbStr = pArray->GetString(i);
+ if (cbStr.Compare("com.adobe.acrobat.SharedReview.Register") == 0) {
+ FPDF_UnSupportError(FPDF_UNSP_DOC_SHAREDREVIEW);
+ return;
}
+ }
}
+ }
}
-
- // SharedForm
- CPDF_Metadata metaData;
- metaData.LoadDoc(pDoc);
- CXML_Element * pElement = metaData.GetRoot();
- if(pElement)
- CheckSharedForm(pElement, "workflowType");
-
- // XFA Forms
- CPDF_InterForm * pInterForm = new CPDF_InterForm(pDoc,FALSE);
- if (pInterForm->HasXFAForm())
- {
- FPDF_UnSupportError(FPDF_UNSP_DOC_XFAFORM);
- }
- delete pInterForm;
+ }
+
+ // SharedForm
+ CPDF_Metadata metaData;
+ metaData.LoadDoc(pDoc);
+ CXML_Element* pElement = metaData.GetRoot();
+ if (pElement)
+ CheckSharedForm(pElement, "workflowType");
+
+ // XFA Forms
+ CPDF_InterForm* pInterForm = new CPDF_InterForm(pDoc, FALSE);
+ if (pInterForm->HasXFAForm()) {
+ FPDF_UnSupportError(FPDF_UNSP_DOC_XFAFORM);
+ }
+ delete pInterForm;
}
-DLLEXPORT int FPDFDoc_GetPageMode(FPDF_DOCUMENT document)
-{
- if (!document)
- return PAGEMODE_UNKNOWN;
-
- CPDF_Dictionary* pRoot = ((CPDF_Document*)document)->GetRoot();
- if (!pRoot)
- return PAGEMODE_UNKNOWN;
-
- CPDF_Object* pName = pRoot->GetElement("PageMode");
- if (!pName)
- return PAGEMODE_USENONE;
-
- CFX_ByteString strPageMode = pName->GetString();
- if (strPageMode.IsEmpty()||strPageMode.EqualNoCase("UseNone"))
- return PAGEMODE_USENONE;
- if (strPageMode.EqualNoCase("UseOutlines"))
- return PAGEMODE_USEOUTLINES;
- if (strPageMode.EqualNoCase("UseThumbs"))
- return PAGEMODE_USETHUMBS;
- if (strPageMode.EqualNoCase("FullScreen"))
- return PAGEMODE_FULLSCREEN;
- if (strPageMode.EqualNoCase("UseOC"))
- return PAGEMODE_USEOC;
- if (strPageMode.EqualNoCase("UseAttachments"))
- return PAGEMODE_USEATTACHMENTS;
+DLLEXPORT int FPDFDoc_GetPageMode(FPDF_DOCUMENT document) {
+ if (!document)
+ return PAGEMODE_UNKNOWN;
+ CPDF_Dictionary* pRoot = ((CPDF_Document*)document)->GetRoot();
+ if (!pRoot)
return PAGEMODE_UNKNOWN;
+
+ CPDF_Object* pName = pRoot->GetElement("PageMode");
+ if (!pName)
+ return PAGEMODE_USENONE;
+
+ CFX_ByteString strPageMode = pName->GetString();
+ if (strPageMode.IsEmpty() || strPageMode.EqualNoCase("UseNone"))
+ return PAGEMODE_USENONE;
+ if (strPageMode.EqualNoCase("UseOutlines"))
+ return PAGEMODE_USEOUTLINES;
+ if (strPageMode.EqualNoCase("UseThumbs"))
+ return PAGEMODE_USETHUMBS;
+ if (strPageMode.EqualNoCase("FullScreen"))
+ return PAGEMODE_FULLSCREEN;
+ if (strPageMode.EqualNoCase("UseOC"))
+ return PAGEMODE_USEOC;
+ if (strPageMode.EqualNoCase("UseAttachments"))
+ return PAGEMODE_USEATTACHMENTS;
+
+ return PAGEMODE_UNKNOWN;
}
diff --git a/fpdfsdk/src/fpdf_flatten.cpp b/fpdfsdk/src/fpdf_flatten.cpp
index 988d7f46b5..210df63d3e 100644
--- a/fpdfsdk/src/fpdf_flatten.cpp
+++ b/fpdfsdk/src/fpdf_flatten.cpp
@@ -13,537 +13,514 @@ typedef CFX_ArrayTemplate<CPDF_Rect> CPDF_RectArray;
enum FPDF_TYPE { MAX, MIN };
enum FPDF_VALUE { TOP, LEFT, RIGHT, BOTTOM };
-FX_BOOL IsValiableRect(CPDF_Rect rect, CPDF_Rect rcPage)
-{
- if ( rect.left - rect.right > 0.000001f ||
- rect.bottom - rect.top > 0.000001f)
- return FALSE;
-
- if (rect.left == 0.0f &&
- rect.top == 0.0f &&
- rect.right == 0.0f &&
- rect.bottom == 0.0f)
- return FALSE;
-
- if (!rcPage.IsEmpty())
- {
- if (rect.left - rcPage.left < -10.000001f ||
- rect.right - rcPage.right > 10.000001f ||
- rect.top - rcPage.top > 10.000001f ||
- rect.bottom - rcPage.bottom < -10.000001f)
- return FALSE;
- }
-
- return TRUE;
+FX_BOOL IsValiableRect(CPDF_Rect rect, CPDF_Rect rcPage) {
+ if (rect.left - rect.right > 0.000001f || rect.bottom - rect.top > 0.000001f)
+ return FALSE;
+
+ if (rect.left == 0.0f && rect.top == 0.0f && rect.right == 0.0f &&
+ rect.bottom == 0.0f)
+ return FALSE;
+
+ if (!rcPage.IsEmpty()) {
+ if (rect.left - rcPage.left < -10.000001f ||
+ rect.right - rcPage.right > 10.000001f ||
+ rect.top - rcPage.top > 10.000001f ||
+ rect.bottom - rcPage.bottom < -10.000001f)
+ return FALSE;
+ }
+
+ return TRUE;
}
+FX_BOOL GetContentsRect(CPDF_Document* pDoc,
+ CPDF_Dictionary* pDict,
+ CPDF_RectArray* pRectArray) {
+ CPDF_Page* pPDFPage = new CPDF_Page;
+ pPDFPage->Load(pDoc, pDict, FALSE);
+ pPDFPage->ParseContent();
-FX_BOOL GetContentsRect( CPDF_Document * pDoc, CPDF_Dictionary* pDict, CPDF_RectArray * pRectArray )
-{
- CPDF_Page* pPDFPage = new CPDF_Page;
- pPDFPage->Load( pDoc, pDict, FALSE );
- pPDFPage->ParseContent();
+ FX_POSITION pos = pPDFPage->GetFirstObjectPosition();
- FX_POSITION pos = pPDFPage->GetFirstObjectPosition();
+ while (pos) {
+ CPDF_PageObject* pPageObject = pPDFPage->GetNextObject(pos);
+ if (!pPageObject)
+ continue;
- while (pos)
- {
- CPDF_PageObject* pPageObject = pPDFPage->GetNextObject(pos);
- if (!pPageObject)continue;
+ CPDF_Rect rc;
+ rc.left = pPageObject->m_Left;
+ rc.right = pPageObject->m_Right;
+ rc.bottom = pPageObject->m_Bottom;
+ rc.top = pPageObject->m_Top;
- CPDF_Rect rc;
- rc.left = pPageObject->m_Left;
- rc.right = pPageObject->m_Right;
- rc.bottom = pPageObject->m_Bottom;
- rc.top = pPageObject->m_Top;
+ if (IsValiableRect(rc, pDict->GetRect("MediaBox"))) {
+ pRectArray->Add(rc);
+ }
+ }
- if (IsValiableRect(rc, pDict->GetRect("MediaBox")))
- {
- pRectArray->Add(rc);
- }
- }
+ delete pPDFPage;
+ return TRUE;
+}
- delete pPDFPage;
- return TRUE;
+void ParserStream(CPDF_Dictionary* pPageDic,
+ CPDF_Dictionary* pStream,
+ CPDF_RectArray* pRectArray,
+ CPDF_ObjectArray* pObjectArray) {
+ if (!pStream)
+ return;
+ CPDF_Rect rect;
+ if (pStream->KeyExist("Rect"))
+ rect = pStream->GetRect("Rect");
+ else if (pStream->KeyExist("BBox"))
+ rect = pStream->GetRect("BBox");
+
+ if (IsValiableRect(rect, pPageDic->GetRect("MediaBox")))
+ pRectArray->Add(rect);
+
+ pObjectArray->Add(pStream);
}
+int ParserAnnots(CPDF_Document* pSourceDoc,
+ CPDF_Dictionary* pPageDic,
+ CPDF_RectArray* pRectArray,
+ CPDF_ObjectArray* pObjectArray,
+ int nUsage) {
+ if (!pSourceDoc || !pPageDic)
+ return FLATTEN_FAIL;
+
+ GetContentsRect(pSourceDoc, pPageDic, pRectArray);
+ CPDF_Array* pAnnots = pPageDic->GetArray("Annots");
+ if (!pAnnots)
+ return FLATTEN_NOTHINGTODO;
+
+ FX_DWORD dwSize = pAnnots->GetCount();
+ for (int i = 0; i < (int)dwSize; i++) {
+ CPDF_Object* pObj = pAnnots->GetElementValue(i);
+ if (!pObj || pObj->GetType() != PDFOBJ_DICTIONARY)
+ continue;
+
+ CPDF_Dictionary* pAnnotDic = (CPDF_Dictionary*)pObj;
+ CFX_ByteString sSubtype = pAnnotDic->GetString("Subtype");
+ if (sSubtype == "Popup")
+ continue;
+
+ int nAnnotFlag = pAnnotDic->GetInteger("F");
+ if (nAnnotFlag & ANNOTFLAG_HIDDEN)
+ continue;
+
+ if (nUsage == FLAT_NORMALDISPLAY) {
+ if (nAnnotFlag & ANNOTFLAG_INVISIBLE)
+ continue;
+
+ ParserStream(pPageDic, pAnnotDic, pRectArray, pObjectArray);
+ } else {
+ if (nAnnotFlag & ANNOTFLAG_PRINT)
+ ParserStream(pPageDic, pAnnotDic, pRectArray, pObjectArray);
+ }
+ }
+ return FLATTEN_SUCCESS;
+}
-void ParserStream( CPDF_Dictionary * pPageDic, CPDF_Dictionary* pStream, CPDF_RectArray * pRectArray, CPDF_ObjectArray * pObjectArray )
-{
- if (!pStream)return;
- CPDF_Rect rect;
- if (pStream->KeyExist("Rect"))
- rect = pStream->GetRect("Rect");
- else if (pStream->KeyExist("BBox"))
- rect = pStream->GetRect("BBox");
+FX_FLOAT GetMinMaxValue(CPDF_RectArray& array,
+ FPDF_TYPE type,
+ FPDF_VALUE value) {
+ int nRects = array.GetSize();
+ FX_FLOAT fRet = 0.0f;
- if (IsValiableRect(rect, pPageDic->GetRect("MediaBox")))
- pRectArray->Add(rect);
+ if (nRects <= 0)
+ return 0.0f;
- pObjectArray->Add(pStream);
-}
+ FX_FLOAT* pArray = new FX_FLOAT[nRects];
+ switch (value) {
+ case LEFT: {
+ for (int i = 0; i < nRects; i++)
+ pArray[i] = CPDF_Rect(array.GetAt(i)).left;
+ break;
+ }
+ case TOP: {
+ for (int i = 0; i < nRects; i++)
+ pArray[i] = CPDF_Rect(array.GetAt(i)).top;
-int ParserAnnots( CPDF_Document* pSourceDoc, CPDF_Dictionary * pPageDic, CPDF_RectArray * pRectArray, CPDF_ObjectArray * pObjectArray, int nUsage)
-{
- if (!pSourceDoc || !pPageDic)
- return FLATTEN_FAIL;
+ break;
+ }
+ case RIGHT: {
+ for (int i = 0; i < nRects; i++)
+ pArray[i] = CPDF_Rect(array.GetAt(i)).right;
- GetContentsRect( pSourceDoc, pPageDic, pRectArray );
- CPDF_Array* pAnnots = pPageDic->GetArray("Annots");
- if (!pAnnots)
- return FLATTEN_NOTHINGTODO;
+ break;
+ }
+ case BOTTOM: {
+ for (int i = 0; i < nRects; i++)
+ pArray[i] = CPDF_Rect(array.GetAt(i)).bottom;
- FX_DWORD dwSize = pAnnots->GetCount();
- for (int i = 0; i < (int)dwSize; i++)
- {
- CPDF_Object* pObj = pAnnots->GetElementValue(i);
- if (!pObj || pObj->GetType() != PDFOBJ_DICTIONARY)
- continue;
+ break;
+ }
+ default:
+ break;
+ }
+ fRet = pArray[0];
+ if (type == MAX) {
+ for (int i = 1; i < nRects; i++)
+ if (fRet <= pArray[i])
+ fRet = pArray[i];
+ } else {
+ for (int i = 1; i < nRects; i++)
+ if (fRet >= pArray[i])
+ fRet = pArray[i];
+ }
+ delete[] pArray;
+ return fRet;
+}
- CPDF_Dictionary* pAnnotDic = (CPDF_Dictionary*)pObj;
- CFX_ByteString sSubtype = pAnnotDic->GetString("Subtype");
- if (sSubtype == "Popup")
- continue;
+CPDF_Rect CalculateRect(CPDF_RectArray* pRectArray) {
+ CPDF_Rect rcRet;
- int nAnnotFlag = pAnnotDic->GetInteger("F");
- if (nAnnotFlag & ANNOTFLAG_HIDDEN)
- continue;
+ rcRet.left = GetMinMaxValue(*pRectArray, MIN, LEFT);
+ rcRet.top = GetMinMaxValue(*pRectArray, MAX, TOP);
+ rcRet.right = GetMinMaxValue(*pRectArray, MAX, RIGHT);
+ rcRet.bottom = GetMinMaxValue(*pRectArray, MIN, BOTTOM);
- if(nUsage == FLAT_NORMALDISPLAY)
- {
- if (nAnnotFlag & ANNOTFLAG_INVISIBLE)
- continue;
+ return rcRet;
+}
- ParserStream( pPageDic, pAnnotDic, pRectArray, pObjectArray );
- }
- else
- {
- if (nAnnotFlag & ANNOTFLAG_PRINT)
- ParserStream( pPageDic, pAnnotDic, pRectArray, pObjectArray );
- }
+void SetPageContents(CFX_ByteString key,
+ CPDF_Dictionary* pPage,
+ CPDF_Document* pDocument) {
+ CPDF_Object* pContentsObj = pPage->GetStream("Contents");
+ if (!pContentsObj) {
+ pContentsObj = pPage->GetArray("Contents");
+ }
+
+ if (!pContentsObj) {
+ // Create a new contents dictionary
+ if (!key.IsEmpty()) {
+ CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
+ pPage->SetAtReference("Contents", pDocument,
+ pDocument->AddIndirectObject(pNewContents));
+
+ CFX_ByteString sStream;
+ sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
+ pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE,
+ FALSE);
+ }
+ return;
+ }
+
+ int iType = pContentsObj->GetType();
+ CPDF_Array* pContentsArray = NULL;
+
+ switch (iType) {
+ case PDFOBJ_STREAM: {
+ pContentsArray = new CPDF_Array;
+ CPDF_Stream* pContents = (CPDF_Stream*)pContentsObj;
+ FX_DWORD dwObjNum = pDocument->AddIndirectObject(pContents);
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pContents);
+ CFX_ByteString sStream = "q\n";
+ CFX_ByteString sBody =
+ CFX_ByteString((const FX_CHAR*)acc.GetData(), acc.GetSize());
+ sStream = sStream + sBody + "\nQ";
+ pContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE,
+ FALSE);
+ pContentsArray->AddReference(pDocument, dwObjNum);
+ break;
+ }
+
+ case PDFOBJ_ARRAY: {
+ pContentsArray = (CPDF_Array*)pContentsObj;
+ break;
}
- return FLATTEN_SUCCESS;
+ default:
+ break;
+ }
+
+ if (!pContentsArray)
+ return;
+
+ FX_DWORD dwObjNum = pDocument->AddIndirectObject(pContentsArray);
+ pPage->SetAtReference("Contents", pDocument, dwObjNum);
+
+ if (!key.IsEmpty()) {
+ CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
+ dwObjNum = pDocument->AddIndirectObject(pNewContents);
+ pContentsArray->AddReference(pDocument, dwObjNum);
+
+ CFX_ByteString sStream;
+ sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
+ pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE,
+ FALSE);
+ }
}
+CFX_AffineMatrix GetMatrix(CPDF_Rect rcAnnot,
+ CPDF_Rect rcStream,
+ CFX_AffineMatrix matrix) {
+ if (rcStream.IsEmpty())
+ return CFX_AffineMatrix();
+
+ matrix.TransformRect(rcStream);
+ rcStream.Normalize();
-FX_FLOAT GetMinMaxValue( CPDF_RectArray& array, FPDF_TYPE type, FPDF_VALUE value)
-{
- int nRects = array.GetSize();
- FX_FLOAT fRet = 0.0f;
-
- if (nRects <= 0)return 0.0f;
-
- FX_FLOAT* pArray = new FX_FLOAT[nRects];
- switch(value)
- {
- case LEFT:
- {
- for (int i = 0; i < nRects; i++)
- pArray[i] = CPDF_Rect(array.GetAt(i)).left;
-
- break;
- }
- case TOP:
- {
- for (int i = 0; i < nRects; i++)
- pArray[i] = CPDF_Rect(array.GetAt(i)).top;
-
- break;
- }
- case RIGHT:
- {
- for (int i = 0; i < nRects; i++)
- pArray[i] = CPDF_Rect(array.GetAt(i)).right;
-
- break;
- }
- case BOTTOM:
- {
- for (int i = 0; i < nRects; i++)
- pArray[i] = CPDF_Rect(array.GetAt(i)).bottom;
-
- break;
- }
- default:
- break;
- }
- fRet = pArray[0];
- if (type == MAX)
- {
- for (int i = 1; i < nRects; i++)
- if (fRet <= pArray[i])
- fRet = pArray[i];
- }
- else
- {
- for (int i = 1; i < nRects; i++)
- if (fRet >= pArray[i])
- fRet = pArray[i];
- }
- delete[] pArray;
- return fRet;
+ FX_FLOAT a = rcAnnot.Width() / rcStream.Width();
+ FX_FLOAT d = rcAnnot.Height() / rcStream.Height();
+
+ FX_FLOAT e = rcAnnot.left - rcStream.left * a;
+ FX_FLOAT f = rcAnnot.bottom - rcStream.bottom * d;
+ return CFX_AffineMatrix(a, 0, 0, d, e, f);
}
-CPDF_Rect CalculateRect( CPDF_RectArray * pRectArray )
-{
+void GetOffset(FX_FLOAT& fa,
+ FX_FLOAT& fd,
+ FX_FLOAT& fe,
+ FX_FLOAT& ff,
+ CPDF_Rect rcAnnot,
+ CPDF_Rect rcStream,
+ CFX_AffineMatrix matrix) {
+ FX_FLOAT fStreamWidth = 0.0f;
+ FX_FLOAT fStreamHeight = 0.0f;
+
+ if (matrix.a != 0 && matrix.d != 0) {
+ fStreamWidth = rcStream.right - rcStream.left;
+ fStreamHeight = rcStream.top - rcStream.bottom;
+ } else {
+ fStreamWidth = rcStream.top - rcStream.bottom;
+ fStreamHeight = rcStream.right - rcStream.left;
+ }
+
+ FX_FLOAT x1 =
+ matrix.a * rcStream.left + matrix.c * rcStream.bottom + matrix.e;
+ FX_FLOAT y1 =
+ matrix.b * rcStream.left + matrix.d * rcStream.bottom + matrix.f;
+ FX_FLOAT x2 = matrix.a * rcStream.left + matrix.c * rcStream.top + matrix.e;
+ FX_FLOAT y2 = matrix.b * rcStream.left + matrix.d * rcStream.top + matrix.f;
+ FX_FLOAT x3 =
+ matrix.a * rcStream.right + matrix.c * rcStream.bottom + matrix.e;
+ FX_FLOAT y3 =
+ matrix.b * rcStream.right + matrix.d * rcStream.bottom + matrix.f;
+ FX_FLOAT x4 = matrix.a * rcStream.right + matrix.c * rcStream.top + matrix.e;
+ FX_FLOAT y4 = matrix.b * rcStream.right + matrix.d * rcStream.top + matrix.f;
+
+ FX_FLOAT left = FX_MIN(FX_MIN(x1, x2), FX_MIN(x3, x4));
+ FX_FLOAT bottom = FX_MIN(FX_MIN(y1, y2), FX_MIN(y3, y4));
+
+ fa = (rcAnnot.right - rcAnnot.left) / fStreamWidth;
+ fd = (rcAnnot.top - rcAnnot.bottom) / fStreamHeight;
+ fe = rcAnnot.left - left * fa;
+ ff = rcAnnot.bottom - bottom * fd;
+}
- CPDF_Rect rcRet;
+DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag) {
+ if (!page) {
+ return FLATTEN_FAIL;
+ }
+
+ CPDF_Page* pPage = (CPDF_Page*)(page);
+ CPDF_Document* pDocument = pPage->m_pDocument;
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+
+ if (!pDocument || !pPageDict) {
+ return FLATTEN_FAIL;
+ }
+
+ CPDF_ObjectArray ObjectArray;
+ CPDF_RectArray RectArray;
+
+ int iRet = FLATTEN_FAIL;
+ iRet = ParserAnnots(pDocument, pPageDict, &RectArray, &ObjectArray, nFlag);
+ if (iRet == FLATTEN_NOTHINGTODO || iRet == FLATTEN_FAIL)
+ return iRet;
+
+ CPDF_Rect rcOriginalCB;
+ CPDF_Rect rcMerger = CalculateRect(&RectArray);
+ CPDF_Rect rcOriginalMB = pPageDict->GetRect("MediaBox");
+
+ if (pPageDict->KeyExist("CropBox"))
+ rcOriginalMB = pPageDict->GetRect("CropBox");
+
+ if (rcOriginalMB.IsEmpty()) {
+ rcOriginalMB = CPDF_Rect(0.0f, 0.0f, 612.0f, 792.0f);
+ }
+
+ rcMerger.left =
+ rcMerger.left < rcOriginalMB.left ? rcOriginalMB.left : rcMerger.left;
+ rcMerger.right =
+ rcMerger.right > rcOriginalMB.right ? rcOriginalMB.right : rcMerger.right;
+ rcMerger.top =
+ rcMerger.top > rcOriginalMB.top ? rcOriginalMB.top : rcMerger.top;
+ rcMerger.bottom = rcMerger.bottom < rcOriginalMB.bottom ? rcOriginalMB.bottom
+ : rcMerger.bottom;
+
+ if (pPageDict->KeyExist("ArtBox"))
+ rcOriginalCB = pPageDict->GetRect("ArtBox");
+ else
+ rcOriginalCB = rcOriginalMB;
+
+ if (!rcOriginalMB.IsEmpty()) {
+ CPDF_Array* pMediaBox = new CPDF_Array();
+ pMediaBox->Add(new CPDF_Number(rcOriginalMB.left));
+ pMediaBox->Add(new CPDF_Number(rcOriginalMB.bottom));
+ pMediaBox->Add(new CPDF_Number(rcOriginalMB.right));
+ pMediaBox->Add(new CPDF_Number(rcOriginalMB.top));
+ pPageDict->SetAt("MediaBox", pMediaBox);
+ }
+
+ if (!rcOriginalCB.IsEmpty()) {
+ CPDF_Array* pCropBox = new CPDF_Array();
+ pCropBox->Add(new CPDF_Number(rcOriginalCB.left));
+ pCropBox->Add(new CPDF_Number(rcOriginalCB.bottom));
+ pCropBox->Add(new CPDF_Number(rcOriginalCB.right));
+ pCropBox->Add(new CPDF_Number(rcOriginalCB.top));
+ pPageDict->SetAt("ArtBox", pCropBox);
+ }
+
+ CPDF_Dictionary* pRes = pPageDict->GetDict("Resources");
+ if (!pRes) {
+ pRes = new CPDF_Dictionary;
+ pPageDict->SetAt("Resources", pRes);
+ }
+
+ CPDF_Stream* pNewXObject = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
+ FX_DWORD dwObjNum = pDocument->AddIndirectObject(pNewXObject);
+ CPDF_Dictionary* pPageXObject = pRes->GetDict("XObject");
+ if (!pPageXObject) {
+ pPageXObject = new CPDF_Dictionary;
+ pRes->SetAt("XObject", pPageXObject);
+ }
+
+ CFX_ByteString key = "";
+ int nStreams = ObjectArray.GetSize();
+
+ if (nStreams > 0) {
+ for (int iKey = 0; /*iKey < 100*/; iKey++) {
+ char sExtend[5] = {};
+ FXSYS_itoa(iKey, sExtend, 10);
+ key = CFX_ByteString("FFT") + CFX_ByteString(sExtend);
+
+ if (!pPageXObject->KeyExist(key))
+ break;
+ }
+ }
+
+ SetPageContents(key, pPageDict, pDocument);
+
+ CPDF_Dictionary* pNewXORes = NULL;
+
+ if (!key.IsEmpty()) {
+ pPageXObject->SetAtReference(key, pDocument, dwObjNum);
+ CPDF_Dictionary* pNewOXbjectDic = pNewXObject->GetDict();
+ pNewXORes = new CPDF_Dictionary;
+ pNewOXbjectDic->SetAt("Resources", pNewXORes);
+ pNewOXbjectDic->SetAtName("Type", "XObject");
+ pNewOXbjectDic->SetAtName("Subtype", "Form");
+ pNewOXbjectDic->SetAtInteger("FormType", 1);
+ pNewOXbjectDic->SetAtName("Name", "FRM");
+ CPDF_Rect rcBBox = pPageDict->GetRect("ArtBox");
+ pNewOXbjectDic->SetAtRect("BBox", rcBBox);
+ }
+
+ for (int i = 0; i < nStreams; i++) {
+ CPDF_Dictionary* pAnnotDic = ObjectArray.GetAt(i);
+ if (!pAnnotDic)
+ continue;
+
+ CPDF_Rect rcAnnot = pAnnotDic->GetRect("Rect");
+ rcAnnot.Normalize();
+
+ CFX_ByteString sAnnotState = pAnnotDic->GetString("AS");
+ CPDF_Dictionary* pAnnotAP = pAnnotDic->GetDict("AP");
+ if (!pAnnotAP)
+ continue;
+
+ CPDF_Stream* pAPStream = pAnnotAP->GetStream("N");
+ if (!pAPStream) {
+ CPDF_Dictionary* pAPDic = pAnnotAP->GetDict("N");
+ if (!pAPDic)
+ continue;
+
+ if (!sAnnotState.IsEmpty()) {
+ pAPStream = pAPDic->GetStream(sAnnotState);
+ } else {
+ FX_POSITION pos = pAPDic->GetStartPos();
+ if (pos) {
+ CFX_ByteString sKey;
+ CPDF_Object* pFirstObj = pAPDic->GetNextElement(pos, sKey);
+ if (pFirstObj) {
+ if (pFirstObj->GetType() == PDFOBJ_REFERENCE)
+ pFirstObj = pFirstObj->GetDirect();
+
+ if (pFirstObj->GetType() != PDFOBJ_STREAM)
+ continue;
+
+ pAPStream = (CPDF_Stream*)pFirstObj;
+ }
+ }
+ }
+ }
- rcRet.left = GetMinMaxValue(*pRectArray, MIN, LEFT);
- rcRet.top = GetMinMaxValue(*pRectArray, MAX, TOP);
- rcRet.right = GetMinMaxValue(*pRectArray, MAX, RIGHT);
- rcRet.bottom = GetMinMaxValue(*pRectArray, MIN, BOTTOM);
+ if (!pAPStream)
+ continue;
- return rcRet;
-}
+ CPDF_Dictionary* pAPDic = pAPStream->GetDict();
+ CFX_AffineMatrix matrix = pAPDic->GetMatrix("Matrix");
+ CPDF_Rect rcStream;
+ if (pAPDic->KeyExist("Rect"))
+ rcStream = pAPDic->GetRect("Rect");
+ else if (pAPDic->KeyExist("BBox"))
+ rcStream = pAPDic->GetRect("BBox");
-void SetPageContents(CFX_ByteString key, CPDF_Dictionary* pPage, CPDF_Document* pDocument)
-{
- CPDF_Object* pContentsObj = pPage->GetStream("Contents");
- if (!pContentsObj)
- {
- pContentsObj = pPage->GetArray("Contents");
- }
-
- if (!pContentsObj)
- {
- //Create a new contents dictionary
- if (!key.IsEmpty())
- {
- CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
- pPage->SetAtReference("Contents", pDocument, pDocument->AddIndirectObject(pNewContents));
-
- CFX_ByteString sStream;
- sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
- pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, FALSE);
- }
- return;
- }
-
- int iType = pContentsObj->GetType();
- CPDF_Array* pContentsArray = NULL;
-
- switch(iType)
- {
- case PDFOBJ_STREAM:
- {
- pContentsArray = new CPDF_Array;
- CPDF_Stream* pContents = (CPDF_Stream*)pContentsObj;
- FX_DWORD dwObjNum = pDocument->AddIndirectObject(pContents);
- CPDF_StreamAcc acc;
- acc.LoadAllData(pContents);
- CFX_ByteString sStream = "q\n";
- CFX_ByteString sBody = CFX_ByteString((const FX_CHAR*)acc.GetData(), acc.GetSize());
- sStream = sStream + sBody + "\nQ";
- pContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, FALSE);
- pContentsArray->AddReference(pDocument, dwObjNum);
- break;
- }
-
- case PDFOBJ_ARRAY:
- {
- pContentsArray = (CPDF_Array*)pContentsObj;
- break;
- }
- default:
- break;
- }
-
- if (!pContentsArray)return;
-
- FX_DWORD dwObjNum = pDocument->AddIndirectObject(pContentsArray);
- pPage->SetAtReference("Contents", pDocument, dwObjNum);
-
- if (!key.IsEmpty())
- {
- CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
- dwObjNum = pDocument->AddIndirectObject(pNewContents);
- pContentsArray->AddReference(pDocument, dwObjNum);
-
- CFX_ByteString sStream;
- sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
- pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, FALSE);
- }
-}
+ if (rcStream.IsEmpty())
+ continue;
-CFX_AffineMatrix GetMatrix(CPDF_Rect rcAnnot, CPDF_Rect rcStream, CFX_AffineMatrix matrix)
-{
- if(rcStream.IsEmpty())
- return CFX_AffineMatrix();
+ CPDF_Object* pObj = pAPStream;
- matrix.TransformRect(rcStream);
- rcStream.Normalize();
+ if (pObj) {
+ CPDF_Dictionary* pObjDic = pObj->GetDict();
+ if (pObjDic) {
+ pObjDic->SetAtName("Type", "XObject");
+ pObjDic->SetAtName("Subtype", "Form");
+ }
+ }
- FX_FLOAT a = rcAnnot.Width()/rcStream.Width();
- FX_FLOAT d = rcAnnot.Height()/rcStream.Height();
+ CPDF_Dictionary* pXObject = pNewXORes->GetDict("XObject");
+ if (!pXObject) {
+ pXObject = new CPDF_Dictionary;
+ pNewXORes->SetAt("XObject", pXObject);
+ }
- FX_FLOAT e = rcAnnot.left - rcStream.left * a;
- FX_FLOAT f = rcAnnot.bottom - rcStream.bottom * d;
- return CFX_AffineMatrix(a, 0, 0, d, e, f);
-}
+ CFX_ByteString sFormName;
+ sFormName.Format("F%d", i);
+ FX_DWORD dwObjNum = pDocument->AddIndirectObject(pObj);
+ pXObject->SetAtReference(sFormName, pDocument, dwObjNum);
+
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pNewXObject);
+
+ const uint8_t* pData = acc.GetData();
+ CFX_ByteString sStream(pData, acc.GetSize());
+ CFX_ByteString sTemp;
+
+ if (matrix.IsIdentity()) {
+ matrix.a = 1.0f;
+ matrix.b = 0.0f;
+ matrix.c = 0.0f;
+ matrix.d = 1.0f;
+ matrix.e = 0.0f;
+ matrix.f = 0.0f;
+ }
-void GetOffset(FX_FLOAT& fa, FX_FLOAT& fd, FX_FLOAT& fe, FX_FLOAT& ff, CPDF_Rect rcAnnot, CPDF_Rect rcStream, CFX_AffineMatrix matrix)
-{
- FX_FLOAT fStreamWidth = 0.0f;
- FX_FLOAT fStreamHeight = 0.0f;
-
-
-
- if (matrix.a != 0 && matrix.d != 0)
- {
- fStreamWidth = rcStream.right - rcStream.left;
- fStreamHeight = rcStream.top - rcStream.bottom;
- }
- else
- {
- fStreamWidth = rcStream.top - rcStream.bottom;
- fStreamHeight = rcStream.right - rcStream.left;
- }
-
- FX_FLOAT x1 = matrix.a * rcStream.left + matrix.c * rcStream.bottom + matrix.e;
- FX_FLOAT y1 = matrix.b * rcStream.left + matrix.d * rcStream.bottom + matrix.f;
- FX_FLOAT x2 = matrix.a * rcStream.left + matrix.c * rcStream.top + matrix.e;
- FX_FLOAT y2 = matrix.b * rcStream.left + matrix.d * rcStream.top + matrix.f;
- FX_FLOAT x3 = matrix.a * rcStream.right + matrix.c * rcStream.bottom + matrix.e;
- FX_FLOAT y3 = matrix.b * rcStream.right + matrix.d * rcStream.bottom + matrix.f;
- FX_FLOAT x4 = matrix.a * rcStream.right + matrix.c * rcStream.top + matrix.e;
- FX_FLOAT y4 = matrix.b * rcStream.right + matrix.d * rcStream.top + matrix.f;
-
- FX_FLOAT left = FX_MIN(FX_MIN(x1, x2), FX_MIN(x3, x4));
- FX_FLOAT bottom = FX_MIN(FX_MIN(y1, y2), FX_MIN(y3, y4));
-
- fa = (rcAnnot.right - rcAnnot.left)/fStreamWidth;
- fd = (rcAnnot.top - rcAnnot.bottom)/fStreamHeight;
- fe = rcAnnot.left - left * fa;
- ff = rcAnnot.bottom - bottom * fd;
-}
+ CFX_AffineMatrix m = GetMatrix(rcAnnot, rcStream, matrix);
+ sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f,
+ sFormName.c_str());
+ sStream += sTemp;
+
+ pNewXObject->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE,
+ FALSE);
+ }
+ pPageDict->RemoveAt("Annots");
+ ObjectArray.RemoveAll();
+ RectArray.RemoveAll();
-DLLEXPORT int STDCALL FPDFPage_Flatten( FPDF_PAGE page, int nFlag)
-{
- if (!page)
- {
- return FLATTEN_FAIL;
- }
-
- CPDF_Page * pPage = (CPDF_Page*)( page );
- CPDF_Document * pDocument = pPage->m_pDocument;
- CPDF_Dictionary * pPageDict = pPage->m_pFormDict;
-
- if ( !pDocument || !pPageDict )
- {
- return FLATTEN_FAIL;
- }
-
- CPDF_ObjectArray ObjectArray;
- CPDF_RectArray RectArray;
-
- int iRet = FLATTEN_FAIL;
- iRet = ParserAnnots( pDocument, pPageDict, &RectArray, &ObjectArray, nFlag);
- if (iRet == FLATTEN_NOTHINGTODO || iRet == FLATTEN_FAIL)
- return iRet;
-
- CPDF_Rect rcOriginalCB;
- CPDF_Rect rcMerger = CalculateRect( &RectArray );
- CPDF_Rect rcOriginalMB = pPageDict->GetRect("MediaBox");
-
- if (pPageDict->KeyExist("CropBox"))
- rcOriginalMB = pPageDict->GetRect("CropBox");
-
- if (rcOriginalMB.IsEmpty())
- {
- rcOriginalMB = CPDF_Rect(0.0f, 0.0f, 612.0f, 792.0f);
- }
-
- rcMerger.left = rcMerger.left < rcOriginalMB.left? rcOriginalMB.left : rcMerger.left;
- rcMerger.right = rcMerger.right > rcOriginalMB.right? rcOriginalMB.right : rcMerger.right;
- rcMerger.top = rcMerger.top > rcOriginalMB.top? rcOriginalMB.top : rcMerger.top;
- rcMerger.bottom = rcMerger.bottom < rcOriginalMB.bottom? rcOriginalMB.bottom : rcMerger.bottom;
-
- if (pPageDict->KeyExist("ArtBox"))
- rcOriginalCB = pPageDict->GetRect("ArtBox");
- else
- rcOriginalCB = rcOriginalMB;
-
- if (!rcOriginalMB.IsEmpty())
- {
- CPDF_Array* pMediaBox = new CPDF_Array();
- pMediaBox->Add(new CPDF_Number(rcOriginalMB.left));
- pMediaBox->Add(new CPDF_Number(rcOriginalMB.bottom));
- pMediaBox->Add(new CPDF_Number(rcOriginalMB.right));
- pMediaBox->Add(new CPDF_Number(rcOriginalMB.top));
- pPageDict->SetAt("MediaBox",pMediaBox);
- }
-
- if (!rcOriginalCB.IsEmpty())
- {
- CPDF_Array* pCropBox = new CPDF_Array();
- pCropBox->Add(new CPDF_Number(rcOriginalCB.left));
- pCropBox->Add(new CPDF_Number(rcOriginalCB.bottom));
- pCropBox->Add(new CPDF_Number(rcOriginalCB.right));
- pCropBox->Add(new CPDF_Number(rcOriginalCB.top));
- pPageDict->SetAt("ArtBox", pCropBox);
- }
-
- CPDF_Dictionary* pRes = pPageDict->GetDict("Resources");
- if (!pRes)
- {
- pRes = new CPDF_Dictionary;
- pPageDict->SetAt("Resources", pRes );
- }
-
- CPDF_Stream* pNewXObject = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
- FX_DWORD dwObjNum = pDocument->AddIndirectObject(pNewXObject);
- CPDF_Dictionary* pPageXObject = pRes->GetDict("XObject");
- if (!pPageXObject)
- {
- pPageXObject = new CPDF_Dictionary;
- pRes->SetAt("XObject", pPageXObject);
- }
-
- CFX_ByteString key = "";
- int nStreams = ObjectArray.GetSize();
-
- if (nStreams > 0)
- {
- for (int iKey = 0; /*iKey < 100*/; iKey++)
- {
- char sExtend[5] = {};
- FXSYS_itoa(iKey, sExtend, 10);
- key = CFX_ByteString("FFT") + CFX_ByteString(sExtend);
-
- if (!pPageXObject->KeyExist(key))
- break;
- }
- }
-
- SetPageContents(key, pPageDict, pDocument);
-
- CPDF_Dictionary* pNewXORes = NULL;
-
- if (!key.IsEmpty())
- {
- pPageXObject->SetAtReference(key, pDocument, dwObjNum);
- CPDF_Dictionary* pNewOXbjectDic = pNewXObject->GetDict();
- pNewXORes = new CPDF_Dictionary;
- pNewOXbjectDic->SetAt("Resources", pNewXORes);
- pNewOXbjectDic->SetAtName("Type", "XObject");
- pNewOXbjectDic->SetAtName("Subtype", "Form");
- pNewOXbjectDic->SetAtInteger("FormType", 1);
- pNewOXbjectDic->SetAtName("Name", "FRM");
- CPDF_Rect rcBBox = pPageDict->GetRect("ArtBox");
- pNewOXbjectDic->SetAtRect("BBox", rcBBox);
- }
-
- for (int i = 0; i < nStreams; i++)
- {
- CPDF_Dictionary* pAnnotDic = ObjectArray.GetAt(i);
- if (!pAnnotDic)continue;
-
- CPDF_Rect rcAnnot = pAnnotDic->GetRect("Rect");
- rcAnnot.Normalize();
-
- CFX_ByteString sAnnotState = pAnnotDic->GetString("AS");
- CPDF_Dictionary* pAnnotAP = pAnnotDic->GetDict("AP");
- if (!pAnnotAP)continue;
-
- CPDF_Stream* pAPStream = pAnnotAP->GetStream("N");
- if (!pAPStream)
- {
- CPDF_Dictionary* pAPDic = pAnnotAP->GetDict("N");
- if (!pAPDic)continue;
-
- if (!sAnnotState.IsEmpty())
- {
- pAPStream = pAPDic->GetStream(sAnnotState);
- }
- else
- {
- FX_POSITION pos = pAPDic->GetStartPos();
- if (pos)
- {
- CFX_ByteString sKey;
- CPDF_Object* pFirstObj = pAPDic->GetNextElement(pos, sKey);
- if (pFirstObj)
- {
- if (pFirstObj->GetType() == PDFOBJ_REFERENCE)
- pFirstObj = pFirstObj->GetDirect();
-
- if (pFirstObj->GetType() != PDFOBJ_STREAM)
- continue;
-
- pAPStream = (CPDF_Stream*)pFirstObj;
- }
- }
- }
- }
-
- if (!pAPStream)continue;
-
- CPDF_Dictionary* pAPDic = pAPStream->GetDict();
- CFX_AffineMatrix matrix = pAPDic->GetMatrix("Matrix");
-
- CPDF_Rect rcStream;
- if (pAPDic->KeyExist("Rect"))
- rcStream = pAPDic->GetRect("Rect");
- else if (pAPDic->KeyExist("BBox"))
- rcStream = pAPDic->GetRect("BBox");
-
- if (rcStream.IsEmpty())continue;
-
- CPDF_Object* pObj = pAPStream;
-
- if (pObj)
- {
- CPDF_Dictionary* pObjDic = pObj->GetDict();
- if (pObjDic)
- {
- pObjDic->SetAtName("Type", "XObject");
- pObjDic->SetAtName("Subtype", "Form");
- }
- }
-
- CPDF_Dictionary* pXObject = pNewXORes->GetDict("XObject");
- if (!pXObject)
- {
- pXObject = new CPDF_Dictionary;
- pNewXORes->SetAt("XObject", pXObject);
- }
-
- CFX_ByteString sFormName;
- sFormName.Format("F%d", i);
- FX_DWORD dwObjNum = pDocument->AddIndirectObject(pObj);
- pXObject->SetAtReference(sFormName, pDocument, dwObjNum);
-
- CPDF_StreamAcc acc;
- acc.LoadAllData(pNewXObject);
-
- const uint8_t* pData = acc.GetData();
- CFX_ByteString sStream(pData, acc.GetSize());
- CFX_ByteString sTemp;
-
- if (matrix.IsIdentity())
- {
- matrix.a = 1.0f;
- matrix.b = 0.0f;
- matrix.c = 0.0f;
- matrix.d = 1.0f;
- matrix.e = 0.0f;
- matrix.f = 0.0f;
- }
-
- CFX_AffineMatrix m = GetMatrix(rcAnnot, rcStream, matrix);
- sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f, sFormName.c_str());
- sStream += sTemp;
-
- pNewXObject->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, FALSE);
- }
- pPageDict->RemoveAt( "Annots" );
-
- ObjectArray.RemoveAll();
- RectArray.RemoveAll();
-
- return FLATTEN_SUCCESS;
+ return FLATTEN_SUCCESS;
}
diff --git a/fpdfsdk/src/fpdf_progressive.cpp b/fpdfsdk/src/fpdf_progressive.cpp
index 4ec73ac2ba..aaa55a18f6 100644
--- a/fpdfsdk/src/fpdf_progressive.cpp
+++ b/fpdfsdk/src/fpdf_progressive.cpp
@@ -9,82 +9,86 @@
#include "../include/fsdk_define.h"
#include "../include/fsdk_rendercontext.h"
-DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start( FPDF_BITMAP bitmap, FPDF_PAGE page,
- int start_x, int start_y, int size_x,
- int size_y, int rotate, int flags,
- IFSDK_PAUSE * pause )
-{
- if (bitmap == NULL || page == NULL)
- return FPDF_RENDER_FAILED;
-
- if (!pause)
- return FPDF_RENDER_FAILED;
-
- if (pause->version !=1)
- return FPDF_RENDER_FAILED;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CRenderContext* pContext = new CRenderContext;
- pPage->SetPrivateData((void*)1, pContext, DropContext);
+DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags,
+ IFSDK_PAUSE* pause) {
+ if (bitmap == NULL || page == NULL)
+ return FPDF_RENDER_FAILED;
+
+ if (!pause)
+ return FPDF_RENDER_FAILED;
+
+ if (pause->version != 1)
+ return FPDF_RENDER_FAILED;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CRenderContext* pContext = new CRenderContext;
+ pPage->SetPrivateData((void*)1, pContext, DropContext);
#ifdef _SKIA_SUPPORT_
- pContext->m_pDevice = new CFX_SkiaDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER)
- ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
- else
- ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
+ pContext->m_pDevice = new CFX_SkiaDevice;
+ if (flags & FPDF_REVERSE_BYTE_ORDER)
+ ((CFX_SkiaDevice*)pContext->m_pDevice)
+ ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
+ else
+ ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
#else
- pContext->m_pDevice = new CFX_FxgeDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER)
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
- else
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
+ pContext->m_pDevice = new CFX_FxgeDevice;
+ if (flags & FPDF_REVERSE_BYTE_ORDER)
+ ((CFX_FxgeDevice*)pContext->m_pDevice)
+ ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
+ else
+ ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
#endif
- IFSDK_PAUSE_Adapter IPauseAdapter(pause);
+ IFSDK_PAUSE_Adapter IPauseAdapter(pause);
- FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
- rotate, flags,FALSE, &IPauseAdapter);
+ FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
+ rotate, flags, FALSE, &IPauseAdapter);
- if (pContext->m_pRenderer)
- return CPDF_ProgressiveRenderer::ToFPDFStatus(pContext->m_pRenderer->GetStatus());
+ if (pContext->m_pRenderer)
+ return CPDF_ProgressiveRenderer::ToFPDFStatus(
+ pContext->m_pRenderer->GetStatus());
- return FPDF_RENDER_FAILED;
+ return FPDF_RENDER_FAILED;
}
-DLLEXPORT int STDCALL FPDF_RenderPage_Continue(FPDF_PAGE page,IFSDK_PAUSE * pause)
-{
- if (page == NULL)
- return FPDF_RENDER_FAILED;
-
- if (!pause)
- return FPDF_RENDER_FAILED;
-
- if (pause->version !=1)
- return FPDF_RENDER_FAILED;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CRenderContext * pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
- if (pContext && pContext->m_pRenderer)
- {
- IFSDK_PAUSE_Adapter IPauseAdapter(pause);
- pContext->m_pRenderer->Continue(&IPauseAdapter);
- return CPDF_ProgressiveRenderer::ToFPDFStatus(pContext->m_pRenderer->GetStatus());
- }
+DLLEXPORT int STDCALL FPDF_RenderPage_Continue(FPDF_PAGE page,
+ IFSDK_PAUSE* pause) {
+ if (page == NULL)
return FPDF_RENDER_FAILED;
-}
-
-DLLEXPORT void STDCALL FPDF_RenderPage_Close(FPDF_PAGE page)
-{
- if (!page)
- return;
+ if (!pause)
+ return FPDF_RENDER_FAILED;
- CPDF_Page* pPage = (CPDF_Page*)page;
- CRenderContext * pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
- if (!pContext)
- return;
+ if (pause->version != 1)
+ return FPDF_RENDER_FAILED;
- pContext->m_pDevice->RestoreState();
- delete pContext;
- pPage->RemovePrivateData((void*)1);
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CRenderContext* pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
+ if (pContext && pContext->m_pRenderer) {
+ IFSDK_PAUSE_Adapter IPauseAdapter(pause);
+ pContext->m_pRenderer->Continue(&IPauseAdapter);
+ return CPDF_ProgressiveRenderer::ToFPDFStatus(
+ pContext->m_pRenderer->GetStatus());
+ }
+ return FPDF_RENDER_FAILED;
}
+DLLEXPORT void STDCALL FPDF_RenderPage_Close(FPDF_PAGE page) {
+ if (!page)
+ return;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CRenderContext* pContext = (CRenderContext*)pPage->GetPrivateData((void*)1);
+ if (!pContext)
+ return;
+
+ pContext->m_pDevice->RestoreState();
+ delete pContext;
+ pPage->RemovePrivateData((void*)1);
+}
diff --git a/fpdfsdk/src/fpdf_searchex.cpp b/fpdfsdk/src/fpdf_searchex.cpp
index e012d30590..9747316305 100644
--- a/fpdfsdk/src/fpdf_searchex.cpp
+++ b/fpdfsdk/src/fpdf_searchex.cpp
@@ -8,11 +8,9 @@
#include "../../core/include/fpdftext/fpdf_text.h"
-DLLEXPORT int STDCALL FPDFText_GetCharIndexFromTextIndex(
- FPDF_TEXTPAGE text_page,
- int nTextIndex)
-{
- if (!text_page)
- return -1;
- return ((IPDF_TextPage*)text_page)->CharIndexFromTextIndex(nTextIndex);
+DLLEXPORT int STDCALL
+FPDFText_GetCharIndexFromTextIndex(FPDF_TEXTPAGE text_page, int nTextIndex) {
+ if (!text_page)
+ return -1;
+ return ((IPDF_TextPage*)text_page)->CharIndexFromTextIndex(nTextIndex);
}
diff --git a/fpdfsdk/src/fpdf_sysfontinfo.cpp b/fpdfsdk/src/fpdf_sysfontinfo.cpp
index 6b7d6fbe4c..a0fdb5083d 100644
--- a/fpdfsdk/src/fpdf_sysfontinfo.cpp
+++ b/fpdfsdk/src/fpdf_sysfontinfo.cpp
@@ -8,167 +8,181 @@
#include "../include/fsdk_define.h"
#include "../include/pdfwindow/PWL_FontMap.h"
-class CFX_ExternalFontInfo final : public IFX_SystemFontInfo
-{
-public:
- CFX_ExternalFontInfo(FPDF_SYSFONTINFO* pInfo) : m_pInfo(pInfo) { }
-
- virtual void Release() override
- {
- if (m_pInfo->Release)
- m_pInfo->Release(m_pInfo);
- delete this;
- }
-
- virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override
- {
- if (m_pInfo->EnumFonts) {
- m_pInfo->EnumFonts(m_pInfo, pMapper);
- return TRUE;
- }
- return FALSE;
- }
-
- virtual void* MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, int& iExact) override
- {
- if (m_pInfo->MapFont)
- return m_pInfo->MapFont(m_pInfo, weight, bItalic, charset, pitch_family, family, &iExact);
- return NULL;
- }
-
- virtual void* GetFont(const FX_CHAR* family) override
- {
- if (m_pInfo->GetFont)
- return m_pInfo->GetFont(m_pInfo, family);
- return NULL;
- }
-
- virtual FX_DWORD GetFontData(void* hFont, FX_DWORD table, uint8_t* buffer, FX_DWORD size) override
- {
- if (m_pInfo->GetFontData)
- return m_pInfo->GetFontData(m_pInfo, hFont, table, buffer, size);
- return 0;
- }
-
- virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override
- {
- if (m_pInfo->GetFaceName == NULL) return FALSE;
- FX_DWORD size = m_pInfo->GetFaceName(m_pInfo, hFont, NULL, 0);
- if (size == 0) return FALSE;
- char* buffer = FX_Alloc(char, size);
- size = m_pInfo->GetFaceName(m_pInfo, hFont, buffer, size);
- name = CFX_ByteString(buffer, size);
- FX_Free(buffer);
- return TRUE;
- }
-
- virtual FX_BOOL GetFontCharset(void* hFont, int& charset) override
- {
- if (m_pInfo->GetFontCharset) {
- charset = m_pInfo->GetFontCharset(m_pInfo, hFont);
- return TRUE;
- }
- return FALSE;
- }
-
- virtual void DeleteFont(void* hFont) override
- {
- if (m_pInfo->DeleteFont)
- m_pInfo->DeleteFont(m_pInfo, hFont);
- }
-
-private:
- ~CFX_ExternalFontInfo() { }
-
- FPDF_SYSFONTINFO* const m_pInfo;
+class CFX_ExternalFontInfo final : public IFX_SystemFontInfo {
+ public:
+ CFX_ExternalFontInfo(FPDF_SYSFONTINFO* pInfo) : m_pInfo(pInfo) {}
+
+ virtual void Release() override {
+ if (m_pInfo->Release)
+ m_pInfo->Release(m_pInfo);
+ delete this;
+ }
+
+ virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override {
+ if (m_pInfo->EnumFonts) {
+ m_pInfo->EnumFonts(m_pInfo, pMapper);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ virtual void* MapFont(int weight,
+ FX_BOOL bItalic,
+ int charset,
+ int pitch_family,
+ const FX_CHAR* family,
+ int& iExact) override {
+ if (m_pInfo->MapFont)
+ return m_pInfo->MapFont(m_pInfo, weight, bItalic, charset, pitch_family,
+ family, &iExact);
+ return NULL;
+ }
+
+ virtual void* GetFont(const FX_CHAR* family) override {
+ if (m_pInfo->GetFont)
+ return m_pInfo->GetFont(m_pInfo, family);
+ return NULL;
+ }
+
+ virtual FX_DWORD GetFontData(void* hFont,
+ FX_DWORD table,
+ uint8_t* buffer,
+ FX_DWORD size) override {
+ if (m_pInfo->GetFontData)
+ return m_pInfo->GetFontData(m_pInfo, hFont, table, buffer, size);
+ return 0;
+ }
+
+ virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override {
+ if (m_pInfo->GetFaceName == NULL)
+ return FALSE;
+ FX_DWORD size = m_pInfo->GetFaceName(m_pInfo, hFont, NULL, 0);
+ if (size == 0)
+ return FALSE;
+ char* buffer = FX_Alloc(char, size);
+ size = m_pInfo->GetFaceName(m_pInfo, hFont, buffer, size);
+ name = CFX_ByteString(buffer, size);
+ FX_Free(buffer);
+ return TRUE;
+ }
+
+ virtual FX_BOOL GetFontCharset(void* hFont, int& charset) override {
+ if (m_pInfo->GetFontCharset) {
+ charset = m_pInfo->GetFontCharset(m_pInfo, hFont);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ virtual void DeleteFont(void* hFont) override {
+ if (m_pInfo->DeleteFont)
+ m_pInfo->DeleteFont(m_pInfo, hFont);
+ }
+
+ private:
+ ~CFX_ExternalFontInfo() {}
+
+ FPDF_SYSFONTINFO* const m_pInfo;
};
-DLLEXPORT void STDCALL FPDF_AddInstalledFont(void* mapper, const char* name, int charset)
-{
- ((CFX_FontMapper*)mapper)->AddInstalledFont(name, charset);
+DLLEXPORT void STDCALL FPDF_AddInstalledFont(void* mapper,
+ const char* name,
+ int charset) {
+ ((CFX_FontMapper*)mapper)->AddInstalledFont(name, charset);
}
-DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfoExt)
-{
- if (pFontInfoExt->version != 1)
- return;
+DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfoExt) {
+ if (pFontInfoExt->version != 1)
+ return;
- CFX_GEModule::Get()->GetFontMgr()->SetSystemFontInfo(
- new CFX_ExternalFontInfo(pFontInfoExt));
+ CFX_GEModule::Get()->GetFontMgr()->SetSystemFontInfo(
+ new CFX_ExternalFontInfo(pFontInfoExt));
}
-DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap()
-{
- return CPWL_FontMap::defaultTTFMap;
+DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap() {
+ return CPWL_FontMap::defaultTTFMap;
}
-struct FPDF_SYSFONTINFO_DEFAULT : public FPDF_SYSFONTINFO
-{
- IFX_SystemFontInfo* m_pFontInfo;
+struct FPDF_SYSFONTINFO_DEFAULT : public FPDF_SYSFONTINFO {
+ IFX_SystemFontInfo* m_pFontInfo;
};
-static void DefaultRelease(struct _FPDF_SYSFONTINFO* pThis)
-{
- ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->Release();
+static void DefaultRelease(struct _FPDF_SYSFONTINFO* pThis) {
+ ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->Release();
}
-static void DefaultEnumFonts(struct _FPDF_SYSFONTINFO* pThis, void* pMapper)
-{
- ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->EnumFontList((CFX_FontMapper*)pMapper);
+static void DefaultEnumFonts(struct _FPDF_SYSFONTINFO* pThis, void* pMapper) {
+ ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
+ ->m_pFontInfo->EnumFontList((CFX_FontMapper*)pMapper);
}
-static void* DefaultMapFont(struct _FPDF_SYSFONTINFO* pThis, int weight, int bItalic, int charset, int pitch_family, const char* family, int* bExact)
-{
- return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->MapFont(weight, bItalic, charset, pitch_family, family, *bExact);
+static void* DefaultMapFont(struct _FPDF_SYSFONTINFO* pThis,
+ int weight,
+ int bItalic,
+ int charset,
+ int pitch_family,
+ const char* family,
+ int* bExact) {
+ return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
+ ->m_pFontInfo->MapFont(weight, bItalic, charset, pitch_family, family,
+ *bExact);
}
-void* DefaultGetFont(struct _FPDF_SYSFONTINFO* pThis, const char* family)
-{
- return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFont(family);
+void* DefaultGetFont(struct _FPDF_SYSFONTINFO* pThis, const char* family) {
+ return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFont(family);
}
-static unsigned long DefaultGetFontData(struct _FPDF_SYSFONTINFO* pThis, void* hFont,
- unsigned int table, unsigned char* buffer, unsigned long buf_size)
-{
- return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFontData(hFont, table, buffer, buf_size);
+static unsigned long DefaultGetFontData(struct _FPDF_SYSFONTINFO* pThis,
+ void* hFont,
+ unsigned int table,
+ unsigned char* buffer,
+ unsigned long buf_size) {
+ return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
+ ->m_pFontInfo->GetFontData(hFont, table, buffer, buf_size);
}
-static unsigned long DefaultGetFaceName(struct _FPDF_SYSFONTINFO* pThis, void* hFont, char* buffer, unsigned long buf_size)
-{
- CFX_ByteString name;
- if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFaceName(hFont, name)) return 0;
- if (name.GetLength() >= (long)buf_size) return name.GetLength() + 1;
- FXSYS_strcpy(buffer, name);
- return name.GetLength() + 1;
+static unsigned long DefaultGetFaceName(struct _FPDF_SYSFONTINFO* pThis,
+ void* hFont,
+ char* buffer,
+ unsigned long buf_size) {
+ CFX_ByteString name;
+ if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)
+ ->m_pFontInfo->GetFaceName(hFont, name))
+ return 0;
+ if (name.GetLength() >= (long)buf_size)
+ return name.GetLength() + 1;
+ FXSYS_strcpy(buffer, name);
+ return name.GetLength() + 1;
}
-static int DefaultGetFontCharset(struct _FPDF_SYSFONTINFO* pThis, void* hFont)
-{
- int charset;
- if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFontCharset(hFont, charset)) return 0;
- return charset;
+static int DefaultGetFontCharset(struct _FPDF_SYSFONTINFO* pThis, void* hFont) {
+ int charset;
+ if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)
+ ->m_pFontInfo->GetFontCharset(hFont, charset))
+ return 0;
+ return charset;
}
-static void DefaultDeleteFont(struct _FPDF_SYSFONTINFO* pThis, void* hFont)
-{
- ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->DeleteFont(hFont);
+static void DefaultDeleteFont(struct _FPDF_SYSFONTINFO* pThis, void* hFont) {
+ ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->DeleteFont(hFont);
}
-DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo()
-{
- IFX_SystemFontInfo* pFontInfo = IFX_SystemFontInfo::CreateDefault();
- if (pFontInfo == NULL) return NULL;
-
- FPDF_SYSFONTINFO_DEFAULT* pFontInfoExt = FX_Alloc(FPDF_SYSFONTINFO_DEFAULT, 1);
- pFontInfoExt->DeleteFont = DefaultDeleteFont;
- pFontInfoExt->EnumFonts = DefaultEnumFonts;
- pFontInfoExt->GetFaceName = DefaultGetFaceName;
- pFontInfoExt->GetFont = DefaultGetFont;
- pFontInfoExt->GetFontCharset = DefaultGetFontCharset;
- pFontInfoExt->GetFontData = DefaultGetFontData;
- pFontInfoExt->MapFont = DefaultMapFont;
- pFontInfoExt->Release = DefaultRelease;
- pFontInfoExt->version = 1;
- pFontInfoExt->m_pFontInfo = pFontInfo;
- return pFontInfoExt;
+DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo() {
+ IFX_SystemFontInfo* pFontInfo = IFX_SystemFontInfo::CreateDefault();
+ if (pFontInfo == NULL)
+ return NULL;
+
+ FPDF_SYSFONTINFO_DEFAULT* pFontInfoExt =
+ FX_Alloc(FPDF_SYSFONTINFO_DEFAULT, 1);
+ pFontInfoExt->DeleteFont = DefaultDeleteFont;
+ pFontInfoExt->EnumFonts = DefaultEnumFonts;
+ pFontInfoExt->GetFaceName = DefaultGetFaceName;
+ pFontInfoExt->GetFont = DefaultGetFont;
+ pFontInfoExt->GetFontCharset = DefaultGetFontCharset;
+ pFontInfoExt->GetFontData = DefaultGetFontData;
+ pFontInfoExt->MapFont = DefaultMapFont;
+ pFontInfoExt->Release = DefaultRelease;
+ pFontInfoExt->version = 1;
+ pFontInfoExt->m_pFontInfo = pFontInfo;
+ return pFontInfoExt;
}
diff --git a/fpdfsdk/src/fpdf_transformpage.cpp b/fpdfsdk/src/fpdf_transformpage.cpp
index a29db5a9dc..71ba48e042 100644
--- a/fpdfsdk/src/fpdf_transformpage.cpp
+++ b/fpdfsdk/src/fpdf_transformpage.cpp
@@ -7,314 +7,314 @@
#include "../../public/fpdf_transformpage.h"
#include "../include/fsdk_define.h"
-DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, float left, float bottom, float right, float top)
-{
- if(!page)
- return;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
- CPDF_Array* pMediaBoxArray = new CPDF_Array;
- pMediaBoxArray->Add(new CPDF_Number(left));
- pMediaBoxArray->Add(new CPDF_Number(bottom));
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(right)));
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(top)));
- pPageDict->SetAt("MediaBox", pMediaBoxArray);
+DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page,
+ float left,
+ float bottom,
+ float right,
+ float top) {
+ if (!page)
+ return;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+ CPDF_Array* pMediaBoxArray = new CPDF_Array;
+ pMediaBoxArray->Add(new CPDF_Number(left));
+ pMediaBoxArray->Add(new CPDF_Number(bottom));
+ pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(right)));
+ pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(top)));
+ pPageDict->SetAt("MediaBox", pMediaBoxArray);
}
-
-DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page, float left, float bottom, float right, float top)
-{
- if(!page)
- return;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
- CPDF_Array* pCropBoxArray = new CPDF_Array;
- pCropBoxArray->Add(new CPDF_Number(left));
- pCropBoxArray->Add(new CPDF_Number(bottom));
- pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(right)));
- pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(top)));
- pPageDict->SetAt("CropBox", pCropBoxArray);
+DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page,
+ float left,
+ float bottom,
+ float right,
+ float top) {
+ if (!page)
+ return;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+ CPDF_Array* pCropBoxArray = new CPDF_Array;
+ pCropBoxArray->Add(new CPDF_Number(left));
+ pCropBoxArray->Add(new CPDF_Number(bottom));
+ pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(right)));
+ pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(top)));
+ pPageDict->SetAt("CropBox", pCropBoxArray);
}
-
-DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page, float* left, float* bottom, float* right, float* top)
-{
- if(!page)
- return FALSE;
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
- CPDF_Array* pArray = pPageDict->GetArray("MediaBox");
- if(pArray)
- {
- *left = pArray->GetFloat(0);
- *bottom = pArray->GetFloat(1);
- *right = pArray->GetFloat(2);
- *top = pArray->GetFloat(3);
- return TRUE;
- }
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page,
+ float* left,
+ float* bottom,
+ float* right,
+ float* top) {
+ if (!page)
+ return FALSE;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+ CPDF_Array* pArray = pPageDict->GetArray("MediaBox");
+ if (pArray) {
+ *left = pArray->GetFloat(0);
+ *bottom = pArray->GetFloat(1);
+ *right = pArray->GetFloat(2);
+ *top = pArray->GetFloat(3);
+ return TRUE;
+ }
+ return FALSE;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page, float* left, float* bottom, float* right, float* top)
-{
- if(!page)
- return FALSE;
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
- CPDF_Array* pArray = pPageDict->GetArray("CropBox");
- if(pArray)
- {
- *left = pArray->GetFloat(0);
- *bottom = pArray->GetFloat(1);
- *right = pArray->GetFloat(2);
- *top = pArray->GetFloat(3);
- return TRUE;
- }
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page,
+ float* left,
+ float* bottom,
+ float* right,
+ float* top) {
+ if (!page)
+ return FALSE;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+ CPDF_Array* pArray = pPageDict->GetArray("CropBox");
+ if (pArray) {
+ *left = pArray->GetFloat(0);
+ *bottom = pArray->GetFloat(1);
+ *right = pArray->GetFloat(2);
+ *top = pArray->GetFloat(3);
+ return TRUE;
+ }
+ return FALSE;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page, FS_MATRIX* matrix, FS_RECTF* clipRect)
-{
- if(!page)
- return FALSE;
-
- CFX_ByteTextBuf textBuf;
- textBuf<<"q ";
- CFX_FloatRect rect(clipRect->left, clipRect->bottom, clipRect->right, clipRect->top);
- rect.Normalize();
- CFX_ByteString bsClipping;
- bsClipping.Format("%f %f %f %f re W* n ", rect.left, rect.bottom, rect.Width(), rect.Height());
- textBuf<<bsClipping;
-
- CFX_ByteString bsMatix;
- bsMatix.Format("%f %f %f %f %f %f cm ", matrix->a, matrix->b,matrix->c,matrix->d,matrix->e,matrix->f);
- textBuf<<bsMatix;
-
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDic = pPage->m_pFormDict;
- CPDF_Object* pContentObj = pPageDic ? pPageDic->GetElement("Contents") : NULL;
- if(!pContentObj)
- pContentObj = pPageDic ? pPageDic->GetArray("Contents") : NULL;
- if(!pContentObj)
- return FALSE;
-
- CPDF_Dictionary* pDic = new CPDF_Dictionary;
- CPDF_Stream* pStream = new CPDF_Stream(NULL,0, pDic);
- pStream->SetData(textBuf.GetBuffer(), textBuf.GetSize(), FALSE, FALSE);
- CPDF_Document* pDoc = pPage->m_pDocument;
- if(!pDoc)
- return FALSE;
- pDoc->AddIndirectObject(pStream);
-
- pDic = new CPDF_Dictionary;
- CPDF_Stream* pEndStream = new CPDF_Stream(NULL,0, pDic);
- pEndStream->SetData((const uint8_t*)" Q", 2, FALSE, FALSE);
- pDoc->AddIndirectObject(pEndStream);
-
- CPDF_Array* pContentArray = NULL;
- if (pContentObj && pContentObj->GetType() == PDFOBJ_ARRAY)
- {
- pContentArray = (CPDF_Array*)pContentObj;
- CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
- pContentArray->InsertAt(0, pRef);
- pContentArray->AddReference(pDoc,pEndStream);
-
- }
- else if(pContentObj && pContentObj->GetType() == PDFOBJ_REFERENCE)
- {
- CPDF_Reference* pReference = (CPDF_Reference*)pContentObj;
- CPDF_Object* pDirectObj = pReference->GetDirect();
- if(pDirectObj != NULL)
- {
- if(pDirectObj->GetType() == PDFOBJ_ARRAY)
- {
- pContentArray = (CPDF_Array*)pDirectObj;
- CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
- pContentArray->InsertAt(0, pRef);
- pContentArray->AddReference(pDoc,pEndStream);
- }
- else if(pDirectObj->GetType() == PDFOBJ_STREAM)
- {
- pContentArray = new CPDF_Array();
- pContentArray->AddReference(pDoc,pStream->GetObjNum());
- pContentArray->AddReference(pDoc,pDirectObj->GetObjNum());
- pContentArray->AddReference(pDoc, pEndStream);
- pPageDic->SetAtReference("Contents", pDoc, pDoc->AddIndirectObject(pContentArray));
- }
- }
- }
-
- //Need to transform the patterns as well.
- CPDF_Dictionary* pRes = pPageDic->GetDict(FX_BSTRC("Resources"));
- if(pRes)
- {
- CPDF_Dictionary* pPattenDict = pRes->GetDict(FX_BSTRC("Pattern"));
- if(pPattenDict)
- {
- FX_POSITION pos = pPattenDict->GetStartPos();
- while(pos)
- {
- CPDF_Dictionary* pDict = NULL;
- CFX_ByteString key;
- CPDF_Object* pObj = pPattenDict->GetNextElement(pos, key);
- if(pObj->GetType() == PDFOBJ_REFERENCE)
- pObj = pObj->GetDirect();
- if(pObj->GetType() == PDFOBJ_DICTIONARY)
- {
- pDict = (CPDF_Dictionary*)pObj;
- }
- else if(pObj->GetType() == PDFOBJ_STREAM)
- {
- pDict = ((CPDF_Stream*)pObj)->GetDict();
- }
- else
- continue;
-
- CFX_AffineMatrix m = pDict->GetMatrix(FX_BSTRC("Matrix"));
- CFX_AffineMatrix t = *(CFX_AffineMatrix*)matrix;
- m.Concat(t);
- pDict->SetAtMatrix(FX_BSTRC("Matrix"), m);
- }
- }
- }
-
- return TRUE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page,
+ FS_MATRIX* matrix,
+ FS_RECTF* clipRect) {
+ if (!page)
+ return FALSE;
+
+ CFX_ByteTextBuf textBuf;
+ textBuf << "q ";
+ CFX_FloatRect rect(clipRect->left, clipRect->bottom, clipRect->right,
+ clipRect->top);
+ rect.Normalize();
+ CFX_ByteString bsClipping;
+ bsClipping.Format("%f %f %f %f re W* n ", rect.left, rect.bottom,
+ rect.Width(), rect.Height());
+ textBuf << bsClipping;
+
+ CFX_ByteString bsMatix;
+ bsMatix.Format("%f %f %f %f %f %f cm ", matrix->a, matrix->b, matrix->c,
+ matrix->d, matrix->e, matrix->f);
+ textBuf << bsMatix;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDic = pPage->m_pFormDict;
+ CPDF_Object* pContentObj = pPageDic ? pPageDic->GetElement("Contents") : NULL;
+ if (!pContentObj)
+ pContentObj = pPageDic ? pPageDic->GetArray("Contents") : NULL;
+ if (!pContentObj)
+ return FALSE;
+
+ CPDF_Dictionary* pDic = new CPDF_Dictionary;
+ CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, pDic);
+ pStream->SetData(textBuf.GetBuffer(), textBuf.GetSize(), FALSE, FALSE);
+ CPDF_Document* pDoc = pPage->m_pDocument;
+ if (!pDoc)
+ return FALSE;
+ pDoc->AddIndirectObject(pStream);
+
+ pDic = new CPDF_Dictionary;
+ CPDF_Stream* pEndStream = new CPDF_Stream(NULL, 0, pDic);
+ pEndStream->SetData((const uint8_t*)" Q", 2, FALSE, FALSE);
+ pDoc->AddIndirectObject(pEndStream);
+
+ CPDF_Array* pContentArray = NULL;
+ if (pContentObj && pContentObj->GetType() == PDFOBJ_ARRAY) {
+ pContentArray = (CPDF_Array*)pContentObj;
+ CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
+ pContentArray->InsertAt(0, pRef);
+ pContentArray->AddReference(pDoc, pEndStream);
+
+ } else if (pContentObj && pContentObj->GetType() == PDFOBJ_REFERENCE) {
+ CPDF_Reference* pReference = (CPDF_Reference*)pContentObj;
+ CPDF_Object* pDirectObj = pReference->GetDirect();
+ if (pDirectObj != NULL) {
+ if (pDirectObj->GetType() == PDFOBJ_ARRAY) {
+ pContentArray = (CPDF_Array*)pDirectObj;
+ CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
+ pContentArray->InsertAt(0, pRef);
+ pContentArray->AddReference(pDoc, pEndStream);
+ } else if (pDirectObj->GetType() == PDFOBJ_STREAM) {
+ pContentArray = new CPDF_Array();
+ pContentArray->AddReference(pDoc, pStream->GetObjNum());
+ pContentArray->AddReference(pDoc, pDirectObj->GetObjNum());
+ pContentArray->AddReference(pDoc, pEndStream);
+ pPageDic->SetAtReference("Contents", pDoc,
+ pDoc->AddIndirectObject(pContentArray));
+ }
+ }
+ }
+
+ // Need to transform the patterns as well.
+ CPDF_Dictionary* pRes = pPageDic->GetDict(FX_BSTRC("Resources"));
+ if (pRes) {
+ CPDF_Dictionary* pPattenDict = pRes->GetDict(FX_BSTRC("Pattern"));
+ if (pPattenDict) {
+ FX_POSITION pos = pPattenDict->GetStartPos();
+ while (pos) {
+ CPDF_Dictionary* pDict = NULL;
+ CFX_ByteString key;
+ CPDF_Object* pObj = pPattenDict->GetNextElement(pos, key);
+ if (pObj->GetType() == PDFOBJ_REFERENCE)
+ pObj = pObj->GetDirect();
+ if (pObj->GetType() == PDFOBJ_DICTIONARY) {
+ pDict = (CPDF_Dictionary*)pObj;
+ } else if (pObj->GetType() == PDFOBJ_STREAM) {
+ pDict = ((CPDF_Stream*)pObj)->GetDict();
+ } else
+ continue;
+
+ CFX_AffineMatrix m = pDict->GetMatrix(FX_BSTRC("Matrix"));
+ CFX_AffineMatrix t = *(CFX_AffineMatrix*)matrix;
+ m.Concat(t);
+ pDict->SetAtMatrix(FX_BSTRC("Matrix"), m);
+ }
+ }
+ }
+
+ return TRUE;
}
-DLLEXPORT void STDCALL FPDFPageObj_TransformClipPath(FPDF_PAGEOBJECT page_object,double a, double b, double c, double d, double e, double f)
-{
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object;
- if(pPageObj == NULL)
- return;
- CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f);
-
- //Special treatment to shading object, because the ClipPath for shading object is already transformed.
- if(pPageObj->m_Type != PDFPAGE_SHADING)
- pPageObj->TransformClipPath(matrix);
- pPageObj->TransformGeneralState(matrix);
+DLLEXPORT void STDCALL
+FPDFPageObj_TransformClipPath(FPDF_PAGEOBJECT page_object,
+ double a,
+ double b,
+ double c,
+ double d,
+ double e,
+ double f) {
+ CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object;
+ if (pPageObj == NULL)
+ return;
+ CFX_AffineMatrix matrix((FX_FLOAT)a, (FX_FLOAT)b, (FX_FLOAT)c, (FX_FLOAT)d,
+ (FX_FLOAT)e, (FX_FLOAT)f);
+
+ // Special treatment to shading object, because the ClipPath for shading
+ // object is already transformed.
+ if (pPageObj->m_Type != PDFPAGE_SHADING)
+ pPageObj->TransformClipPath(matrix);
+ pPageObj->TransformGeneralState(matrix);
}
-
-DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left, float bottom, float right, float top)
-{
- CPDF_ClipPath* pNewClipPath = new CPDF_ClipPath();
- pNewClipPath->GetModify();
- CPDF_Path Path;
- Path.GetModify();
- Path.AppendRect(left, bottom, right, top);
- pNewClipPath->AppendPath(Path, FXFILL_ALTERNATE, FALSE);
- return pNewClipPath;
+DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left,
+ float bottom,
+ float right,
+ float top) {
+ CPDF_ClipPath* pNewClipPath = new CPDF_ClipPath();
+ pNewClipPath->GetModify();
+ CPDF_Path Path;
+ Path.GetModify();
+ Path.AppendRect(left, bottom, right, top);
+ pNewClipPath->AppendPath(Path, FXFILL_ALTERNATE, FALSE);
+ return pNewClipPath;
}
-DLLEXPORT void STDCALL FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath)
-{
- delete (CPDF_ClipPath*)clipPath;
+DLLEXPORT void STDCALL FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath) {
+ delete (CPDF_ClipPath*)clipPath;
}
-void OutputPath(CFX_ByteTextBuf& buf, CPDF_Path path)
-{
- const CFX_PathData* pPathData = path;
- if (pPathData == NULL) return;
-
- FX_PATHPOINT* pPoints = pPathData->GetPoints();
-
- if (path.IsRect()) {
- buf << (pPoints[0].m_PointX) << " " << (pPoints[0].m_PointY) << " "
- << (pPoints[2].m_PointX - pPoints[0].m_PointX) << " "
- << (pPoints[2].m_PointY - pPoints[0].m_PointY) << " re\n";
- return;
- }
-
- CFX_ByteString temp;
- for (int i = 0; i < pPathData->GetPointCount(); i ++) {
- buf << (pPoints[i].m_PointX) << " " << (pPoints[i].m_PointY);
- int point_type = pPoints[i].m_Flag & FXPT_TYPE;
- if (point_type == FXPT_MOVETO)
- buf << " m\n";
- else if (point_type == FXPT_BEZIERTO) {
- buf << " " << (pPoints[i+1].m_PointX) << " " << (pPoints[i+1].m_PointY) << " " <<
- (pPoints[i+2].m_PointX) << " " << (pPoints[i+2].m_PointY);
- if (pPoints[i+2].m_Flag & FXPT_CLOSEFIGURE)
- buf << " c h\n";
- else
- buf << " c\n";
- i += 2;
- } else if (point_type == FXPT_LINETO) {
- if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE)
- buf << " l h\n";
- else
- buf << " l\n";
- }
- }
+void OutputPath(CFX_ByteTextBuf& buf, CPDF_Path path) {
+ const CFX_PathData* pPathData = path;
+ if (pPathData == NULL)
+ return;
+
+ FX_PATHPOINT* pPoints = pPathData->GetPoints();
+
+ if (path.IsRect()) {
+ buf << (pPoints[0].m_PointX) << " " << (pPoints[0].m_PointY) << " "
+ << (pPoints[2].m_PointX - pPoints[0].m_PointX) << " "
+ << (pPoints[2].m_PointY - pPoints[0].m_PointY) << " re\n";
+ return;
+ }
+
+ CFX_ByteString temp;
+ for (int i = 0; i < pPathData->GetPointCount(); i++) {
+ buf << (pPoints[i].m_PointX) << " " << (pPoints[i].m_PointY);
+ int point_type = pPoints[i].m_Flag & FXPT_TYPE;
+ if (point_type == FXPT_MOVETO)
+ buf << " m\n";
+ else if (point_type == FXPT_BEZIERTO) {
+ buf << " " << (pPoints[i + 1].m_PointX) << " "
+ << (pPoints[i + 1].m_PointY) << " " << (pPoints[i + 2].m_PointX)
+ << " " << (pPoints[i + 2].m_PointY);
+ if (pPoints[i + 2].m_Flag & FXPT_CLOSEFIGURE)
+ buf << " c h\n";
+ else
+ buf << " c\n";
+ i += 2;
+ } else if (point_type == FXPT_LINETO) {
+ if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE)
+ buf << " l h\n";
+ else
+ buf << " l\n";
+ }
+ }
}
-DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page,FPDF_CLIPPATH clipPath)
-{
- if(!page)
- return;
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_Dictionary* pPageDic = pPage->m_pFormDict;
- CPDF_Object* pContentObj = pPageDic ? pPageDic->GetElement("Contents") : NULL;
- if(!pContentObj)
- pContentObj = pPageDic ? pPageDic->GetArray("Contents") : NULL;
- if(!pContentObj)
- return;
-
- CFX_ByteTextBuf strClip;
- CPDF_ClipPath* pClipPath = (CPDF_ClipPath*)clipPath;
- FX_DWORD i;
- for (i = 0; i < pClipPath->GetPathCount(); i ++) {
- CPDF_Path path = pClipPath->GetPath(i);
- int iClipType = pClipPath->GetClipType(i);
- if (path.GetPointCount() == 0) {
- // Empty clipping (totally clipped out)
- strClip << "0 0 m W n ";
- } else {
- OutputPath(strClip, path);
- if (iClipType == FXFILL_WINDING)
- strClip << "W n\n";
- else
- strClip << "W* n\n";
- }
- }
- CPDF_Dictionary* pDic = new CPDF_Dictionary;
- CPDF_Stream* pStream = new CPDF_Stream(NULL,0, pDic);
- pStream->SetData(strClip.GetBuffer(), strClip.GetSize(), FALSE, FALSE);
- CPDF_Document* pDoc = pPage->m_pDocument;
- if(!pDoc)
- return;
- pDoc->AddIndirectObject(pStream);
-
- CPDF_Array* pContentArray = NULL;
- if (pContentObj && pContentObj->GetType() == PDFOBJ_ARRAY)
- {
- pContentArray = (CPDF_Array*)pContentObj;
- CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
- pContentArray->InsertAt(0, pRef);
- }
- else if(pContentObj && pContentObj->GetType() == PDFOBJ_REFERENCE)
- {
- CPDF_Reference* pReference = (CPDF_Reference*)pContentObj;
- CPDF_Object* pDirectObj = pReference->GetDirect();
- if(pDirectObj != NULL)
- {
- if(pDirectObj->GetType() == PDFOBJ_ARRAY)
- {
- pContentArray = (CPDF_Array*)pDirectObj;
- CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
- pContentArray->InsertAt(0, pRef);
- }
- else if(pDirectObj->GetType() == PDFOBJ_STREAM)
- {
- pContentArray = new CPDF_Array();
- pContentArray->AddReference(pDoc,pStream->GetObjNum());
- pContentArray->AddReference(pDoc,pDirectObj->GetObjNum());
- pPageDic->SetAtReference("Contents", pDoc, pDoc->AddIndirectObject(pContentArray));
- }
- }
- }
+DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page,
+ FPDF_CLIPPATH clipPath) {
+ if (!page)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_Dictionary* pPageDic = pPage->m_pFormDict;
+ CPDF_Object* pContentObj = pPageDic ? pPageDic->GetElement("Contents") : NULL;
+ if (!pContentObj)
+ pContentObj = pPageDic ? pPageDic->GetArray("Contents") : NULL;
+ if (!pContentObj)
+ return;
+
+ CFX_ByteTextBuf strClip;
+ CPDF_ClipPath* pClipPath = (CPDF_ClipPath*)clipPath;
+ FX_DWORD i;
+ for (i = 0; i < pClipPath->GetPathCount(); i++) {
+ CPDF_Path path = pClipPath->GetPath(i);
+ int iClipType = pClipPath->GetClipType(i);
+ if (path.GetPointCount() == 0) {
+ // Empty clipping (totally clipped out)
+ strClip << "0 0 m W n ";
+ } else {
+ OutputPath(strClip, path);
+ if (iClipType == FXFILL_WINDING)
+ strClip << "W n\n";
+ else
+ strClip << "W* n\n";
+ }
+ }
+ CPDF_Dictionary* pDic = new CPDF_Dictionary;
+ CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, pDic);
+ pStream->SetData(strClip.GetBuffer(), strClip.GetSize(), FALSE, FALSE);
+ CPDF_Document* pDoc = pPage->m_pDocument;
+ if (!pDoc)
+ return;
+ pDoc->AddIndirectObject(pStream);
+
+ CPDF_Array* pContentArray = NULL;
+ if (pContentObj && pContentObj->GetType() == PDFOBJ_ARRAY) {
+ pContentArray = (CPDF_Array*)pContentObj;
+ CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
+ pContentArray->InsertAt(0, pRef);
+ } else if (pContentObj && pContentObj->GetType() == PDFOBJ_REFERENCE) {
+ CPDF_Reference* pReference = (CPDF_Reference*)pContentObj;
+ CPDF_Object* pDirectObj = pReference->GetDirect();
+ if (pDirectObj != NULL) {
+ if (pDirectObj->GetType() == PDFOBJ_ARRAY) {
+ pContentArray = (CPDF_Array*)pDirectObj;
+ CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
+ pContentArray->InsertAt(0, pRef);
+ } else if (pDirectObj->GetType() == PDFOBJ_STREAM) {
+ pContentArray = new CPDF_Array();
+ pContentArray->AddReference(pDoc, pStream->GetObjNum());
+ pContentArray->AddReference(pDoc, pDirectObj->GetObjNum());
+ pPageDic->SetAtReference("Contents", pDoc,
+ pDoc->AddIndirectObject(pContentArray));
+ }
+ }
+ }
}
-
diff --git a/fpdfsdk/src/fpdfdoc.cpp b/fpdfsdk/src/fpdfdoc.cpp
index f75197bdbf..bcd401b4c4 100644
--- a/fpdfsdk/src/fpdfdoc.cpp
+++ b/fpdfsdk/src/fpdfdoc.cpp
@@ -9,287 +9,291 @@
static int THISMODULE = 0;
-static CPDF_Bookmark FindBookmark(const CPDF_BookmarkTree& tree, CPDF_Bookmark bookmark, const CFX_WideString& title)
-{
- if (bookmark && bookmark.GetTitle().CompareNoCase(title.c_str()) == 0) {
- // First check this item
- return bookmark;
- }
- // go into children items
- CPDF_Bookmark child = tree.GetFirstChild(bookmark);
- while (child) {
- // check if this item
- CPDF_Bookmark found = FindBookmark(tree, child, title);
- if (found)
- return found;
- child = tree.GetNextSibling(child);
- }
- return CPDF_Bookmark();
+static CPDF_Bookmark FindBookmark(const CPDF_BookmarkTree& tree,
+ CPDF_Bookmark bookmark,
+ const CFX_WideString& title) {
+ if (bookmark && bookmark.GetTitle().CompareNoCase(title.c_str()) == 0) {
+ // First check this item
+ return bookmark;
+ }
+ // go into children items
+ CPDF_Bookmark child = tree.GetFirstChild(bookmark);
+ while (child) {
+ // check if this item
+ CPDF_Bookmark found = FindBookmark(tree, child, title);
+ if (found)
+ return found;
+ child = tree.GetNextSibling(child);
+ }
+ return CPDF_Bookmark();
}
-DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict)
-{
- if (!document)
- return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_BookmarkTree tree(pDoc);
- CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict);
- return tree.GetFirstChild(bookmark).GetDict();
+DLLEXPORT FPDF_BOOKMARK STDCALL
+FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) {
+ if (!document)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_BookmarkTree tree(pDoc);
+ CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict);
+ return tree.GetFirstChild(bookmark).GetDict();
}
-DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict)
-{
- if (!document || !pDict)
- return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_BookmarkTree tree(pDoc);
- CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict);
- return tree.GetNextSibling(bookmark).GetDict();
+DLLEXPORT FPDF_BOOKMARK STDCALL
+FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) {
+ if (!document || !pDict)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_BookmarkTree tree(pDoc);
+ CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict);
+ return tree.GetNextSibling(bookmark).GetDict();
}
-DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK pDict, void* buffer, unsigned long buflen)
-{
- if (!pDict)
- return 0;
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
- CFX_WideString title = bookmark.GetTitle();
- CFX_ByteString encodedTitle = title.UTF16LE_Encode();
- unsigned long len = encodedTitle.GetLength();
- if (buffer && buflen >= len) {
- FXSYS_memcpy(buffer, encodedTitle.c_str(), len);
- }
- return len;
+DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK pDict,
+ void* buffer,
+ unsigned long buflen) {
+ if (!pDict)
+ return 0;
+ CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
+ CFX_WideString title = bookmark.GetTitle();
+ CFX_ByteString encodedTitle = title.UTF16LE_Encode();
+ unsigned long len = encodedTitle.GetLength();
+ if (buffer && buflen >= len) {
+ FXSYS_memcpy(buffer, encodedTitle.c_str(), len);
+ }
+ return len;
}
-DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(FPDF_DOCUMENT document, FPDF_WIDESTRING title)
-{
- if (!document)
- return NULL;
- if (!title || title[0] == 0)
- return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_BookmarkTree tree(pDoc);
- FX_STRSIZE len = CFX_WideString::WStringLength(title);
- CFX_WideString encodedTitle = CFX_WideString::FromUTF16LE(title, len);
- return FindBookmark(tree, CPDF_Bookmark(), encodedTitle).GetDict();
+DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(FPDF_DOCUMENT document,
+ FPDF_WIDESTRING title) {
+ if (!document)
+ return NULL;
+ if (!title || title[0] == 0)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_BookmarkTree tree(pDoc);
+ FX_STRSIZE len = CFX_WideString::WStringLength(title);
+ CFX_WideString encodedTitle = CFX_WideString::FromUTF16LE(title, len);
+ return FindBookmark(tree, CPDF_Bookmark(), encodedTitle).GetDict();
}
-DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict)
-{
- if (!document)
- return NULL;
- if (!pDict)
- return NULL;
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Dest dest = bookmark.GetDest(pDoc);
- if (dest)
- return dest.GetObject();
- // If this bookmark is not directly associated with a dest, we try to get action
- CPDF_Action action = bookmark.GetAction();
- if (!action)
- return NULL;
- return action.GetDest(pDoc).GetObject();
+DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document,
+ FPDF_BOOKMARK pDict) {
+ if (!document)
+ return NULL;
+ if (!pDict)
+ return NULL;
+ CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Dest dest = bookmark.GetDest(pDoc);
+ if (dest)
+ return dest.GetObject();
+ // If this bookmark is not directly associated with a dest, we try to get
+ // action
+ CPDF_Action action = bookmark.GetAction();
+ if (!action)
+ return NULL;
+ return action.GetDest(pDoc).GetObject();
}
-DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK pDict)
-{
- if (!pDict)
- return NULL;
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
- return bookmark.GetAction().GetDict();
+DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK pDict) {
+ if (!pDict)
+ return NULL;
+ CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict);
+ return bookmark.GetAction().GetDict();
}
-DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION pDict)
-{
- if (!pDict)
- return 0;
- CPDF_Action action((CPDF_Dictionary*)pDict);
- CPDF_Action::ActionType type = action.GetType();
- switch (type) {
- case CPDF_Action::GoTo:
- return PDFACTION_GOTO;
- case CPDF_Action::GoToR:
- return PDFACTION_REMOTEGOTO;
- case CPDF_Action::URI:
- return PDFACTION_URI;
- case CPDF_Action::Launch:
- return PDFACTION_LAUNCH;
- default:
- return PDFACTION_UNSUPPORTED;
- }
- return PDFACTION_UNSUPPORTED;
+DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION pDict) {
+ if (!pDict)
+ return 0;
+ CPDF_Action action((CPDF_Dictionary*)pDict);
+ CPDF_Action::ActionType type = action.GetType();
+ switch (type) {
+ case CPDF_Action::GoTo:
+ return PDFACTION_GOTO;
+ case CPDF_Action::GoToR:
+ return PDFACTION_REMOTEGOTO;
+ case CPDF_Action::URI:
+ return PDFACTION_URI;
+ case CPDF_Action::Launch:
+ return PDFACTION_LAUNCH;
+ default:
+ return PDFACTION_UNSUPPORTED;
+ }
+ return PDFACTION_UNSUPPORTED;
}
-DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document, FPDF_ACTION pDict)
-{
- if (!document)
- return NULL;
- if (!pDict)
- return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Action action((CPDF_Dictionary*)pDict);
- return action.GetDest(pDoc).GetObject();
+DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document,
+ FPDF_ACTION pDict) {
+ if (!document)
+ return NULL;
+ if (!pDict)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Action action((CPDF_Dictionary*)pDict);
+ return action.GetDest(pDoc).GetObject();
}
-DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document, FPDF_ACTION pDict,
- void* buffer, unsigned long buflen)
-{
- if (!document)
- return 0;
- if (!pDict)
- return 0;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Action action((CPDF_Dictionary*)pDict);
- CFX_ByteString path = action.GetURI(pDoc);
- unsigned long len = path.GetLength() + 1;
- if (buffer != NULL && buflen >= len)
- FXSYS_memcpy(buffer, path.c_str(), len);
- return len;
+DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document,
+ FPDF_ACTION pDict,
+ void* buffer,
+ unsigned long buflen) {
+ if (!document)
+ return 0;
+ if (!pDict)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Action action((CPDF_Dictionary*)pDict);
+ CFX_ByteString path = action.GetURI(pDoc);
+ unsigned long len = path.GetLength() + 1;
+ if (buffer != NULL && buflen >= len)
+ FXSYS_memcpy(buffer, path.c_str(), len);
+ return len;
}
-DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST pDict)
-{
- if (!document)
- return 0;
- if (!pDict)
- return 0;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Dest dest((CPDF_Array*)pDict);
- return dest.GetPageIndex(pDoc);
+DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document,
+ FPDF_DEST pDict) {
+ if (!document)
+ return 0;
+ if (!pDict)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Dest dest((CPDF_Array*)pDict);
+ return dest.GetPageIndex(pDoc);
}
-static void ReleaseLinkList(void* data)
-{
- delete (CPDF_LinkList*)data;
+static void ReleaseLinkList(void* data) {
+ delete (CPDF_LinkList*)data;
}
-DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y)
-{
- if (!page)
- return NULL;
- CPDF_Page* pPage = (CPDF_Page*)page;
- // Link list is stored with the document
- CPDF_Document* pDoc = pPage->m_pDocument;
- CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&THISMODULE);
- if (!pLinkList) {
- pLinkList = new CPDF_LinkList(pDoc);
- pDoc->SetPrivateData(&THISMODULE, pLinkList, ReleaseLinkList);
- }
- return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y).GetDict();
+DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page,
+ double x,
+ double y) {
+ if (!page)
+ return NULL;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ // Link list is stored with the document
+ CPDF_Document* pDoc = pPage->m_pDocument;
+ CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&THISMODULE);
+ if (!pLinkList) {
+ pLinkList = new CPDF_LinkList(pDoc);
+ pDoc->SetPrivateData(&THISMODULE, pLinkList, ReleaseLinkList);
+ }
+ return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y).GetDict();
}
-DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, FPDF_LINK pDict)
-{
- if (!document)
- return NULL;
- if (!pDict)
- return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Link link((CPDF_Dictionary*)pDict);
- FPDF_DEST dest = link.GetDest(pDoc).GetObject();
- if (dest)
- return dest;
- // If this link is not directly associated with a dest, we try to get action
- CPDF_Action action = link.GetAction();
- if (!action)
- return NULL;
- return action.GetDest(pDoc).GetObject();
+DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document,
+ FPDF_LINK pDict) {
+ if (!document)
+ return NULL;
+ if (!pDict)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Link link((CPDF_Dictionary*)pDict);
+ FPDF_DEST dest = link.GetDest(pDoc).GetObject();
+ if (dest)
+ return dest;
+ // If this link is not directly associated with a dest, we try to get action
+ CPDF_Action action = link.GetAction();
+ if (!action)
+ return NULL;
+ return action.GetDest(pDoc).GetObject();
}
-DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK pDict)
-{
- if (!pDict)
- return NULL;
- CPDF_Link link((CPDF_Dictionary*)pDict);
- return link.GetAction().GetDict();
+DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK pDict) {
+ if (!pDict)
+ return NULL;
+ CPDF_Link link((CPDF_Dictionary*)pDict);
+ return link.GetAction().GetDict();
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, int* startPos, FPDF_LINK* linkAnnot)
-{
- if(!page || !startPos || !linkAnnot)
- return FALSE;
- CPDF_Page* pPage = (CPDF_Page*)page;
- if(!pPage->m_pFormDict)
- return FALSE;
- CPDF_Array* pAnnots = pPage->m_pFormDict->GetArray("Annots");
- if(!pAnnots)
- return FALSE;
- for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) {
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)pAnnots->GetElementValue(i);
- if (!pDict || pDict->GetType() != PDFOBJ_DICTIONARY)
- continue;
- if(pDict->GetString(FX_BSTRC("Subtype")).Equal(FX_BSTRC("Link"))) {
- *startPos = i + 1;
- *linkAnnot = (FPDF_LINK)pDict;
- return TRUE;
- }
- }
+DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page,
+ int* startPos,
+ FPDF_LINK* linkAnnot) {
+ if (!page || !startPos || !linkAnnot)
+ return FALSE;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage->m_pFormDict)
return FALSE;
+ CPDF_Array* pAnnots = pPage->m_pFormDict->GetArray("Annots");
+ if (!pAnnots)
+ return FALSE;
+ for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) {
+ CPDF_Dictionary* pDict = (CPDF_Dictionary*)pAnnots->GetElementValue(i);
+ if (!pDict || pDict->GetType() != PDFOBJ_DICTIONARY)
+ continue;
+ if (pDict->GetString(FX_BSTRC("Subtype")).Equal(FX_BSTRC("Link"))) {
+ *startPos = i + 1;
+ *linkAnnot = (FPDF_LINK)pDict;
+ return TRUE;
+ }
+ }
+ return FALSE;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, FS_RECTF* rect)
-{
- if(!linkAnnot || !rect)
- return FALSE;
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
- CPDF_Rect rt = pAnnotDict->GetRect(FX_BSTRC("Rect"));
- rect->left = rt.left;
- rect->bottom = rt.bottom;
- rect->right = rt.right;
- rect->top = rt.top;
- return TRUE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot,
+ FS_RECTF* rect) {
+ if (!linkAnnot || !rect)
+ return FALSE;
+ CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
+ CPDF_Rect rt = pAnnotDict->GetRect(FX_BSTRC("Rect"));
+ rect->left = rt.left;
+ rect->bottom = rt.bottom;
+ rect->right = rt.right;
+ rect->top = rt.top;
+ return TRUE;
}
-DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot)
-{
- if(!linkAnnot)
- return 0;
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
- CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints"));
- if (!pArray)
- return 0;
- return pArray->GetCount() / 8;
+DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) {
+ if (!linkAnnot)
+ return 0;
+ CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
+ CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints"));
+ if (!pArray)
+ return 0;
+ return pArray->GetCount() / 8;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, int quadIndex, FS_QUADPOINTSF* quadPoints)
-{
- if(!linkAnnot || !quadPoints)
- return FALSE;
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
- CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints"));
- if (pArray) {
- if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount()/8 || ((quadIndex*8+7) >= (int)pArray->GetCount()))
- return FALSE;
- quadPoints->x1 = pArray->GetNumber(quadIndex*8);
- quadPoints->y1 = pArray->GetNumber(quadIndex*8+1);
- quadPoints->x2 = pArray->GetNumber(quadIndex*8+2);
- quadPoints->y2 = pArray->GetNumber(quadIndex*8+3);
- quadPoints->x3 = pArray->GetNumber(quadIndex*8+4);
- quadPoints->y3 = pArray->GetNumber(quadIndex*8+5);
- quadPoints->x4 = pArray->GetNumber(quadIndex*8+6);
- quadPoints->y4 = pArray->GetNumber(quadIndex*8+7);
- return TRUE;
- }
+DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot,
+ int quadIndex,
+ FS_QUADPOINTSF* quadPoints) {
+ if (!linkAnnot || !quadPoints)
return FALSE;
+ CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot;
+ CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints"));
+ if (pArray) {
+ if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount() / 8 ||
+ ((quadIndex * 8 + 7) >= (int)pArray->GetCount()))
+ return FALSE;
+ quadPoints->x1 = pArray->GetNumber(quadIndex * 8);
+ quadPoints->y1 = pArray->GetNumber(quadIndex * 8 + 1);
+ quadPoints->x2 = pArray->GetNumber(quadIndex * 8 + 2);
+ quadPoints->y2 = pArray->GetNumber(quadIndex * 8 + 3);
+ quadPoints->x3 = pArray->GetNumber(quadIndex * 8 + 4);
+ quadPoints->y3 = pArray->GetNumber(quadIndex * 8 + 5);
+ quadPoints->x4 = pArray->GetNumber(quadIndex * 8 + 6);
+ quadPoints->y4 = pArray->GetNumber(quadIndex * 8 + 7);
+ return TRUE;
+ }
+ return FALSE;
}
-DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, FPDF_BYTESTRING tag,
- void* buffer, unsigned long buflen)
-{
- if (!doc || !tag)
- return 0;
- CPDF_Document* pDoc = (CPDF_Document*)doc;
- // Get info dictionary
- CPDF_Dictionary* pInfo = pDoc->GetInfo();
- if (!pInfo)
- return 0;
- CFX_WideString text = pInfo->GetUnicodeText(tag);
- // Use UTF-16LE encoding
- CFX_ByteString encodedText = text.UTF16LE_Encode();
- unsigned long len = encodedText.GetLength();
- if (buffer && buflen >= len) {
- FXSYS_memcpy(buffer, encodedText.c_str(), len);
- }
- return len;
+DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc,
+ FPDF_BYTESTRING tag,
+ void* buffer,
+ unsigned long buflen) {
+ if (!doc || !tag)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)doc;
+ // Get info dictionary
+ CPDF_Dictionary* pInfo = pDoc->GetInfo();
+ if (!pInfo)
+ return 0;
+ CFX_WideString text = pInfo->GetUnicodeText(tag);
+ // Use UTF-16LE encoding
+ CFX_ByteString encodedText = text.UTF16LE_Encode();
+ unsigned long len = encodedText.GetLength();
+ if (buffer && buflen >= len) {
+ FXSYS_memcpy(buffer, encodedText.c_str(), len);
+ }
+ return len;
}
diff --git a/fpdfsdk/src/fpdfdoc_embeddertest.cpp b/fpdfsdk/src/fpdfdoc_embeddertest.cpp
index 1f11bef214..9c9fac8d15 100644
--- a/fpdfsdk/src/fpdfdoc_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfdoc_embeddertest.cpp
@@ -7,8 +7,7 @@
#include "../../testing/embedder_test.h"
#include "testing/gtest/include/gtest/gtest.h"
-class FPDFDocEmbeddertest : public EmbedderTest {
-};
+class FPDFDocEmbeddertest : public EmbedderTest {};
TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) {
EXPECT_TRUE(OpenDocument("testing/resources/named_dests.pdf"));
diff --git a/fpdfsdk/src/fpdfeditimg.cpp b/fpdfsdk/src/fpdfeditimg.cpp
index 96cfba4194..3b5272cace 100644
--- a/fpdfsdk/src/fpdfeditimg.cpp
+++ b/fpdfsdk/src/fpdfeditimg.cpp
@@ -7,67 +7,71 @@
#include "../../public/fpdf_edit.h"
#include "../include/fsdk_define.h"
-
-DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document)
-{
- if (!document)
- return NULL;
- CPDF_ImageObject* pImageObj = new CPDF_ImageObject;
- CPDF_Image* pImg = new CPDF_Image((CPDF_Document *)document);
- pImageObj->m_pImage = pImg;
- return pImageObj;
+DLLEXPORT FPDF_PAGEOBJECT STDCALL
+FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document) {
+ if (!document)
+ return NULL;
+ CPDF_ImageObject* pImageObj = new CPDF_ImageObject;
+ CPDF_Image* pImg = new CPDF_Image((CPDF_Document*)document);
+ pImageObj->m_pImage = pImg;
+ return pImageObj;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, int nCount,FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* fileAccess)
-{
- if (!image_object || !fileAccess)
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL
+FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages,
+ int nCount,
+ FPDF_PAGEOBJECT image_object,
+ FPDF_FILEACCESS* fileAccess) {
+ if (!image_object || !fileAccess)
+ return FALSE;
- IFX_FileRead* pFile = new CPDF_CustomAccess(fileAccess);
- CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
- pImgObj->m_GeneralState.GetModify();
- for (int index=0;index<nCount;index++)
- {
- CPDF_Page* pPage = (CPDF_Page*)pages[index];
- pImgObj->m_pImage->ResetCache(pPage,NULL);
- }
- pImgObj->m_pImage->SetJpegImage(pFile);
+ IFX_FileRead* pFile = new CPDF_CustomAccess(fileAccess);
+ CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
+ pImgObj->m_GeneralState.GetModify();
+ for (int index = 0; index < nCount; index++) {
+ CPDF_Page* pPage = (CPDF_Page*)pages[index];
+ pImgObj->m_pImage->ResetCache(pPage, NULL);
+ }
+ pImgObj->m_pImage->SetJpegImage(pFile);
- return TRUE;
+ return TRUE;
}
-
-DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix (FPDF_PAGEOBJECT image_object,
- double a, double b, double c, double d, double e, double f)
-{
- if (!image_object)
- return FALSE;
- CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
- pImgObj->m_Matrix.a = (FX_FLOAT)a;
- pImgObj->m_Matrix.b = (FX_FLOAT)b;
- pImgObj->m_Matrix.c = (FX_FLOAT)c;
- pImgObj->m_Matrix.d = (FX_FLOAT)d;
- pImgObj->m_Matrix.e = (FX_FLOAT)e;
- pImgObj->m_Matrix.f = (FX_FLOAT)f;
- pImgObj->CalcBoundingBox();
- return TRUE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object,
+ double a,
+ double b,
+ double c,
+ double d,
+ double e,
+ double f) {
+ if (!image_object)
+ return FALSE;
+ CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
+ pImgObj->m_Matrix.a = (FX_FLOAT)a;
+ pImgObj->m_Matrix.b = (FX_FLOAT)b;
+ pImgObj->m_Matrix.c = (FX_FLOAT)c;
+ pImgObj->m_Matrix.d = (FX_FLOAT)d;
+ pImgObj->m_Matrix.e = (FX_FLOAT)e;
+ pImgObj->m_Matrix.f = (FX_FLOAT)f;
+ pImgObj->CalcBoundingBox();
+ return TRUE;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,int nCount,FPDF_PAGEOBJECT image_object,FPDF_BITMAP bitmap)
-{
- if (!image_object || !bitmap)
- return FALSE;
- CFX_DIBitmap* pBmp = NULL;
- pBmp = (CFX_DIBitmap*)bitmap;
- CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
- pImgObj->m_GeneralState.GetModify();
- for (int index=0;index<nCount;index++)
- {
- CPDF_Page* pPage = (CPDF_Page*)pages[index];
- pImgObj->m_pImage->ResetCache(pPage,NULL);
- }
- pImgObj->m_pImage->SetImage(pBmp,FALSE);
- pImgObj->CalcBoundingBox();
- return TRUE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,
+ int nCount,
+ FPDF_PAGEOBJECT image_object,
+ FPDF_BITMAP bitmap) {
+ if (!image_object || !bitmap)
+ return FALSE;
+ CFX_DIBitmap* pBmp = NULL;
+ pBmp = (CFX_DIBitmap*)bitmap;
+ CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
+ pImgObj->m_GeneralState.GetModify();
+ for (int index = 0; index < nCount; index++) {
+ CPDF_Page* pPage = (CPDF_Page*)pages[index];
+ pImgObj->m_pImage->ResetCache(pPage, NULL);
+ }
+ pImgObj->m_pImage->SetImage(pBmp, FALSE);
+ pImgObj->CalcBoundingBox();
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/fpdfeditpage.cpp b/fpdfsdk/src/fpdfeditpage.cpp
index 12c2cce1e2..0219c9ca7e 100644
--- a/fpdfsdk/src/fpdfeditpage.cpp
+++ b/fpdfsdk/src/fpdfeditpage.cpp
@@ -7,315 +7,321 @@
#include "../../public/fpdf_edit.h"
#include "../include/fsdk_define.h"
-
#if _FX_OS_ == _FX_ANDROID_
#include "time.h"
#else
#include <ctime>
#endif
-DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument()
-{
- CPDF_Document* pDoc = new CPDF_Document;
- pDoc->CreateNewDoc();
- time_t currentTime;
-
- CFX_ByteString DateStr;
-
- if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
- {
- if ( -1 != time( &currentTime ) )
- {
- tm * pTM = localtime( &currentTime );
- if ( pTM )
- {
- DateStr.Format( "D:%04d%02d%02d%02d%02d%02d", pTM->tm_year+1900, pTM->tm_mon+1,
- pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_sec );
- }
- }
- }
-
- CPDF_Dictionary* pInfoDict = NULL;
- pInfoDict = pDoc->GetInfo();
- if (pInfoDict)
- {
- if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
- pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr));
- pInfoDict->SetAt("Creator", new CPDF_String(L"PDFium"));
- }
-
- return pDoc;
+DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() {
+ CPDF_Document* pDoc = new CPDF_Document;
+ pDoc->CreateNewDoc();
+ time_t currentTime;
+
+ CFX_ByteString DateStr;
+
+ if (FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) {
+ if (-1 != time(&currentTime)) {
+ tm* pTM = localtime(&currentTime);
+ if (pTM) {
+ DateStr.Format("D:%04d%02d%02d%02d%02d%02d", pTM->tm_year + 1900,
+ pTM->tm_mon + 1, pTM->tm_mday, pTM->tm_hour, pTM->tm_min,
+ pTM->tm_sec);
+ }
+ }
+ }
+
+ CPDF_Dictionary* pInfoDict = NULL;
+ pInfoDict = pDoc->GetInfo();
+ if (pInfoDict) {
+ if (FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
+ pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr));
+ pInfoDict->SetAt("Creator", new CPDF_String(L"PDFium"));
+ }
+
+ return pDoc;
}
-DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (pDoc == NULL)
- return;
- if (page_index < 0 || page_index >= pDoc->GetPageCount())
- return;
+DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (pDoc == NULL)
+ return;
+ if (page_index < 0 || page_index >= pDoc->GetPageCount())
+ return;
- pDoc->DeletePage(page_index);
+ pDoc->DeletePage(page_index);
}
-DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height)
-{
- if (!document)
- return NULL;
-
-// CPDF_Parser* pParser = (CPDF_Parser*)document;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if(page_index < 0)
- page_index = 0;
- if(pDoc->GetPageCount()<page_index)
- page_index = pDoc->GetPageCount();
-// if (page_index < 0 || page_index >= pDoc->GetPageCount())
-// return NULL;
-
- CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index);
- if(!pPageDict)
- return NULL;
- CPDF_Array* pMediaBoxArray = new CPDF_Array;
- pMediaBoxArray->Add(new CPDF_Number(0));
- pMediaBoxArray->Add(new CPDF_Number(0));
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(width)));
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(height)));
-
- pPageDict->SetAt("MediaBox", pMediaBoxArray);
- pPageDict->SetAt("Rotate", new CPDF_Number(0));
- pPageDict->SetAt("Resources", new CPDF_Dictionary);
-
- CPDF_Page* pPage = new CPDF_Page;
- pPage->Load(pDoc,pPageDict);
- pPage->ParseContent();
-
- return pPage;
+DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document,
+ int page_index,
+ double width,
+ double height) {
+ if (!document)
+ return NULL;
+
+ // CPDF_Parser* pParser = (CPDF_Parser*)document;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (page_index < 0)
+ page_index = 0;
+ if (pDoc->GetPageCount() < page_index)
+ page_index = pDoc->GetPageCount();
+ // if (page_index < 0 || page_index >= pDoc->GetPageCount())
+ // return NULL;
+
+ CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index);
+ if (!pPageDict)
+ return NULL;
+ CPDF_Array* pMediaBoxArray = new CPDF_Array;
+ pMediaBoxArray->Add(new CPDF_Number(0));
+ pMediaBoxArray->Add(new CPDF_Number(0));
+ pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(width)));
+ pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(height)));
+
+ pPageDict->SetAt("MediaBox", pMediaBoxArray);
+ pPageDict->SetAt("Rotate", new CPDF_Number(0));
+ pPageDict->SetAt("Resources", new CPDF_Dictionary);
+
+ CPDF_Page* pPage = new CPDF_Page;
+ pPage->Load(pDoc, pPageDict);
+ pPage->ParseContent();
+
+ return pPage;
}
-DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || !pPage->m_pFormDict->GetElement("Type")->GetDirect()
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return -1;
- }
- CPDF_Dictionary* pDict = pPage->m_pFormDict;
-
- int rotate = 0;
- if(pDict != NULL)
- {
- if (pDict->KeyExist("Rotate"))
- rotate = pDict->GetElement("Rotate")->GetDirect()? pDict->GetElement("Rotate")->GetDirect()->GetInteger() / 90 : 0;
- else
- {
- if(pDict->KeyExist("Parent"))
- {
- CPDF_Dictionary* pPages = (CPDF_Dictionary*)pDict->GetElement("Parent")->GetDirect();
- while(pPages)
- {
- if(pPages->KeyExist("Rotate"))
- {
- rotate = pPages->GetElement("Rotate")->GetDirect()? pPages->GetElement("Rotate")->GetDirect()->GetInteger() / 90 : 0;
- break;
- }
- else if(pPages->KeyExist("Parent"))
- pPages = (CPDF_Dictionary*)pPages->GetElement("Parent")->GetDirect();
- else break;
- }
- }
- }
- }
- else
- {
- return -1;
- }
-
- return rotate;
+DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return -1;
+ }
+ CPDF_Dictionary* pDict = pPage->m_pFormDict;
+
+ int rotate = 0;
+ if (pDict != NULL) {
+ if (pDict->KeyExist("Rotate"))
+ rotate = pDict->GetElement("Rotate")->GetDirect()
+ ? pDict->GetElement("Rotate")->GetDirect()->GetInteger() / 90
+ : 0;
+ else {
+ if (pDict->KeyExist("Parent")) {
+ CPDF_Dictionary* pPages =
+ (CPDF_Dictionary*)pDict->GetElement("Parent")->GetDirect();
+ while (pPages) {
+ if (pPages->KeyExist("Rotate")) {
+ rotate =
+ pPages->GetElement("Rotate")->GetDirect()
+ ? pPages->GetElement("Rotate")->GetDirect()->GetInteger() /
+ 90
+ : 0;
+ break;
+ } else if (pPages->KeyExist("Parent"))
+ pPages =
+ (CPDF_Dictionary*)pPages->GetElement("Parent")->GetDirect();
+ else
+ break;
+ }
+ }
+ }
+ } else {
+ return -1;
+ }
+
+ return rotate;
}
-DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || !pPage->m_pFormDict->GetElement("Type")->GetDirect()
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return;
- }
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj;
- if(pPageObj == NULL)
- return;
- FX_POSITION LastPersition = pPage->GetLastObjectPosition();
-
- pPage->InsertObject(LastPersition, pPageObj);
- switch(pPageObj->m_Type)
- {
- case FPDF_PAGEOBJ_PATH:
- {
- CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
- pPathObj->CalcBoundingBox();
- break;
- }
- case FPDF_PAGEOBJ_TEXT:
- {
- // CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
- // pPathObj->CalcBoundingBox();
- break;
- }
- case FPDF_PAGEOBJ_IMAGE:
- {
- CPDF_ImageObject* pImageObj = (CPDF_ImageObject*)pPageObj;
- pImageObj->CalcBoundingBox();
- break;
- }
- case FPDF_PAGEOBJ_SHADING:
- {
- CPDF_ShadingObject* pShadingObj = (CPDF_ShadingObject*)pPageObj;
- pShadingObj->CalcBoundingBox();
- break;
- }
- case FPDF_PAGEOBJ_FORM:
- {
- CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
- pFormObj->CalcBoundingBox();
- break;
- }
- default:
- break;
- }
-
- // pPage->ParseContent();
- //pPage->GenerateContent();
-
+DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page,
+ FPDF_PAGEOBJECT page_obj) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return;
+ }
+ CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj;
+ if (pPageObj == NULL)
+ return;
+ FX_POSITION LastPersition = pPage->GetLastObjectPosition();
+
+ pPage->InsertObject(LastPersition, pPageObj);
+ switch (pPageObj->m_Type) {
+ case FPDF_PAGEOBJ_PATH: {
+ CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
+ pPathObj->CalcBoundingBox();
+ break;
+ }
+ case FPDF_PAGEOBJ_TEXT: {
+ // CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
+ // pPathObj->CalcBoundingBox();
+ break;
+ }
+ case FPDF_PAGEOBJ_IMAGE: {
+ CPDF_ImageObject* pImageObj = (CPDF_ImageObject*)pPageObj;
+ pImageObj->CalcBoundingBox();
+ break;
+ }
+ case FPDF_PAGEOBJ_SHADING: {
+ CPDF_ShadingObject* pShadingObj = (CPDF_ShadingObject*)pPageObj;
+ pShadingObj->CalcBoundingBox();
+ break;
+ }
+ case FPDF_PAGEOBJ_FORM: {
+ CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
+ pFormObj->CalcBoundingBox();
+ break;
+ }
+ default:
+ break;
+ }
+
+ // pPage->ParseContent();
+ // pPage->GenerateContent();
}
-DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || !pPage->m_pFormDict->GetElement("Type")->GetDirect()
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return -1;
- }
- return pPage->CountObjects();
-// return 0;
+DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return -1;
+ }
+ return pPage->CountObjects();
+ // return 0;
}
-DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type")
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return NULL;
- }
- return pPage->GetObjectByIndex(index);
-// return NULL;
+DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page,
+ int index) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return NULL;
+ }
+ return pPage->GetObjectByIndex(index);
+ // return NULL;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page)
-{
- if(!page) return FALSE;
- CPDF_Page* pPage = (CPDF_Page*)page;
+DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) {
+ if (!page)
+ return FALSE;
+ CPDF_Page* pPage = (CPDF_Page*)page;
- return pPage->BackgroundAlphaNeeded();
+ return pPage->BackgroundAlphaNeeded();
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject)
-{
- if(!pageObject) return FALSE;
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject;
-
- const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState;
- int blend_type = pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL;
- if (blend_type != FXDIB_BLEND_NORMAL) return TRUE;
-
- CPDF_Dictionary* pSMaskDict = pGeneralState ? (CPDF_Dictionary*)pGeneralState->m_pSoftMask : NULL;
- if(pSMaskDict) return TRUE;
-
- if(pGeneralState && pGeneralState->m_FillAlpha != 1.0f)
- return TRUE;
-
- if(pPageObj->m_Type == PDFPAGE_PATH)
- {
- if(pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f)
- return TRUE;
- }
-
- if(pPageObj->m_Type == PDFPAGE_FORM)
- {
- CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
- if(pFormObj->m_pForm && (pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED))
- return TRUE;
- if(pFormObj->m_pForm && (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) && (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP)))
- return TRUE;
- }
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL
+FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
+ if (!pageObject)
+ return FALSE;
+ CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject;
+
+ const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState;
+ int blend_type =
+ pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL;
+ if (blend_type != FXDIB_BLEND_NORMAL)
+ return TRUE;
+
+ CPDF_Dictionary* pSMaskDict =
+ pGeneralState ? (CPDF_Dictionary*)pGeneralState->m_pSoftMask : NULL;
+ if (pSMaskDict)
+ return TRUE;
+
+ if (pGeneralState && pGeneralState->m_FillAlpha != 1.0f)
+ return TRUE;
+
+ if (pPageObj->m_Type == PDFPAGE_PATH) {
+ if (pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f)
+ return TRUE;
+ }
+
+ if (pPageObj->m_Type == PDFPAGE_FORM) {
+ CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
+ if (pFormObj->m_pForm &&
+ (pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED))
+ return TRUE;
+ if (pFormObj->m_pForm &&
+ (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) &&
+ (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP)))
+ return TRUE;
+ }
+ return FALSE;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || !pPage->m_pFormDict->GetElement("Type")->GetDirect()
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return FALSE;
- }
- CPDF_PageContentGenerate CG(pPage);
- CG.GenerateContent();
-
- return TRUE;
+DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return FALSE;
+ }
+ CPDF_PageContentGenerate CG(pPage);
+ CG.GenerateContent();
+
+ return TRUE;
}
DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object,
- double a, double b, double c, double d, double e, double f)
-{
- CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object;
- if(pPageObj == NULL)
- return;
- CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f);
- pPageObj->Transform(matrix);
+ double a,
+ double b,
+ double c,
+ double d,
+ double e,
+ double f) {
+ CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object;
+ if (pPageObj == NULL)
+ return;
+ CFX_AffineMatrix matrix((FX_FLOAT)a, (FX_FLOAT)b, (FX_FLOAT)c, (FX_FLOAT)d,
+ (FX_FLOAT)e, (FX_FLOAT)f);
+ pPageObj->Transform(matrix);
}
DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page,
- double a, double b, double c, double d, double e, double f)
-{
- if(page == NULL)
- return;
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_AnnotList AnnotList(pPage);
- for (int i=0; i<AnnotList.Count();i++)
- {
- CPDF_Annot* pAnnot = AnnotList.GetAt(i);
- // transformAnnots Rectangle
- CPDF_Rect rect;
- pAnnot->GetRect(rect);
- CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f);
- rect.Transform(&matrix);
- CPDF_Array *pRectArray = NULL;
- pRectArray = pAnnot->GetAnnotDict()->GetArray("Rect");
- if (!pRectArray) pRectArray=CPDF_Array::Create();
- pRectArray->SetAt(0, new CPDF_Number(rect.left));
- pRectArray->SetAt(1, new CPDF_Number(rect.bottom));
- pRectArray->SetAt(2, new CPDF_Number(rect.right));
- pRectArray->SetAt(3, new CPDF_Number(rect.top));
- pAnnot->GetAnnotDict()->SetAt("Rect",pRectArray);
-
- //Transform AP's rectangle
- //To Do
- }
-
+ double a,
+ double b,
+ double c,
+ double d,
+ double e,
+ double f) {
+ if (page == NULL)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_AnnotList AnnotList(pPage);
+ for (int i = 0; i < AnnotList.Count(); i++) {
+ CPDF_Annot* pAnnot = AnnotList.GetAt(i);
+ // transformAnnots Rectangle
+ CPDF_Rect rect;
+ pAnnot->GetRect(rect);
+ CFX_AffineMatrix matrix((FX_FLOAT)a, (FX_FLOAT)b, (FX_FLOAT)c, (FX_FLOAT)d,
+ (FX_FLOAT)e, (FX_FLOAT)f);
+ rect.Transform(&matrix);
+ CPDF_Array* pRectArray = NULL;
+ pRectArray = pAnnot->GetAnnotDict()->GetArray("Rect");
+ if (!pRectArray)
+ pRectArray = CPDF_Array::Create();
+ pRectArray->SetAt(0, new CPDF_Number(rect.left));
+ pRectArray->SetAt(1, new CPDF_Number(rect.bottom));
+ pRectArray->SetAt(2, new CPDF_Number(rect.right));
+ pRectArray->SetAt(3, new CPDF_Number(rect.top));
+ pAnnot->GetAnnotDict()->SetAt("Rect", pRectArray);
+
+ // Transform AP's rectangle
+ // To Do
+ }
}
-DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate)
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || !pPage->m_pFormDict->GetElement("Type")->GetDirect()
- || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare("Page"))
- {
- return;
- }
- CPDF_Dictionary* pDict = pPage->m_pFormDict;
- rotate %=4;
-
- pDict->SetAt("Rotate", new CPDF_Number(rotate * 90));
+DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
+ !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
+ pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
+ "Page")) {
+ return;
+ }
+ CPDF_Dictionary* pDict = pPage->m_pFormDict;
+ rotate %= 4;
+
+ pDict->SetAt("Rotate", new CPDF_Number(rotate * 90));
}
diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp
index 42e94c789d..170ae15799 100644
--- a/fpdfsdk/src/fpdfformfill.cpp
+++ b/fpdfsdk/src/fpdfformfill.cpp
@@ -13,308 +13,318 @@
namespace {
-CPDFSDK_Document* FormHandleToSDKDoc(FPDF_FORMHANDLE hHandle)
-{
- CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
- return pEnv ? pEnv->GetSDKDocument() : nullptr;
+CPDFSDK_Document* FormHandleToSDKDoc(FPDF_FORMHANDLE hHandle) {
+ CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
+ return pEnv ? pEnv->GetSDKDocument() : nullptr;
}
-CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle)
-{
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr;
+CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle) {
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr;
}
-CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle, FPDF_PAGE page)
-{
- if (!page)
- return nullptr;
+CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page) {
+ if (!page)
+ return nullptr;
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- return pSDKDoc ? pSDKDoc->GetPageView((CPDF_Page*)page, TRUE) : nullptr;
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ return pSDKDoc ? pSDKDoc->GetPageView((CPDF_Page*)page, TRUE) : nullptr;
}
} // namespace
-DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(
- FPDF_FORMHANDLE hHandle, FPDF_PAGE page, double page_x, double page_y)
-{
- if (!page || !hHandle)
- return -1;
- CPDF_Page* pPage = (CPDF_Page*) page;
-
- nonstd::unique_ptr<CPDF_InterForm> pInterForm(
- new CPDF_InterForm(pPage->m_pDocument, FALSE));
- CPDF_FormControl* pFormCtrl = pInterForm->GetControlAtPoint(
- pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y);
- if (!pFormCtrl)
- return -1;
-
- CPDF_FormField* pFormField = pFormCtrl->GetField();
- if(!pFormField)
- return -1;
-
- return pFormField->GetFieldType();
+DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ double page_x,
+ double page_y) {
+ if (!page || !hHandle)
+ return -1;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+
+ nonstd::unique_ptr<CPDF_InterForm> pInterForm(
+ new CPDF_InterForm(pPage->m_pDocument, FALSE));
+ CPDF_FormControl* pFormCtrl =
+ pInterForm->GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y);
+ if (!pFormCtrl)
+ return -1;
+
+ CPDF_FormField* pFormField = pFormCtrl->GetField();
+ if (!pFormField)
+ return -1;
+
+ return pFormField->GetFieldType();
}
-DLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnvironment(
- FPDF_DOCUMENT document, FPDF_FORMFILLINFO* formInfo)
-{
- if (!document || !formInfo || formInfo->version != 1)
- return nullptr;
+DLLEXPORT FPDF_FORMHANDLE STDCALL
+FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document,
+ FPDF_FORMFILLINFO* formInfo) {
+ if (!document || !formInfo || formInfo->version != 1)
+ return nullptr;
- CPDF_Document* pDocument = (CPDF_Document*)document;
- CPDFDoc_Environment* pEnv = new CPDFDoc_Environment(pDocument, formInfo);
- pEnv->SetSDKDocument(new CPDFSDK_Document(pDocument, pEnv));
- return pEnv;
+ CPDF_Document* pDocument = (CPDF_Document*)document;
+ CPDFDoc_Environment* pEnv = new CPDFDoc_Environment(pDocument, formInfo);
+ pEnv->SetSDKDocument(new CPDFSDK_Document(pDocument, pEnv));
+ return pEnv;
}
-DLLEXPORT void STDCALL FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle)
-{
- if (!hHandle)
- return;
-
- CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
- if (CPDFSDK_Document* pSDKDoc = pEnv->GetSDKDocument())
- {
- pEnv->SetSDKDocument(NULL);
- delete pSDKDoc;
- }
- delete pEnv;
+DLLEXPORT void STDCALL
+FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) {
+ if (!hHandle)
+ return;
+
+ CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
+ if (CPDFSDK_Document* pSDKDoc = pEnv->GetSDKDocument()) {
+ pEnv->SetSDKDocument(NULL);
+ delete pSDKDoc;
+ }
+ delete pEnv;
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
-
- CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
- return pPageView->OnMouseMove(pt, modifier);
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int modifier,
+ double page_x,
+ double page_y) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
+
+ CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
+ return pPageView->OnMouseMove(pt, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
-
- CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
- return pPageView->OnLButtonDown(pt, modifier);
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int modifier,
+ double page_x,
+ double page_y) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
+
+ CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
+ return pPageView->OnLButtonDown(pt, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
-
- CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
- return pPageView->OnLButtonUp(pt, modifier);
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int modifier,
+ double page_x,
+ double page_y) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
+
+ CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
+ return pPageView->OnLButtonUp(pt, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nKeyCode, int modifier)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int nKeyCode,
+ int modifier) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
- return pPageView->OnKeyDown(nKeyCode, modifier);
+ return pPageView->OnKeyDown(nKeyCode, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nKeyCode, int modifier)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int nKeyCode,
+ int modifier) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
- return pPageView->OnKeyUp(nKeyCode, modifier);
+ return pPageView->OnKeyUp(nKeyCode, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nChar, int modifier)
-{
- CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
- if (!pPageView)
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle,
+ FPDF_PAGE page,
+ int nChar,
+ int modifier) {
+ CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
+ if (!pPageView)
+ return FALSE;
- return pPageView->OnChar(nChar, modifier);
+ return pPageView->OnChar(nChar, modifier);
}
-DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle)
-{
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- if (!pSDKDoc)
- return FALSE;
+DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) {
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ if (!pSDKDoc)
+ return FALSE;
- return pSDKDoc->KillFocusAnnot(0);
+ return pSDKDoc->KillFocusAnnot(0);
}
-DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, FPDF_BITMAP bitmap, FPDF_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate, int flags)
-{
- if (!hHandle || !page)
- return;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDF_RenderOptions options;
- if (flags & FPDF_LCD_TEXT)
- options.m_Flags |= RENDER_CLEARTYPE;
- else
- options.m_Flags &= ~RENDER_CLEARTYPE;
-
- //Grayscale output
- if (flags & FPDF_GRAYSCALE)
- {
- options.m_ColorMode = RENDER_COLOR_GRAY;
- options.m_ForeColor = 0;
- options.m_BackColor = 0xffffff;
- }
-
- options.m_AddFlags = flags >> 8;
- options.m_pOCContext = new CPDF_OCContext(pPage->m_pDocument);
-
- CFX_AffineMatrix matrix;
- pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
-
- FX_RECT clip;
- clip.left = start_x;
- clip.right = start_x + size_x;
- clip.top = start_y;
- clip.bottom = start_y + size_y;
+DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
+ FPDF_BITMAP bitmap,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags) {
+ if (!hHandle || !page)
+ return;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDF_RenderOptions options;
+ if (flags & FPDF_LCD_TEXT)
+ options.m_Flags |= RENDER_CLEARTYPE;
+ else
+ options.m_Flags &= ~RENDER_CLEARTYPE;
+
+ // Grayscale output
+ if (flags & FPDF_GRAYSCALE) {
+ options.m_ColorMode = RENDER_COLOR_GRAY;
+ options.m_ForeColor = 0;
+ options.m_BackColor = 0xffffff;
+ }
+
+ options.m_AddFlags = flags >> 8;
+ options.m_pOCContext = new CPDF_OCContext(pPage->m_pDocument);
+
+ CFX_AffineMatrix matrix;
+ pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
+
+ FX_RECT clip;
+ clip.left = start_x;
+ clip.right = start_x + size_x;
+ clip.top = start_y;
+ clip.bottom = start_y + size_y;
#ifdef _SKIA_SUPPORT_
- nonstd::unique_ptr<CFX_SkiaDevice> pDevice(new CFX_SkiaDevice);
+ nonstd::unique_ptr<CFX_SkiaDevice> pDevice(new CFX_SkiaDevice);
#else
- nonstd::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice);
+ nonstd::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice);
#endif
- pDevice->Attach((CFX_DIBitmap*)bitmap);
- pDevice->SaveState();
- pDevice->SetClip_Rect(&clip);
+ pDevice->Attach((CFX_DIBitmap*)bitmap);
+ pDevice->SaveState();
+ pDevice->SetClip_Rect(&clip);
- if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
- pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
+ if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
+ pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
- pDevice->RestoreState();
- delete options.m_pOCContext;
+ pDevice->RestoreState();
+ delete options.m_pOCContext;
}
-DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle, int fieldType, unsigned long color)
-{
- if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
- pInterForm->SetHighlightColor(color, fieldType);
+DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle,
+ int fieldType,
+ unsigned long color) {
+ if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
+ pInterForm->SetHighlightColor(color, fieldType);
}
-DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle, unsigned char alpha)
-{
- if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
- pInterForm->SetHighlightAlpha(alpha);
+DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle,
+ unsigned char alpha) {
+ if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
+ pInterForm->SetHighlightAlpha(alpha);
}
-DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle)
-{
- if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
- pInterForm->RemoveAllHighLight();
+DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) {
+ if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle))
+ pInterForm->RemoveAllHighLight();
}
-DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle)
-{
- if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page))
- pPageView->SetValid(TRUE);
+DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page,
+ FPDF_FORMHANDLE hHandle) {
+ if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page))
+ pPageView->SetValid(TRUE);
}
-DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle)
-{
- if (!hHandle || !page)
- return;
-
- CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
- if (!pSDKDoc)
- return;
-
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
- if (pPageView)
- {
- pPageView->SetValid(FALSE);
- // ReMovePageView() takes care of the delete for us.
- pSDKDoc->ReMovePageView(pPage);
- }
+DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page,
+ FPDF_FORMHANDLE hHandle) {
+ if (!hHandle || !page)
+ return;
+
+ CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
+ if (!pSDKDoc)
+ return;
+
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
+ if (pPageView) {
+ pPageView->SetValid(FALSE);
+ // ReMovePageView() takes care of the delete for us.
+ pSDKDoc->ReMovePageView(pPage);
+ }
}
-DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle)
-{
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- if (pSDKDoc && ((CPDFDoc_Environment*)hHandle)->IsJSInitiated())
- pSDKDoc->ProcJavascriptFun();
+DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) {
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ if (pSDKDoc && ((CPDFDoc_Environment*)hHandle)->IsJSInitiated())
+ pSDKDoc->ProcJavascriptFun();
}
-DLLEXPORT void STDCALL FORM_DoDocumentOpenAction(FPDF_FORMHANDLE hHandle)
-{
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- if (pSDKDoc && ((CPDFDoc_Environment*)hHandle)->IsJSInitiated())
- pSDKDoc->ProcOpenAction();
+DLLEXPORT void STDCALL FORM_DoDocumentOpenAction(FPDF_FORMHANDLE hHandle) {
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ if (pSDKDoc && ((CPDFDoc_Environment*)hHandle)->IsJSInitiated())
+ pSDKDoc->ProcOpenAction();
}
-DLLEXPORT void STDCALL FORM_DoDocumentAAction(FPDF_FORMHANDLE hHandle, int aaType)
-{
- CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
- if (!pSDKDoc)
- return;
-
- CPDF_Document* pDoc = pSDKDoc->GetDocument();
- CPDF_Dictionary* pDic = pDoc->GetRoot();
- if (!pDic)
- return;
-
- CPDF_AAction aa = pDic->GetDict(FX_BSTRC("AA"));
- if (aa.ActionExist((CPDF_AAction::AActionType)aaType))
- {
- CPDF_Action action = aa.GetAction((CPDF_AAction::AActionType)aaType);
- CPDFSDK_ActionHandler *pActionHandler = ((CPDFDoc_Environment*)hHandle)->GetActionHander();
- ASSERT(pActionHandler != NULL);
- pActionHandler->DoAction_Document(action, (CPDF_AAction::AActionType)aaType, pSDKDoc);
- }
+DLLEXPORT void STDCALL FORM_DoDocumentAAction(FPDF_FORMHANDLE hHandle,
+ int aaType) {
+ CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
+ if (!pSDKDoc)
+ return;
+
+ CPDF_Document* pDoc = pSDKDoc->GetDocument();
+ CPDF_Dictionary* pDic = pDoc->GetRoot();
+ if (!pDic)
+ return;
+
+ CPDF_AAction aa = pDic->GetDict(FX_BSTRC("AA"));
+ if (aa.ActionExist((CPDF_AAction::AActionType)aaType)) {
+ CPDF_Action action = aa.GetAction((CPDF_AAction::AActionType)aaType);
+ CPDFSDK_ActionHandler* pActionHandler =
+ ((CPDFDoc_Environment*)hHandle)->GetActionHander();
+ ASSERT(pActionHandler != NULL);
+ pActionHandler->DoAction_Document(action, (CPDF_AAction::AActionType)aaType,
+ pSDKDoc);
+ }
}
-DLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page, FPDF_FORMHANDLE hHandle, int aaType)
-{
- if(!hHandle || !page)
- return;
- CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
- CPDF_Page* pPage = (CPDF_Page*)page;
- CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
- if(pPageView)
- {
- CPDFDoc_Environment *pEnv = pSDKDoc->GetEnv();
- ASSERT(pEnv != NULL);
-
- CPDFSDK_ActionHandler *pActionHandler = pEnv->GetActionHander();
- ASSERT(pActionHandler != NULL);
-
- CPDF_Dictionary *pPageDict = pPage->m_pFormDict;
- ASSERT(pPageDict != NULL);
-
- CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA"));
-
- FX_BOOL bExistOAAction = FALSE;
- FX_BOOL bExistCAAction = FALSE;
- if (FPDFPAGE_AACTION_OPEN == aaType)
- {
- bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage);
- if (bExistOAAction)
- {
- CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage);
- pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc);
- }
- }
- else
- {
- bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage);
- if (bExistCAAction)
- {
- CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage);
- pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc);
- }
- }
+DLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page,
+ FPDF_FORMHANDLE hHandle,
+ int aaType) {
+ if (!hHandle || !page)
+ return;
+ CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
+ if (pPageView) {
+ CPDFDoc_Environment* pEnv = pSDKDoc->GetEnv();
+ ASSERT(pEnv != NULL);
+
+ CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
+ ASSERT(pActionHandler != NULL);
+
+ CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
+ ASSERT(pPageDict != NULL);
+
+ CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA"));
+
+ FX_BOOL bExistOAAction = FALSE;
+ FX_BOOL bExistCAAction = FALSE;
+ if (FPDFPAGE_AACTION_OPEN == aaType) {
+ bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage);
+ if (bExistOAAction) {
+ CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage);
+ pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc);
+ }
+ } else {
+ bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage);
+ if (bExistCAAction) {
+ CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage);
+ pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc);
+ }
}
+ }
}
diff --git a/fpdfsdk/src/fpdfformfill_embeddertest.cpp b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
index 1c38770edb..6baad11531 100644
--- a/fpdfsdk/src/fpdfformfill_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
#include "../../public/fpdf_formfill.h"
#include "../../testing/embedder_test.h"
#include "../../testing/embedder_test_mock_delegate.h"
@@ -13,8 +12,7 @@
using testing::_;
using testing::Return;
-class FPDFFormFillEmbeddertest : public EmbedderTest {
-};
+class FPDFFormFillEmbeddertest : public EmbedderTest {};
TEST_F(FPDFFormFillEmbeddertest, FirstTest) {
EmbedderTestMockDelegate mock;
diff --git a/fpdfsdk/src/fpdfppo.cpp b/fpdfsdk/src/fpdfppo.cpp
index 40d56b304d..a37772492f 100644
--- a/fpdfsdk/src/fpdfppo.cpp
+++ b/fpdfsdk/src/fpdfppo.cpp
@@ -8,425 +8,406 @@
#include "../../third_party/base/nonstd_unique_ptr.h"
#include "../include/fsdk_define.h"
-class CPDF_PageOrganizer
-{
-public:
- using ObjectNumberMap = std::map<FX_DWORD, FX_DWORD>;
- CPDF_PageOrganizer();
- ~CPDF_PageOrganizer();
-
- FX_BOOL PDFDocInit(CPDF_Document* pDestPDFDoc, CPDF_Document* pSrcPDFDoc);
- FX_BOOL ExportPage(CPDF_Document* pSrcPDFDoc,
- CFX_WordArray* nPageNum,
- CPDF_Document* pDestPDFDoc,
- int nIndex);
- CPDF_Object* PageDictGetInheritableTag(CPDF_Dictionary* pDict,
- CFX_ByteString nSrctag);
- FX_BOOL UpdateReference(CPDF_Object* pObj,
- CPDF_Document* pDoc,
- ObjectNumberMap* pObjNumberMap);
- FX_DWORD GetNewObjId(CPDF_Document* pDoc,
- ObjectNumberMap* pObjNumberMap,
- CPDF_Reference* pRef);
+class CPDF_PageOrganizer {
+ public:
+ using ObjectNumberMap = std::map<FX_DWORD, FX_DWORD>;
+ CPDF_PageOrganizer();
+ ~CPDF_PageOrganizer();
+
+ FX_BOOL PDFDocInit(CPDF_Document* pDestPDFDoc, CPDF_Document* pSrcPDFDoc);
+ FX_BOOL ExportPage(CPDF_Document* pSrcPDFDoc,
+ CFX_WordArray* nPageNum,
+ CPDF_Document* pDestPDFDoc,
+ int nIndex);
+ CPDF_Object* PageDictGetInheritableTag(CPDF_Dictionary* pDict,
+ CFX_ByteString nSrctag);
+ FX_BOOL UpdateReference(CPDF_Object* pObj,
+ CPDF_Document* pDoc,
+ ObjectNumberMap* pObjNumberMap);
+ FX_DWORD GetNewObjId(CPDF_Document* pDoc,
+ ObjectNumberMap* pObjNumberMap,
+ CPDF_Reference* pRef);
};
+CPDF_PageOrganizer::CPDF_PageOrganizer() {}
-CPDF_PageOrganizer::CPDF_PageOrganizer()
-{
-}
-
-CPDF_PageOrganizer::~CPDF_PageOrganizer()
-{
-}
+CPDF_PageOrganizer::~CPDF_PageOrganizer() {}
FX_BOOL CPDF_PageOrganizer::PDFDocInit(CPDF_Document* pDestPDFDoc,
- CPDF_Document* pSrcPDFDoc)
-{
- if (!pDestPDFDoc || !pSrcPDFDoc)
- return FALSE;
-
- CPDF_Dictionary* pNewRoot = pDestPDFDoc->GetRoot();
- if (!pNewRoot)
- return FALSE;
+ CPDF_Document* pSrcPDFDoc) {
+ if (!pDestPDFDoc || !pSrcPDFDoc)
+ return FALSE;
+
+ CPDF_Dictionary* pNewRoot = pDestPDFDoc->GetRoot();
+ if (!pNewRoot)
+ return FALSE;
+
+ // Set the document information////////////////////////////////////////////
+
+ CPDF_Dictionary* DInfoDict = pDestPDFDoc->GetInfo();
+ if (!DInfoDict)
+ return FALSE;
+
+ CFX_ByteString producerstr;
+ producerstr.Format("PDFium");
+ DInfoDict->SetAt("Producer", new CPDF_String(producerstr));
+
+ // Set type////////////////////////////////////////////////////////////////
+ CFX_ByteString cbRootType = pNewRoot->GetString("Type", "");
+ if (cbRootType.Equal("")) {
+ pNewRoot->SetAt("Type", new CPDF_Name("Catalog"));
+ }
+
+ CPDF_Object* pElement = pNewRoot->GetElement("Pages");
+ CPDF_Dictionary* pNewPages =
+ pElement ? (CPDF_Dictionary*)pElement->GetDirect() : nullptr;
+ if (!pNewPages) {
+ pNewPages = new CPDF_Dictionary;
+ FX_DWORD NewPagesON = pDestPDFDoc->AddIndirectObject(pNewPages);
+ pNewRoot->SetAt("Pages", new CPDF_Reference(pDestPDFDoc, NewPagesON));
+ }
+
+ CFX_ByteString cbPageType = pNewPages->GetString("Type", "");
+ if (cbPageType.Equal("")) {
+ pNewPages->SetAt("Type", new CPDF_Name("Pages"));
+ }
+
+ CPDF_Array* pKeysArray = pNewPages->GetArray("Kids");
+ if (!pKeysArray) {
+ CPDF_Array* pNewKids = new CPDF_Array;
+ FX_DWORD Kidsobjnum = -1;
+ Kidsobjnum = pDestPDFDoc->AddIndirectObject(pNewKids);
+
+ pNewPages->SetAt("Kids", new CPDF_Reference(pDestPDFDoc, Kidsobjnum));
+ pNewPages->SetAt("Count", new CPDF_Number(0));
+ }
+
+ return TRUE;
+}
- //Set the document information////////////////////////////////////////////
+FX_BOOL CPDF_PageOrganizer::ExportPage(CPDF_Document* pSrcPDFDoc,
+ CFX_WordArray* nPageNum,
+ CPDF_Document* pDestPDFDoc,
+ int nIndex) {
+ int curpage = nIndex;
+
+ nonstd::unique_ptr<ObjectNumberMap> pObjNumberMap(new ObjectNumberMap);
+
+ for (int i = 0; i < nPageNum->GetSize(); ++i) {
+ CPDF_Dictionary* pCurPageDict = pDestPDFDoc->CreateNewPage(curpage);
+ CPDF_Dictionary* pSrcPageDict = pSrcPDFDoc->GetPage(nPageNum->GetAt(i) - 1);
+ if (!pSrcPageDict || !pCurPageDict)
+ return FALSE;
+
+ // Clone the page dictionary///////////
+ FX_POSITION SrcPos = pSrcPageDict->GetStartPos();
+ while (SrcPos) {
+ CFX_ByteString cbSrcKeyStr;
+ CPDF_Object* pObj = pSrcPageDict->GetNextElement(SrcPos, cbSrcKeyStr);
+ if (cbSrcKeyStr.Compare(("Type")) && cbSrcKeyStr.Compare(("Parent"))) {
+ if (pCurPageDict->KeyExist(cbSrcKeyStr))
+ pCurPageDict->RemoveAt(cbSrcKeyStr);
+ pCurPageDict->SetAt(cbSrcKeyStr, pObj->Clone());
+ }
+ }
- CPDF_Dictionary* DInfoDict = pDestPDFDoc->GetInfo();
- if (!DInfoDict)
+ // inheritable item///////////////////////
+ CPDF_Object* pInheritable = nullptr;
+ // 1 MediaBox //required
+ if (!pCurPageDict->KeyExist("MediaBox")) {
+ pInheritable = PageDictGetInheritableTag(pSrcPageDict, "MediaBox");
+ if (!pInheritable) {
+ // Search the "CropBox" from source page dictionary,
+ // if not exists,we take the letter size.
+ pInheritable = PageDictGetInheritableTag(pSrcPageDict, "CropBox");
+ if (pInheritable) {
+ pCurPageDict->SetAt("MediaBox", pInheritable->Clone());
+ } else {
+ // Make the default size to be letter size (8.5'x11')
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddNumber(0);
+ pArray->AddNumber(0);
+ pArray->AddNumber(612);
+ pArray->AddNumber(792);
+ pCurPageDict->SetAt("MediaBox", pArray);
+ }
+ } else {
+ pCurPageDict->SetAt("MediaBox", pInheritable->Clone());
+ }
+ }
+ // 2 Resources //required
+ if (!pCurPageDict->KeyExist("Resources")) {
+ pInheritable = PageDictGetInheritableTag(pSrcPageDict, "Resources");
+ if (!pInheritable)
return FALSE;
-
- CFX_ByteString producerstr;
- producerstr.Format("PDFium");
- DInfoDict->SetAt("Producer", new CPDF_String(producerstr));
-
- //Set type////////////////////////////////////////////////////////////////
- CFX_ByteString cbRootType = pNewRoot->GetString("Type", "");
- if (cbRootType.Equal("") ) {
- pNewRoot->SetAt("Type", new CPDF_Name("Catalog"));
+ pCurPageDict->SetAt("Resources", pInheritable->Clone());
}
-
- CPDF_Object* pElement = pNewRoot->GetElement("Pages");
- CPDF_Dictionary* pNewPages = pElement ?
- (CPDF_Dictionary*)pElement->GetDirect() : nullptr;
- if (!pNewPages) {
- pNewPages = new CPDF_Dictionary;
- FX_DWORD NewPagesON = pDestPDFDoc->AddIndirectObject(pNewPages);
- pNewRoot->SetAt("Pages", new CPDF_Reference(pDestPDFDoc, NewPagesON));
+ // 3 CropBox //Optional
+ if (!pCurPageDict->KeyExist("CropBox")) {
+ pInheritable = PageDictGetInheritableTag(pSrcPageDict, "CropBox");
+ if (pInheritable)
+ pCurPageDict->SetAt("CropBox", pInheritable->Clone());
}
-
- CFX_ByteString cbPageType = pNewPages->GetString("Type", "");
- if (cbPageType.Equal("")) {
- pNewPages->SetAt("Type", new CPDF_Name("Pages"));
+ // 4 Rotate //Optional
+ if (!pCurPageDict->KeyExist("Rotate")) {
+ pInheritable = PageDictGetInheritableTag(pSrcPageDict, "Rotate");
+ if (pInheritable)
+ pCurPageDict->SetAt("Rotate", pInheritable->Clone());
}
- CPDF_Array* pKeysArray = pNewPages->GetArray("Kids");
- if (!pKeysArray) {
- CPDF_Array* pNewKids = new CPDF_Array;
- FX_DWORD Kidsobjnum = -1;
- Kidsobjnum = pDestPDFDoc->AddIndirectObject(pNewKids);
+ /////////////////////////////////////////////
+ // Update the reference
+ FX_DWORD dwOldPageObj = pSrcPageDict->GetObjNum();
+ FX_DWORD dwNewPageObj = pCurPageDict->GetObjNum();
- pNewPages->SetAt("Kids", new CPDF_Reference(pDestPDFDoc, Kidsobjnum));
- pNewPages->SetAt("Count", new CPDF_Number(0));
- }
+ (*pObjNumberMap)[dwOldPageObj] = dwNewPageObj;
- return TRUE;
+ UpdateReference(pCurPageDict, pDestPDFDoc, pObjNumberMap.get());
+ ++curpage;
+ }
+
+ return TRUE;
}
-FX_BOOL CPDF_PageOrganizer::ExportPage(CPDF_Document* pSrcPDFDoc,
- CFX_WordArray* nPageNum,
- CPDF_Document* pDestPDFDoc,
- int nIndex)
-{
- int curpage = nIndex;
-
- nonstd::unique_ptr<ObjectNumberMap> pObjNumberMap(new ObjectNumberMap);
-
- for (int i = 0; i < nPageNum->GetSize(); ++i) {
- CPDF_Dictionary* pCurPageDict = pDestPDFDoc->CreateNewPage(curpage);
- CPDF_Dictionary* pSrcPageDict =
- pSrcPDFDoc->GetPage(nPageNum->GetAt(i) - 1);
- if (!pSrcPageDict || !pCurPageDict)
- return FALSE;
-
- // Clone the page dictionary///////////
- FX_POSITION SrcPos = pSrcPageDict->GetStartPos();
- while (SrcPos) {
- CFX_ByteString cbSrcKeyStr;
- CPDF_Object* pObj = pSrcPageDict->GetNextElement(SrcPos,
- cbSrcKeyStr);
- if (cbSrcKeyStr.Compare(("Type")) &&
- cbSrcKeyStr.Compare(("Parent"))) {
- if (pCurPageDict->KeyExist(cbSrcKeyStr))
- pCurPageDict->RemoveAt(cbSrcKeyStr);
- pCurPageDict->SetAt(cbSrcKeyStr, pObj->Clone());
- }
- }
+CPDF_Object* CPDF_PageOrganizer::PageDictGetInheritableTag(
+ CPDF_Dictionary* pDict,
+ CFX_ByteString nSrctag) {
+ if (!pDict || nSrctag.IsEmpty())
+ return nullptr;
+ if (!pDict->KeyExist("Parent") || !pDict->KeyExist("Type"))
+ return nullptr;
- //inheritable item///////////////////////
- CPDF_Object* pInheritable = nullptr;
- //1 MediaBox //required
- if (!pCurPageDict->KeyExist("MediaBox")) {
- pInheritable = PageDictGetInheritableTag(pSrcPageDict, "MediaBox");
- if (!pInheritable) {
- // Search the "CropBox" from source page dictionary,
- // if not exists,we take the letter size.
- pInheritable = PageDictGetInheritableTag(pSrcPageDict,
- "CropBox");
- if (pInheritable) {
- pCurPageDict->SetAt("MediaBox", pInheritable->Clone());
- } else {
- // Make the default size to be letter size (8.5'x11')
- CPDF_Array* pArray = new CPDF_Array;
- pArray->AddNumber(0);
- pArray->AddNumber(0);
- pArray->AddNumber(612);
- pArray->AddNumber(792);
- pCurPageDict->SetAt("MediaBox", pArray);
- }
- } else {
- pCurPageDict->SetAt("MediaBox", pInheritable->Clone());
- }
- }
- //2 Resources //required
- if (!pCurPageDict->KeyExist("Resources")) {
- pInheritable = PageDictGetInheritableTag(pSrcPageDict, "Resources");
- if (!pInheritable)
- return FALSE;
- pCurPageDict->SetAt("Resources", pInheritable->Clone());
- }
- //3 CropBox //Optional
- if (!pCurPageDict->KeyExist("CropBox")) {
- pInheritable = PageDictGetInheritableTag(pSrcPageDict, "CropBox");
- if (pInheritable)
- pCurPageDict->SetAt("CropBox", pInheritable->Clone());
- }
- //4 Rotate //Optional
- if (!pCurPageDict->KeyExist("Rotate")) {
- pInheritable = PageDictGetInheritableTag(pSrcPageDict, "Rotate");
- if (pInheritable)
- pCurPageDict->SetAt("Rotate", pInheritable->Clone());
- }
+ CPDF_Object* pType = pDict->GetElement("Type")->GetDirect();
+ if (!pType || pType->GetType() != PDFOBJ_NAME)
+ return nullptr;
+ if (pType->GetString().Compare("Page"))
+ return nullptr;
- /////////////////////////////////////////////
- //Update the reference
- FX_DWORD dwOldPageObj = pSrcPageDict->GetObjNum();
- FX_DWORD dwNewPageObj = pCurPageDict->GetObjNum();
+ CPDF_Object* pParent = pDict->GetElement("Parent")->GetDirect();
+ if (!pParent || pParent->GetType() != PDFOBJ_DICTIONARY)
+ return nullptr;
- (*pObjNumberMap)[dwOldPageObj] = dwNewPageObj;
+ if (pDict->KeyExist((const char*)nSrctag))
+ return pDict->GetElement((const char*)nSrctag);
- UpdateReference(pCurPageDict, pDestPDFDoc, pObjNumberMap.get());
- ++curpage;
+ CPDF_Dictionary* pp = (CPDF_Dictionary*)pParent;
+ while (pp) {
+ if (pp->KeyExist((const char*)nSrctag)) {
+ return pp->GetElement((const char*)nSrctag);
}
-
- return TRUE;
-}
-
-CPDF_Object* CPDF_PageOrganizer::PageDictGetInheritableTag(
- CPDF_Dictionary* pDict,
- CFX_ByteString nSrctag)
-{
- if (!pDict || nSrctag.IsEmpty())
- return nullptr;
- if (!pDict->KeyExist("Parent") || !pDict->KeyExist("Type"))
- return nullptr;
-
- CPDF_Object* pType = pDict->GetElement("Type")->GetDirect();
- if (!pType || pType->GetType() != PDFOBJ_NAME)
- return nullptr;
- if (pType->GetString().Compare("Page"))
- return nullptr;
-
- CPDF_Object* pParent = pDict->GetElement("Parent")->GetDirect();
- if (!pParent || pParent->GetType() != PDFOBJ_DICTIONARY)
- return nullptr;
-
- if (pDict->KeyExist((const char*)nSrctag))
- return pDict->GetElement((const char*)nSrctag);
-
- CPDF_Dictionary* pp = (CPDF_Dictionary*)pParent;
- while (pp) {
- if (pp->KeyExist((const char*)nSrctag)) {
- return pp->GetElement((const char*)nSrctag);
- }
- if (!pp->KeyExist("Parent")) {
- break;
- }
- pp = (CPDF_Dictionary*)pp->GetElement("Parent")->GetDirect();
- if (pp->GetType() == PDFOBJ_NULL) {
- break;
- }
+ if (!pp->KeyExist("Parent")) {
+ break;
}
+ pp = (CPDF_Dictionary*)pp->GetElement("Parent")->GetDirect();
+ if (pp->GetType() == PDFOBJ_NULL) {
+ break;
+ }
+ }
- return nullptr;
+ return nullptr;
}
FX_BOOL CPDF_PageOrganizer::UpdateReference(CPDF_Object* pObj,
CPDF_Document* pDoc,
- ObjectNumberMap* pObjNumberMap)
-{
- switch (pObj->GetType()) {
- case PDFOBJ_REFERENCE: {
- CPDF_Reference* pReference = (CPDF_Reference*)pObj;
- FX_DWORD newobjnum = GetNewObjId(pDoc, pObjNumberMap, pReference);
- if (newobjnum == 0)
- return FALSE;
- pReference->SetRef(pDoc, newobjnum);
- break;
- }
- case PDFOBJ_DICTIONARY: {
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj;
-
- FX_POSITION pos = pDict->GetStartPos();
- while (pos) {
- CFX_ByteString key("");
- CPDF_Object* pNextObj = pDict->GetNextElement(pos, key);
- if (!FXSYS_strcmp(key, "Parent") ||
- !FXSYS_strcmp(key, "Prev") ||
- !FXSYS_strcmp(key, "First")) {
- continue;
- }
- if (pNextObj) {
- if (!UpdateReference(pNextObj, pDoc, pObjNumberMap))
- pDict->RemoveAt(key);
- } else {
- return FALSE;
- }
- }
- break;
- }
- case PDFOBJ_ARRAY: {
- CPDF_Array* pArray = (CPDF_Array*)pObj;
- FX_DWORD count = pArray->GetCount();
- for (FX_DWORD i = 0; i < count; ++i) {
- CPDF_Object* pNextObj = pArray->GetElement(i);
- if (!pNextObj)
- return FALSE;
- if (!UpdateReference(pNextObj, pDoc, pObjNumberMap))
- return FALSE;
- }
- break;
+ ObjectNumberMap* pObjNumberMap) {
+ switch (pObj->GetType()) {
+ case PDFOBJ_REFERENCE: {
+ CPDF_Reference* pReference = (CPDF_Reference*)pObj;
+ FX_DWORD newobjnum = GetNewObjId(pDoc, pObjNumberMap, pReference);
+ if (newobjnum == 0)
+ return FALSE;
+ pReference->SetRef(pDoc, newobjnum);
+ break;
+ }
+ case PDFOBJ_DICTIONARY: {
+ CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj;
+
+ FX_POSITION pos = pDict->GetStartPos();
+ while (pos) {
+ CFX_ByteString key("");
+ CPDF_Object* pNextObj = pDict->GetNextElement(pos, key);
+ if (!FXSYS_strcmp(key, "Parent") || !FXSYS_strcmp(key, "Prev") ||
+ !FXSYS_strcmp(key, "First")) {
+ continue;
}
- case PDFOBJ_STREAM: {
- CPDF_Stream* pStream = (CPDF_Stream*)pObj;
- CPDF_Dictionary* pDict = pStream->GetDict();
- if (pDict) {
- if (!UpdateReference(pDict, pDoc, pObjNumberMap))
- return FALSE;
- } else {
- return FALSE;
- }
- break;
+ if (pNextObj) {
+ if (!UpdateReference(pNextObj, pDoc, pObjNumberMap))
+ pDict->RemoveAt(key);
+ } else {
+ return FALSE;
}
- default:
- break;
+ }
+ break;
+ }
+ case PDFOBJ_ARRAY: {
+ CPDF_Array* pArray = (CPDF_Array*)pObj;
+ FX_DWORD count = pArray->GetCount();
+ for (FX_DWORD i = 0; i < count; ++i) {
+ CPDF_Object* pNextObj = pArray->GetElement(i);
+ if (!pNextObj)
+ return FALSE;
+ if (!UpdateReference(pNextObj, pDoc, pObjNumberMap))
+ return FALSE;
+ }
+ break;
}
+ case PDFOBJ_STREAM: {
+ CPDF_Stream* pStream = (CPDF_Stream*)pObj;
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ if (pDict) {
+ if (!UpdateReference(pDict, pDoc, pObjNumberMap))
+ return FALSE;
+ } else {
+ return FALSE;
+ }
+ break;
+ }
+ default:
+ break;
+ }
- return TRUE;
+ return TRUE;
}
FX_DWORD CPDF_PageOrganizer::GetNewObjId(CPDF_Document* pDoc,
ObjectNumberMap* pObjNumberMap,
- CPDF_Reference* pRef)
-{
- if (!pRef)
- return 0;
-
- FX_DWORD dwObjnum = pRef->GetRefObjNum();
- FX_DWORD dwNewObjNum = 0;
- const auto it = pObjNumberMap->find(dwObjnum);
- if (it != pObjNumberMap->end())
- dwNewObjNum = it->second;
- if (dwNewObjNum)
- return dwNewObjNum;
-
- CPDF_Object* pDirect = pRef->GetDirect();
- if (!pDirect)
- return 0;
-
- CPDF_Object* pClone = pDirect->Clone();
- if (!pClone)
- return 0;
-
- if (pClone->GetType() == PDFOBJ_DICTIONARY) {
- CPDF_Dictionary* pDictClone = (CPDF_Dictionary*)pClone;
- if (pDictClone->KeyExist("Type")) {
- CFX_ByteString strType = pDictClone->GetString("Type");
- if (!FXSYS_stricmp(strType, "Pages")) {
- pDictClone->Release();
- return 4;
- }
- if (!FXSYS_stricmp(strType, "Page")) {
- pDictClone->Release();
- return 0;
- }
- }
- }
- dwNewObjNum = pDoc->AddIndirectObject(pClone);
- (*pObjNumberMap)[dwObjnum] = dwNewObjNum;
+ CPDF_Reference* pRef) {
+ if (!pRef)
+ return 0;
+
+ FX_DWORD dwObjnum = pRef->GetRefObjNum();
+ FX_DWORD dwNewObjNum = 0;
+ const auto it = pObjNumberMap->find(dwObjnum);
+ if (it != pObjNumberMap->end())
+ dwNewObjNum = it->second;
+ if (dwNewObjNum)
+ return dwNewObjNum;
- if (!UpdateReference(pClone, pDoc, pObjNumberMap)) {
- pClone->Release();
+ CPDF_Object* pDirect = pRef->GetDirect();
+ if (!pDirect)
+ return 0;
+
+ CPDF_Object* pClone = pDirect->Clone();
+ if (!pClone)
+ return 0;
+
+ if (pClone->GetType() == PDFOBJ_DICTIONARY) {
+ CPDF_Dictionary* pDictClone = (CPDF_Dictionary*)pClone;
+ if (pDictClone->KeyExist("Type")) {
+ CFX_ByteString strType = pDictClone->GetString("Type");
+ if (!FXSYS_stricmp(strType, "Pages")) {
+ pDictClone->Release();
+ return 4;
+ }
+ if (!FXSYS_stricmp(strType, "Page")) {
+ pDictClone->Release();
return 0;
+ }
}
- return dwNewObjNum;
+ }
+ dwNewObjNum = pDoc->AddIndirectObject(pClone);
+ (*pObjNumberMap)[dwObjnum] = dwNewObjNum;
+
+ if (!UpdateReference(pClone, pDoc, pObjNumberMap)) {
+ pClone->Release();
+ return 0;
+ }
+ return dwNewObjNum;
}
FPDF_BOOL ParserPageRangeString(CFX_ByteString rangstring,
CFX_WordArray* pageArray,
- int nCount)
-{
- if (rangstring.GetLength() != 0) {
- rangstring.Remove(' ');
- int nLength = rangstring.GetLength();
- CFX_ByteString cbCompareString("0123456789-,");
- for (int i = 0; i < nLength; ++i) {
- if (cbCompareString.Find(rangstring[i]) == -1)
- return FALSE;
+ int nCount) {
+ if (rangstring.GetLength() != 0) {
+ rangstring.Remove(' ');
+ int nLength = rangstring.GetLength();
+ CFX_ByteString cbCompareString("0123456789-,");
+ for (int i = 0; i < nLength; ++i) {
+ if (cbCompareString.Find(rangstring[i]) == -1)
+ return FALSE;
+ }
+ CFX_ByteString cbMidRange;
+ int nStringFrom = 0;
+ int nStringTo = 0;
+ while (nStringTo < nLength) {
+ nStringTo = rangstring.Find(',', nStringFrom);
+ if (nStringTo == -1)
+ nStringTo = nLength;
+ cbMidRange = rangstring.Mid(nStringFrom, nStringTo - nStringFrom);
+ int nMid = cbMidRange.Find('-');
+ if (nMid == -1) {
+ long lPageNum = atol(cbMidRange);
+ if (lPageNum <= 0 || lPageNum > nCount)
+ return FALSE;
+ pageArray->Add((FX_WORD)lPageNum);
+ } else {
+ int nStartPageNum = atol(cbMidRange.Mid(0, nMid));
+ if (nStartPageNum == 0)
+ return FALSE;
+
+ ++nMid;
+ int nEnd = cbMidRange.GetLength() - nMid;
+ if (nEnd == 0)
+ return FALSE;
+
+ int nEndPageNum = atol(cbMidRange.Mid(nMid, nEnd));
+ if (nStartPageNum < 0 || nStartPageNum > nEndPageNum ||
+ nEndPageNum > nCount) {
+ return FALSE;
}
- CFX_ByteString cbMidRange;
- int nStringFrom = 0;
- int nStringTo = 0;
- while (nStringTo < nLength) {
- nStringTo = rangstring.Find(',', nStringFrom);
- if (nStringTo == -1)
- nStringTo = nLength;
- cbMidRange = rangstring.Mid(nStringFrom, nStringTo - nStringFrom);
- int nMid = cbMidRange.Find('-');
- if (nMid == -1) {
- long lPageNum = atol(cbMidRange);
- if (lPageNum <= 0 || lPageNum > nCount)
- return FALSE;
- pageArray->Add((FX_WORD)lPageNum);
- } else {
- int nStartPageNum = atol(cbMidRange.Mid(0, nMid));
- if (nStartPageNum == 0)
- return FALSE;
-
- ++nMid;
- int nEnd = cbMidRange.GetLength() - nMid;
- if (nEnd == 0)
- return FALSE;
-
- int nEndPageNum = atol(cbMidRange.Mid(nMid, nEnd));
- if (nStartPageNum < 0 ||
- nStartPageNum >nEndPageNum ||
- nEndPageNum > nCount) {
- return FALSE;
- }
- for (int i = nStartPageNum; i <= nEndPageNum; ++i) {
- pageArray->Add(i);
- }
- }
- nStringFrom = nStringTo + 1;
+ for (int i = nStartPageNum; i <= nEndPageNum; ++i) {
+ pageArray->Add(i);
}
+ }
+ nStringFrom = nStringTo + 1;
}
- return TRUE;
+ }
+ return TRUE;
}
DLLEXPORT FPDF_BOOL STDCALL FPDF_ImportPages(FPDF_DOCUMENT dest_doc,
FPDF_DOCUMENT src_doc,
FPDF_BYTESTRING pagerange,
- int index)
-{
- if (!dest_doc || !src_doc)
- return FALSE;
-
- CFX_WordArray pageArray;
- CPDF_Document* pSrcDoc = (CPDF_Document*)src_doc;
- int nCount = pSrcDoc->GetPageCount();
- if (pagerange) {
- if (!ParserPageRangeString(pagerange,&pageArray,nCount))
- return FALSE;
- } else {
- for (int i = 1; i <= nCount; ++i) {
- pageArray.Add(i);
- }
+ int index) {
+ if (!dest_doc || !src_doc)
+ return FALSE;
+
+ CFX_WordArray pageArray;
+ CPDF_Document* pSrcDoc = (CPDF_Document*)src_doc;
+ int nCount = pSrcDoc->GetPageCount();
+ if (pagerange) {
+ if (!ParserPageRangeString(pagerange, &pageArray, nCount))
+ return FALSE;
+ } else {
+ for (int i = 1; i <= nCount; ++i) {
+ pageArray.Add(i);
}
+ }
- CPDF_Document* pDestDoc = (CPDF_Document*)dest_doc;
- CPDF_PageOrganizer pageOrg;
+ CPDF_Document* pDestDoc = (CPDF_Document*)dest_doc;
+ CPDF_PageOrganizer pageOrg;
- pageOrg.PDFDocInit(pDestDoc, pSrcDoc);
+ pageOrg.PDFDocInit(pDestDoc, pSrcDoc);
- return pageOrg.ExportPage(pSrcDoc,&pageArray,pDestDoc,index);
+ return pageOrg.ExportPage(pSrcDoc, &pageArray, pDestDoc, index);
}
DLLEXPORT FPDF_BOOL STDCALL FPDF_CopyViewerPreferences(FPDF_DOCUMENT dest_doc,
- FPDF_DOCUMENT src_doc)
-{
- if (!src_doc || !dest_doc)
- return false;
-
- CPDF_Document* pSrcDoc = (CPDF_Document*)src_doc;
- CPDF_Dictionary* pSrcDict = pSrcDoc->GetRoot();
- pSrcDict = pSrcDict->GetDict(FX_BSTRC("ViewerPreferences"));;
- if (!pSrcDict)
- return FALSE;
-
- CPDF_Document* pDstDoc = (CPDF_Document*)dest_doc;
- CPDF_Dictionary* pDstDict = pDstDoc->GetRoot();
- if (!pDstDict)
- return FALSE;
- pDstDict->SetAt(FX_BSTRC("ViewerPreferences"), pSrcDict->Clone(TRUE));
- return TRUE;
+ FPDF_DOCUMENT src_doc) {
+ if (!src_doc || !dest_doc)
+ return false;
+
+ CPDF_Document* pSrcDoc = (CPDF_Document*)src_doc;
+ CPDF_Dictionary* pSrcDict = pSrcDoc->GetRoot();
+ pSrcDict = pSrcDict->GetDict(FX_BSTRC("ViewerPreferences"));
+ ;
+ if (!pSrcDict)
+ return FALSE;
+
+ CPDF_Document* pDstDoc = (CPDF_Document*)dest_doc;
+ CPDF_Dictionary* pDstDict = pDstDoc->GetRoot();
+ if (!pDstDict)
+ return FALSE;
+ pDstDict->SetAt(FX_BSTRC("ViewerPreferences"), pSrcDict->Clone(TRUE));
+ return TRUE;
}
diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp
index ddd6f6e90e..54c9253d2e 100644
--- a/fpdfsdk/src/fpdfsave.cpp
+++ b/fpdfsdk/src/fpdfsave.cpp
@@ -14,80 +14,75 @@
#include <ctime>
#endif
-class CFX_IFileWrite final : public IFX_StreamWrite
-{
-
-public:
- CFX_IFileWrite();
- FX_BOOL Init( FPDF_FILEWRITE * pFileWriteStruct );
- virtual FX_BOOL WriteBlock(const void* pData, size_t size) override;
- virtual void Release() override {}
-
-protected:
- FPDF_FILEWRITE* m_pFileWriteStruct;
+class CFX_IFileWrite final : public IFX_StreamWrite {
+ public:
+ CFX_IFileWrite();
+ FX_BOOL Init(FPDF_FILEWRITE* pFileWriteStruct);
+ virtual FX_BOOL WriteBlock(const void* pData, size_t size) override;
+ virtual void Release() override {}
+
+ protected:
+ FPDF_FILEWRITE* m_pFileWriteStruct;
};
-CFX_IFileWrite::CFX_IFileWrite()
-{
- m_pFileWriteStruct = NULL;
+CFX_IFileWrite::CFX_IFileWrite() {
+ m_pFileWriteStruct = NULL;
}
-FX_BOOL CFX_IFileWrite::Init( FPDF_FILEWRITE * pFileWriteStruct )
-{
- if (!pFileWriteStruct)
- return FALSE;
+FX_BOOL CFX_IFileWrite::Init(FPDF_FILEWRITE* pFileWriteStruct) {
+ if (!pFileWriteStruct)
+ return FALSE;
- m_pFileWriteStruct = pFileWriteStruct;
- return TRUE;
+ m_pFileWriteStruct = pFileWriteStruct;
+ return TRUE;
}
-FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size)
-{
- if (!m_pFileWriteStruct)
- return FALSE;
+FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) {
+ if (!m_pFileWriteStruct)
+ return FALSE;
- m_pFileWriteStruct->WriteBlock( m_pFileWriteStruct, pData, size );
- return TRUE;
+ m_pFileWriteStruct->WriteBlock(m_pFileWriteStruct, pData, size);
+ return TRUE;
}
-FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,FPDF_DWORD flags, FPDF_BOOL bSetVersion,
- int fileVerion)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (!pDoc)
- return 0;
-
- if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY )
- {
- flags = 0;
- }
-
- CPDF_Creator FileMaker(pDoc);
- if(bSetVersion)
- FileMaker.SetFileVersion(fileVerion);
- if(flags == FPDF_REMOVE_SECURITY)
- {
- flags = 0;
- FileMaker.RemoveSecurity();
- }
- CFX_IFileWrite* pStreamWrite = NULL;
- FX_BOOL bRet;
- pStreamWrite = new CFX_IFileWrite;
- pStreamWrite->Init( pFileWrite );
- bRet = FileMaker.Create(pStreamWrite, flags);
- delete pStreamWrite;
- return bRet;
+FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,
+ FPDF_FILEWRITE* pFileWrite,
+ FPDF_DWORD flags,
+ FPDF_BOOL bSetVersion,
+ int fileVerion) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (!pDoc)
+ return 0;
+
+ if (flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY) {
+ flags = 0;
+ }
+
+ CPDF_Creator FileMaker(pDoc);
+ if (bSetVersion)
+ FileMaker.SetFileVersion(fileVerion);
+ if (flags == FPDF_REMOVE_SECURITY) {
+ flags = 0;
+ FileMaker.RemoveSecurity();
+ }
+ CFX_IFileWrite* pStreamWrite = NULL;
+ FX_BOOL bRet;
+ pStreamWrite = new CFX_IFileWrite;
+ pStreamWrite->Init(pFileWrite);
+ bRet = FileMaker.Create(pStreamWrite, flags);
+ delete pStreamWrite;
+ return bRet;
}
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
- FPDF_DWORD flags )
-{
- return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE , 0);
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(FPDF_DOCUMENT document,
+ FPDF_FILEWRITE* pFileWrite,
+ FPDF_DWORD flags) {
+ return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE, 0);
}
-
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
- FPDF_DWORD flags, int fileVersion)
-{
- return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE , fileVersion);
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,
+ FPDF_FILEWRITE* pFileWrite,
+ FPDF_DWORD flags,
+ int fileVersion) {
+ return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE, fileVersion);
}
diff --git a/fpdfsdk/src/fpdftext.cpp b/fpdfsdk/src/fpdftext.cpp
index 4a6571531c..0761ffa91a 100644
--- a/fpdfsdk/src/fpdftext.cpp
+++ b/fpdfsdk/src/fpdftext.cpp
@@ -12,236 +12,276 @@
#include <tchar.h>
#endif
- // jabdelmalek: commented out to build on Linux. Not used.
- // extern HANDLE g_hModule;
-
-DLLEXPORT FPDF_TEXTPAGE STDCALL FPDFText_LoadPage(FPDF_PAGE page)
-{
- if (!page) return NULL;
- IPDF_TextPage* textpage=NULL;
- CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument);
- textpage=IPDF_TextPage::CreateTextPage((CPDF_Page*)page,viewRef.IsDirectionR2L());
- textpage->ParseTextPage();
- return textpage;
-}
-DLLEXPORT void STDCALL FPDFText_ClosePage(FPDF_TEXTPAGE text_page)
-{
- delete (IPDF_TextPage*)text_page;
-}
-DLLEXPORT int STDCALL FPDFText_CountChars(FPDF_TEXTPAGE text_page)
-{
- if (!text_page) return -1;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
- return textpage->CountChars();
-}
-DLLEXPORT unsigned int STDCALL FPDFText_GetUnicode(FPDF_TEXTPAGE text_page, int index)
-{
- if (!text_page) return -1;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
-
- if (index<0 || index>=textpage->CountChars()) return 0;
+// jabdelmalek: commented out to build on Linux. Not used.
+// extern HANDLE g_hModule;
- FPDF_CHAR_INFO charinfo;
- textpage->GetCharInfo(index,charinfo);
- return charinfo.m_Unicode;
+DLLEXPORT FPDF_TEXTPAGE STDCALL FPDFText_LoadPage(FPDF_PAGE page) {
+ if (!page)
+ return NULL;
+ IPDF_TextPage* textpage = NULL;
+ CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument);
+ textpage =
+ IPDF_TextPage::CreateTextPage((CPDF_Page*)page, viewRef.IsDirectionR2L());
+ textpage->ParseTextPage();
+ return textpage;
}
-DLLEXPORT double STDCALL FPDFText_GetFontSize(FPDF_TEXTPAGE text_page, int index)
-{
- if (!text_page) return 0;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
+DLLEXPORT void STDCALL FPDFText_ClosePage(FPDF_TEXTPAGE text_page) {
+ delete (IPDF_TextPage*)text_page;
+}
+DLLEXPORT int STDCALL FPDFText_CountChars(FPDF_TEXTPAGE text_page) {
+ if (!text_page)
+ return -1;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+ return textpage->CountChars();
+}
+DLLEXPORT unsigned int STDCALL FPDFText_GetUnicode(FPDF_TEXTPAGE text_page,
+ int index) {
+ if (!text_page)
+ return -1;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
- if (index<0 || index>=textpage->CountChars()) return 0;
+ if (index < 0 || index >= textpage->CountChars())
+ return 0;
- FPDF_CHAR_INFO charinfo;
- textpage->GetCharInfo(index,charinfo);
- return charinfo.m_FontSize;
+ FPDF_CHAR_INFO charinfo;
+ textpage->GetCharInfo(index, charinfo);
+ return charinfo.m_Unicode;
}
+DLLEXPORT double STDCALL FPDFText_GetFontSize(FPDF_TEXTPAGE text_page,
+ int index) {
+ if (!text_page)
+ return 0;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
-DLLEXPORT void STDCALL FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, int index,double* left,
- double* right, double* bottom, double* top)
-{
- if (!text_page) return;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
+ if (index < 0 || index >= textpage->CountChars())
+ return 0;
- if (index<0 || index>=textpage->CountChars()) return ;
- FPDF_CHAR_INFO charinfo;
- textpage->GetCharInfo(index,charinfo);
- *left=charinfo.m_CharBox.left;
- *right=charinfo.m_CharBox.right;
- *bottom=charinfo.m_CharBox.bottom;
- *top=charinfo.m_CharBox.top;
+ FPDF_CHAR_INFO charinfo;
+ textpage->GetCharInfo(index, charinfo);
+ return charinfo.m_FontSize;
}
-//select
-DLLEXPORT int STDCALL FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,double x,double y,double xTorelance,double yTorelance)
-{
- if (!text_page) return -3;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
- return textpage->GetIndexAtPos((FX_FLOAT)x,(FX_FLOAT)y,(FX_FLOAT)xTorelance,(FX_FLOAT)yTorelance);
+DLLEXPORT void STDCALL FPDFText_GetCharBox(FPDF_TEXTPAGE text_page,
+ int index,
+ double* left,
+ double* right,
+ double* bottom,
+ double* top) {
+ if (!text_page)
+ return;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+
+ if (index < 0 || index >= textpage->CountChars())
+ return;
+ FPDF_CHAR_INFO charinfo;
+ textpage->GetCharInfo(index, charinfo);
+ *left = charinfo.m_CharBox.left;
+ *right = charinfo.m_CharBox.right;
+ *bottom = charinfo.m_CharBox.bottom;
+ *top = charinfo.m_CharBox.top;
}
-DLLEXPORT int STDCALL FPDFText_GetText(FPDF_TEXTPAGE text_page,int start,int count,unsigned short* result)
-{
- if (!text_page) return 0;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
+// select
+DLLEXPORT int STDCALL FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,
+ double x,
+ double y,
+ double xTorelance,
+ double yTorelance) {
+ if (!text_page)
+ return -3;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+ return textpage->GetIndexAtPos((FX_FLOAT)x, (FX_FLOAT)y, (FX_FLOAT)xTorelance,
+ (FX_FLOAT)yTorelance);
+}
- if (start>=textpage->CountChars()) return 0;
+DLLEXPORT int STDCALL FPDFText_GetText(FPDF_TEXTPAGE text_page,
+ int start,
+ int count,
+ unsigned short* result) {
+ if (!text_page)
+ return 0;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
- CFX_WideString str=textpage->GetPageText(start,count);
- if(str.GetLength()>count)
- str = str.Left(count);
+ if (start >= textpage->CountChars())
+ return 0;
- CFX_ByteString cbUTF16str = str.UTF16LE_Encode();
- FXSYS_memcpy(result,cbUTF16str.GetBuffer(cbUTF16str.GetLength()),cbUTF16str.GetLength());
- cbUTF16str.ReleaseBuffer(cbUTF16str.GetLength());
+ CFX_WideString str = textpage->GetPageText(start, count);
+ if (str.GetLength() > count)
+ str = str.Left(count);
- return cbUTF16str.GetLength()/sizeof(unsigned short);
-}
+ CFX_ByteString cbUTF16str = str.UTF16LE_Encode();
+ FXSYS_memcpy(result, cbUTF16str.GetBuffer(cbUTF16str.GetLength()),
+ cbUTF16str.GetLength());
+ cbUTF16str.ReleaseBuffer(cbUTF16str.GetLength());
-DLLEXPORT int STDCALL FPDFText_CountRects(FPDF_TEXTPAGE text_page,int start,int count)
-{
- if (!text_page) return 0;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
- return textpage->CountRects(start,count);
+ return cbUTF16str.GetLength() / sizeof(unsigned short);
+}
+DLLEXPORT int STDCALL FPDFText_CountRects(FPDF_TEXTPAGE text_page,
+ int start,
+ int count) {
+ if (!text_page)
+ return 0;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+ return textpage->CountRects(start, count);
}
-DLLEXPORT void STDCALL FPDFText_GetRect(FPDF_TEXTPAGE text_page,int rect_index, double* left,double* top,
- double* right, double* bottom)
-{
- if (!text_page) return;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
- CFX_FloatRect rect;
- textpage->GetRect(rect_index,rect.left,rect.top,rect.right,rect.bottom);
- *left=rect.left;
- *top=rect.top;
- *right=rect.right;
- *bottom=rect.bottom;
+DLLEXPORT void STDCALL FPDFText_GetRect(FPDF_TEXTPAGE text_page,
+ int rect_index,
+ double* left,
+ double* top,
+ double* right,
+ double* bottom) {
+ if (!text_page)
+ return;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+ CFX_FloatRect rect;
+ textpage->GetRect(rect_index, rect.left, rect.top, rect.right, rect.bottom);
+ *left = rect.left;
+ *top = rect.top;
+ *right = rect.right;
+ *bottom = rect.bottom;
}
-DLLEXPORT int STDCALL FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,double left, double top,
- double right, double bottom,unsigned short* buffer,int buflen)
-{
- if (!text_page) return 0;
- IPDF_TextPage* textpage=(IPDF_TextPage*)text_page;
- CFX_FloatRect rect((FX_FLOAT)left,(FX_FLOAT)bottom,(FX_FLOAT)right,(FX_FLOAT)top);
- CFX_WideString str=textpage->GetTextByRect(rect);
-
- if (buflen<=0 || buffer==NULL)
- {
- return str.GetLength();
- }
+DLLEXPORT int STDCALL FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,
+ double left,
+ double top,
+ double right,
+ double bottom,
+ unsigned short* buffer,
+ int buflen) {
+ if (!text_page)
+ return 0;
+ IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
+ CFX_FloatRect rect((FX_FLOAT)left, (FX_FLOAT)bottom, (FX_FLOAT)right,
+ (FX_FLOAT)top);
+ CFX_WideString str = textpage->GetTextByRect(rect);
- CFX_ByteString cbUTF16Str = str.UTF16LE_Encode();
- int len = cbUTF16Str.GetLength()/sizeof(unsigned short);
- int size = buflen > len ? len : buflen;
- FXSYS_memcpy(buffer,cbUTF16Str.GetBuffer(size*sizeof(unsigned short)),size*sizeof(unsigned short));
- cbUTF16Str.ReleaseBuffer(size*sizeof(unsigned short));
+ if (buflen <= 0 || buffer == NULL) {
+ return str.GetLength();
+ }
- return size;
+ CFX_ByteString cbUTF16Str = str.UTF16LE_Encode();
+ int len = cbUTF16Str.GetLength() / sizeof(unsigned short);
+ int size = buflen > len ? len : buflen;
+ FXSYS_memcpy(buffer, cbUTF16Str.GetBuffer(size * sizeof(unsigned short)),
+ size * sizeof(unsigned short));
+ cbUTF16Str.ReleaseBuffer(size * sizeof(unsigned short));
+ return size;
}
-//Search
+// Search
//-1 for end
-DLLEXPORT FPDF_SCHHANDLE STDCALL FPDFText_FindStart(FPDF_TEXTPAGE text_page,FPDF_WIDESTRING findwhat,unsigned long flags,int start_index)
-{
- if (!text_page) return NULL;
- IPDF_TextPageFind* textpageFind=NULL;
- textpageFind=IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page);
- FX_STRSIZE len = CFX_WideString::WStringLength(findwhat);
- textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len),flags,start_index);
- return textpageFind;
-}
-DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindNext(FPDF_SCHHANDLE handle)
-{
- if (!handle) return FALSE;
- IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle;
- return textpageFind->FindNext();
-}
-DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindPrev(FPDF_SCHHANDLE handle)
-{
- if (!handle) return FALSE;
- IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle;
- return textpageFind->FindPrev();
-}
-DLLEXPORT int STDCALL FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle)
-{
- if (!handle) return 0;
- IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle;
- return textpageFind->GetCurOrder();
-}
-DLLEXPORT int STDCALL FPDFText_GetSchCount(FPDF_SCHHANDLE handle)
-{
- if (!handle) return 0;
- IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle;
- return textpageFind->GetMatchedCount();
-}
-DLLEXPORT void STDCALL FPDFText_FindClose(FPDF_SCHHANDLE handle)
-{
- if (!handle) return;
- IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle;
- delete textpageFind;
- handle=NULL;
-}
-
-//web link
-DLLEXPORT FPDF_PAGELINK STDCALL FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page)
-{
- if (!text_page) return NULL;
- IPDF_LinkExtract* pageLink=NULL;
- pageLink=IPDF_LinkExtract::CreateLinkExtract();
- pageLink->ExtractLinks((IPDF_TextPage*)text_page);
- return pageLink;
-}
-DLLEXPORT int STDCALL FPDFLink_CountWebLinks(FPDF_PAGELINK link_page)
-{
- if (!link_page) return 0;
- IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page;
- return pageLink->CountLinks();
-}
-DLLEXPORT int STDCALL FPDFLink_GetURL(FPDF_PAGELINK link_page,int link_index, unsigned short* buffer,int buflen)
-{
- if (!link_page) return 0;
- IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page;
- CFX_WideString url=pageLink->GetURL(link_index);
-
- CFX_ByteString cbUTF16URL = url.UTF16LE_Encode();
- int len= cbUTF16URL.GetLength()/sizeof(unsigned short);
- if (buffer==NULL || buflen<=0)
- return len;
- int size=len<buflen ? len :buflen;
- if (size>0)
- {
- FXSYS_memcpy(buffer,cbUTF16URL.GetBuffer(size*sizeof(unsigned short)),size*sizeof(unsigned short));
- cbUTF16URL.ReleaseBuffer(size*sizeof(unsigned short));
- }
- return size;
-}
-DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page,int link_index)
-{
- if (!link_page) return 0;
- IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page;
- CFX_RectArray rectArray;
- pageLink->GetRects(link_index,rectArray);
- return rectArray.GetSize();
-}
-DLLEXPORT void STDCALL FPDFLink_GetRect(FPDF_PAGELINK link_page,int link_index, int rect_index, double* left,
- double* top,double* right, double* bottom)
-{
- if (!link_page) return;
- IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page;
- CFX_RectArray rectArray;
- pageLink->GetRects(link_index,rectArray);
- if (rect_index >= 0 && rect_index < rectArray.GetSize()) {
- CFX_FloatRect rect=rectArray.GetAt(rect_index);
- *left=rect.left;
- *right=rect.right;
- *top=rect.top;
- *bottom=rect.bottom;
- }
-}
-DLLEXPORT void STDCALL FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page)
-{
- delete (IPDF_LinkExtract*)link_page;
+DLLEXPORT FPDF_SCHHANDLE STDCALL FPDFText_FindStart(FPDF_TEXTPAGE text_page,
+ FPDF_WIDESTRING findwhat,
+ unsigned long flags,
+ int start_index) {
+ if (!text_page)
+ return NULL;
+ IPDF_TextPageFind* textpageFind = NULL;
+ textpageFind = IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page);
+ FX_STRSIZE len = CFX_WideString::WStringLength(findwhat);
+ textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len), flags,
+ start_index);
+ return textpageFind;
+}
+DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindNext(FPDF_SCHHANDLE handle) {
+ if (!handle)
+ return FALSE;
+ IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
+ return textpageFind->FindNext();
+}
+DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindPrev(FPDF_SCHHANDLE handle) {
+ if (!handle)
+ return FALSE;
+ IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
+ return textpageFind->FindPrev();
+}
+DLLEXPORT int STDCALL FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle) {
+ if (!handle)
+ return 0;
+ IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
+ return textpageFind->GetCurOrder();
}
+DLLEXPORT int STDCALL FPDFText_GetSchCount(FPDF_SCHHANDLE handle) {
+ if (!handle)
+ return 0;
+ IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
+ return textpageFind->GetMatchedCount();
+}
+DLLEXPORT void STDCALL FPDFText_FindClose(FPDF_SCHHANDLE handle) {
+ if (!handle)
+ return;
+ IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
+ delete textpageFind;
+ handle = NULL;
+}
+
+// web link
+DLLEXPORT FPDF_PAGELINK STDCALL FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page) {
+ if (!text_page)
+ return NULL;
+ IPDF_LinkExtract* pageLink = NULL;
+ pageLink = IPDF_LinkExtract::CreateLinkExtract();
+ pageLink->ExtractLinks((IPDF_TextPage*)text_page);
+ return pageLink;
+}
+DLLEXPORT int STDCALL FPDFLink_CountWebLinks(FPDF_PAGELINK link_page) {
+ if (!link_page)
+ return 0;
+ IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
+ return pageLink->CountLinks();
+}
+DLLEXPORT int STDCALL FPDFLink_GetURL(FPDF_PAGELINK link_page,
+ int link_index,
+ unsigned short* buffer,
+ int buflen) {
+ if (!link_page)
+ return 0;
+ IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
+ CFX_WideString url = pageLink->GetURL(link_index);
+ CFX_ByteString cbUTF16URL = url.UTF16LE_Encode();
+ int len = cbUTF16URL.GetLength() / sizeof(unsigned short);
+ if (buffer == NULL || buflen <= 0)
+ return len;
+ int size = len < buflen ? len : buflen;
+ if (size > 0) {
+ FXSYS_memcpy(buffer, cbUTF16URL.GetBuffer(size * sizeof(unsigned short)),
+ size * sizeof(unsigned short));
+ cbUTF16URL.ReleaseBuffer(size * sizeof(unsigned short));
+ }
+ return size;
+}
+DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page,
+ int link_index) {
+ if (!link_page)
+ return 0;
+ IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
+ CFX_RectArray rectArray;
+ pageLink->GetRects(link_index, rectArray);
+ return rectArray.GetSize();
+}
+DLLEXPORT void STDCALL FPDFLink_GetRect(FPDF_PAGELINK link_page,
+ int link_index,
+ int rect_index,
+ double* left,
+ double* top,
+ double* right,
+ double* bottom) {
+ if (!link_page)
+ return;
+ IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
+ CFX_RectArray rectArray;
+ pageLink->GetRects(link_index, rectArray);
+ if (rect_index >= 0 && rect_index < rectArray.GetSize()) {
+ CFX_FloatRect rect = rectArray.GetAt(rect_index);
+ *left = rect.left;
+ *right = rect.right;
+ *top = rect.top;
+ *bottom = rect.bottom;
+ }
+}
+DLLEXPORT void STDCALL FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page) {
+ delete (IPDF_LinkExtract*)link_page;
+}
diff --git a/fpdfsdk/src/fpdftext_embeddertest.cpp b/fpdfsdk/src/fpdftext_embeddertest.cpp
index 8384a41944..dd3737a40e 100644
--- a/fpdfsdk/src/fpdftext_embeddertest.cpp
+++ b/fpdfsdk/src/fpdftext_embeddertest.cpp
@@ -25,8 +25,7 @@ static bool check_unsigned_shorts(const char* expected,
} // namespace
-class FPDFTextEmbeddertest : public EmbedderTest {
-};
+class FPDFTextEmbeddertest : public EmbedderTest {};
TEST_F(FPDFTextEmbeddertest, Text) {
EXPECT_TRUE(OpenDocument("testing/resources/hello_world.pdf"));
@@ -63,18 +62,14 @@ TEST_F(FPDFTextEmbeddertest, Text) {
EXPECT_NEAR(49.844, bottom, 0.001);
EXPECT_NEAR(55.520, top, 0.001);
- EXPECT_EQ(4, FPDFText_GetCharIndexAtPos(
- textpage, 42.0, 50.0, 1.0, 1.0));
- EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(
- textpage, 0.0, 0.0, 1.0, 1.0));
- EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(
- textpage, 199.0, 199.0, 1.0, 1.0));
+ EXPECT_EQ(4, FPDFText_GetCharIndexAtPos(textpage, 42.0, 50.0, 1.0, 1.0));
+ EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, 0.0, 0.0, 1.0, 1.0));
+ EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, 199.0, 199.0, 1.0, 1.0));
// Test out of range indicies.
- EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(
- textpage, 42.0, 10000000.0, 1.0, 1.0));
- EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(
- textpage, -1.0, 50.0, 1.0, 1.0));
+ EXPECT_EQ(-1,
+ FPDFText_GetCharIndexAtPos(textpage, 42.0, 10000000.0, 1.0, 1.0));
+ EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, -1.0, 50.0, 1.0, 1.0));
// Count does not include the terminating NUL in the string literal.
EXPECT_EQ(2, FPDFText_CountRects(textpage, 0, sizeof(expected) - 1));
@@ -110,25 +105,24 @@ TEST_F(FPDFTextEmbeddertest, Text) {
EXPECT_EQ(0.0, bottom);
EXPECT_EQ(0.0, top);
- EXPECT_EQ(9, FPDFText_GetBoundedText(
- textpage, 41.0, 56.0, 82.0, 48.0, 0, 0));
+ EXPECT_EQ(9, FPDFText_GetBoundedText(textpage, 41.0, 56.0, 82.0, 48.0, 0, 0));
// Extract starting at character 4 as above.
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(1, FPDFText_GetBoundedText(
- textpage, 41.0, 56.0, 82.0, 48.0, fixed_buffer, 1));
+ EXPECT_EQ(1, FPDFText_GetBoundedText(textpage, 41.0, 56.0, 82.0, 48.0,
+ fixed_buffer, 1));
EXPECT_TRUE(check_unsigned_shorts(expected + 4, fixed_buffer, 1));
EXPECT_EQ(0xbdbd, fixed_buffer[1]);
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(9, FPDFText_GetBoundedText(
- textpage, 41.0, 56.0, 82.0, 48.0, fixed_buffer, 9));
+ EXPECT_EQ(9, FPDFText_GetBoundedText(textpage, 41.0, 56.0, 82.0, 48.0,
+ fixed_buffer, 9));
EXPECT_TRUE(check_unsigned_shorts(expected + 4, fixed_buffer, 9));
EXPECT_EQ(0xbdbd, fixed_buffer[9]);
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(10, FPDFText_GetBoundedText(
- textpage, 41.0, 56.0, 82.0, 48.0, fixed_buffer, 128));
+ EXPECT_EQ(10, FPDFText_GetBoundedText(textpage, 41.0, 56.0, 82.0, 48.0,
+ fixed_buffer, 128));
EXPECT_TRUE(check_unsigned_shorts(expected + 4, fixed_buffer, 9));
EXPECT_EQ(0u, fixed_buffer[9]);
EXPECT_EQ(0xbdbd, fixed_buffer[10]);
@@ -146,10 +140,10 @@ TEST_F(FPDFTextEmbeddertest, TextSearch) {
EXPECT_NE(nullptr, textpage);
// Avoid issues with system wchar_t width vs. FPDF_WideString.
- const unsigned short nope[] = { 'n', 'o', 'p', 'e', '\0' };
- const unsigned short world[] = { 'w', 'o', 'r', 'l', 'd', '\0' };
- const unsigned short world_caps[] = { 'W', 'O', 'R', 'L', 'D', '\0' };
- const unsigned short world_substr[] = { 'o', 'r', 'l', 'd', '\0' };
+ const unsigned short nope[] = {'n', 'o', 'p', 'e', '\0'};
+ const unsigned short world[] = {'w', 'o', 'r', 'l', 'd', '\0'};
+ const unsigned short world_caps[] = {'W', 'O', 'R', 'L', 'D', '\0'};
+ const unsigned short world_substr[] = {'o', 'r', 'l', 'd', '\0'};
// No occurences of "nope" in test page.
FPDF_SCHHANDLE search = FPDFText_FindStart(textpage, nope, 0, 0);
@@ -203,8 +197,8 @@ TEST_F(FPDFTextEmbeddertest, TextSearch) {
FPDFText_FindClose(search);
// Exact search unaffected by case sensitiity and whole word flags.
- search = FPDFText_FindStart(
- textpage, world, FPDF_MATCHCASE | FPDF_MATCHWHOLEWORD, 0);
+ search = FPDFText_FindStart(textpage, world,
+ FPDF_MATCHCASE | FPDF_MATCHWHOLEWORD, 0);
EXPECT_NE(nullptr, search);
EXPECT_TRUE(FPDFText_FindNext(search));
EXPECT_EQ(7, FPDFText_GetSchResultIndex(search));
@@ -293,27 +287,28 @@ TEST_F(FPDFTextEmbeddertest, WebLinks) {
// Check buffer that doesn't have space for a terminating NUL.
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(sizeof(expected_url) - 1, FPDFLink_GetURL(
- pagelink, 0, fixed_buffer, sizeof(expected_url) - 1));
- EXPECT_TRUE(check_unsigned_shorts(
- expected_url, fixed_buffer, sizeof(expected_url) - 1));
+ EXPECT_EQ(
+ sizeof(expected_url) - 1,
+ FPDFLink_GetURL(pagelink, 0, fixed_buffer, sizeof(expected_url) - 1));
+ EXPECT_TRUE(check_unsigned_shorts(expected_url, fixed_buffer,
+ sizeof(expected_url) - 1));
EXPECT_EQ(0xbdbd, fixed_buffer[sizeof(expected_url) - 1]);
// Retreive link with exactly-sized buffer.
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(sizeof(expected_url), FPDFLink_GetURL(
- pagelink, 0, fixed_buffer, sizeof(expected_url)));
- EXPECT_TRUE(check_unsigned_shorts(
- expected_url, fixed_buffer, sizeof(expected_url)));
+ EXPECT_EQ(sizeof(expected_url),
+ FPDFLink_GetURL(pagelink, 0, fixed_buffer, sizeof(expected_url)));
+ EXPECT_TRUE(
+ check_unsigned_shorts(expected_url, fixed_buffer, sizeof(expected_url)));
EXPECT_EQ(0u, fixed_buffer[sizeof(expected_url) - 1]);
EXPECT_EQ(0xbdbd, fixed_buffer[sizeof(expected_url)]);
// Retreive link with ample-sized-buffer.
memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
- EXPECT_EQ(sizeof(expected_url), FPDFLink_GetURL(
- pagelink, 0, fixed_buffer, 128));
- EXPECT_TRUE(check_unsigned_shorts(
- expected_url, fixed_buffer, sizeof(expected_url)));
+ EXPECT_EQ(sizeof(expected_url),
+ FPDFLink_GetURL(pagelink, 0, fixed_buffer, 128));
+ EXPECT_TRUE(
+ check_unsigned_shorts(expected_url, fixed_buffer, sizeof(expected_url)));
EXPECT_EQ(0u, fixed_buffer[sizeof(expected_url) - 1]);
EXPECT_EQ(0xbdbd, fixed_buffer[sizeof(expected_url)]);
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 9edd5d90ec..a419749e8e 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -15,54 +15,50 @@
#include "../include/fsdk_mgr.h"
#include "../include/fsdk_rendercontext.h"
-CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess)
-{
- if (pFileAccess)
- m_FileAccess = *pFileAccess;
-}
-
-FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
-{
- if (offset < 0) {
- return FALSE;
- }
- FX_SAFE_FILESIZE newPos = pdfium::base::checked_cast<FX_FILESIZE, size_t>(size);
- newPos += offset;
- if (!newPos.IsValid() || newPos.ValueOrDie() > m_FileAccess.m_FileLen) {
- return FALSE;
- }
- return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, offset,(uint8_t*) buffer, size);
-}
-
-//0 bit: FPDF_POLICY_MACHINETIME_ACCESS
+CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) {
+ if (pFileAccess)
+ m_FileAccess = *pFileAccess;
+}
+
+FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer,
+ FX_FILESIZE offset,
+ size_t size) {
+ if (offset < 0) {
+ return FALSE;
+ }
+ FX_SAFE_FILESIZE newPos =
+ pdfium::base::checked_cast<FX_FILESIZE, size_t>(size);
+ newPos += offset;
+ if (!newPos.IsValid() || newPos.ValueOrDie() > m_FileAccess.m_FileLen) {
+ return FALSE;
+ }
+ return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, offset, (uint8_t*)buffer,
+ size);
+}
+
+// 0 bit: FPDF_POLICY_MACHINETIME_ACCESS
static FX_DWORD foxit_sandbox_policy = 0xFFFFFFFF;
-void FSDK_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable)
-{
- switch(policy)
- {
- case FPDF_POLICY_MACHINETIME_ACCESS:
- {
- if(enable)
- foxit_sandbox_policy |= 0x01;
- else
- foxit_sandbox_policy &= 0xFFFFFFFE;
- }
- break;
+void FSDK_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable) {
+ switch (policy) {
+ case FPDF_POLICY_MACHINETIME_ACCESS: {
+ if (enable)
+ foxit_sandbox_policy |= 0x01;
+ else
+ foxit_sandbox_policy &= 0xFFFFFFFE;
+ } break;
default:
- break;
- }
+ break;
+ }
}
-FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy)
-{
- switch(policy)
- {
+FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy) {
+ switch (policy) {
case FPDF_POLICY_MACHINETIME_ACCESS:
- return (foxit_sandbox_policy & 0x01) ? TRUE : FALSE;
+ return (foxit_sandbox_policy & 0x01) ? TRUE : FALSE;
default:
- return FALSE;
- }
+ return FALSE;
+ }
}
#ifndef _T
@@ -72,248 +68,247 @@ FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy)
CCodec_ModuleMgr* g_pCodecModule = nullptr;
#if _FX_OS_ == _FX_LINUX_EMBEDDED_
-class CFontMapper : public IPDF_FontMapper
-{
-public:
- CFontMapper();
- virtual ~CFontMapper();
-
- virtual FT_Face FindSubstFont(
- CPDF_Document* pDoc, // [IN] The PDF document
- const CFX_ByteString& face_name, // [IN] Original name
- FX_BOOL bTrueType, // [IN] TrueType or Type1
- FX_DWORD flags, // [IN] PDF font flags (see PDF Reference section 5.7.1)
- int font_weight, // [IN] original font weight. 0 for not specified
- int CharsetCP, // [IN] code page for charset (see Win32 GetACP())
- FX_BOOL bVertical,
- CPDF_SubstFont* pSubstFont // [OUT] Subst font data
- );
-
- FT_Face m_SysFace;
+class CFontMapper : public IPDF_FontMapper {
+ public:
+ CFontMapper();
+ virtual ~CFontMapper();
+
+ virtual FT_Face FindSubstFont(
+ CPDF_Document* pDoc, // [IN] The PDF document
+ const CFX_ByteString& face_name, // [IN] Original name
+ FX_BOOL bTrueType, // [IN] TrueType or Type1
+ FX_DWORD flags, // [IN] PDF font flags (see PDF Reference section 5.7.1)
+ int font_weight, // [IN] original font weight. 0 for not specified
+ int CharsetCP, // [IN] code page for charset (see Win32 GetACP())
+ FX_BOOL bVertical,
+ CPDF_SubstFont* pSubstFont // [OUT] Subst font data
+ );
+
+ FT_Face m_SysFace;
};
CFontMapper* g_pFontMapper = NULL;
-#endif // #if _FX_OS_ == _FX_LINUX_EMBEDDED_
-
-DLLEXPORT void STDCALL FPDF_InitLibrary()
-{
- g_pCodecModule = new CCodec_ModuleMgr();
-
- CFX_GEModule::Create();
- CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
-
- CPDF_ModuleMgr::Create();
- CPDF_ModuleMgr::Get()->SetCodecModule(g_pCodecModule);
- CPDF_ModuleMgr::Get()->InitPageModule();
- CPDF_ModuleMgr::Get()->InitRenderModule();
- CPDF_ModuleMgr * pModuleMgr = CPDF_ModuleMgr::Get();
- if ( pModuleMgr )
- {
- pModuleMgr->LoadEmbeddedGB1CMaps();
- pModuleMgr->LoadEmbeddedJapan1CMaps();
- pModuleMgr->LoadEmbeddedCNS1CMaps();
- pModuleMgr->LoadEmbeddedKorea1CMaps();
- }
-}
+#endif // #if _FX_OS_ == _FX_LINUX_EMBEDDED_
+
+DLLEXPORT void STDCALL FPDF_InitLibrary() {
+ g_pCodecModule = new CCodec_ModuleMgr();
+ CFX_GEModule::Create();
+ CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
-DLLEXPORT void STDCALL FPDF_DestroyLibrary()
-{
+ CPDF_ModuleMgr::Create();
+ CPDF_ModuleMgr::Get()->SetCodecModule(g_pCodecModule);
+ CPDF_ModuleMgr::Get()->InitPageModule();
+ CPDF_ModuleMgr::Get()->InitRenderModule();
+ CPDF_ModuleMgr* pModuleMgr = CPDF_ModuleMgr::Get();
+ if (pModuleMgr) {
+ pModuleMgr->LoadEmbeddedGB1CMaps();
+ pModuleMgr->LoadEmbeddedJapan1CMaps();
+ pModuleMgr->LoadEmbeddedCNS1CMaps();
+ pModuleMgr->LoadEmbeddedKorea1CMaps();
+ }
+}
+DLLEXPORT void STDCALL FPDF_DestroyLibrary() {
#if _FX_OS_ == _FX_LINUX_EMBEDDED_
- delete g_pFontMapper;
- g_pFontMapper = nullptr;
+ delete g_pFontMapper;
+ g_pFontMapper = nullptr;
#endif
- CPDF_ModuleMgr::Destroy();
- CFX_GEModule::Destroy();
- delete g_pCodecModule;
- g_pCodecModule = nullptr;
+ CPDF_ModuleMgr::Destroy();
+ CFX_GEModule::Destroy();
+ delete g_pCodecModule;
+ g_pCodecModule = nullptr;
}
#ifndef _WIN32
int g_LastError;
-void SetLastError(int err)
-{
- g_LastError = err;
+void SetLastError(int err) {
+ g_LastError = err;
}
-int GetLastError()
-{
- return g_LastError;
+int GetLastError() {
+ return g_LastError;
}
#endif
-void ProcessParseError(FX_DWORD err_code)
-{
- // Translate FPDFAPI error code to FPDFVIEW error code
- switch (err_code) {
- case PDFPARSE_ERROR_FILE:
- err_code = FPDF_ERR_FILE;
- break;
- case PDFPARSE_ERROR_FORMAT:
- err_code = FPDF_ERR_FORMAT;
- break;
- case PDFPARSE_ERROR_PASSWORD:
- err_code = FPDF_ERR_PASSWORD;
- break;
- case PDFPARSE_ERROR_HANDLER:
- err_code = FPDF_ERR_SECURITY;
- break;
- }
- SetLastError(err_code);
+void ProcessParseError(FX_DWORD err_code) {
+ // Translate FPDFAPI error code to FPDFVIEW error code
+ switch (err_code) {
+ case PDFPARSE_ERROR_FILE:
+ err_code = FPDF_ERR_FILE;
+ break;
+ case PDFPARSE_ERROR_FORMAT:
+ err_code = FPDF_ERR_FORMAT;
+ break;
+ case PDFPARSE_ERROR_PASSWORD:
+ err_code = FPDF_ERR_PASSWORD;
+ break;
+ case PDFPARSE_ERROR_HANDLER:
+ err_code = FPDF_ERR_SECURITY;
+ break;
+ }
+ SetLastError(err_code);
+}
+
+DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
+ FPDF_BOOL enable) {
+ return FSDK_SetSandBoxPolicy(policy, enable);
+}
+
+DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
+ FPDF_BYTESTRING password) {
+ CPDF_Parser* pParser = new CPDF_Parser;
+ pParser->SetPassword(password);
+
+ FX_DWORD err_code = pParser->StartParse((const FX_CHAR*)file_path);
+ if (err_code) {
+ delete pParser;
+ ProcessParseError(err_code);
+ return NULL;
+ }
+ return pParser->GetDocument();
}
-DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable)
-{
- return FSDK_SetSandBoxPolicy(policy, enable);
-}
+extern void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code);
-DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password)
-{
- CPDF_Parser* pParser = new CPDF_Parser;
- pParser->SetPassword(password);
+class CMemFile final : public IFX_FileRead {
+ public:
+ CMemFile(uint8_t* pBuf, FX_FILESIZE size) : m_pBuf(pBuf), m_size(size) {}
- FX_DWORD err_code = pParser->StartParse((const FX_CHAR*)file_path);
- if (err_code) {
- delete pParser;
- ProcessParseError(err_code);
- return NULL;
- }
- return pParser->GetDocument();
-}
-
-extern void CheckUnSupportError(CPDF_Document * pDoc, FX_DWORD err_code);
-
-class CMemFile final: public IFX_FileRead
-{
-public:
- CMemFile(uint8_t* pBuf, FX_FILESIZE size):m_pBuf(pBuf),m_size(size) {}
-
- virtual void Release() {delete this;}
- virtual FX_FILESIZE GetSize() {return m_size;}
- virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size)
- {
- if (offset < 0) {
- return FALSE;
- }
- FX_SAFE_FILESIZE newPos = pdfium::base::checked_cast<FX_FILESIZE, size_t>(size);
- newPos += offset;
- if (!newPos.IsValid() || newPos.ValueOrDie() > (FX_DWORD)m_size) {
- return FALSE;
- }
- FXSYS_memcpy(buffer, m_pBuf+offset, size);
- return TRUE;
- }
-private:
- uint8_t* m_pBuf;
- FX_FILESIZE m_size;
-};
-DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, int size, FPDF_BYTESTRING password)
-{
- CPDF_Parser* pParser = new CPDF_Parser;
- pParser->SetPassword(password);
- CMemFile* pMemFile = new CMemFile((uint8_t*)data_buf, size);
- FX_DWORD err_code = pParser->StartParse(pMemFile);
- if (err_code) {
- delete pParser;
- ProcessParseError(err_code);
- return NULL;
+ virtual void Release() { delete this; }
+ virtual FX_FILESIZE GetSize() { return m_size; }
+ virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) {
+ if (offset < 0) {
+ return FALSE;
}
- CPDF_Document * pDoc = NULL;
- pDoc = pParser?pParser->GetDocument():NULL;
- CheckUnSupportError(pDoc, err_code);
- return pParser->GetDocument();
-}
-
-DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password)
-{
- CPDF_Parser* pParser = new CPDF_Parser;
- pParser->SetPassword(password);
- CPDF_CustomAccess* pFile = new CPDF_CustomAccess(pFileAccess);
- FX_DWORD err_code = pParser->StartParse(pFile);
- if (err_code) {
- delete pParser;
- ProcessParseError(err_code);
- return NULL;
+ FX_SAFE_FILESIZE newPos =
+ pdfium::base::checked_cast<FX_FILESIZE, size_t>(size);
+ newPos += offset;
+ if (!newPos.IsValid() || newPos.ValueOrDie() > (FX_DWORD)m_size) {
+ return FALSE;
}
- CPDF_Document * pDoc = NULL;
- pDoc = pParser?pParser->GetDocument():NULL;
- CheckUnSupportError(pDoc, err_code);
- return pParser->GetDocument();
-}
-
-DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, int* fileVersion)
-{
- if(!doc||!fileVersion) return FALSE;
- *fileVersion = 0;
- CPDF_Document* pDoc = (CPDF_Document*)doc;
- CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
- if(!pParser)
- return FALSE;
- *fileVersion = pParser->GetFileVersion();
+ FXSYS_memcpy(buffer, m_pBuf + offset, size);
return TRUE;
-}
-
-// jabdelmalek: changed return type from FX_DWORD to build on Linux (and match header).
-DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document)
-{
- if (document == NULL) return 0;
- CPDF_Document*pDoc = (CPDF_Document*)document;
- CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
- CPDF_Dictionary* pDict = pParser->GetEncryptDict();
- if (pDict == NULL) return (FX_DWORD)-1;
-
- return pDict->GetInteger("P");
-}
-
-DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document)
-{
- if (document == NULL) return -1;
- CPDF_Document*pDoc = (CPDF_Document*)document;
- CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
- CPDF_Dictionary* pDict = pParser->GetEncryptDict();
- if (pDict == NULL) return -1;
-
- return pDict->GetInteger("R");
-}
+ }
-DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document)
-{
- if (document == NULL) return 0;
- return ((CPDF_Document*)document)->GetPageCount();
-}
-
-DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, int page_index)
-{
- if (document == NULL) return NULL;
- if (page_index < 0 || page_index >= FPDF_GetPageCount(document)) return NULL;
-
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (pDoc == NULL) return NULL;
- CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
- if (pDict == NULL) return NULL;
- CPDF_Page* pPage = new CPDF_Page;
- pPage->Load(pDoc, pDict);
- pPage->ParseContent();
- return pPage;
-}
-
-DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page)
-{
- if (!page)
- return 0.0;
- return ((CPDF_Page*)page)->GetPageWidth();
-}
-
-DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page)
-{
- if (!page) return 0.0;
- return ((CPDF_Page*)page)->GetPageHeight();
-}
-
-void DropContext(void* data)
-{
- delete (CRenderContext*)data;
+ private:
+ uint8_t* m_pBuf;
+ FX_FILESIZE m_size;
+};
+DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf,
+ int size,
+ FPDF_BYTESTRING password) {
+ CPDF_Parser* pParser = new CPDF_Parser;
+ pParser->SetPassword(password);
+ CMemFile* pMemFile = new CMemFile((uint8_t*)data_buf, size);
+ FX_DWORD err_code = pParser->StartParse(pMemFile);
+ if (err_code) {
+ delete pParser;
+ ProcessParseError(err_code);
+ return NULL;
+ }
+ CPDF_Document* pDoc = NULL;
+ pDoc = pParser ? pParser->GetDocument() : NULL;
+ CheckUnSupportError(pDoc, err_code);
+ return pParser->GetDocument();
+}
+
+DLLEXPORT FPDF_DOCUMENT STDCALL
+FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess,
+ FPDF_BYTESTRING password) {
+ CPDF_Parser* pParser = new CPDF_Parser;
+ pParser->SetPassword(password);
+ CPDF_CustomAccess* pFile = new CPDF_CustomAccess(pFileAccess);
+ FX_DWORD err_code = pParser->StartParse(pFile);
+ if (err_code) {
+ delete pParser;
+ ProcessParseError(err_code);
+ return NULL;
+ }
+ CPDF_Document* pDoc = NULL;
+ pDoc = pParser ? pParser->GetDocument() : NULL;
+ CheckUnSupportError(pDoc, err_code);
+ return pParser->GetDocument();
+}
+
+DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc,
+ int* fileVersion) {
+ if (!doc || !fileVersion)
+ return FALSE;
+ *fileVersion = 0;
+ CPDF_Document* pDoc = (CPDF_Document*)doc;
+ CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
+ if (!pParser)
+ return FALSE;
+ *fileVersion = pParser->GetFileVersion();
+ return TRUE;
+}
+
+// jabdelmalek: changed return type from FX_DWORD to build on Linux (and match
+// header).
+DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document) {
+ if (document == NULL)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
+ CPDF_Dictionary* pDict = pParser->GetEncryptDict();
+ if (pDict == NULL)
+ return (FX_DWORD)-1;
+
+ return pDict->GetInteger("P");
+}
+
+DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document) {
+ if (document == NULL)
+ return -1;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
+ CPDF_Dictionary* pDict = pParser->GetEncryptDict();
+ if (pDict == NULL)
+ return -1;
+
+ return pDict->GetInteger("R");
+}
+
+DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) {
+ if (document == NULL)
+ return 0;
+ return ((CPDF_Document*)document)->GetPageCount();
+}
+
+DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document,
+ int page_index) {
+ if (document == NULL)
+ return NULL;
+ if (page_index < 0 || page_index >= FPDF_GetPageCount(document))
+ return NULL;
+
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (pDoc == NULL)
+ return NULL;
+ CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
+ if (pDict == NULL)
+ return NULL;
+ CPDF_Page* pPage = new CPDF_Page;
+ pPage->Load(pDoc, pDict);
+ pPage->ParseContent();
+ return pPage;
+}
+
+DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) {
+ if (!page)
+ return 0.0;
+ return ((CPDF_Page*)page)->GetPageWidth();
+}
+
+DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) {
+ if (!page)
+ return 0.0;
+ return ((CPDF_Page*)page)->GetPageHeight();
+}
+
+void DropContext(void* data) {
+ delete (CRenderContext*)data;
}
#if defined(_DEBUG) || defined(DEBUG)
@@ -321,531 +316,594 @@ void DropContext(void* data)
#endif
#if defined(_WIN32)
-DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
- int rotate, int flags)
-{
- if (page==NULL) return;
- CPDF_Page* pPage = (CPDF_Page*)page;
-
- CRenderContext* pContext = new CRenderContext;
- pPage->SetPrivateData((void*)1, pContext, DropContext);
+DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags) {
+ if (page == NULL)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+
+ CRenderContext* pContext = new CRenderContext;
+ pPage->SetPrivateData((void*)1, pContext, DropContext);
#ifndef _WIN32_WCE
- CFX_DIBitmap* pBitmap = NULL;
- FX_BOOL bBackgroundAlphaNeeded=FALSE;
- bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
- if (bBackgroundAlphaNeeded)
- {
-
- pBitmap = new CFX_DIBitmap;
- pBitmap->Create(size_x, size_y, FXDIB_Argb);
- pBitmap->Clear(0x00ffffff);
+ CFX_DIBitmap* pBitmap = NULL;
+ FX_BOOL bBackgroundAlphaNeeded = FALSE;
+ bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
+ if (bBackgroundAlphaNeeded) {
+ pBitmap = new CFX_DIBitmap;
+ pBitmap->Create(size_x, size_y, FXDIB_Argb);
+ pBitmap->Clear(0x00ffffff);
#ifdef _SKIA_SUPPORT_
- pContext->m_pDevice = new CFX_SkiaDevice;
- ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
+ pContext->m_pDevice = new CFX_SkiaDevice;
+ ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
#else
- pContext->m_pDevice = new CFX_FxgeDevice;
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
+ pContext->m_pDevice = new CFX_FxgeDevice;
+ ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
#endif
+ } else
+ pContext->m_pDevice = new CFX_WindowsDevice(dc);
+
+ FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
+ rotate, flags, TRUE, NULL);
+
+ if (bBackgroundAlphaNeeded) {
+ if (pBitmap) {
+ CFX_WindowsDevice WinDC(dc);
+
+ if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) {
+ CFX_DIBitmap* pDst = new CFX_DIBitmap;
+ int pitch = pBitmap->GetPitch();
+ pDst->Create(size_x, size_y, FXDIB_Rgb32);
+ FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y);
+ pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap, 0, 0,
+ FXDIB_BLEND_NORMAL, NULL, FALSE, NULL);
+ WinDC.StretchDIBits(pDst, 0, 0, size_x, size_y);
+ delete pDst;
+ } else
+ WinDC.SetDIBits(pBitmap, 0, 0);
}
- else
- pContext->m_pDevice = new CFX_WindowsDevice(dc);
-
- FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
- rotate, flags, TRUE, NULL);
-
- if (bBackgroundAlphaNeeded)
- {
- if (pBitmap)
- {
- CFX_WindowsDevice WinDC(dc);
-
- if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER)
- {
- CFX_DIBitmap* pDst = new CFX_DIBitmap;
- int pitch = pBitmap->GetPitch();
- pDst->Create(size_x, size_y, FXDIB_Rgb32);
- FXSYS_memset(pDst->GetBuffer(), -1, pitch*size_y);
- pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap, 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, NULL);
- WinDC.StretchDIBits(pDst,0,0,size_x,size_y);
- delete pDst;
- }
- else
- WinDC.SetDIBits(pBitmap,0,0);
-
- }
- }
+ }
#else
- // get clip region
- RECT rect, cliprect;
- rect.left = start_x;
- rect.top = start_y;
- rect.right = start_x + size_x;
- rect.bottom = start_y + size_y;
- GetClipBox(dc, &cliprect);
- IntersectRect(&rect, &rect, &cliprect);
- int width = rect.right - rect.left;
- int height = rect.bottom - rect.top;
+ // get clip region
+ RECT rect, cliprect;
+ rect.left = start_x;
+ rect.top = start_y;
+ rect.right = start_x + size_x;
+ rect.bottom = start_y + size_y;
+ GetClipBox(dc, &cliprect);
+ IntersectRect(&rect, &rect, &cliprect);
+ int width = rect.right - rect.left;
+ int height = rect.bottom - rect.top;
#ifdef DEBUG_TRACE
- {
- char str[128];
- memset(str, 0, sizeof(str));
- FXSYS_snprintf(str, sizeof(str) - 1, "Rendering DIB %d x %d", width, height);
- CPDF_ModuleMgr::Get()->ReportError(999, str);
- }
+ {
+ char str[128];
+ memset(str, 0, sizeof(str));
+ FXSYS_snprintf(str, sizeof(str) - 1, "Rendering DIB %d x %d", width,
+ height);
+ CPDF_ModuleMgr::Get()->ReportError(999, str);
+ }
#endif
- // Create a DIB section
- LPVOID pBuffer;
- BITMAPINFOHEADER bmih;
- FXSYS_memset(&bmih, 0, sizeof bmih);
- bmih.biSize = sizeof bmih;
- bmih.biBitCount = 24;
- bmih.biHeight = -height;
- bmih.biPlanes = 1;
- bmih.biWidth = width;
- pContext->m_hBitmap = CreateDIBSection(dc, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, &pBuffer, NULL, 0);
- if (pContext->m_hBitmap == NULL) {
+ // Create a DIB section
+ LPVOID pBuffer;
+ BITMAPINFOHEADER bmih;
+ FXSYS_memset(&bmih, 0, sizeof bmih);
+ bmih.biSize = sizeof bmih;
+ bmih.biBitCount = 24;
+ bmih.biHeight = -height;
+ bmih.biPlanes = 1;
+ bmih.biWidth = width;
+ pContext->m_hBitmap = CreateDIBSection(dc, (BITMAPINFO*)&bmih, DIB_RGB_COLORS,
+ &pBuffer, NULL, 0);
+ if (pContext->m_hBitmap == NULL) {
#if defined(DEBUG) || defined(_DEBUG)
- char str[128];
- memset(str, 0, sizeof(str));
- FXSYS_snprintf(str, sizeof(str) - 1, "Error CreateDIBSection: %d x %d, error code = %d", width, height, GetLastError());
- CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, str);
+ char str[128];
+ memset(str, 0, sizeof(str));
+ FXSYS_snprintf(str, sizeof(str) - 1,
+ "Error CreateDIBSection: %d x %d, error code = %d", width,
+ height, GetLastError());
+ CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, str);
#else
- CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, NULL);
+ CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, NULL);
#endif
- }
- FXSYS_memset(pBuffer, 0xff, height*((width*3+3)/4*4));
+ }
+ FXSYS_memset(pBuffer, 0xff, height * ((width * 3 + 3) / 4 * 4));
#ifdef DEBUG_TRACE
- {
- CPDF_ModuleMgr::Get()->ReportError(999, "DIBSection created");
- }
+ { CPDF_ModuleMgr::Get()->ReportError(999, "DIBSection created"); }
#endif
- // Create a device with this external buffer
- pContext->m_pBitmap = new CFX_DIBitmap;
- pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer);
- pContext->m_pDevice = new CPDF_FxgeDevice;
- ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap);
+ // Create a device with this external buffer
+ pContext->m_pBitmap = new CFX_DIBitmap;
+ pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer);
+ pContext->m_pDevice = new CPDF_FxgeDevice;
+ ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap);
#ifdef DEBUG_TRACE
- CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering");
+ CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering");
#endif
- // output to bitmap device
- FPDF_RenderPage_Retail(pContext, page, start_x - rect.left,
- start_y - rect.top, size_x, size_y, rotate, flags);
+ // output to bitmap device
+ FPDF_RenderPage_Retail(pContext, page, start_x - rect.left,
+ start_y - rect.top, size_x, size_y, rotate, flags);
#ifdef DEBUG_TRACE
- CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering");
+ CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering");
#endif
- // Now output to real device
- HDC hMemDC = CreateCompatibleDC(dc);
- if (hMemDC == NULL) {
+ // Now output to real device
+ HDC hMemDC = CreateCompatibleDC(dc);
+ if (hMemDC == NULL) {
#if defined(DEBUG) || defined(_DEBUG)
- char str[128];
- memset(str, 0, sizeof(str));
- FXSYS_snprintf(str, sizeof(str) - 1, "Error CreateCompatibleDC. Error code = %d", GetLastError());
- CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, str);
+ char str[128];
+ memset(str, 0, sizeof(str));
+ FXSYS_snprintf(str, sizeof(str) - 1,
+ "Error CreateCompatibleDC. Error code = %d", GetLastError());
+ CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, str);
#else
- CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, NULL);
+ CPDF_ModuleMgr::Get()->ReportError(FPDFERR_OUT_OF_MEMORY, NULL);
#endif
- }
+ }
- HGDIOBJ hOldBitmap = SelectObject(hMemDC, pContext->m_hBitmap);
+ HGDIOBJ hOldBitmap = SelectObject(hMemDC, pContext->m_hBitmap);
#ifdef DEBUG_TRACE
- CPDF_ModuleMgr::Get()->ReportError(999, "Ready for screen rendering");
+ CPDF_ModuleMgr::Get()->ReportError(999, "Ready for screen rendering");
#endif
- BitBlt(dc, rect.left, rect.top, width, height, hMemDC, 0, 0, SRCCOPY);
- SelectObject(hMemDC, hOldBitmap);
- DeleteDC(hMemDC);
+ BitBlt(dc, rect.left, rect.top, width, height, hMemDC, 0, 0, SRCCOPY);
+ SelectObject(hMemDC, hOldBitmap);
+ DeleteDC(hMemDC);
#ifdef DEBUG_TRACE
- CPDF_ModuleMgr::Get()->ReportError(999, "Finished screen rendering");
+ CPDF_ModuleMgr::Get()->ReportError(999, "Finished screen rendering");
#endif
#endif
- if (bBackgroundAlphaNeeded) {
- delete pBitmap;
- pBitmap = NULL;
- }
- delete pContext;
- pPage->RemovePrivateData((void*)1);
+ if (bBackgroundAlphaNeeded) {
+ delete pBitmap;
+ pBitmap = NULL;
+ }
+ delete pContext;
+ pPage->RemovePrivateData((void*)1);
}
#endif
-DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, FPDF_PAGE page, int start_x, int start_y,
- int size_x, int size_y, int rotate, int flags)
-{
- if (bitmap == NULL || page == NULL) return;
- CPDF_Page* pPage = (CPDF_Page*)page;
-
-
- CRenderContext* pContext = new CRenderContext;
- pPage->SetPrivateData((void*)1, pContext, DropContext);
+DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags) {
+ if (bitmap == NULL || page == NULL)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+
+ CRenderContext* pContext = new CRenderContext;
+ pPage->SetPrivateData((void*)1, pContext, DropContext);
#ifdef _SKIA_SUPPORT_
- pContext->m_pDevice = new CFX_SkiaDevice;
+ pContext->m_pDevice = new CFX_SkiaDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER)
- ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
- else
- ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
+ if (flags & FPDF_REVERSE_BYTE_ORDER)
+ ((CFX_SkiaDevice*)pContext->m_pDevice)
+ ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
+ else
+ ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
#else
- pContext->m_pDevice = new CFX_FxgeDevice;
+ pContext->m_pDevice = new CFX_FxgeDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER)
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap,0,TRUE);
- else
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
+ if (flags & FPDF_REVERSE_BYTE_ORDER)
+ ((CFX_FxgeDevice*)pContext->m_pDevice)
+ ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
+ else
+ ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
#endif
- FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
- rotate, flags, TRUE, NULL);
-
- delete pContext;
- pPage->RemovePrivateData((void*)1);
-}
-
-DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page)
-{
- if (!page) return;
- CPDFSDK_PageView* pPageView = (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page);
- if (pPageView && pPageView->IsLocked()) {
- pPageView->TakeOverPage();
- return;
- }
- delete (CPDF_Page*)page;
-
-}
-
-DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document)
-{
- if (!document)
- return;
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
- if (pParser == NULL)
- {
- delete pDoc;
- return;
- }
- delete pParser;
-}
-
-DLLEXPORT unsigned long STDCALL FPDF_GetLastError()
-{
- return GetLastError();
-}
-
-DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
- int rotate, int device_x, int device_y, double* page_x, double* page_y)
-{
- if (page == NULL || page_x == NULL || page_y == NULL) return;
- CPDF_Page* pPage = (CPDF_Page*)page;
-
- CPDF_Matrix page2device;
- pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate);
- CPDF_Matrix device2page;
- device2page.SetReverse(page2device);
-
- FX_FLOAT page_x_f, page_y_f;
- device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f, page_y_f);
-
- *page_x = (page_x_f);
- *page_y = (page_y_f);
-}
-
-DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
- int rotate, double page_x, double page_y, int* device_x, int* device_y)
-{
- if (page == NULL || device_x == NULL || device_y == NULL) return;
- CPDF_Page* pPage = (CPDF_Page*)page;
-
- CPDF_Matrix page2device;
- pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate);
-
- FX_FLOAT device_x_f, device_y_f;
- page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f, device_y_f);
-
- *device_x = FXSYS_round(device_x_f);
- *device_y = FXSYS_round(device_y_f);
-}
-
-DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, int height, int alpha)
-{
- nonstd::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap);
- if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32)) {
- return NULL;
- }
- return pBitmap.release();
-}
-
-DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, int height, int format, void* first_scan, int stride)
-{
- FXDIB_Format fx_format;
- switch (format) {
- case FPDFBitmap_Gray:
- fx_format = FXDIB_8bppRgb;
- break;
- case FPDFBitmap_BGR:
- fx_format = FXDIB_Rgb;
- break;
- case FPDFBitmap_BGRx:
- fx_format = FXDIB_Rgb32;
- break;
- case FPDFBitmap_BGRA:
- fx_format = FXDIB_Argb;
- break;
- default:
- return NULL;
- }
- CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
- pBitmap->Create(width, height, fx_format, (uint8_t*)first_scan, stride);
- return pBitmap;
-}
-
-DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap, int left, int top, int width, int height, FPDF_DWORD color)
-{
- if (bitmap == NULL) return;
+ FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
+ rotate, flags, TRUE, NULL);
+
+ delete pContext;
+ pPage->RemovePrivateData((void*)1);
+}
+
+DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) {
+ if (!page)
+ return;
+ CPDFSDK_PageView* pPageView =
+ (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page);
+ if (pPageView && pPageView->IsLocked()) {
+ pPageView->TakeOverPage();
+ return;
+ }
+ delete (CPDF_Page*)page;
+}
+
+DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) {
+ if (!document)
+ return;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
+ if (pParser == NULL) {
+ delete pDoc;
+ return;
+ }
+ delete pParser;
+}
+
+DLLEXPORT unsigned long STDCALL FPDF_GetLastError() {
+ return GetLastError();
+}
+
+DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int device_x,
+ int device_y,
+ double* page_x,
+ double* page_y) {
+ if (page == NULL || page_x == NULL || page_y == NULL)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+
+ CPDF_Matrix page2device;
+ pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y,
+ rotate);
+ CPDF_Matrix device2page;
+ device2page.SetReverse(page2device);
+
+ FX_FLOAT page_x_f, page_y_f;
+ device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f,
+ page_y_f);
+
+ *page_x = (page_x_f);
+ *page_y = (page_y_f);
+}
+
+DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ double page_x,
+ double page_y,
+ int* device_x,
+ int* device_y) {
+ if (page == NULL || device_x == NULL || device_y == NULL)
+ return;
+ CPDF_Page* pPage = (CPDF_Page*)page;
+
+ CPDF_Matrix page2device;
+ pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y,
+ rotate);
+
+ FX_FLOAT device_x_f, device_y_f;
+ page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f,
+ device_y_f);
+
+ *device_x = FXSYS_round(device_x_f);
+ *device_y = FXSYS_round(device_y_f);
+}
+
+DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width,
+ int height,
+ int alpha) {
+ nonstd::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap);
+ if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32)) {
+ return NULL;
+ }
+ return pBitmap.release();
+}
+
+DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width,
+ int height,
+ int format,
+ void* first_scan,
+ int stride) {
+ FXDIB_Format fx_format;
+ switch (format) {
+ case FPDFBitmap_Gray:
+ fx_format = FXDIB_8bppRgb;
+ break;
+ case FPDFBitmap_BGR:
+ fx_format = FXDIB_Rgb;
+ break;
+ case FPDFBitmap_BGRx:
+ fx_format = FXDIB_Rgb32;
+ break;
+ case FPDFBitmap_BGRA:
+ fx_format = FXDIB_Argb;
+ break;
+ default:
+ return NULL;
+ }
+ CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
+ pBitmap->Create(width, height, fx_format, (uint8_t*)first_scan, stride);
+ return pBitmap;
+}
+
+DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap,
+ int left,
+ int top,
+ int width,
+ int height,
+ FPDF_DWORD color) {
+ if (bitmap == NULL)
+ return;
#ifdef _SKIA_SUPPORT_
- CFX_SkiaDevice device;
+ CFX_SkiaDevice device;
#else
- CFX_FxgeDevice device;
+ CFX_FxgeDevice device;
#endif
- device.Attach((CFX_DIBitmap*)bitmap);
- if (!((CFX_DIBitmap*)bitmap)->HasAlpha()) color |= 0xFF000000;
- FX_RECT rect(left, top, left+width, top+height);
- device.FillRect(&rect, color);
-}
-
-DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap)
-{
- if (bitmap == NULL) return NULL;
- return ((CFX_DIBitmap*)bitmap)->GetBuffer();
-}
-
-DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap)
-{
- if (bitmap == NULL) return 0;
- return ((CFX_DIBitmap*)bitmap)->GetWidth();
-}
-
-DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap)
-{
- if (bitmap == NULL) return 0;
- return ((CFX_DIBitmap*)bitmap)->GetHeight();
-}
-
-DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap)
-{
- if (bitmap == NULL) return 0;
- return ((CFX_DIBitmap*)bitmap)->GetPitch();
-}
-
-DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap)
-{
- delete (CFX_DIBitmap*)bitmap;
-}
-
-void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
- int rotate, int flags,FX_BOOL bNeedToRestore, IFSDK_PAUSE_Adapter * pause )
-{
- CPDF_Page* pPage = (CPDF_Page*)page;
- if (pPage == NULL) return;
-
- if (!pContext->m_pOptions)
- pContext->m_pOptions = new CPDF_RenderOptions;
-
- if (flags & FPDF_LCD_TEXT)
- pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
- else
- pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE;
- if (flags & FPDF_NO_NATIVETEXT)
- pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT;
- if (flags & FPDF_RENDER_LIMITEDIMAGECACHE)
- pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE;
- if (flags & FPDF_RENDER_FORCEHALFTONE)
- pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE;
- if (flags & FPDF_RENDER_NO_SMOOTHTEXT)
- pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH;
- if (flags & FPDF_RENDER_NO_SMOOTHIMAGE)
- pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH;
- if (flags & FPDF_RENDER_NO_SMOOTHPATH)
- pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH;
- //Grayscale output
- if (flags & FPDF_GRAYSCALE)
- {
- pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY;
- pContext->m_pOptions->m_ForeColor = 0;
- pContext->m_pOptions->m_BackColor = 0xffffff;
- }
- const CPDF_OCContext::UsageType usage = (flags & FPDF_PRINTING) ? CPDF_OCContext::Print : CPDF_OCContext::View;
- pContext->m_pOptions->m_AddFlags = flags >> 8;
- pContext->m_pOptions->m_pOCContext = new CPDF_OCContext(pPage->m_pDocument, usage);
-
- CFX_AffineMatrix matrix;
- pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
-
- FX_RECT clip;
- clip.left = start_x;
- clip.right = start_x + size_x;
- clip.top = start_y;
- clip.bottom = start_y + size_y;
- pContext->m_pDevice->SaveState();
- pContext->m_pDevice->SetClip_Rect(&clip);
-
- pContext->m_pContext = new CPDF_RenderContext;
- pContext->m_pContext->Create(pPage);
- pContext->m_pContext->AppendObjectList(pPage, &matrix);
-
- if (flags & FPDF_ANNOT) {
- pContext->m_pAnnots = new CPDF_AnnotList(pPage);
- FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXDC_DISPLAY;
- pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting, &matrix, TRUE, NULL);
- }
-
- pContext->m_pRenderer = new CPDF_ProgressiveRenderer(
- pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions);
- pContext->m_pRenderer->Start(pause);
- if (bNeedToRestore)
- pContext->m_pDevice->RestoreState();
-}
-
-DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_index, double* width, double* height)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if(pDoc == NULL)
- return FALSE;
-
- CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
- if (pDict == NULL) return FALSE;
-
- CPDF_Page page;
- page.Load(pDoc, pDict);
- *width = page.GetPageWidth();
- *height = page.GetPageHeight();
-
+ device.Attach((CFX_DIBitmap*)bitmap);
+ if (!((CFX_DIBitmap*)bitmap)->HasAlpha())
+ color |= 0xFF000000;
+ FX_RECT rect(left, top, left + width, top + height);
+ device.FillRect(&rect, color);
+}
+
+DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap) {
+ if (bitmap == NULL)
+ return NULL;
+ return ((CFX_DIBitmap*)bitmap)->GetBuffer();
+}
+
+DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap) {
+ if (bitmap == NULL)
+ return 0;
+ return ((CFX_DIBitmap*)bitmap)->GetWidth();
+}
+
+DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap) {
+ if (bitmap == NULL)
+ return 0;
+ return ((CFX_DIBitmap*)bitmap)->GetHeight();
+}
+
+DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap) {
+ if (bitmap == NULL)
+ return 0;
+ return ((CFX_DIBitmap*)bitmap)->GetPitch();
+}
+
+DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap) {
+ delete (CFX_DIBitmap*)bitmap;
+}
+
+void FPDF_RenderPage_Retail(CRenderContext* pContext,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags,
+ FX_BOOL bNeedToRestore,
+ IFSDK_PAUSE_Adapter* pause) {
+ CPDF_Page* pPage = (CPDF_Page*)page;
+ if (pPage == NULL)
+ return;
+
+ if (!pContext->m_pOptions)
+ pContext->m_pOptions = new CPDF_RenderOptions;
+
+ if (flags & FPDF_LCD_TEXT)
+ pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
+ else
+ pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE;
+ if (flags & FPDF_NO_NATIVETEXT)
+ pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT;
+ if (flags & FPDF_RENDER_LIMITEDIMAGECACHE)
+ pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE;
+ if (flags & FPDF_RENDER_FORCEHALFTONE)
+ pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE;
+ if (flags & FPDF_RENDER_NO_SMOOTHTEXT)
+ pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH;
+ if (flags & FPDF_RENDER_NO_SMOOTHIMAGE)
+ pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH;
+ if (flags & FPDF_RENDER_NO_SMOOTHPATH)
+ pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH;
+ // Grayscale output
+ if (flags & FPDF_GRAYSCALE) {
+ pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY;
+ pContext->m_pOptions->m_ForeColor = 0;
+ pContext->m_pOptions->m_BackColor = 0xffffff;
+ }
+ const CPDF_OCContext::UsageType usage =
+ (flags & FPDF_PRINTING) ? CPDF_OCContext::Print : CPDF_OCContext::View;
+ pContext->m_pOptions->m_AddFlags = flags >> 8;
+ pContext->m_pOptions->m_pOCContext =
+ new CPDF_OCContext(pPage->m_pDocument, usage);
+
+ CFX_AffineMatrix matrix;
+ pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
+
+ FX_RECT clip;
+ clip.left = start_x;
+ clip.right = start_x + size_x;
+ clip.top = start_y;
+ clip.bottom = start_y + size_y;
+ pContext->m_pDevice->SaveState();
+ pContext->m_pDevice->SetClip_Rect(&clip);
+
+ pContext->m_pContext = new CPDF_RenderContext;
+ pContext->m_pContext->Create(pPage);
+ pContext->m_pContext->AppendObjectList(pPage, &matrix);
+
+ if (flags & FPDF_ANNOT) {
+ pContext->m_pAnnots = new CPDF_AnnotList(pPage);
+ FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXDC_DISPLAY;
+ pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting,
+ &matrix, TRUE, NULL);
+ }
+
+ pContext->m_pRenderer = new CPDF_ProgressiveRenderer(
+ pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions);
+ pContext->m_pRenderer->Start(pause);
+ if (bNeedToRestore)
+ pContext->m_pDevice->RestoreState();
+}
+
+DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document,
+ int page_index,
+ double* width,
+ double* height) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (pDoc == NULL)
+ return FALSE;
+
+ CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
+ if (pDict == NULL)
+ return FALSE;
+
+ CPDF_Page page;
+ page.Load(pDoc, pDict);
+ *width = page.GetPageWidth();
+ *height = page.GetPageHeight();
+
+ return TRUE;
+}
+
+DLLEXPORT FPDF_BOOL STDCALL
+FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (!pDoc)
return TRUE;
+ CPDF_ViewerPreferences viewRef(pDoc);
+ return viewRef.PrintScaling();
}
-DLLEXPORT FPDF_BOOL STDCALL FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (!pDoc) return TRUE;
- CPDF_ViewerPreferences viewRef(pDoc);
- return viewRef.PrintScaling();
-}
-
-DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (!pDoc) return 1;
- CPDF_ViewerPreferences viewRef(pDoc);
- return viewRef.NumCopies();
-}
-
-DLLEXPORT FPDF_PAGERANGE STDCALL FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (!pDoc) return NULL;
- CPDF_ViewerPreferences viewRef(pDoc);
- return viewRef.PrintPageRange();
-}
-
-DLLEXPORT FPDF_DUPLEXTYPE STDCALL FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document)
-{
- CPDF_Document* pDoc = (CPDF_Document*)document;
- if (!pDoc) return DuplexUndefined;
- CPDF_ViewerPreferences viewRef(pDoc);
- CFX_ByteString duplex = viewRef.Duplex();
- if (FX_BSTRC("Simplex") == duplex)
- return Simplex;
- if (FX_BSTRC("DuplexFlipShortEdge") == duplex)
- return DuplexFlipShortEdge;
- if (FX_BSTRC("DuplexFlipLongEdge") == duplex)
- return DuplexFlipLongEdge;
- return DuplexUndefined;
+DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (!pDoc)
+ return 1;
+ CPDF_ViewerPreferences viewRef(pDoc);
+ return viewRef.NumCopies();
}
-DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document)
-{
- if (!document) return 0;
- CPDF_Document* pDoc = (CPDF_Document*)document;
-
- CPDF_Dictionary* pRoot = pDoc->GetRoot();
- if (!pRoot) return 0;
+DLLEXPORT FPDF_PAGERANGE STDCALL
+FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (!pDoc)
+ return NULL;
+ CPDF_ViewerPreferences viewRef(pDoc);
+ return viewRef.PrintPageRange();
+}
- CPDF_NameTree nameTree(pDoc, FX_BSTRC("Dests"));
- int count = nameTree.GetCount();
+DLLEXPORT FPDF_DUPLEXTYPE STDCALL
+FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document) {
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ if (!pDoc)
+ return DuplexUndefined;
+ CPDF_ViewerPreferences viewRef(pDoc);
+ CFX_ByteString duplex = viewRef.Duplex();
+ if (FX_BSTRC("Simplex") == duplex)
+ return Simplex;
+ if (FX_BSTRC("DuplexFlipShortEdge") == duplex)
+ return DuplexFlipShortEdge;
+ if (FX_BSTRC("DuplexFlipLongEdge") == duplex)
+ return DuplexFlipLongEdge;
+ return DuplexUndefined;
+}
+
+DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document) {
+ if (!document)
+ return 0;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+
+ CPDF_Dictionary* pRoot = pDoc->GetRoot();
+ if (!pRoot)
+ return 0;
+
+ CPDF_NameTree nameTree(pDoc, FX_BSTRC("Dests"));
+ int count = nameTree.GetCount();
+ CPDF_Dictionary* pDest = pRoot->GetDict(FX_BSTRC("Dests"));
+ if (pDest)
+ count += pDest->GetCount();
+ return count;
+}
+
+DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document,
+ FPDF_BYTESTRING name) {
+ if (!document)
+ return NULL;
+ if (!name || name[0] == 0)
+ return NULL;
+
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+ CPDF_NameTree name_tree(pDoc, FX_BSTRC("Dests"));
+ return name_tree.LookupNamedDest(pDoc, name);
+}
+
+DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document,
+ int index,
+ void* buffer,
+ long* buflen) {
+ if (!buffer)
+ *buflen = 0;
+ if (!document || index < 0)
+ return NULL;
+ CPDF_Document* pDoc = (CPDF_Document*)document;
+
+ CPDF_Dictionary* pRoot = pDoc->GetRoot();
+ if (!pRoot)
+ return NULL;
+
+ CPDF_Object* pDestObj = NULL;
+ CFX_ByteString bsName;
+ CPDF_NameTree nameTree(pDoc, FX_BSTRC("Dests"));
+ int count = nameTree.GetCount();
+ if (index >= count) {
CPDF_Dictionary* pDest = pRoot->GetDict(FX_BSTRC("Dests"));
- if (pDest)
- count += pDest->GetCount();
- return count;
-}
-
-DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document,FPDF_BYTESTRING name)
-{
- if (!document)
- return NULL;
- if (!name || name[0] == 0)
- return NULL;
-
- CPDF_Document* pDoc = (CPDF_Document*)document;
- CPDF_NameTree name_tree(pDoc, FX_BSTRC("Dests"));
- return name_tree.LookupNamedDest(pDoc, name);
-}
-
-DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, long* buflen)
-{
- if (!buffer)
- *buflen = 0;
- if (!document || index < 0) return NULL;
- CPDF_Document* pDoc = (CPDF_Document*)document;
-
- CPDF_Dictionary* pRoot = pDoc->GetRoot();
- if (!pRoot) return NULL;
-
- CPDF_Object* pDestObj = NULL;
- CFX_ByteString bsName;
- CPDF_NameTree nameTree(pDoc, FX_BSTRC("Dests"));
- int count = nameTree.GetCount();
- if (index >= count) {
- CPDF_Dictionary* pDest = pRoot->GetDict(FX_BSTRC("Dests"));
- if (!pDest) return NULL;
- if (index >= count + pDest->GetCount()) return NULL;
- index -= count;
- FX_POSITION pos = pDest->GetStartPos();
- int i = 0;
- while (pos) {
- pDestObj = pDest->GetNextElement(pos, bsName);
- if (!pDestObj) continue;
- if (i == index) break;
- i++;
- }
- } else {
- pDestObj = nameTree.LookupValue(index, bsName);
- }
- if (!pDestObj) return NULL;
- if (pDestObj->GetType() == PDFOBJ_DICTIONARY) {
- pDestObj = ((CPDF_Dictionary*)pDestObj)->GetArray(FX_BSTRC("D"));
- if (!pDestObj) return NULL;
- }
- if (pDestObj->GetType() != PDFOBJ_ARRAY) return NULL;
- CFX_WideString wsName = PDF_DecodeText(bsName);
- CFX_ByteString utf16Name = wsName.UTF16LE_Encode();
- unsigned int len = utf16Name.GetLength();
- if (!buffer) {
- *buflen = len;
- } else if (*buflen >= len) {
- memcpy(buffer, utf16Name.c_str(), len);
- *buflen = len;
- } else {
- *buflen = -1;
+ if (!pDest)
+ return NULL;
+ if (index >= count + pDest->GetCount())
+ return NULL;
+ index -= count;
+ FX_POSITION pos = pDest->GetStartPos();
+ int i = 0;
+ while (pos) {
+ pDestObj = pDest->GetNextElement(pos, bsName);
+ if (!pDestObj)
+ continue;
+ if (i == index)
+ break;
+ i++;
}
- return (FPDF_DEST)pDestObj;
+ } else {
+ pDestObj = nameTree.LookupValue(index, bsName);
+ }
+ if (!pDestObj)
+ return NULL;
+ if (pDestObj->GetType() == PDFOBJ_DICTIONARY) {
+ pDestObj = ((CPDF_Dictionary*)pDestObj)->GetArray(FX_BSTRC("D"));
+ if (!pDestObj)
+ return NULL;
+ }
+ if (pDestObj->GetType() != PDFOBJ_ARRAY)
+ return NULL;
+ CFX_WideString wsName = PDF_DecodeText(bsName);
+ CFX_ByteString utf16Name = wsName.UTF16LE_Encode();
+ unsigned int len = utf16Name.GetLength();
+ if (!buffer) {
+ *buflen = len;
+ } else if (*buflen >= len) {
+ memcpy(buffer, utf16Name.c_str(), len);
+ *buflen = len;
+ } else {
+ *buflen = -1;
+ }
+ return (FPDF_DEST)pDestObj;
}
diff --git a/fpdfsdk/src/fpdfview_embeddertest.cpp b/fpdfsdk/src/fpdfview_embeddertest.cpp
index cc0aa1f818..896a196fb7 100644
--- a/fpdfsdk/src/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfview_embeddertest.cpp
@@ -14,8 +14,7 @@ TEST(fpdf, CApiTest) {
EXPECT_TRUE(CheckPDFiumCApi());
}
-class FPDFViewEmbeddertest : public EmbedderTest {
-};
+class FPDFViewEmbeddertest : public EmbedderTest {};
TEST_F(FPDFViewEmbeddertest, Document) {
EXPECT_TRUE(OpenDocument("testing/resources/about_blank.pdf"));
@@ -54,7 +53,7 @@ TEST_F(FPDFViewEmbeddertest, NamedDests) {
FPDF_DEST dest;
// Query the size of the first item.
- buffer_size = 2000000; // Absurdly large, check not used for this case.
+ buffer_size = 2000000; // Absurdly large, check not used for this case.
dest = FPDF_GetNamedDest(document(), 0, nullptr, &buffer_size);
EXPECT_NE(nullptr, dest);
EXPECT_EQ(12u, buffer_size);
@@ -104,9 +103,8 @@ TEST_F(FPDFViewEmbeddertest, NamedDests) {
dest = FPDF_GetNamedDest(document(), 4, fixed_buffer, &buffer_size);
EXPECT_NE(nullptr, dest);
EXPECT_EQ(30u, buffer_size);
- EXPECT_EQ(
- std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30),
- std::string(fixed_buffer, buffer_size));
+ EXPECT_EQ(std::string("F\0i\0r\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 30),
+ std::string(fixed_buffer, buffer_size));
// Try to retrieve sixth item with ample buffer. Item istaken from the
// old-style Dests dictionary object but has a sub-dictionary in
@@ -115,9 +113,8 @@ TEST_F(FPDFViewEmbeddertest, NamedDests) {
dest = FPDF_GetNamedDest(document(), 5, fixed_buffer, &buffer_size);
EXPECT_NE(nullptr, dest);
EXPECT_EQ(28u, buffer_size);
- EXPECT_EQ(
- std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28),
- std::string(fixed_buffer, buffer_size));
+ EXPECT_EQ(std::string("L\0a\0s\0t\0A\0l\0t\0e\0r\0n\0a\0t\0e\0\0\0", 28),
+ std::string(fixed_buffer, buffer_size));
// Try to retrieve non-existent item with ample buffer.
buffer_size = sizeof(fixed_buffer);
diff --git a/fpdfsdk/src/fsdk_actionhandler.cpp b/fpdfsdk/src/fsdk_actionhandler.cpp
index 145559e057..5a2063e6dc 100644
--- a/fpdfsdk/src/fsdk_actionhandler.cpp
+++ b/fpdfsdk/src/fsdk_actionhandler.cpp
@@ -13,235 +13,224 @@
CPDFSDK_ActionHandler::CPDFSDK_ActionHandler(CPDFDoc_Environment* pEvi)
: m_pFormActionHandler(new CPDFSDK_FormActionHandler),
- m_pMediaActionHandler(NULL) {
-}
-
-void CPDFSDK_ActionHandler::SetMediaActionHandler(CPDFSDK_MediaActionHandler* pHandler)
-{
- ASSERT(pHandler != NULL);
- ASSERT(m_pMediaActionHandler == NULL);
- m_pMediaActionHandler = pHandler;
-}
-
-//document open
-FX_BOOL CPDFSDK_ActionHandler::DoAction_DocOpen(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- CFX_PtrList list;
- return ExecuteDocumentOpenAction(action, pDocument, list);
-}
-
-//document open
-FX_BOOL CPDFSDK_ActionHandler::DoAction_JavaScript(const CPDF_Action& JsAction,CFX_WideString csJSName,
- CPDFSDK_Document* pDocument)
-{
- if (JsAction.GetType() == CPDF_Action::JavaScript)
- {
- CFX_WideString swJS = JsAction.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- RunDocumentOpenJavaScript(pDocument, csJSName, swJS);
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_FieldJavaScript(const CPDF_Action& JsAction, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
- PDFSDK_FieldAction& data)
-{
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (pEnv->IsJSInitiated() && JsAction.GetType() == CPDF_Action::JavaScript)
- {
- CFX_WideString swJS = JsAction.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- RunFieldJavaScript(pDocument, pFormField, type, data, swJS);
- return TRUE;
- }
- }
- return FALSE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_Page(const CPDF_Action& action, enum CPDF_AAction::AActionType eType,
- CPDFSDK_Document* pDocument)
-{
- CFX_PtrList list;
- return ExecuteDocumentPageAction(action, eType, pDocument, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_Document(const CPDF_Action& action, enum CPDF_AAction::AActionType eType,
- CPDFSDK_Document* pDocument)
-{
- CFX_PtrList list;
- return ExecuteDocumentPageAction(action, eType, pDocument, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_BookMark(CPDF_Bookmark *pBookMark, const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument)
-{
- CFX_PtrList list;
- return ExecuteBookMark(action, pDocument, pBookMark, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_Screen(const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument, CPDFSDK_Annot* pScreen)
-{
- CFX_PtrList list;
- return ExecuteScreenAction(action, type, pDocument, pScreen, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_Link(const CPDF_Action& action,
- CPDFSDK_Document* pDocument)
-{
- CFX_PtrList list;
- return ExecuteLinkAction(action, pDocument, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::DoAction_Field(const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument,
- CPDF_FormField* pFormField, PDFSDK_FieldAction& data)
-{
- CFX_PtrList list;
- return ExecuteFieldAction(action, type, pDocument, pFormField, data, list);
-}
-
-FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentOpenAction(const CPDF_Action& action, CPDFSDK_Document* pDocument,
- CFX_PtrList& list)
-{
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- RunDocumentOpenJavaScript(pDocument, L"", swJS);
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteDocumentOpenAction(subaction, pDocument, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction(const CPDF_Action& action, CPDFSDK_Document* pDocument,
- CFX_PtrList& list)
-{
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime(); //????
- ASSERT(pRuntime != NULL);
-
- pRuntime->SetReaderDocument(pDocument);
-
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- pContext->OnLink_MouseUp(pDocument);
-
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
- if (!bRet)
- {
- // FIXME: return error.
- }
-
- pRuntime->ReleaseContext(pContext);
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteLinkAction(subaction, pDocument, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentPageAction(const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument, CFX_PtrList& list)
-{
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- RunDocumentPageJavaScript(pDocument, type, swJS);
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- if (!IsValidDocView(pDocument))
- return FALSE;
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteDocumentPageAction(subaction, type, pDocument, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::IsValidField(CPDFSDK_Document* pDocument, CPDF_Dictionary* pFieldDict)
-{
+ m_pMediaActionHandler(NULL) {}
+
+void CPDFSDK_ActionHandler::SetMediaActionHandler(
+ CPDFSDK_MediaActionHandler* pHandler) {
+ ASSERT(pHandler != NULL);
+ ASSERT(m_pMediaActionHandler == NULL);
+ m_pMediaActionHandler = pHandler;
+}
+
+// document open
+FX_BOOL CPDFSDK_ActionHandler::DoAction_DocOpen(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ CFX_PtrList list;
+ return ExecuteDocumentOpenAction(action, pDocument, list);
+}
+
+// document open
+FX_BOOL CPDFSDK_ActionHandler::DoAction_JavaScript(
+ const CPDF_Action& JsAction,
+ CFX_WideString csJSName,
+ CPDFSDK_Document* pDocument) {
+ if (JsAction.GetType() == CPDF_Action::JavaScript) {
+ CFX_WideString swJS = JsAction.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ RunDocumentOpenJavaScript(pDocument, csJSName, swJS);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_FieldJavaScript(
+ const CPDF_Action& JsAction,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CPDF_FormField* pFormField,
+ PDFSDK_FieldAction& data) {
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (pEnv->IsJSInitiated() && JsAction.GetType() == CPDF_Action::JavaScript) {
+ CFX_WideString swJS = JsAction.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ RunFieldJavaScript(pDocument, pFormField, type, data, swJS);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_Page(
+ const CPDF_Action& action,
+ enum CPDF_AAction::AActionType eType,
+ CPDFSDK_Document* pDocument) {
+ CFX_PtrList list;
+ return ExecuteDocumentPageAction(action, eType, pDocument, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_Document(
+ const CPDF_Action& action,
+ enum CPDF_AAction::AActionType eType,
+ CPDFSDK_Document* pDocument) {
+ CFX_PtrList list;
+ return ExecuteDocumentPageAction(action, eType, pDocument, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_BookMark(CPDF_Bookmark* pBookMark,
+ const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument) {
+ CFX_PtrList list;
+ return ExecuteBookMark(action, pDocument, pBookMark, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_Screen(const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CPDFSDK_Annot* pScreen) {
+ CFX_PtrList list;
+ return ExecuteScreenAction(action, type, pDocument, pScreen, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_Link(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ CFX_PtrList list;
+ return ExecuteLinkAction(action, pDocument, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::DoAction_Field(const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CPDF_FormField* pFormField,
+ PDFSDK_FieldAction& data) {
+ CFX_PtrList list;
+ return ExecuteFieldAction(action, type, pDocument, pFormField, data, list);
+}
+
+FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentOpenAction(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument,
+ CFX_PtrList& list) {
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ RunDocumentOpenJavaScript(pDocument, L"", swJS);
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteDocumentOpenAction(subaction, pDocument, list))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::ExecuteLinkAction(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument,
+ CFX_PtrList& list) {
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime(); //????
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->SetReaderDocument(pDocument);
+
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+
+ pContext->OnLink_MouseUp(pDocument);
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
+ if (!bRet) {
+ // FIXME: return error.
+ }
+
+ pRuntime->ReleaseContext(pContext);
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteLinkAction(subaction, pDocument, list))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::ExecuteDocumentPageAction(
+ const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CFX_PtrList& list) {
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ RunDocumentPageJavaScript(pDocument, type, swJS);
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ if (!IsValidDocView(pDocument))
+ return FALSE;
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteDocumentPageAction(subaction, type, pDocument, list))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::IsValidField(CPDFSDK_Document* pDocument,
+ CPDF_Dictionary* pFieldDict) {
ASSERT(pDocument != NULL);
ASSERT(pFieldDict != NULL);
@@ -254,554 +243,545 @@ FX_BOOL CPDFSDK_ActionHandler::IsValidField(CPDFSDK_Document* pDocument, CPDF_Di
return pPDFInterForm->GetFieldByDict(pFieldDict) != NULL;
}
-FX_BOOL CPDFSDK_ActionHandler::ExecuteFieldAction(const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
- PDFSDK_FieldAction& data, CFX_PtrList& list)
-{
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- RunFieldJavaScript(pDocument, pFormField, type, data, swJS);
- if (!IsValidField(pDocument, pFormField->GetFieldDict()))
- return FALSE;
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteFieldAction(subaction, type, pDocument, pFormField, data, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::ExecuteScreenAction(const CPDF_Action& action, CPDF_AAction::AActionType type,
- CPDFSDK_Document* pDocument, CPDFSDK_Annot* pScreen, CFX_PtrList& list)
-{
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
-
- pRuntime->SetReaderDocument(pDocument);
-
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- // switch (type)
- // {
- // case CPDF_AAction::CursorEnter:
- // pContext->OnScreen_MouseEnter(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::CursorExit:
- // pContext->OnScreen_MouseExit(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::ButtonDown:
- // pContext->OnScreen_MouseDown(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::ButtonUp:
- // pContext->OnScreen_MouseUp(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::GetFocus:
- // pContext->OnScreen_Focus(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::LoseFocus:
- // pContext->OnScreen_Blur(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::PageOpen:
- // pContext->OnScreen_Open(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::PageClose:
- // pContext->OnScreen_Close(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::PageVisible:
- // pContext->OnScreen_InView(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // case CPDF_AAction::PageInvisible:
- // pContext->OnScreen_OutView(IsCTRLpressed(), IsSHIFTpressed(), pScreen);
- // break;
- // default:
- // ASSERT(FALSE);
- // break;
- // }
-
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
- if (!bRet)
- {
- //CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
- }
-
- pRuntime->ReleaseContext(pContext);
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteScreenAction(subaction, type, pDocument, pScreen, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_ActionHandler::ExecuteBookMark(const CPDF_Action& action, CPDFSDK_Document* pDocument,
- CPDF_Bookmark* pBookmark, CFX_PtrList& list)
-{
- ASSERT(pDocument != NULL);
-
- CPDF_Dictionary* pDict = action.GetDict();
- if (list.Find(pDict))
- return FALSE;
-
- list.AddTail(pDict);
-
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv);
- if (action.GetType() == CPDF_Action::JavaScript)
- {
- if(pEnv->IsJSInitiated())
- {
- CFX_WideString swJS = action.GetJavaScript();
- if (!swJS.IsEmpty())
- {
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
-
- pRuntime->SetReaderDocument(pDocument);
-
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- pContext->OnBookmark_MouseUp(pBookmark);
-
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
- if (!bRet)
- {
- //CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
- }
-
- pRuntime->ReleaseContext(pContext);
- }
- }
- }
- else
- {
- DoAction_NoJs(action, pDocument);
- }
-
- for (int32_t i=0,sz=action.GetSubActionsCount(); i<sz; i++)
- {
- CPDF_Action subaction = action.GetSubAction(i);
- if (!ExecuteBookMark(subaction, pDocument, pBookmark, list)) return FALSE;
- }
-
- return TRUE;
-}
-
-void CPDFSDK_ActionHandler::DoAction_NoJs(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
-
- switch (action.GetType())
- {
- case CPDF_Action::GoTo:
- DoAction_GoTo(pDocument, action);
- break;
- case CPDF_Action::GoToR:
- DoAction_GoToR(pDocument, action);
- break;
- case CPDF_Action::GoToE:
- break;
- case CPDF_Action::Launch:
- DoAction_Launch(pDocument, action);
- break;
- case CPDF_Action::Thread:
- break;
- case CPDF_Action::URI:
- DoAction_URI(pDocument, action);
- break;
- case CPDF_Action::Sound:
- if (m_pMediaActionHandler)
- {
- m_pMediaActionHandler->DoAction_Sound(action, pDocument);
- }
- break;
- case CPDF_Action::Movie:
- if (m_pMediaActionHandler)
- {
- m_pMediaActionHandler->DoAction_Movie(action, pDocument);
- }
- break;
- case CPDF_Action::Hide:
- if (m_pFormActionHandler)
- {
- m_pFormActionHandler->DoAction_Hide(action, pDocument);
- }
- break;
- case CPDF_Action::Named:
- DoAction_Named(pDocument, action);
- break;
- case CPDF_Action::SubmitForm:
- if (m_pFormActionHandler)
- {
- m_pFormActionHandler->DoAction_SubmitForm(action, pDocument);
- }
- break;
- case CPDF_Action::ResetForm:
- if (m_pFormActionHandler)
- {
- m_pFormActionHandler->DoAction_ResetForm(action, pDocument);
- }
- break;
- case CPDF_Action::ImportData:
- if (m_pFormActionHandler)
- {
- m_pFormActionHandler->DoAction_ImportData(action, pDocument);
- }
- break;
- case CPDF_Action::JavaScript:
- ASSERT(FALSE);
- break;
- case CPDF_Action::SetOCGState:
- DoAction_SetOCGState(pDocument, action);
- break;
- case CPDF_Action::Rendition:
- if (m_pMediaActionHandler)
- {
- m_pMediaActionHandler->DoAction_Rendition(action, pDocument);
- }
- break;
- case CPDF_Action::Trans:
- break;
- case CPDF_Action::GoTo3DView:
- break;
- default:
- break;
- }
-}
-
-FX_BOOL CPDFSDK_ActionHandler::IsValidDocView(CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
- return TRUE;
+FX_BOOL CPDFSDK_ActionHandler::ExecuteFieldAction(
+ const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CPDF_FormField* pFormField,
+ PDFSDK_FieldAction& data,
+ CFX_PtrList& list) {
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ RunFieldJavaScript(pDocument, pFormField, type, data, swJS);
+ if (!IsValidField(pDocument, pFormField->GetFieldDict()))
+ return FALSE;
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteFieldAction(subaction, type, pDocument, pFormField, data, list))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::ExecuteScreenAction(
+ const CPDF_Action& action,
+ CPDF_AAction::AActionType type,
+ CPDFSDK_Document* pDocument,
+ CPDFSDK_Annot* pScreen,
+ CFX_PtrList& list) {
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->SetReaderDocument(pDocument);
+
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+
+ // switch (type)
+ // {
+ // case CPDF_AAction::CursorEnter:
+ // pContext->OnScreen_MouseEnter(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::CursorExit:
+ // pContext->OnScreen_MouseExit(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::ButtonDown:
+ // pContext->OnScreen_MouseDown(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::ButtonUp:
+ // pContext->OnScreen_MouseUp(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::GetFocus:
+ // pContext->OnScreen_Focus(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::LoseFocus:
+ // pContext->OnScreen_Blur(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::PageOpen:
+ // pContext->OnScreen_Open(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::PageClose:
+ // pContext->OnScreen_Close(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::PageVisible:
+ // pContext->OnScreen_InView(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // case CPDF_AAction::PageInvisible:
+ // pContext->OnScreen_OutView(IsCTRLpressed(),
+ // IsSHIFTpressed(), pScreen);
+ // break;
+ // default:
+ // ASSERT(FALSE);
+ // break;
+ // }
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
+ if (!bRet) {
+ // CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(),
+ // csInfo);
+ }
+
+ pRuntime->ReleaseContext(pContext);
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteScreenAction(subaction, type, pDocument, pScreen, list))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_ActionHandler::ExecuteBookMark(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument,
+ CPDF_Bookmark* pBookmark,
+ CFX_PtrList& list) {
+ ASSERT(pDocument != NULL);
+
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (list.Find(pDict))
+ return FALSE;
+
+ list.AddTail(pDict);
+
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (action.GetType() == CPDF_Action::JavaScript) {
+ if (pEnv->IsJSInitiated()) {
+ CFX_WideString swJS = action.GetJavaScript();
+ if (!swJS.IsEmpty()) {
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->SetReaderDocument(pDocument);
+
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+
+ pContext->OnBookmark_MouseUp(pBookmark);
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(swJS, csInfo);
+ if (!bRet) {
+ // CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(),
+ // csInfo);
+ }
+
+ pRuntime->ReleaseContext(pContext);
+ }
+ }
+ } else {
+ DoAction_NoJs(action, pDocument);
+ }
+
+ for (int32_t i = 0, sz = action.GetSubActionsCount(); i < sz; i++) {
+ CPDF_Action subaction = action.GetSubAction(i);
+ if (!ExecuteBookMark(subaction, pDocument, pBookmark, list))
+ return FALSE;
+ }
+
+ return TRUE;
}
-void CPDFSDK_ActionHandler::DoAction_GoTo(CPDFSDK_Document* pDocument,
- const CPDF_Action& action)
-{
- ASSERT(action);
-
- CPDF_Document* pPDFDocument = pDocument->GetDocument();
- ASSERT(pPDFDocument != NULL);
- CPDFDoc_Environment* pApp = pDocument->GetEnv();
- ASSERT(pApp != NULL);
-
- CPDF_Dest MyDest = action.GetDest(pPDFDocument);
- int nPageIndex = MyDest.GetPageIndex(pPDFDocument);
- int nFitType = MyDest.GetZoomMode();
- const CPDF_Array * pMyArray = (CPDF_Array*)MyDest.GetObject();
- float* pPosAry = NULL;
- int sizeOfAry = 0;
- if (pMyArray != NULL)
- {
- pPosAry = new float[pMyArray->GetCount()];
- int j = 0;
- for (int i = 2; i < (int)pMyArray->GetCount(); i++)
- {
- pPosAry[j++] = pMyArray->GetFloat(i);
- }
- sizeOfAry = j;
- }
- pApp->FFI_DoGoToAction(nPageIndex, nFitType, pPosAry, sizeOfAry);
- if(pPosAry)
- delete[] pPosAry;
-}
-
-void CPDFSDK_ActionHandler::DoAction_GoToR(CPDFSDK_Document* pDocument, const CPDF_Action& action)
-{
-
-}
-
-void CPDFSDK_ActionHandler::DoAction_Launch(CPDFSDK_Document* pDocument, const CPDF_Action& action)
-{
+void CPDFSDK_ActionHandler::DoAction_NoJs(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
+ switch (action.GetType()) {
+ case CPDF_Action::GoTo:
+ DoAction_GoTo(pDocument, action);
+ break;
+ case CPDF_Action::GoToR:
+ DoAction_GoToR(pDocument, action);
+ break;
+ case CPDF_Action::GoToE:
+ break;
+ case CPDF_Action::Launch:
+ DoAction_Launch(pDocument, action);
+ break;
+ case CPDF_Action::Thread:
+ break;
+ case CPDF_Action::URI:
+ DoAction_URI(pDocument, action);
+ break;
+ case CPDF_Action::Sound:
+ if (m_pMediaActionHandler) {
+ m_pMediaActionHandler->DoAction_Sound(action, pDocument);
+ }
+ break;
+ case CPDF_Action::Movie:
+ if (m_pMediaActionHandler) {
+ m_pMediaActionHandler->DoAction_Movie(action, pDocument);
+ }
+ break;
+ case CPDF_Action::Hide:
+ if (m_pFormActionHandler) {
+ m_pFormActionHandler->DoAction_Hide(action, pDocument);
+ }
+ break;
+ case CPDF_Action::Named:
+ DoAction_Named(pDocument, action);
+ break;
+ case CPDF_Action::SubmitForm:
+ if (m_pFormActionHandler) {
+ m_pFormActionHandler->DoAction_SubmitForm(action, pDocument);
+ }
+ break;
+ case CPDF_Action::ResetForm:
+ if (m_pFormActionHandler) {
+ m_pFormActionHandler->DoAction_ResetForm(action, pDocument);
+ }
+ break;
+ case CPDF_Action::ImportData:
+ if (m_pFormActionHandler) {
+ m_pFormActionHandler->DoAction_ImportData(action, pDocument);
+ }
+ break;
+ case CPDF_Action::JavaScript:
+ ASSERT(FALSE);
+ break;
+ case CPDF_Action::SetOCGState:
+ DoAction_SetOCGState(pDocument, action);
+ break;
+ case CPDF_Action::Rendition:
+ if (m_pMediaActionHandler) {
+ m_pMediaActionHandler->DoAction_Rendition(action, pDocument);
+ }
+ break;
+ case CPDF_Action::Trans:
+ break;
+ case CPDF_Action::GoTo3DView:
+ break;
+ default:
+ break;
+ }
+}
+
+FX_BOOL CPDFSDK_ActionHandler::IsValidDocView(CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
+ return TRUE;
}
-void CPDFSDK_ActionHandler::DoAction_URI(CPDFSDK_Document* pDocument, const CPDF_Action& action)
-{
- ASSERT(action);
-
- CPDFDoc_Environment* pApp = pDocument->GetEnv();
- ASSERT(pApp != NULL);
-
- CFX_ByteString sURI = action.GetURI(pDocument->GetDocument());
- pApp->FFI_DoURIAction(sURI.c_str());
+void CPDFSDK_ActionHandler::DoAction_GoTo(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {
+ ASSERT(action);
+
+ CPDF_Document* pPDFDocument = pDocument->GetDocument();
+ ASSERT(pPDFDocument != NULL);
+ CPDFDoc_Environment* pApp = pDocument->GetEnv();
+ ASSERT(pApp != NULL);
+
+ CPDF_Dest MyDest = action.GetDest(pPDFDocument);
+ int nPageIndex = MyDest.GetPageIndex(pPDFDocument);
+ int nFitType = MyDest.GetZoomMode();
+ const CPDF_Array* pMyArray = (CPDF_Array*)MyDest.GetObject();
+ float* pPosAry = NULL;
+ int sizeOfAry = 0;
+ if (pMyArray != NULL) {
+ pPosAry = new float[pMyArray->GetCount()];
+ int j = 0;
+ for (int i = 2; i < (int)pMyArray->GetCount(); i++) {
+ pPosAry[j++] = pMyArray->GetFloat(i);
+ }
+ sizeOfAry = j;
+ }
+ pApp->FFI_DoGoToAction(nPageIndex, nFitType, pPosAry, sizeOfAry);
+ if (pPosAry)
+ delete[] pPosAry;
}
-void CPDFSDK_ActionHandler::DoAction_Named(CPDFSDK_Document* pDocument, const CPDF_Action& action)
-{
- ASSERT(action);
+void CPDFSDK_ActionHandler::DoAction_GoToR(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {}
+
+void CPDFSDK_ActionHandler::DoAction_Launch(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {}
+
+void CPDFSDK_ActionHandler::DoAction_URI(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {
+ ASSERT(action);
+
+ CPDFDoc_Environment* pApp = pDocument->GetEnv();
+ ASSERT(pApp != NULL);
- CFX_ByteString csName = action.GetNamedAction();
- pDocument->GetEnv()->FFI_ExecuteNamedAction(csName);
+ CFX_ByteString sURI = action.GetURI(pDocument->GetDocument());
+ pApp->FFI_DoURIAction(sURI.c_str());
}
+void CPDFSDK_ActionHandler::DoAction_Named(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {
+ ASSERT(action);
-void CPDFSDK_ActionHandler::DoAction_SetOCGState(CPDFSDK_Document* pDocument, const CPDF_Action& action)
-{
+ CFX_ByteString csName = action.GetNamedAction();
+ pDocument->GetEnv()->FFI_ExecuteNamedAction(csName);
}
-void CPDFSDK_ActionHandler::RunFieldJavaScript(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField, CPDF_AAction::AActionType type,
- PDFSDK_FieldAction& data, const CFX_WideString& script)
-{
- ASSERT(type != CPDF_AAction::Calculate);
- ASSERT(type != CPDF_AAction::Format);
-
- ASSERT(pDocument != NULL);
-
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
-
- pRuntime->SetReaderDocument(pDocument);
-
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- switch (type)
- {
- case CPDF_AAction::CursorEnter:
- pContext->OnField_MouseEnter(data.bModifier, data.bShift, pFormField);
- break;
- case CPDF_AAction::CursorExit:
- pContext->OnField_MouseExit(data.bModifier, data.bShift, pFormField);
- break;
- case CPDF_AAction::ButtonDown:
- pContext->OnField_MouseDown(data.bModifier, data.bShift, pFormField);
- break;
- case CPDF_AAction::ButtonUp:
- pContext->OnField_MouseUp(data.bModifier, data.bShift, pFormField);
- break;
- case CPDF_AAction::GetFocus:
- pContext->OnField_Focus(data.bModifier, data.bShift, pFormField, data.sValue);
- break;
- case CPDF_AAction::LoseFocus:
- pContext->OnField_Blur(data.bModifier, data.bShift, pFormField, data.sValue);
- break;
- case CPDF_AAction::KeyStroke:
- pContext->OnField_Keystroke(data.sChange, data.sChangeEx, data.bKeyDown,
- data.bModifier, data.nSelEnd, data.nSelStart, data.bShift, pFormField, data.sValue,
- data.bWillCommit, data.bFieldFull, data.bRC);
- break;
- case CPDF_AAction::Validate:
- pContext->OnField_Validate(data.sChange, data.sChangeEx, data.bKeyDown, data.bModifier,
- data.bShift, pFormField, data.sValue, data.bRC);
- break;
- default:
- ASSERT(FALSE);
- break;
- }
-
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(script, csInfo);
- if (!bRet)
- {
- //CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
- }
-
- pRuntime->ReleaseContext(pContext);
-}
-
-void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript(CPDFSDK_Document* pDocument, const CFX_WideString& sScriptName, const CFX_WideString& script)
-{
- ASSERT(pDocument != NULL);
+void CPDFSDK_ActionHandler::DoAction_SetOCGState(CPDFSDK_Document* pDocument,
+ const CPDF_Action& action) {}
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
+void CPDFSDK_ActionHandler::RunFieldJavaScript(CPDFSDK_Document* pDocument,
+ CPDF_FormField* pFormField,
+ CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& data,
+ const CFX_WideString& script) {
+ ASSERT(type != CPDF_AAction::Calculate);
+ ASSERT(type != CPDF_AAction::Format);
- pRuntime->SetReaderDocument(pDocument);
+ ASSERT(pDocument != NULL);
+
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->SetReaderDocument(pDocument);
+
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+
+ switch (type) {
+ case CPDF_AAction::CursorEnter:
+ pContext->OnField_MouseEnter(data.bModifier, data.bShift, pFormField);
+ break;
+ case CPDF_AAction::CursorExit:
+ pContext->OnField_MouseExit(data.bModifier, data.bShift, pFormField);
+ break;
+ case CPDF_AAction::ButtonDown:
+ pContext->OnField_MouseDown(data.bModifier, data.bShift, pFormField);
+ break;
+ case CPDF_AAction::ButtonUp:
+ pContext->OnField_MouseUp(data.bModifier, data.bShift, pFormField);
+ break;
+ case CPDF_AAction::GetFocus:
+ pContext->OnField_Focus(data.bModifier, data.bShift, pFormField,
+ data.sValue);
+ break;
+ case CPDF_AAction::LoseFocus:
+ pContext->OnField_Blur(data.bModifier, data.bShift, pFormField,
+ data.sValue);
+ break;
+ case CPDF_AAction::KeyStroke:
+ pContext->OnField_Keystroke(data.sChange, data.sChangeEx, data.bKeyDown,
+ data.bModifier, data.nSelEnd, data.nSelStart,
+ data.bShift, pFormField, data.sValue,
+ data.bWillCommit, data.bFieldFull, data.bRC);
+ break;
+ case CPDF_AAction::Validate:
+ pContext->OnField_Validate(data.sChange, data.sChangeEx, data.bKeyDown,
+ data.bModifier, data.bShift, pFormField,
+ data.sValue, data.bRC);
+ break;
+ default:
+ ASSERT(FALSE);
+ break;
+ }
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(script, csInfo);
+ if (!bRet) {
+ // CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
+ }
+
+ pRuntime->ReleaseContext(pContext);
+}
+
+void CPDFSDK_ActionHandler::RunDocumentOpenJavaScript(
+ CPDFSDK_Document* pDocument,
+ const CFX_WideString& sScriptName,
+ const CFX_WideString& script) {
+ ASSERT(pDocument != NULL);
+
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- pContext->OnDoc_Open(pDocument, sScriptName);
+ pRuntime->SetReaderDocument(pDocument);
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(script, csInfo);
- if (!bRet)
- {
- //CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
- }
-
- pRuntime->ReleaseContext(pContext);
-}
-
-void CPDFSDK_ActionHandler::RunDocumentPageJavaScript(CPDFSDK_Document* pDocument, CPDF_AAction::AActionType type, const CFX_WideString& script)
-{
- ASSERT(pDocument != NULL);
-
- IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
-
- pRuntime->SetReaderDocument(pDocument);
-
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- switch (type)
- {
- case CPDF_AAction::OpenPage:
- pContext->OnPage_Open(pDocument);
- break;
- case CPDF_AAction::ClosePage:
- pContext->OnPage_Close(pDocument);
- break;
- case CPDF_AAction::CloseDocument:
- pContext->OnDoc_WillClose(pDocument);
- break;
- case CPDF_AAction::SaveDocument:
- pContext->OnDoc_WillSave(pDocument);
- break;
- case CPDF_AAction::DocumentSaved:
- pContext->OnDoc_DidSave(pDocument);
- break;
- case CPDF_AAction::PrintDocument:
- pContext->OnDoc_WillPrint(pDocument);
- break;
- case CPDF_AAction::DocumentPrinted:
- pContext->OnDoc_DidPrint(pDocument);
- break;
- case CPDF_AAction::PageVisible:
- pContext->OnPage_InView(pDocument);
- break;
- case CPDF_AAction::PageInvisible:
- pContext->OnPage_OutView(pDocument);
- break;
- default:
- ASSERT(FALSE);
- break;
- }
-
- CFX_WideString csInfo;
- FX_BOOL bRet = pContext->RunScript(script, csInfo);
- if (!bRet)
- {
- //CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
- }
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
- pRuntime->ReleaseContext(pContext);
+ pContext->OnDoc_Open(pDocument, sScriptName);
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(script, csInfo);
+ if (!bRet) {
+ // CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
+ }
+
+ pRuntime->ReleaseContext(pContext);
}
+void CPDFSDK_ActionHandler::RunDocumentPageJavaScript(
+ CPDFSDK_Document* pDocument,
+ CPDF_AAction::AActionType type,
+ const CFX_WideString& script) {
+ ASSERT(pDocument != NULL);
-FX_BOOL CPDFSDK_FormActionHandler::DoAction_Hide(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+ IFXJS_Runtime* pRuntime = pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->SetReaderDocument(pDocument);
+
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+
+ switch (type) {
+ case CPDF_AAction::OpenPage:
+ pContext->OnPage_Open(pDocument);
+ break;
+ case CPDF_AAction::ClosePage:
+ pContext->OnPage_Close(pDocument);
+ break;
+ case CPDF_AAction::CloseDocument:
+ pContext->OnDoc_WillClose(pDocument);
+ break;
+ case CPDF_AAction::SaveDocument:
+ pContext->OnDoc_WillSave(pDocument);
+ break;
+ case CPDF_AAction::DocumentSaved:
+ pContext->OnDoc_DidSave(pDocument);
+ break;
+ case CPDF_AAction::PrintDocument:
+ pContext->OnDoc_WillPrint(pDocument);
+ break;
+ case CPDF_AAction::DocumentPrinted:
+ pContext->OnDoc_DidPrint(pDocument);
+ break;
+ case CPDF_AAction::PageVisible:
+ pContext->OnPage_InView(pDocument);
+ break;
+ case CPDF_AAction::PageInvisible:
+ pContext->OnPage_OutView(pDocument);
+ break;
+ default:
+ ASSERT(FALSE);
+ break;
+ }
+
+ CFX_WideString csInfo;
+ FX_BOOL bRet = pContext->RunScript(script, csInfo);
+ if (!bRet) {
+ // CBCL_FormNotify::MsgBoxJSError(pPageView->GetPageViewWnd(), csInfo);
+ }
+
+ pRuntime->ReleaseContext(pContext);
+}
+
+FX_BOOL CPDFSDK_FormActionHandler::DoAction_Hide(const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (pInterForm->DoAction_Hide(action))
- {
- pDocument->SetChangeMark();
- return TRUE;
- }
+ if (pInterForm->DoAction_Hide(action)) {
+ pDocument->SetChangeMark();
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_FormActionHandler::DoAction_SubmitForm(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CPDFSDK_FormActionHandler::DoAction_SubmitForm(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- return pInterForm->DoAction_SubmitForm(action);
+ return pInterForm->DoAction_SubmitForm(action);
}
-FX_BOOL CPDFSDK_FormActionHandler::DoAction_ResetForm(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CPDFSDK_FormActionHandler::DoAction_ResetForm(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (pInterForm->DoAction_ResetForm(action))
- {
- return TRUE;
- }
+ if (pInterForm->DoAction_ResetForm(action)) {
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_FormActionHandler::DoAction_ImportData(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- ASSERT(pDocument != NULL);
+FX_BOOL CPDFSDK_FormActionHandler::DoAction_ImportData(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (pInterForm->DoAction_ImportData(action))
- {
- pDocument->SetChangeMark();
- return TRUE;
- }
+ if (pInterForm->DoAction_ImportData(action)) {
+ pDocument->SetChangeMark();
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Rendition(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- return FALSE;
+FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Rendition(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Sound(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- return FALSE;
+FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Sound(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ return FALSE;
}
-FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Movie(const CPDF_Action& action, CPDFSDK_Document* pDocument)
-{
- return FALSE;
+FX_BOOL CPDFSDK_MediaActionHandler::DoAction_Movie(
+ const CPDF_Action& action,
+ CPDFSDK_Document* pDocument) {
+ return FALSE;
}
diff --git a/fpdfsdk/src/fsdk_annothandler.cpp b/fpdfsdk/src/fsdk_annothandler.cpp
index 9b008cd762..40938c7592 100644
--- a/fpdfsdk/src/fsdk_annothandler.cpp
+++ b/fpdfsdk/src/fsdk_annothandler.cpp
@@ -9,884 +9,810 @@
#include "../include/formfiller/FFL_FormFiller.h"
#include "../include/fsdk_annothandler.h"
+CPDFSDK_AnnotHandlerMgr::CPDFSDK_AnnotHandlerMgr(CPDFDoc_Environment* pApp) {
+ m_pApp = pApp;
-CPDFSDK_AnnotHandlerMgr::CPDFSDK_AnnotHandlerMgr(CPDFDoc_Environment* pApp)
-{
- m_pApp = pApp;
-
- CPDFSDK_BFAnnotHandler* pHandler = new CPDFSDK_BFAnnotHandler(m_pApp);
- pHandler->SetFormFiller(m_pApp->GetIFormFiller());
- RegisterAnnotHandler(pHandler);
+ CPDFSDK_BFAnnotHandler* pHandler = new CPDFSDK_BFAnnotHandler(m_pApp);
+ pHandler->SetFormFiller(m_pApp->GetIFormFiller());
+ RegisterAnnotHandler(pHandler);
}
-CPDFSDK_AnnotHandlerMgr::~CPDFSDK_AnnotHandlerMgr()
-{
- for(int i=0; i<m_Handlers.GetSize(); i++)
- {
- IPDFSDK_AnnotHandler* pHandler = m_Handlers.GetAt(i);
- delete pHandler;
- }
- m_Handlers.RemoveAll();
- m_mapType2Handler.RemoveAll();
+CPDFSDK_AnnotHandlerMgr::~CPDFSDK_AnnotHandlerMgr() {
+ for (int i = 0; i < m_Handlers.GetSize(); i++) {
+ IPDFSDK_AnnotHandler* pHandler = m_Handlers.GetAt(i);
+ delete pHandler;
+ }
+ m_Handlers.RemoveAll();
+ m_mapType2Handler.RemoveAll();
}
-void CPDFSDK_AnnotHandlerMgr::RegisterAnnotHandler(IPDFSDK_AnnotHandler* pAnnotHandler)
-{
- ASSERT(pAnnotHandler != NULL);
+void CPDFSDK_AnnotHandlerMgr::RegisterAnnotHandler(
+ IPDFSDK_AnnotHandler* pAnnotHandler) {
+ ASSERT(pAnnotHandler != NULL);
- ASSERT(GetAnnotHandler(pAnnotHandler->GetType()) == NULL);
+ ASSERT(GetAnnotHandler(pAnnotHandler->GetType()) == NULL);
- m_Handlers.Add(pAnnotHandler);
- m_mapType2Handler.SetAt(pAnnotHandler->GetType(), (void*)pAnnotHandler);
+ m_Handlers.Add(pAnnotHandler);
+ m_mapType2Handler.SetAt(pAnnotHandler->GetType(), (void*)pAnnotHandler);
}
-void CPDFSDK_AnnotHandlerMgr::UnRegisterAnnotHandler(IPDFSDK_AnnotHandler* pAnnotHandler)
-{
- ASSERT(pAnnotHandler != NULL);
+void CPDFSDK_AnnotHandlerMgr::UnRegisterAnnotHandler(
+ IPDFSDK_AnnotHandler* pAnnotHandler) {
+ ASSERT(pAnnotHandler != NULL);
- m_mapType2Handler.RemoveKey(pAnnotHandler->GetType());
+ m_mapType2Handler.RemoveKey(pAnnotHandler->GetType());
- for (int i=0, sz=m_Handlers.GetSize(); i<sz; i++)
- {
- if (m_Handlers.GetAt(i) == pAnnotHandler)
- {
- m_Handlers.RemoveAt(i);
- break;
- }
+ for (int i = 0, sz = m_Handlers.GetSize(); i < sz; i++) {
+ if (m_Handlers.GetAt(i) == pAnnotHandler) {
+ m_Handlers.RemoveAt(i);
+ break;
}
+ }
}
-CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::NewAnnot(CPDF_Annot * pAnnot, CPDFSDK_PageView *pPageView)
-{
- ASSERT(pAnnot != NULL);
- ASSERT(pPageView != NULL);
+CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::NewAnnot(CPDF_Annot* pAnnot,
+ CPDFSDK_PageView* pPageView) {
+ ASSERT(pAnnot != NULL);
+ ASSERT(pPageView != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot->GetSubType()))
- {
- return pAnnotHandler->NewAnnot(pAnnot, pPageView);
- }
+ if (IPDFSDK_AnnotHandler* pAnnotHandler =
+ GetAnnotHandler(pAnnot->GetSubType())) {
+ return pAnnotHandler->NewAnnot(pAnnot, pPageView);
+ }
- return new CPDFSDK_Annot(pAnnot, pPageView);
+ return new CPDFSDK_Annot(pAnnot, pPageView);
}
-void CPDFSDK_AnnotHandlerMgr::ReleaseAnnot(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
+void CPDFSDK_AnnotHandlerMgr::ReleaseAnnot(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- pAnnot->GetPDFPage();
+ pAnnot->GetPDFPage();
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnRelease(pAnnot);
- pAnnotHandler->ReleaseAnnot(pAnnot);
- }
- else
- {
- delete (CPDFSDK_Annot*)pAnnot;
- }
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnRelease(pAnnot);
+ pAnnotHandler->ReleaseAnnot(pAnnot);
+ } else {
+ delete (CPDFSDK_Annot*)pAnnot;
+ }
}
-void CPDFSDK_AnnotHandlerMgr::Annot_OnCreate(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
+void CPDFSDK_AnnotHandlerMgr::Annot_OnCreate(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
+ CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
- CPDFSDK_DateTime curTime;
- pPDFAnnot->GetAnnotDict()->SetAtString("M", curTime.ToPDFDateTimeString());
- pPDFAnnot->GetAnnotDict()->SetAtNumber("F", 0);
+ CPDFSDK_DateTime curTime;
+ pPDFAnnot->GetAnnotDict()->SetAtString("M", curTime.ToPDFDateTimeString());
+ pPDFAnnot->GetAnnotDict()->SetAtNumber("F", 0);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnCreate(pAnnot);
- }
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnCreate(pAnnot);
+ }
}
-void CPDFSDK_AnnotHandlerMgr::Annot_OnLoad(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
+void CPDFSDK_AnnotHandlerMgr::Annot_OnLoad(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnLoad(pAnnot);
- }
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnLoad(pAnnot);
+ }
}
-IPDFSDK_AnnotHandler* CPDFSDK_AnnotHandlerMgr::GetAnnotHandler(CPDFSDK_Annot* pAnnot) const
-{
- ASSERT(pAnnot != NULL);
+IPDFSDK_AnnotHandler* CPDFSDK_AnnotHandlerMgr::GetAnnotHandler(
+ CPDFSDK_Annot* pAnnot) const {
+ ASSERT(pAnnot != NULL);
- CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
- ASSERT(pPDFAnnot != NULL);
+ CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
+ ASSERT(pPDFAnnot != NULL);
- return GetAnnotHandler(pPDFAnnot->GetSubType());
+ return GetAnnotHandler(pPDFAnnot->GetSubType());
}
-IPDFSDK_AnnotHandler* CPDFSDK_AnnotHandlerMgr::GetAnnotHandler(const CFX_ByteString& sType) const
-{
- void* pRet = NULL;
- m_mapType2Handler.Lookup(sType, pRet);
- return (IPDFSDK_AnnotHandler*)pRet;
+IPDFSDK_AnnotHandler* CPDFSDK_AnnotHandlerMgr::GetAnnotHandler(
+ const CFX_ByteString& sType) const {
+ void* pRet = NULL;
+ m_mapType2Handler.Lookup(sType, pRet);
+ return (IPDFSDK_AnnotHandler*)pRet;
}
-void CPDFSDK_AnnotHandlerMgr::Annot_OnDraw(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot, CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,FX_DWORD dwFlags)
-{
- ASSERT(pAnnot != NULL);
+void CPDFSDK_AnnotHandlerMgr::Annot_OnDraw(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
- }
- else
- {
- pAnnot->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
+ } else {
+ pAnnot->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+ }
}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDown(
+ CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDown(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
-
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnLButtonDown(pPageView, pAnnot, nFlags, point);
- }
- return FALSE;
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnLButtonDown(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonUp(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
- {
- ASSERT(pAnnot != NULL);
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnLButtonUp(pPageView, pAnnot, nFlags, point);
- }
- return FALSE;
- }
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDblClk(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
-
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnLButtonUp(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
+}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDblClk(
+ CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
+}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseMove(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnMouseMove(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
+}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseWheel(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ short zDelta,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta,
+ point);
+ }
+ return FALSE;
+}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonDown(
+ CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnRButtonDown(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
+}
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnRButtonUp(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
+}
+
+void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseEnter(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnMouseEnter(pPageView, pAnnot, nFlag);
+ }
+ return;
+}
+
+void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseExit(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ pAnnotHandler->OnMouseExit(pPageView, pAnnot, nFlag);
+ }
+ return;
+}
+
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnChar(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nChar,
+ FX_DWORD nFlags) {
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnChar(pAnnot, nChar, nFlags);
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyDown(CPDFSDK_Annot* pAnnot,
+ int nKeyCode,
+ int nFlag) {
+ if (!m_pApp->FFI_IsCTRLKeyDown(nFlag) && !m_pApp->FFI_IsALTKeyDown(nFlag)) {
+ CPDFSDK_PageView* pPage = pAnnot->GetPageView();
+ CPDFSDK_Annot* pFocusAnnot = pPage->GetFocusAnnot();
+ if (pFocusAnnot && (nKeyCode == FWL_VKEY_Tab)) {
+ CPDFSDK_Annot* pNext =
+ GetNextAnnot(pFocusAnnot, !m_pApp->FFI_IsSHIFTKeyDown(nFlag));
+
+ if (pNext && pNext != pFocusAnnot) {
+ CPDFSDK_Document* pDocument = pPage->GetSDKDocument();
+ pDocument->SetFocusAnnot(pNext);
+ return TRUE;
+ }
}
- return FALSE;
-}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseMove(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
+ }
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnMouseMove(pPageView, pAnnot, nFlags, point);
- }
- return FALSE;
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ return pAnnotHandler->OnKeyDown(pAnnot, nKeyCode, nFlag);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseWheel(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
-
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnMouseWheel(pPageView, pAnnot,nFlags,zDelta, point);
- }
- return FALSE;
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyUp(CPDFSDK_Annot* pAnnot,
+ int nKeyCode,
+ int nFlag) {
+ return FALSE;
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonDown(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnRButtonDown(pPageView, pAnnot, nFlags, point);
- }
- return FALSE;
-}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonUp(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnRButtonUp(pPageView, pAnnot, nFlags, point);
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ if (pAnnotHandler->OnSetFocus(pAnnot, nFlag)) {
+ CPDFSDK_PageView* pPage = pAnnot->GetPageView();
+ pPage->GetSDKDocument();
+ return TRUE;
}
- return FALSE;
+ }
+ return FALSE;
}
-void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseEnter(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot);
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
+ return pAnnotHandler->OnKillFocus(pAnnot, nFlag);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnMouseEnter(pPageView, pAnnot, nFlag);
- }
- return ;
+ return FALSE;
}
-void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseExit(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
+CPDF_Rect CPDFSDK_AnnotHandlerMgr::Annot_OnGetViewBBox(
+ CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot);
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
+ return pAnnotHandler->GetViewBBox(pPageView, pAnnot);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- pAnnotHandler->OnMouseExit(pPageView, pAnnot, nFlag);
- }
- return;
+ return pAnnot->GetRect();
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags)
-{
-
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnChar(pAnnot,nChar, nFlags);
- }
- return FALSE;
-
+FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnHitTest(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot);
+ if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) {
+ if (pAnnotHandler->CanAnswer(pAnnot))
+ return pAnnotHandler->HitTest(pPageView, pAnnot, point);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag)
-{
-
- if (!m_pApp->FFI_IsCTRLKeyDown(nFlag) && !m_pApp->FFI_IsALTKeyDown(nFlag))
- {
- CPDFSDK_PageView* pPage = pAnnot->GetPageView();
- CPDFSDK_Annot* pFocusAnnot = pPage->GetFocusAnnot();
- if (pFocusAnnot && (nKeyCode == FWL_VKEY_Tab))
- {
- CPDFSDK_Annot* pNext = GetNextAnnot(pFocusAnnot, !m_pApp->FFI_IsSHIFTKeyDown(nFlag));
-
- if(pNext && pNext != pFocusAnnot)
- {
- CPDFSDK_Document* pDocument = pPage->GetSDKDocument();
- pDocument->SetFocusAnnot(pNext);
- return TRUE;
- }
- }
- }
-
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- return pAnnotHandler->OnKeyDown(pAnnot,nKeyCode, nFlag);
- }
- return FALSE;
+CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,
+ FX_BOOL bNext) {
+ CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), "Widget", "");
+ return bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot);
}
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag)
-{
- return FALSE;
-}
-
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- if (pAnnotHandler->OnSetFocus(pAnnot, nFlag))
- {
- CPDFSDK_PageView* pPage = pAnnot->GetPageView();
- pPage->GetSDKDocument();
- return TRUE;
- }
- }
+FX_BOOL CPDFSDK_BFAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot->GetType() == "Widget");
+ if (pAnnot->GetSubType() == BFFT_SIGNATURE)
return FALSE;
-}
-
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- return pAnnotHandler->OnKillFocus(pAnnot, nFlag);
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (!pWidget->IsVisible())
return FALSE;
-}
-
-CPDF_Rect CPDFSDK_AnnotHandlerMgr::Annot_OnGetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- return pAnnotHandler->GetViewBBox(pPageView, pAnnot);
- return pAnnot->GetRect();
-}
-
-FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnHitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point)
-{
- ASSERT(pAnnot);
- if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot))
- {
- if (pAnnotHandler->CanAnswer(pAnnot))
- return pAnnotHandler->HitTest(pPageView, pAnnot, point);
- }
+ int nFieldFlags = pWidget->GetFieldFlags();
+ if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY)
return FALSE;
-}
-
-CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,FX_BOOL bNext)
-{
- CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), "Widget", "");
- return bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot);
-}
-FX_BOOL CPDFSDK_BFAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot->GetType() == "Widget");
- if (pAnnot->GetSubType() == BFFT_SIGNATURE)
- return FALSE;
-
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (!pWidget->IsVisible())
- return FALSE;
-
- int nFieldFlags = pWidget->GetFieldFlags();
- if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY)
- return FALSE;
-
- if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON)
- return TRUE;
+ if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON)
+ return TRUE;
- CPDF_Page* pPage = pWidget->GetPDFPage();
- CPDF_Document* pDocument = pPage->m_pDocument;
- FX_DWORD dwPermissions = pDocument->GetUserPermissions();
- return (dwPermissions & FPDFPERM_FILL_FORM) ||
- (dwPermissions & FPDFPERM_ANNOT_FORM);
+ CPDF_Page* pPage = pWidget->GetPDFPage();
+ CPDF_Document* pDocument = pPage->m_pDocument;
+ FX_DWORD dwPermissions = pDocument->GetUserPermissions();
+ return (dwPermissions & FPDFPERM_FILL_FORM) ||
+ (dwPermissions & FPDFPERM_ANNOT_FORM);
}
-CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage)
-{
- CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument();
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm();
- CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl(pInterForm->GetInterForm(), pAnnot->GetAnnotDict());
- if (!pCtrl)
- return nullptr;
+CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CPDF_Annot* pAnnot,
+ CPDFSDK_PageView* pPage) {
+ CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument();
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm();
+ CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl(
+ pInterForm->GetInterForm(), pAnnot->GetAnnotDict());
+ if (!pCtrl)
+ return nullptr;
- CPDFSDK_Widget* pWidget = new CPDFSDK_Widget(pAnnot, pPage, pInterForm);
- pInterForm->AddMap(pCtrl, pWidget);
- CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
- if (pPDFInterForm && pPDFInterForm->NeedConstructAP())
- pWidget->ResetAppearance(nullptr, FALSE);
+ CPDFSDK_Widget* pWidget = new CPDFSDK_Widget(pAnnot, pPage, pInterForm);
+ pInterForm->AddMap(pCtrl, pWidget);
+ CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
+ if (pPDFInterForm && pPDFInterForm->NeedConstructAP())
+ pWidget->ResetAppearance(nullptr, FALSE);
- return pWidget;
+ return pWidget;
}
-void CPDFSDK_BFAnnotHandler::ReleaseAnnot(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
-
- if (m_pFormFiller)
- m_pFormFiller->OnDelete(pAnnot);
-
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
- ASSERT(pInterForm != NULL);
-
- CPDF_FormControl* pCtrol = pWidget->GetFormControl();
- pInterForm->RemoveMap(pCtrol);
-
+void CPDFSDK_BFAnnotHandler::ReleaseAnnot(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- delete pWidget;
-}
+ if (m_pFormFiller)
+ m_pFormFiller->OnDelete(pAnnot);
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
+ ASSERT(pInterForm != NULL);
-void CPDFSDK_BFAnnotHandler::OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, FX_DWORD dwFlags)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+ CPDF_FormControl* pCtrol = pWidget->GetFormControl();
+ pInterForm->RemoveMap(pCtrol);
- if (sSubType == BFFT_SIGNATURE)
- {
- pAnnot->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
- }
- else
- {
- if (m_pFormFiller)
- {
- m_pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
- }
- }
+ delete pWidget;
}
-void CPDFSDK_BFAnnotHandler::OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+void CPDFSDK_BFAnnotHandler::OnDraw(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_DWORD dwFlags) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
+ if (sSubType == BFFT_SIGNATURE) {
+ pAnnot->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+ } else {
+ if (m_pFormFiller) {
+ m_pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags);
}
- else
- {
- if (m_pFormFiller)
- m_pFormFiller->OnMouseEnter(pPageView, pAnnot, nFlag);
- }
-
-
+ }
}
-void CPDFSDK_BFAnnotHandler::OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- m_pFormFiller->OnMouseExit(pPageView, pAnnot, nFlag);
- }
+void CPDFSDK_BFAnnotHandler::OnMouseEnter(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ m_pFormFiller->OnMouseEnter(pPageView, pAnnot, nFlag);
+ }
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+void CPDFSDK_BFAnnotHandler::OnMouseExit(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ m_pFormFiller->OnMouseExit(pPageView, pAnnot, nFlag);
+ }
+}
+FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
+
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+FX_BOOL CPDFSDK_BFAnnotHandler::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
- }
+FX_BOOL CPDFSDK_BFAnnotHandler::OnMouseMove(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- return FALSE;
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point);
+ }
+ return FALSE;
}
+FX_BOOL CPDFSDK_BFAnnotHandler::OnMouseWheel(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ short zDelta,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-FX_BOOL CPDFSDK_BFAnnotHandler::OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta,point);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta,
+ point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+FX_BOOL CPDFSDK_BFAnnotHandler::OnRButtonDown(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
- }
-
- return FALSE;
-}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
+FX_BOOL CPDFSDK_BFAnnotHandler::OnRButtonUp(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlags,
+ const CPDF_Point& point) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-FX_BOOL CPDFSDK_BFAnnotHandler::OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnChar(pAnnot,nChar, nFlags);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+FX_BOOL CPDFSDK_BFAnnotHandler::OnChar(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nChar,
+ FX_DWORD nFlags) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnKeyDown(pAnnot,nKeyCode, nFlag);
- }
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnChar(pAnnot, nChar, nFlags);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag)
-{
+FX_BOOL CPDFSDK_BFAnnotHandler::OnKeyDown(CPDFSDK_Annot* pAnnot,
+ int nKeyCode,
+ int nFlag) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- return FALSE;
-}
-void CPDFSDK_BFAnnotHandler::OnCreate(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlag);
+ }
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- m_pFormFiller->OnCreate(pAnnot);
- }
+ return FALSE;
}
-void CPDFSDK_BFAnnotHandler::OnLoad(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
-
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
- if (!pWidget->IsAppearanceValid())
- pWidget->ResetAppearance(NULL, FALSE);
-
- int nFieldType = pWidget->GetFieldType();
- if (nFieldType == FIELDTYPE_TEXTFIELD || nFieldType == FIELDTYPE_COMBOBOX)
- {
- FX_BOOL bFormated = FALSE;
- CFX_WideString sValue = pWidget->OnFormat(bFormated);
- if (bFormated && nFieldType == FIELDTYPE_COMBOBOX)
- {
- pWidget->ResetAppearance(sValue.c_str(), FALSE);
- }
- }
-
- if (m_pFormFiller)
- m_pFormFiller->OnLoad(pAnnot);
- }
+FX_BOOL CPDFSDK_BFAnnotHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
+ int nKeyCode,
+ int nFlag) {
+ return FALSE;
}
+void CPDFSDK_BFAnnotHandler::OnCreate(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-FX_BOOL CPDFSDK_BFAnnotHandler::OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnSetFocus(pAnnot,nFlag);
- }
-
- return TRUE;
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ m_pFormFiller->OnCreate(pAnnot);
+ }
}
-FX_BOOL CPDFSDK_BFAnnotHandler::OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->OnKillFocus(pAnnot,nFlag);
- }
+void CPDFSDK_BFAnnotHandler::OnLoad(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- return TRUE;
-}
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-CPDF_Rect CPDFSDK_BFAnnotHandler::GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
- CFX_ByteString sSubType = pAnnot->GetSubType();
-
- if (sSubType == BFFT_SIGNATURE)
- {
- }
- else
- {
- if (m_pFormFiller)
- return m_pFormFiller->GetViewBBox(pPageView, pAnnot);
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
+ if (!pWidget->IsAppearanceValid())
+ pWidget->ResetAppearance(NULL, FALSE);
+ int nFieldType = pWidget->GetFieldType();
+ if (nFieldType == FIELDTYPE_TEXTFIELD || nFieldType == FIELDTYPE_COMBOBOX) {
+ FX_BOOL bFormated = FALSE;
+ CFX_WideString sValue = pWidget->OnFormat(bFormated);
+ if (bFormated && nFieldType == FIELDTYPE_COMBOBOX) {
+ pWidget->ResetAppearance(sValue.c_str(), FALSE);
+ }
}
- return CPDF_Rect(0,0,0,0);
-}
-
-FX_BOOL CPDFSDK_BFAnnotHandler::HitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point)
-{
- ASSERT(pPageView);
- ASSERT(pAnnot);
-
- CPDF_Rect rect = GetViewBBox(pPageView, pAnnot);
- return rect.Contains(point.x, point.y);
-}
-
-//CReader_AnnotIteratorEx
-
-CPDFSDK_AnnotIterator::CPDFSDK_AnnotIterator(CPDFSDK_PageView * pPageView,FX_BOOL bReverse,
- FX_BOOL bIgnoreTopmost/*=FALSE*/,
- FX_BOOL bCircle/*=FALSE*/,
- CFX_PtrArray *pList/*=NULL*/)
-{
- ASSERT(pPageView);
- m_bReverse=bReverse;
- m_bIgnoreTopmost= bIgnoreTopmost;
- m_bCircle=bCircle;
- m_pIteratorAnnotList.RemoveAll();
- InitIteratorAnnotList(pPageView,pList);
-}
-
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::NextAnnot (const CPDFSDK_Annot* pCurrent)
-{
-
- int index = -1;
- int nCount = m_pIteratorAnnotList.GetSize();
- if (pCurrent) {
- for(int i=0;i<nCount;i++){
- CPDFSDK_Annot * pReaderAnnot= (CPDFSDK_Annot *)m_pIteratorAnnotList.GetAt(i);
- if(pReaderAnnot ==pCurrent){
- index=i;
- break;
- }
- }
- }
- return NextAnnot(index);
-}
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot (const CPDFSDK_Annot*pCurrent)
-{
- int index = -1;
- int nCount = m_pIteratorAnnotList.GetSize();
- if(pCurrent){
- for(int i=0;i<nCount;i++){
- CPDFSDK_Annot * pReaderAnnot= (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(i);
- if(pReaderAnnot ==pCurrent){
- index=i;
- break;
- }
- }
- }
- return PrevAnnot(index);
-}
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::NextAnnot (int& index)
-{
-
- int nCount=m_pIteratorAnnotList.GetSize();
- if(nCount<=0) index=-1;
- else{
- if(index<0){
- index=0;
- }
- else{
- if(m_bCircle){
- index=( index <nCount-1) ? (index+1) :0;
- }
- else{
- index=( index <nCount-1) ? (index+1) :-1;
- }
-
- }
- }
- return (index <0) ? NULL : (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(index);
-}
-
-
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot (int& index)
-{
-
- int nCount=m_pIteratorAnnotList.GetSize();
- if(nCount<=0) index=-1;
- else{
- if(index<0){
- index=nCount-1;
- }
- else{
- if(m_bCircle){
- index = ( index >0) ? (index-1) :nCount-1;
- }
- else{
- index = ( index >0) ? (index-1) :-1;
- }
- }
- }
- return (index <0) ? NULL : (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(index);
+ if (m_pFormFiller)
+ m_pFormFiller->OnLoad(pAnnot);
+ }
}
+FX_BOOL CPDFSDK_BFAnnotHandler::OnSetFocus(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-CPDFSDK_Annot*CPDFSDK_AnnotIterator::Next(const CPDFSDK_Annot* pCurrent)
-{
-
- return (m_bReverse) ? PrevAnnot(pCurrent):NextAnnot(pCurrent);
-
-}
-
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::Prev(const CPDFSDK_Annot* pCurrent)
-{
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnSetFocus(pAnnot, nFlag);
+ }
- return (m_bReverse) ? NextAnnot(pCurrent):PrevAnnot(pCurrent);
+ return TRUE;
}
+FX_BOOL CPDFSDK_BFAnnotHandler::OnKillFocus(CPDFSDK_Annot* pAnnot,
+ FX_DWORD nFlag) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
-CPDFSDK_Annot*CPDFSDK_AnnotIterator::Next(int& index )
-{
-
- return (m_bReverse) ? PrevAnnot(index):NextAnnot(index);
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->OnKillFocus(pAnnot, nFlag);
+ }
+ return TRUE;
}
-CPDFSDK_Annot* CPDFSDK_AnnotIterator::Prev(int& index )
-{
+CPDF_Rect CPDFSDK_BFAnnotHandler::GetViewBBox(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
+ CFX_ByteString sSubType = pAnnot->GetSubType();
- return (m_bReverse) ? NextAnnot(index):PrevAnnot(index);
+ if (sSubType == BFFT_SIGNATURE) {
+ } else {
+ if (m_pFormFiller)
+ return m_pFormFiller->GetViewBBox(pPageView, pAnnot);
+ }
+
+ return CPDF_Rect(0, 0, 0, 0);
+}
+
+FX_BOOL CPDFSDK_BFAnnotHandler::HitTest(CPDFSDK_PageView* pPageView,
+ CPDFSDK_Annot* pAnnot,
+ const CPDF_Point& point) {
+ ASSERT(pPageView);
+ ASSERT(pAnnot);
+
+ CPDF_Rect rect = GetViewBBox(pPageView, pAnnot);
+ return rect.Contains(point.x, point.y);
+}
+
+// CReader_AnnotIteratorEx
+
+CPDFSDK_AnnotIterator::CPDFSDK_AnnotIterator(CPDFSDK_PageView* pPageView,
+ FX_BOOL bReverse,
+ FX_BOOL bIgnoreTopmost /*=FALSE*/,
+ FX_BOOL bCircle /*=FALSE*/,
+ CFX_PtrArray* pList /*=NULL*/) {
+ ASSERT(pPageView);
+ m_bReverse = bReverse;
+ m_bIgnoreTopmost = bIgnoreTopmost;
+ m_bCircle = bCircle;
+ m_pIteratorAnnotList.RemoveAll();
+ InitIteratorAnnotList(pPageView, pList);
}
-
-void CPDFSDK_AnnotIterator::InsertSort(CFX_PtrArray &arrayList, AI_COMPARE pCompare)
-{
- for (int i = 1; i < arrayList.GetSize(); i++)
- {
- if (pCompare((CPDFSDK_Annot*)(arrayList[i]) , (CPDFSDK_Annot*)(arrayList[i-1])) < 0)
- {
- int j = i-1;
- CPDFSDK_Annot* pTemp = (CPDFSDK_Annot*)arrayList[i];
-
- do
- {
- arrayList[j + 1] = arrayList[j];
- } while (--j >= 0 && pCompare(pTemp, (CPDFSDK_Annot*)arrayList[j]) < 0);
-
- arrayList[j+1] = pTemp;
- }
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::NextAnnot(const CPDFSDK_Annot* pCurrent) {
+ int index = -1;
+ int nCount = m_pIteratorAnnotList.GetSize();
+ if (pCurrent) {
+ for (int i = 0; i < nCount; i++) {
+ CPDFSDK_Annot* pReaderAnnot =
+ (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(i);
+ if (pReaderAnnot == pCurrent) {
+ index = i;
+ break;
+ }
}
-}
-
-int LyOrderCompare(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2)
-{
- if (p1->GetLayoutOrder() < p2->GetLayoutOrder())
- return -1;
- if (p1->GetLayoutOrder() > p2->GetLayoutOrder())
- return 1;
- return 0;
-}
+ }
+ return NextAnnot(index);
+}
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot(const CPDFSDK_Annot* pCurrent) {
+ int index = -1;
+ int nCount = m_pIteratorAnnotList.GetSize();
+ if (pCurrent) {
+ for (int i = 0; i < nCount; i++) {
+ CPDFSDK_Annot* pReaderAnnot =
+ (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(i);
+ if (pReaderAnnot == pCurrent) {
+ index = i;
+ break;
+ }
+ }
+ }
+ return PrevAnnot(index);
+}
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::NextAnnot(int& index) {
+ int nCount = m_pIteratorAnnotList.GetSize();
+ if (nCount <= 0)
+ index = -1;
+ else {
+ if (index < 0) {
+ index = 0;
+ } else {
+ if (m_bCircle) {
+ index = (index < nCount - 1) ? (index + 1) : 0;
+ } else {
+ index = (index < nCount - 1) ? (index + 1) : -1;
+ }
+ }
+ }
+ return (index < 0) ? NULL : (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(index);
+}
+
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot(int& index) {
+ int nCount = m_pIteratorAnnotList.GetSize();
+ if (nCount <= 0)
+ index = -1;
+ else {
+ if (index < 0) {
+ index = nCount - 1;
+ } else {
+ if (m_bCircle) {
+ index = (index > 0) ? (index - 1) : nCount - 1;
+ } else {
+ index = (index > 0) ? (index - 1) : -1;
+ }
+ }
+ }
+ return (index < 0) ? NULL : (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(index);
+}
+
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::Next(const CPDFSDK_Annot* pCurrent) {
+ return (m_bReverse) ? PrevAnnot(pCurrent) : NextAnnot(pCurrent);
+}
+
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::Prev(const CPDFSDK_Annot* pCurrent) {
+ return (m_bReverse) ? NextAnnot(pCurrent) : PrevAnnot(pCurrent);
+}
+
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::Next(int& index) {
+ return (m_bReverse) ? PrevAnnot(index) : NextAnnot(index);
+}
+
+CPDFSDK_Annot* CPDFSDK_AnnotIterator::Prev(int& index) {
+ return (m_bReverse) ? NextAnnot(index) : PrevAnnot(index);
+}
+
+void CPDFSDK_AnnotIterator::InsertSort(CFX_PtrArray& arrayList,
+ AI_COMPARE pCompare) {
+ for (int i = 1; i < arrayList.GetSize(); i++) {
+ if (pCompare((CPDFSDK_Annot*)(arrayList[i]),
+ (CPDFSDK_Annot*)(arrayList[i - 1])) < 0) {
+ int j = i - 1;
+ CPDFSDK_Annot* pTemp = (CPDFSDK_Annot*)arrayList[i];
+
+ do {
+ arrayList[j + 1] = arrayList[j];
+ } while (--j >= 0 && pCompare(pTemp, (CPDFSDK_Annot*)arrayList[j]) < 0);
+
+ arrayList[j + 1] = pTemp;
+ }
+ }
+}
+
+int LyOrderCompare(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) {
+ if (p1->GetLayoutOrder() < p2->GetLayoutOrder())
+ return -1;
+ if (p1->GetLayoutOrder() > p2->GetLayoutOrder())
+ return 1;
+ return 0;
+}
+
+FX_BOOL CPDFSDK_AnnotIterator::InitIteratorAnnotList(
+ CPDFSDK_PageView* pPageView,
+ CFX_PtrArray* pAnnotList) {
+ ASSERT(pPageView);
-FX_BOOL CPDFSDK_AnnotIterator::InitIteratorAnnotList(CPDFSDK_PageView* pPageView,CFX_PtrArray * pAnnotList)
-{
- ASSERT(pPageView);
+ if (pAnnotList == NULL) {
+ pAnnotList = pPageView->GetAnnotList();
+ }
- if(pAnnotList==NULL){
- pAnnotList=pPageView->GetAnnotList();
- }
+ m_pIteratorAnnotList.RemoveAll();
+ if (!pAnnotList)
+ return FALSE;
- m_pIteratorAnnotList.RemoveAll();
- if(!pAnnotList) return FALSE;
+ CPDFSDK_Annot* pTopMostAnnot =
+ (m_bIgnoreTopmost) ? NULL : pPageView->GetFocusAnnot();
- CPDFSDK_Annot * pTopMostAnnot= (m_bIgnoreTopmost) ? NULL : pPageView->GetFocusAnnot();
+ int nCount = pAnnotList->GetSize();
+ for (int i = nCount - 1; i >= 0; i--) {
+ CPDFSDK_Annot* pReaderAnnot = (CPDFSDK_Annot*)pAnnotList->GetAt(i);
+ m_pIteratorAnnotList.Add(pReaderAnnot);
+ }
- int nCount =pAnnotList->GetSize();
+ InsertSort(m_pIteratorAnnotList, &LyOrderCompare);
- for(int i = nCount- 1 ;i >= 0;i--)
- {
- CPDFSDK_Annot * pReaderAnnot= (CPDFSDK_Annot*)pAnnotList->GetAt(i);
- m_pIteratorAnnotList.Add(pReaderAnnot);
+ if (pTopMostAnnot) {
+ for (int i = 0; i < nCount; i++) {
+ CPDFSDK_Annot* pReaderAnnot =
+ (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(i);
+ if (pReaderAnnot == pTopMostAnnot) {
+ m_pIteratorAnnotList.RemoveAt(i);
+ m_pIteratorAnnotList.InsertAt(0, pReaderAnnot);
+ break;
+ }
}
+ }
- InsertSort(m_pIteratorAnnotList,&LyOrderCompare);
-
- if(pTopMostAnnot)
- {
- for(int i=0 ;i<nCount;i++)
- {
- CPDFSDK_Annot * pReaderAnnot = (CPDFSDK_Annot*)m_pIteratorAnnotList.GetAt(i);
- if(pReaderAnnot == pTopMostAnnot)
- {
- m_pIteratorAnnotList.RemoveAt(i);
- m_pIteratorAnnotList.InsertAt(0, pReaderAnnot);
- break;
- }
- }
- }
-
- return TRUE;
+ return TRUE;
}
diff --git a/fpdfsdk/src/fsdk_baseannot.cpp b/fpdfsdk/src/fsdk_baseannot.cpp
index d0dc4ef738..c6731e6f56 100644
--- a/fpdfsdk/src/fsdk_baseannot.cpp
+++ b/fpdfsdk/src/fsdk_baseannot.cpp
@@ -8,30 +8,24 @@
#include "../include/fsdk_mgr.h"
#include "../include/fsdk_baseannot.h"
-
//---------------------------------------------------------------------------
// CPDFSDK_DateTime
//---------------------------------------------------------------------------
-int _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, uint8_t tzminute)
-{
- return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60);
+int _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, uint8_t tzminute) {
+ return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60);
}
-FX_BOOL _gAfxIsLeapYear(int16_t year)
-{
- return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));
+FX_BOOL _gAfxIsLeapYear(int16_t year) {
+ return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));
}
-FX_WORD _gAfxGetYearDays(int16_t year)
-{
- return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365);
+FX_WORD _gAfxGetYearDays(int16_t year) {
+ return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365);
}
-uint8_t _gAfxGetMonthDays(int16_t year, uint8_t month)
-{
- uint8_t mDays;
- switch (month)
- {
+uint8_t _gAfxGetMonthDays(int16_t year, uint8_t month) {
+ uint8_t mDays;
+ switch (month) {
case 1:
case 3:
case 5:
@@ -39,1037 +33,974 @@ uint8_t _gAfxGetMonthDays(int16_t year, uint8_t month)
case 8:
case 10:
case 12:
- mDays = 31;
- break;
+ mDays = 31;
+ break;
case 4:
case 6:
case 9:
case 11:
- mDays = 30;
- break;
+ mDays = 30;
+ break;
case 2:
- if (_gAfxIsLeapYear(year) == TRUE)
- mDays = 29;
- else
- mDays = 28;
- break;
+ if (_gAfxIsLeapYear(year) == TRUE)
+ mDays = 29;
+ else
+ mDays = 28;
+ break;
default:
- mDays = 0;
- break;
- }
+ mDays = 0;
+ break;
+ }
- return mDays;
+ return mDays;
}
-CPDFSDK_DateTime::CPDFSDK_DateTime()
-{
- ResetDateTime();
+CPDFSDK_DateTime::CPDFSDK_DateTime() {
+ ResetDateTime();
}
-CPDFSDK_DateTime::CPDFSDK_DateTime(const CFX_ByteString& dtStr)
-{
- ResetDateTime();
+CPDFSDK_DateTime::CPDFSDK_DateTime(const CFX_ByteString& dtStr) {
+ ResetDateTime();
- FromPDFDateTimeString(dtStr);
+ FromPDFDateTimeString(dtStr);
}
-CPDFSDK_DateTime::CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime)
-{
- operator = (datetime);
+CPDFSDK_DateTime::CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime) {
+ operator=(datetime);
}
-CPDFSDK_DateTime::CPDFSDK_DateTime(const FX_SYSTEMTIME& st)
-{
- operator = (st) ;
+CPDFSDK_DateTime::CPDFSDK_DateTime(const FX_SYSTEMTIME& st) {
+ operator=(st);
}
+void CPDFSDK_DateTime::ResetDateTime() {
+ tzset();
-void CPDFSDK_DateTime::ResetDateTime()
-{
- tzset();
-
- time_t curTime;
- time(&curTime);
- struct tm* newtime;
- //newtime = gmtime(&curTime);
- newtime = localtime(&curTime);
+ time_t curTime;
+ time(&curTime);
+ struct tm* newtime;
+ // newtime = gmtime(&curTime);
+ newtime = localtime(&curTime);
- dt.year = newtime->tm_year + 1900;
- dt.month = newtime->tm_mon + 1;
- dt.day = newtime->tm_mday;
- dt.hour = newtime->tm_hour;
- dt.minute = newtime->tm_min;
- dt.second = newtime->tm_sec;
-// dt.tzHour = _timezone / 3600 * -1;
-// dt.tzMinute = (abs(_timezone) % 3600) / 60;
+ dt.year = newtime->tm_year + 1900;
+ dt.month = newtime->tm_mon + 1;
+ dt.day = newtime->tm_mday;
+ dt.hour = newtime->tm_hour;
+ dt.minute = newtime->tm_min;
+ dt.second = newtime->tm_sec;
+ // dt.tzHour = _timezone / 3600 * -1;
+ // dt.tzMinute = (abs(_timezone) % 3600) / 60;
}
-CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const CPDFSDK_DateTime& datetime)
-{
- FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME));
- return *this;
+CPDFSDK_DateTime& CPDFSDK_DateTime::operator=(
+ const CPDFSDK_DateTime& datetime) {
+ FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME));
+ return *this;
}
-CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const FX_SYSTEMTIME& st)
-{
- tzset();
+CPDFSDK_DateTime& CPDFSDK_DateTime::operator=(const FX_SYSTEMTIME& st) {
+ tzset();
- dt.year = (int16_t)st.wYear;
- dt.month = (uint8_t)st.wMonth;
- dt.day = (uint8_t)st.wDay;
- dt.hour = (uint8_t)st.wHour;
- dt.minute = (uint8_t)st.wMinute;
- dt.second = (uint8_t)st.wSecond;
-// dt.tzHour = _timezone / 3600 * -1;
-// dt.tzMinute = (abs(_timezone) % 3600) / 60;
- return *this;
+ dt.year = (int16_t)st.wYear;
+ dt.month = (uint8_t)st.wMonth;
+ dt.day = (uint8_t)st.wDay;
+ dt.hour = (uint8_t)st.wHour;
+ dt.minute = (uint8_t)st.wMinute;
+ dt.second = (uint8_t)st.wSecond;
+ // dt.tzHour = _timezone / 3600 * -1;
+ // dt.tzMinute = (abs(_timezone) % 3600) / 60;
+ return *this;
}
-FX_BOOL CPDFSDK_DateTime::operator == (CPDFSDK_DateTime& datetime)
-{
- return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0);
+FX_BOOL CPDFSDK_DateTime::operator==(CPDFSDK_DateTime& datetime) {
+ return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0);
}
-FX_BOOL CPDFSDK_DateTime::operator != (CPDFSDK_DateTime& datetime)
-{
- return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) != 0);
+FX_BOOL CPDFSDK_DateTime::operator!=(CPDFSDK_DateTime& datetime) {
+ return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) != 0);
}
-FX_BOOL CPDFSDK_DateTime::operator > (CPDFSDK_DateTime& datetime)
-{
- CPDFSDK_DateTime dt1 = ToGMT();
- CPDFSDK_DateTime dt2 = datetime.ToGMT();
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second;
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second;
+FX_BOOL CPDFSDK_DateTime::operator>(CPDFSDK_DateTime& datetime) {
+ CPDFSDK_DateTime dt1 = ToGMT();
+ CPDFSDK_DateTime dt2 = datetime.ToGMT();
+ int d1 =
+ (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) |
+ (int)dt1.dt.second;
+ int d3 =
+ (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) |
+ (int)dt2.dt.second;
- if (d1 > d3) return TRUE;
- if (d2 > d4) return TRUE;
- return FALSE;
-}
-
-FX_BOOL CPDFSDK_DateTime::operator >= (CPDFSDK_DateTime& datetime)
-{
- CPDFSDK_DateTime dt1 = ToGMT();
- CPDFSDK_DateTime dt2 = datetime.ToGMT();
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second;
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second;
-
- if (d1 >= d3) return TRUE;
- if (d2 >= d4) return TRUE;
- return FALSE;
+ if (d1 > d3)
+ return TRUE;
+ if (d2 > d4)
+ return TRUE;
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_DateTime::operator>=(CPDFSDK_DateTime& datetime) {
+ CPDFSDK_DateTime dt1 = ToGMT();
+ CPDFSDK_DateTime dt2 = datetime.ToGMT();
+ int d1 =
+ (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) |
+ (int)dt1.dt.second;
+ int d3 =
+ (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) |
+ (int)dt2.dt.second;
+
+ if (d1 >= d3)
+ return TRUE;
+ if (d2 >= d4)
+ return TRUE;
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_DateTime::operator<(CPDFSDK_DateTime& datetime) {
+ CPDFSDK_DateTime dt1 = ToGMT();
+ CPDFSDK_DateTime dt2 = datetime.ToGMT();
+ int d1 =
+ (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) |
+ (int)dt1.dt.second;
+ int d3 =
+ (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) |
+ (int)dt2.dt.second;
+
+ if (d1 < d3)
+ return TRUE;
+ if (d2 < d4)
+ return TRUE;
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_DateTime::operator<=(CPDFSDK_DateTime& datetime) {
+ CPDFSDK_DateTime dt1 = ToGMT();
+ CPDFSDK_DateTime dt2 = datetime.ToGMT();
+ int d1 =
+ (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) |
+ (int)dt1.dt.second;
+ int d3 =
+ (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) |
+ (int)dt2.dt.second;
+
+ if (d1 <= d3)
+ return TRUE;
+ if (d2 <= d4)
+ return TRUE;
+ return FALSE;
}
-FX_BOOL CPDFSDK_DateTime::operator < (CPDFSDK_DateTime& datetime)
-{
- CPDFSDK_DateTime dt1 = ToGMT();
- CPDFSDK_DateTime dt2 = datetime.ToGMT();
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second;
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second;
-
- if (d1 < d3) return TRUE;
- if (d2 < d4) return TRUE;
- return FALSE;
-}
+CPDFSDK_DateTime::operator time_t() {
+ struct tm newtime;
-FX_BOOL CPDFSDK_DateTime::operator <= (CPDFSDK_DateTime& datetime)
-{
- CPDFSDK_DateTime dt1 = ToGMT();
- CPDFSDK_DateTime dt2 = datetime.ToGMT();
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day;
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second;
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day;
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second;
+ newtime.tm_year = dt.year - 1900;
+ newtime.tm_mon = dt.month - 1;
+ newtime.tm_mday = dt.day;
+ newtime.tm_hour = dt.hour;
+ newtime.tm_min = dt.minute;
+ newtime.tm_sec = dt.second;
- if (d1 <= d3) return TRUE;
- if (d2 <= d4) return TRUE;
- return FALSE;
+ return mktime(&newtime);
}
-CPDFSDK_DateTime::operator time_t()
-{
- struct tm newtime;
-
- newtime.tm_year = dt.year - 1900;
- newtime.tm_mon = dt.month - 1;
- newtime.tm_mday = dt.day;
- newtime.tm_hour = dt.hour;
- newtime.tm_min = dt.minute;
- newtime.tm_sec = dt.second;
-
- return mktime(&newtime);
-}
-
-CPDFSDK_DateTime& CPDFSDK_DateTime::FromPDFDateTimeString(const CFX_ByteString& dtStr)
-{
- int strLength = dtStr.GetLength();
- if (strLength > 0)
- {
- int i = 0;
- int j, k;
- FX_CHAR ch;
- while (i < strLength)
- {
- ch = dtStr[i];
- if (ch >= '0' && ch <= '9') break;
- i ++;
- }
- if (i >= strLength) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 4)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.year = (int16_t)k;
- if (i >= strLength || j < 4) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.month = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.day = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.hour = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.minute = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
-
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.second = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
-
- ch = dtStr[i ++];
- if (ch != '-' && ch != '+') return *this;
- if (ch == '-')
- dt.tzHour = -1;
- else
- dt.tzHour = 1;
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.tzHour *= (FX_CHAR)k;
- if (i >= strLength || j < 2) return *this;
-
- ch = dtStr[i ++];
- if (ch != '\'') return *this;
- j = 0;
- k = 0;
- while (i < strLength && j < 2)
- {
- ch = dtStr[i];
- k = k * 10 + ch - '0';
- j ++;
- if (ch < '0' || ch > '9') break;
- i ++;
- }
- dt.tzMinute = (uint8_t)k;
- if (i >= strLength || j < 2) return *this;
+CPDFSDK_DateTime& CPDFSDK_DateTime::FromPDFDateTimeString(
+ const CFX_ByteString& dtStr) {
+ int strLength = dtStr.GetLength();
+ if (strLength > 0) {
+ int i = 0;
+ int j, k;
+ FX_CHAR ch;
+ while (i < strLength) {
+ ch = dtStr[i];
+ if (ch >= '0' && ch <= '9')
+ break;
+ i++;
}
-
- return *this;
-}
-
-CFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString()
-{
- CFX_ByteString str1;
- str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
- if (dt.tzHour < 0)
- str1 += "-";
- else
- str1 += "+";
- CFX_ByteString str2;
- str2.Format("%02d:%02d", abs(dt.tzHour), dt.tzMinute);
- return str1 + str2;
-}
-
-CFX_ByteString CPDFSDK_DateTime::ToPDFDateTimeString()
-{
- CFX_ByteString dtStr;
- char tempStr[32];
- memset(tempStr, 0, sizeof(tempStr));
- FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "D:%04d%02d%02d%02d%02d%02d",
- dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
- dtStr = CFX_ByteString(tempStr);
- if (dt.tzHour < 0)
- dtStr += CFX_ByteString("-");
+ if (i >= strLength)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 4) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.year = (int16_t)k;
+ if (i >= strLength || j < 4)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.month = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.day = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.hour = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.minute = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.second = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ ch = dtStr[i++];
+ if (ch != '-' && ch != '+')
+ return *this;
+ if (ch == '-')
+ dt.tzHour = -1;
else
- dtStr += CFX_ByteString("+");
- memset(tempStr, 0, sizeof(tempStr));
- FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "%02d'%02d'", abs(dt.tzHour), dt.tzMinute);
- dtStr += CFX_ByteString(tempStr);
- return dtStr;
-}
-
-void CPDFSDK_DateTime::ToSystemTime(FX_SYSTEMTIME& st)
-{
- CPDFSDK_DateTime dt = *this;
- time_t t = (time_t)dt;
- struct tm* pTime = localtime(&t);
- if(pTime){
- st.wYear = (FX_WORD)pTime->tm_year + 1900;
- st.wMonth = (FX_WORD)pTime->tm_mon + 1;
- st.wDay = (FX_WORD)pTime->tm_mday;
- st.wDayOfWeek = (FX_WORD)pTime->tm_wday;
- st.wHour = (FX_WORD)pTime->tm_hour;
- st.wMinute = (FX_WORD)pTime->tm_min;
- st.wSecond = (FX_WORD)pTime->tm_sec;
- st.wMilliseconds = 0;
+ dt.tzHour = 1;
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
}
-}
+ dt.tzHour *= (FX_CHAR)k;
+ if (i >= strLength || j < 2)
+ return *this;
+
+ ch = dtStr[i++];
+ if (ch != '\'')
+ return *this;
+ j = 0;
+ k = 0;
+ while (i < strLength && j < 2) {
+ ch = dtStr[i];
+ k = k * 10 + ch - '0';
+ j++;
+ if (ch < '0' || ch > '9')
+ break;
+ i++;
+ }
+ dt.tzMinute = (uint8_t)k;
+ if (i >= strLength || j < 2)
+ return *this;
+ }
+
+ return *this;
+}
+
+CFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString() {
+ CFX_ByteString str1;
+ str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day,
+ dt.hour, dt.minute, dt.second);
+ if (dt.tzHour < 0)
+ str1 += "-";
+ else
+ str1 += "+";
+ CFX_ByteString str2;
+ str2.Format("%02d:%02d", abs(dt.tzHour), dt.tzMinute);
+ return str1 + str2;
+}
+
+CFX_ByteString CPDFSDK_DateTime::ToPDFDateTimeString() {
+ CFX_ByteString dtStr;
+ char tempStr[32];
+ memset(tempStr, 0, sizeof(tempStr));
+ FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "D:%04d%02d%02d%02d%02d%02d",
+ dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
+ dtStr = CFX_ByteString(tempStr);
+ if (dt.tzHour < 0)
+ dtStr += CFX_ByteString("-");
+ else
+ dtStr += CFX_ByteString("+");
+ memset(tempStr, 0, sizeof(tempStr));
+ FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "%02d'%02d'", abs(dt.tzHour),
+ dt.tzMinute);
+ dtStr += CFX_ByteString(tempStr);
+ return dtStr;
+}
+
+void CPDFSDK_DateTime::ToSystemTime(FX_SYSTEMTIME& st) {
+ CPDFSDK_DateTime dt = *this;
+ time_t t = (time_t)dt;
+ struct tm* pTime = localtime(&t);
+ if (pTime) {
+ st.wYear = (FX_WORD)pTime->tm_year + 1900;
+ st.wMonth = (FX_WORD)pTime->tm_mon + 1;
+ st.wDay = (FX_WORD)pTime->tm_mday;
+ st.wDayOfWeek = (FX_WORD)pTime->tm_wday;
+ st.wHour = (FX_WORD)pTime->tm_hour;
+ st.wMinute = (FX_WORD)pTime->tm_min;
+ st.wSecond = (FX_WORD)pTime->tm_sec;
+ st.wMilliseconds = 0;
+ }
+}
+
+CPDFSDK_DateTime CPDFSDK_DateTime::ToGMT() {
+ CPDFSDK_DateTime dt = *this;
+ dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute));
+ dt.dt.tzHour = 0;
+ dt.dt.tzMinute = 0;
+ return dt;
+}
+
+CPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days) {
+ if (days == 0)
+ return *this;
-CPDFSDK_DateTime CPDFSDK_DateTime::ToGMT()
-{
- CPDFSDK_DateTime dt = *this;
- dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute));
- dt.dt.tzHour = 0;
- dt.dt.tzMinute = 0;
- return dt;
-}
-
-CPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days)
-{
- if (days == 0) return *this;
-
- int16_t y = dt.year, yy;
- uint8_t m = dt.month;
- uint8_t d = dt.day;
- int mdays, ydays, ldays;
-
- ldays = days;
- if (ldays > 0)
- {
- yy = y;
- if (((FX_WORD)m * 100 + d) > 300) yy ++;
- ydays = _gAfxGetYearDays(yy);
- while (ldays >= ydays)
- {
- y ++;
- ldays -= ydays;
- yy ++;
- mdays = _gAfxGetMonthDays(y, m);
- if (d > mdays)
- {
- m ++;
- d -= mdays;
- }
- ydays = _gAfxGetYearDays(yy);
- }
- mdays = _gAfxGetMonthDays(y, m) - d + 1;
- while (ldays >= mdays)
- {
- ldays -= mdays;
- m ++;
- d = 1;
- mdays = _gAfxGetMonthDays(y, m);
- }
- d += ldays;
+ int16_t y = dt.year, yy;
+ uint8_t m = dt.month;
+ uint8_t d = dt.day;
+ int mdays, ydays, ldays;
+
+ ldays = days;
+ if (ldays > 0) {
+ yy = y;
+ if (((FX_WORD)m * 100 + d) > 300)
+ yy++;
+ ydays = _gAfxGetYearDays(yy);
+ while (ldays >= ydays) {
+ y++;
+ ldays -= ydays;
+ yy++;
+ mdays = _gAfxGetMonthDays(y, m);
+ if (d > mdays) {
+ m++;
+ d -= mdays;
+ }
+ ydays = _gAfxGetYearDays(yy);
}
- else
- {
- ldays *= -1;
- yy = y;
- if (((FX_WORD)m * 100 + d) < 300) yy --;
- ydays = _gAfxGetYearDays(yy);
- while (ldays >= ydays)
- {
- y --;
- ldays -= ydays;
- yy --;
- mdays = _gAfxGetMonthDays(y, m);
- if (d > mdays)
- {
- m ++;
- d -= mdays;
- }
- ydays = _gAfxGetYearDays(yy);
- }
- while (ldays >= d)
- {
- ldays -= d;
- m --;
- mdays = _gAfxGetMonthDays(y, m);
- d = mdays;
- }
- d -= ldays;
+ mdays = _gAfxGetMonthDays(y, m) - d + 1;
+ while (ldays >= mdays) {
+ ldays -= mdays;
+ m++;
+ d = 1;
+ mdays = _gAfxGetMonthDays(y, m);
}
+ d += ldays;
+ } else {
+ ldays *= -1;
+ yy = y;
+ if (((FX_WORD)m * 100 + d) < 300)
+ yy--;
+ ydays = _gAfxGetYearDays(yy);
+ while (ldays >= ydays) {
+ y--;
+ ldays -= ydays;
+ yy--;
+ mdays = _gAfxGetMonthDays(y, m);
+ if (d > mdays) {
+ m++;
+ d -= mdays;
+ }
+ ydays = _gAfxGetYearDays(yy);
+ }
+ while (ldays >= d) {
+ ldays -= d;
+ m--;
+ mdays = _gAfxGetMonthDays(y, m);
+ d = mdays;
+ }
+ d -= ldays;
+ }
- dt.year = y;
- dt.month = m;
- dt.day = d;
+ dt.year = y;
+ dt.month = m;
+ dt.day = d;
- return *this;
+ return *this;
}
-CPDFSDK_DateTime& CPDFSDK_DateTime::AddSeconds(int seconds)
-{
- if (seconds == 0) return *this;
+CPDFSDK_DateTime& CPDFSDK_DateTime::AddSeconds(int seconds) {
+ if (seconds == 0)
+ return *this;
- int n;
- int days;
+ int n;
+ int days;
- n = dt.hour * 3600 + dt.minute * 60 + dt.second + seconds;
- if (n < 0)
- {
- days = (n - 86399) / 86400;
- n -= days * 86400;
- }
- else
- {
- days = n / 86400;
- n %= 86400;
- }
- dt.hour = (uint8_t)(n / 3600);
- dt.hour %= 24;
- n %= 3600;
- dt.minute = (uint8_t)(n / 60);
- dt.second = (uint8_t)(n % 60);
- if (days != 0) AddDays(days);
+ n = dt.hour * 3600 + dt.minute * 60 + dt.second + seconds;
+ if (n < 0) {
+ days = (n - 86399) / 86400;
+ n -= days * 86400;
+ } else {
+ days = n / 86400;
+ n %= 86400;
+ }
+ dt.hour = (uint8_t)(n / 3600);
+ dt.hour %= 24;
+ n %= 3600;
+ dt.minute = (uint8_t)(n / 60);
+ dt.second = (uint8_t)(n % 60);
+ if (days != 0)
+ AddDays(days);
- return *this;
+ return *this;
}
-
//---------------------------------------------------------------------------
// CPDFSDK_Annot
//---------------------------------------------------------------------------
-CPDFSDK_Annot::CPDFSDK_Annot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView) :
-m_pAnnot(pAnnot),
-m_pPageView(pPageView),
-m_bSelected(FALSE),
-m_nTabOrder(-1)
-{
-}
+CPDFSDK_Annot::CPDFSDK_Annot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView)
+ : m_pAnnot(pAnnot),
+ m_pPageView(pPageView),
+ m_bSelected(FALSE),
+ m_nTabOrder(-1) {}
-CPDFSDK_Annot::~CPDFSDK_Annot()
-{
- m_pAnnot = NULL;
- m_pPageView = NULL;
+CPDFSDK_Annot::~CPDFSDK_Annot() {
+ m_pAnnot = NULL;
+ m_pPageView = NULL;
}
-CPDF_Annot* CPDFSDK_Annot::GetPDFAnnot()
-{
- return m_pAnnot;
+CPDF_Annot* CPDFSDK_Annot::GetPDFAnnot() {
+ return m_pAnnot;
}
-FX_DWORD CPDFSDK_Annot::GetFlags()
-{
- ASSERT(m_pAnnot != NULL);
+FX_DWORD CPDFSDK_Annot::GetFlags() {
+ ASSERT(m_pAnnot != NULL);
- return m_pAnnot->GetFlags();
+ return m_pAnnot->GetFlags();
}
-void CPDFSDK_Annot::SetPage(CPDFSDK_PageView* pPageView)
-{
- m_pPageView = pPageView;
+void CPDFSDK_Annot::SetPage(CPDFSDK_PageView* pPageView) {
+ m_pPageView = pPageView;
}
-CPDFSDK_PageView* CPDFSDK_Annot::GetPageView()
-{
- return m_pPageView;
+CPDFSDK_PageView* CPDFSDK_Annot::GetPageView() {
+ return m_pPageView;
}
-FX_BOOL CPDFSDK_Annot::IsSelected()
-{
- return m_bSelected;
+FX_BOOL CPDFSDK_Annot::IsSelected() {
+ return m_bSelected;
}
-void CPDFSDK_Annot::SetSelected(FX_BOOL bSelected)
-{
- m_bSelected = bSelected;
+void CPDFSDK_Annot::SetSelected(FX_BOOL bSelected) {
+ m_bSelected = bSelected;
}
// Tab Order
-int CPDFSDK_Annot::GetTabOrder()
-{
- return m_nTabOrder;
+int CPDFSDK_Annot::GetTabOrder() {
+ return m_nTabOrder;
}
-void CPDFSDK_Annot::SetTabOrder(int iTabOrder)
-{
- m_nTabOrder = iTabOrder;
+void CPDFSDK_Annot::SetTabOrder(int iTabOrder) {
+ m_nTabOrder = iTabOrder;
}
-CPDF_Dictionary* CPDFSDK_Annot::GetAnnotDict() const
-{
- ASSERT(m_pAnnot != NULL);
+CPDF_Dictionary* CPDFSDK_Annot::GetAnnotDict() const {
+ ASSERT(m_pAnnot != NULL);
- return m_pAnnot->GetAnnotDict();
+ return m_pAnnot->GetAnnotDict();
}
-void CPDFSDK_Annot::SetRect(const CPDF_Rect& rect)
-{
- ASSERT(rect.right - rect.left >= GetMinWidth());
- ASSERT(rect.top - rect.bottom >= GetMinHeight());
+void CPDFSDK_Annot::SetRect(const CPDF_Rect& rect) {
+ ASSERT(rect.right - rect.left >= GetMinWidth());
+ ASSERT(rect.top - rect.bottom >= GetMinHeight());
- m_pAnnot->GetAnnotDict()->SetAtRect("Rect", rect);
+ m_pAnnot->GetAnnotDict()->SetAtRect("Rect", rect);
}
-CPDF_Rect CPDFSDK_Annot::GetRect() const
-{
- ASSERT(m_pAnnot != NULL);
+CPDF_Rect CPDFSDK_Annot::GetRect() const {
+ ASSERT(m_pAnnot != NULL);
- CPDF_Rect rect;
- m_pAnnot->GetRect(rect);
+ CPDF_Rect rect;
+ m_pAnnot->GetRect(rect);
- return rect;
+ return rect;
}
-CFX_ByteString CPDFSDK_Annot::GetType() const
-{
- ASSERT(m_pAnnot != NULL);
+CFX_ByteString CPDFSDK_Annot::GetType() const {
+ ASSERT(m_pAnnot != NULL);
- return m_pAnnot->GetSubType();
+ return m_pAnnot->GetSubType();
}
-CFX_ByteString CPDFSDK_Annot::GetSubType() const
-{
- return "";
+CFX_ByteString CPDFSDK_Annot::GetSubType() const {
+ return "";
}
-void CPDFSDK_Annot::DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device,
- CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions)
-{
- ASSERT(m_pPageView != NULL);
- ASSERT(m_pAnnot != NULL);
+void CPDFSDK_Annot::DrawAppearance(CFX_RenderDevice* pDevice,
+ const CPDF_Matrix* pUser2Device,
+ CPDF_Annot::AppearanceMode mode,
+ const CPDF_RenderOptions* pOptions) {
+ ASSERT(m_pPageView != NULL);
+ ASSERT(m_pAnnot != NULL);
- m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, mode, pOptions);
+ m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device,
+ mode, pOptions);
}
-FX_BOOL CPDFSDK_Annot::IsAppearanceValid()
-{
- return m_pAnnot->GetAnnotDict()->GetDict("AP") != NULL;
+FX_BOOL CPDFSDK_Annot::IsAppearanceValid() {
+ return m_pAnnot->GetAnnotDict()->GetDict("AP") != NULL;
}
-FX_BOOL CPDFSDK_Annot::IsAppearanceValid(CPDF_Annot::AppearanceMode mode)
-{
- CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP");
- if (pAP == NULL) return FALSE;
-
- // Choose the right sub-ap
- const FX_CHAR* ap_entry = "N";
- if (mode == CPDF_Annot::Down)
- ap_entry = "D";
- else if (mode == CPDF_Annot::Rollover)
- ap_entry = "R";
- if (!pAP->KeyExist(ap_entry))
- ap_entry = "N";
+FX_BOOL CPDFSDK_Annot::IsAppearanceValid(CPDF_Annot::AppearanceMode mode) {
+ CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP");
+ if (pAP == NULL)
+ return FALSE;
- // Get the AP stream or subdirectory
- CPDF_Object* psub = pAP->GetElementValue(ap_entry);
- if (psub == NULL) return FALSE;
+ // Choose the right sub-ap
+ const FX_CHAR* ap_entry = "N";
+ if (mode == CPDF_Annot::Down)
+ ap_entry = "D";
+ else if (mode == CPDF_Annot::Rollover)
+ ap_entry = "R";
+ if (!pAP->KeyExist(ap_entry))
+ ap_entry = "N";
+
+ // Get the AP stream or subdirectory
+ CPDF_Object* psub = pAP->GetElementValue(ap_entry);
+ if (psub == NULL)
+ return FALSE;
- return TRUE;
+ return TRUE;
}
-void CPDFSDK_Annot::DrawBorder(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device,
- const CPDF_RenderOptions* pOptions)
-{
- ASSERT(m_pAnnot != NULL);
- m_pAnnot->DrawBorder(pDevice, pUser2Device, pOptions);
+void CPDFSDK_Annot::DrawBorder(CFX_RenderDevice* pDevice,
+ const CPDF_Matrix* pUser2Device,
+ const CPDF_RenderOptions* pOptions) {
+ ASSERT(m_pAnnot != NULL);
+ m_pAnnot->DrawBorder(pDevice, pUser2Device, pOptions);
}
-void CPDFSDK_Annot::ClearCachedAP()
-{
- ASSERT(m_pAnnot != NULL);
- m_pAnnot->ClearCachedAP();
+void CPDFSDK_Annot::ClearCachedAP() {
+ ASSERT(m_pAnnot != NULL);
+ m_pAnnot->ClearCachedAP();
}
-void CPDFSDK_Annot::SetContents(const CFX_WideString& sContents)
-{
- if (sContents.IsEmpty())
- m_pAnnot->GetAnnotDict()->RemoveAt("Contents");
- else
- m_pAnnot->GetAnnotDict()->SetAtString("Contents", PDF_EncodeText(sContents));
+void CPDFSDK_Annot::SetContents(const CFX_WideString& sContents) {
+ if (sContents.IsEmpty())
+ m_pAnnot->GetAnnotDict()->RemoveAt("Contents");
+ else
+ m_pAnnot->GetAnnotDict()->SetAtString("Contents",
+ PDF_EncodeText(sContents));
}
-CFX_WideString CPDFSDK_Annot::GetContents() const
-{
- return m_pAnnot->GetAnnotDict()->GetUnicodeText("Contents");
+CFX_WideString CPDFSDK_Annot::GetContents() const {
+ return m_pAnnot->GetAnnotDict()->GetUnicodeText("Contents");
}
-void CPDFSDK_Annot::SetAnnotName(const CFX_WideString& sName)
-{
- if (sName.IsEmpty())
- m_pAnnot->GetAnnotDict()->RemoveAt("NM");
- else
- m_pAnnot->GetAnnotDict()->SetAtString("NM", PDF_EncodeText(sName));
+void CPDFSDK_Annot::SetAnnotName(const CFX_WideString& sName) {
+ if (sName.IsEmpty())
+ m_pAnnot->GetAnnotDict()->RemoveAt("NM");
+ else
+ m_pAnnot->GetAnnotDict()->SetAtString("NM", PDF_EncodeText(sName));
}
-CFX_WideString CPDFSDK_Annot::GetAnnotName() const
-{
- return m_pAnnot->GetAnnotDict()->GetUnicodeText("NM");
+CFX_WideString CPDFSDK_Annot::GetAnnotName() const {
+ return m_pAnnot->GetAnnotDict()->GetUnicodeText("NM");
}
-void CPDFSDK_Annot::SetModifiedDate(const FX_SYSTEMTIME& st)
-{
- CPDFSDK_DateTime dt(st);
- CFX_ByteString str = dt.ToPDFDateTimeString();
+void CPDFSDK_Annot::SetModifiedDate(const FX_SYSTEMTIME& st) {
+ CPDFSDK_DateTime dt(st);
+ CFX_ByteString str = dt.ToPDFDateTimeString();
- if (str.IsEmpty())
- m_pAnnot->GetAnnotDict()->RemoveAt("M");
- else
- m_pAnnot->GetAnnotDict()->SetAtString("M", str);
+ if (str.IsEmpty())
+ m_pAnnot->GetAnnotDict()->RemoveAt("M");
+ else
+ m_pAnnot->GetAnnotDict()->SetAtString("M", str);
}
-FX_SYSTEMTIME CPDFSDK_Annot::GetModifiedDate() const
-{
- FX_SYSTEMTIME systime;
- CFX_ByteString str = m_pAnnot->GetAnnotDict()->GetString("M");
+FX_SYSTEMTIME CPDFSDK_Annot::GetModifiedDate() const {
+ FX_SYSTEMTIME systime;
+ CFX_ByteString str = m_pAnnot->GetAnnotDict()->GetString("M");
- CPDFSDK_DateTime dt(str);
- dt.ToSystemTime(systime);
+ CPDFSDK_DateTime dt(str);
+ dt.ToSystemTime(systime);
- return systime;
+ return systime;
}
-void CPDFSDK_Annot::SetFlags(int nFlags)
-{
- m_pAnnot->GetAnnotDict()->SetAtInteger("F", nFlags);
+void CPDFSDK_Annot::SetFlags(int nFlags) {
+ m_pAnnot->GetAnnotDict()->SetAtInteger("F", nFlags);
}
-int CPDFSDK_Annot::GetFlags() const
-{
- return m_pAnnot->GetAnnotDict()->GetInteger("F");
+int CPDFSDK_Annot::GetFlags() const {
+ return m_pAnnot->GetAnnotDict()->GetInteger("F");
}
-void CPDFSDK_Annot::SetAppState(const CFX_ByteString& str)
-{
- if (str.IsEmpty())
- m_pAnnot->GetAnnotDict()->RemoveAt("AS");
- else
- m_pAnnot->GetAnnotDict()->SetAtString("AS", str);
+void CPDFSDK_Annot::SetAppState(const CFX_ByteString& str) {
+ if (str.IsEmpty())
+ m_pAnnot->GetAnnotDict()->RemoveAt("AS");
+ else
+ m_pAnnot->GetAnnotDict()->SetAtString("AS", str);
}
-CFX_ByteString CPDFSDK_Annot::GetAppState() const
-{
- return m_pAnnot->GetAnnotDict()->GetString("AS");
+CFX_ByteString CPDFSDK_Annot::GetAppState() const {
+ return m_pAnnot->GetAnnotDict()->GetString("AS");
}
-void CPDFSDK_Annot::SetStructParent(int key)
-{
- m_pAnnot->GetAnnotDict()->SetAtInteger("StructParent", key);
+void CPDFSDK_Annot::SetStructParent(int key) {
+ m_pAnnot->GetAnnotDict()->SetAtInteger("StructParent", key);
}
-int CPDFSDK_Annot::GetStructParent() const
-{
- return m_pAnnot->GetAnnotDict()->GetInteger("StructParent");
+int CPDFSDK_Annot::GetStructParent() const {
+ return m_pAnnot->GetAnnotDict()->GetInteger("StructParent");
}
-//border
-void CPDFSDK_Annot::SetBorderWidth(int nWidth)
-{
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
+// border
+void CPDFSDK_Annot::SetBorderWidth(int nWidth) {
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
- if (pBorder)
- {
- pBorder->SetAt(2, new CPDF_Number(nWidth));
- }
- else
- {
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
-
- if (!pBSDict)
- {
- pBSDict = new CPDF_Dictionary;
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
- }
+ if (pBorder) {
+ pBorder->SetAt(2, new CPDF_Number(nWidth));
+ } else {
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
- pBSDict->SetAtInteger("W", nWidth);
+ if (!pBSDict) {
+ pBSDict = new CPDF_Dictionary;
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
}
+
+ pBSDict->SetAtInteger("W", nWidth);
+ }
}
-int CPDFSDK_Annot::GetBorderWidth() const
-{
- if (CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border")) {
- return pBorder->GetInteger(2);
- }
- if (CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS")) {
- return pBSDict->GetInteger("W", 1);
- }
- return 1;
+int CPDFSDK_Annot::GetBorderWidth() const {
+ if (CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border")) {
+ return pBorder->GetInteger(2);
+ }
+ if (CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS")) {
+ return pBSDict->GetInteger("W", 1);
+ }
+ return 1;
}
-void CPDFSDK_Annot::SetBorderStyle(int nStyle)
-{
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
- if (!pBSDict)
- {
- pBSDict = new CPDF_Dictionary;
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
- }
+void CPDFSDK_Annot::SetBorderStyle(int nStyle) {
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
+ if (!pBSDict) {
+ pBSDict = new CPDF_Dictionary;
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
+ }
- switch (nStyle)
- {
+ switch (nStyle) {
case BBS_SOLID:
- pBSDict->SetAtName("S", "S");
- break;
+ pBSDict->SetAtName("S", "S");
+ break;
case BBS_DASH:
- pBSDict->SetAtName("S", "D");
- break;
+ pBSDict->SetAtName("S", "D");
+ break;
case BBS_BEVELED:
- pBSDict->SetAtName("S", "B");
- break;
+ pBSDict->SetAtName("S", "B");
+ break;
case BBS_INSET:
- pBSDict->SetAtName("S", "I");
- break;
+ pBSDict->SetAtName("S", "I");
+ break;
case BBS_UNDERLINE:
- pBSDict->SetAtName("S", "U");
- break;
- }
-}
-
-int CPDFSDK_Annot::GetBorderStyle() const
-{
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
- if (pBSDict)
- {
- CFX_ByteString sBorderStyle = pBSDict->GetString("S", "S");
- if (sBorderStyle == "S") return BBS_SOLID;
- if (sBorderStyle == "D") return BBS_DASH;
- if (sBorderStyle == "B") return BBS_BEVELED;
- if (sBorderStyle == "I") return BBS_INSET;
- if (sBorderStyle == "U") return BBS_UNDERLINE;
+ pBSDict->SetAtName("S", "U");
+ break;
+ }
+}
+
+int CPDFSDK_Annot::GetBorderStyle() const {
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
+ if (pBSDict) {
+ CFX_ByteString sBorderStyle = pBSDict->GetString("S", "S");
+ if (sBorderStyle == "S")
+ return BBS_SOLID;
+ if (sBorderStyle == "D")
+ return BBS_DASH;
+ if (sBorderStyle == "B")
+ return BBS_BEVELED;
+ if (sBorderStyle == "I")
+ return BBS_INSET;
+ if (sBorderStyle == "U")
+ return BBS_UNDERLINE;
+ }
+
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
+ if (pBorder) {
+ if (pBorder->GetCount() >= 4) {
+ CPDF_Array* pDP = pBorder->GetArray(3);
+ if (pDP && pDP->GetCount() > 0)
+ return BBS_DASH;
}
+ }
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
- if (pBorder)
- {
- if (pBorder->GetCount() >= 4)
- {
- CPDF_Array *pDP = pBorder->GetArray(3);
- if (pDP && pDP->GetCount() > 0)
- return BBS_DASH;
- }
- }
-
- return BBS_SOLID;
+ return BBS_SOLID;
}
-void CPDFSDK_Annot::SetBorderDash(const CFX_IntArray& array)
-{
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
- if (!pBSDict)
- {
- pBSDict = new CPDF_Dictionary;
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
- }
+void CPDFSDK_Annot::SetBorderDash(const CFX_IntArray& array) {
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
+ if (!pBSDict) {
+ pBSDict = new CPDF_Dictionary;
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict);
+ }
- CPDF_Array* pArray = new CPDF_Array;
- for (int i=0,sz=array.GetSize(); i<sz; i++)
- {
- pArray->AddInteger(array[i]);
- }
+ CPDF_Array* pArray = new CPDF_Array;
+ for (int i = 0, sz = array.GetSize(); i < sz; i++) {
+ pArray->AddInteger(array[i]);
+ }
- pBSDict->SetAt("D", pArray);
+ pBSDict->SetAt("D", pArray);
}
-void CPDFSDK_Annot::GetBorderDash(CFX_IntArray& array) const
-{
- CPDF_Array* pDash = NULL;
+void CPDFSDK_Annot::GetBorderDash(CFX_IntArray& array) const {
+ CPDF_Array* pDash = NULL;
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
- if (pBorder)
- {
- pDash = pBorder->GetArray(3);
- }
- else
- {
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
- if (pBSDict)
- {
- pDash = pBSDict->GetArray("D");
- }
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border");
+ if (pBorder) {
+ pDash = pBorder->GetArray(3);
+ } else {
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS");
+ if (pBSDict) {
+ pDash = pBSDict->GetArray("D");
}
+ }
- if (pDash)
- {
- for (int i=0,sz=pDash->GetCount(); i<sz; i++)
- {
- array.Add(pDash->GetInteger(i));
- }
+ if (pDash) {
+ for (int i = 0, sz = pDash->GetCount(); i < sz; i++) {
+ array.Add(pDash->GetInteger(i));
}
+ }
}
-void CPDFSDK_Annot::SetColor(FX_COLORREF color)
-{
- CPDF_Array* pArray = new CPDF_Array;
- pArray->AddNumber((FX_FLOAT)FXSYS_GetRValue(color) / 255.0f);
- pArray->AddNumber((FX_FLOAT)FXSYS_GetGValue(color) / 255.0f);
- pArray->AddNumber((FX_FLOAT)FXSYS_GetBValue(color) / 255.0f);
- m_pAnnot->GetAnnotDict()->SetAt("C", pArray);
+void CPDFSDK_Annot::SetColor(FX_COLORREF color) {
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetRValue(color) / 255.0f);
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetGValue(color) / 255.0f);
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetBValue(color) / 255.0f);
+ m_pAnnot->GetAnnotDict()->SetAt("C", pArray);
}
-void CPDFSDK_Annot::RemoveColor()
-{
- m_pAnnot->GetAnnotDict()->RemoveAt("C");
+void CPDFSDK_Annot::RemoveColor() {
+ m_pAnnot->GetAnnotDict()->RemoveAt("C");
}
-FX_BOOL CPDFSDK_Annot::GetColor(FX_COLORREF& color) const
-{
- if (CPDF_Array* pEntry = m_pAnnot->GetAnnotDict()->GetArray("C"))
- {
- int nCount = pEntry->GetCount();
- if (nCount == 1)
- {
- FX_FLOAT g = pEntry->GetNumber(0) * 255;
+FX_BOOL CPDFSDK_Annot::GetColor(FX_COLORREF& color) const {
+ if (CPDF_Array* pEntry = m_pAnnot->GetAnnotDict()->GetArray("C")) {
+ int nCount = pEntry->GetCount();
+ if (nCount == 1) {
+ FX_FLOAT g = pEntry->GetNumber(0) * 255;
- color = FXSYS_RGB((int)g, (int)g, (int)g);
+ color = FXSYS_RGB((int)g, (int)g, (int)g);
- return TRUE;
- }
- else if (nCount == 3)
- {
- FX_FLOAT r = pEntry->GetNumber(0) * 255;
- FX_FLOAT g = pEntry->GetNumber(1) * 255;
- FX_FLOAT b = pEntry->GetNumber(2) * 255;
+ return TRUE;
+ } else if (nCount == 3) {
+ FX_FLOAT r = pEntry->GetNumber(0) * 255;
+ FX_FLOAT g = pEntry->GetNumber(1) * 255;
+ FX_FLOAT b = pEntry->GetNumber(2) * 255;
- color = FXSYS_RGB((int)r, (int)g, (int)b);
+ color = FXSYS_RGB((int)r, (int)g, (int)b);
- return TRUE;
- }
- else if (nCount == 4)
- {
- FX_FLOAT c = pEntry->GetNumber(0);
- FX_FLOAT m = pEntry->GetNumber(1);
- FX_FLOAT y = pEntry->GetNumber(2);
- FX_FLOAT k = pEntry->GetNumber(3);
+ return TRUE;
+ } else if (nCount == 4) {
+ FX_FLOAT c = pEntry->GetNumber(0);
+ FX_FLOAT m = pEntry->GetNumber(1);
+ FX_FLOAT y = pEntry->GetNumber(2);
+ FX_FLOAT k = pEntry->GetNumber(3);
- FX_FLOAT r = 1.0f - FX_MIN(1.0f, c + k);
- FX_FLOAT g = 1.0f - FX_MIN(1.0f, m + k);
- FX_FLOAT b = 1.0f - FX_MIN(1.0f, y + k);
+ FX_FLOAT r = 1.0f - FX_MIN(1.0f, c + k);
+ FX_FLOAT g = 1.0f - FX_MIN(1.0f, m + k);
+ FX_FLOAT b = 1.0f - FX_MIN(1.0f, y + k);
- color = FXSYS_RGB((int)(r * 255), (int)(g * 255), (int)(b * 255));
+ color = FXSYS_RGB((int)(r * 255), (int)(g * 255), (int)(b * 255));
- return TRUE;
- }
+ return TRUE;
}
-
- return FALSE;
-}
-
-
-void CPDFSDK_Annot::WriteAppearance(const CFX_ByteString& sAPType, const CPDF_Rect& rcBBox,
- const CPDF_Matrix& matrix, const CFX_ByteString& sContents,
- const CFX_ByteString& sAPState)
-{
- CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP");
-
- if (!pAPDict)
- {
- pAPDict = new CPDF_Dictionary;
- m_pAnnot->GetAnnotDict()->SetAt("AP", pAPDict);
+ }
+
+ return FALSE;
+}
+
+void CPDFSDK_Annot::WriteAppearance(const CFX_ByteString& sAPType,
+ const CPDF_Rect& rcBBox,
+ const CPDF_Matrix& matrix,
+ const CFX_ByteString& sContents,
+ const CFX_ByteString& sAPState) {
+ CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP");
+
+ if (!pAPDict) {
+ pAPDict = new CPDF_Dictionary;
+ m_pAnnot->GetAnnotDict()->SetAt("AP", pAPDict);
+ }
+
+ CPDF_Stream* pStream = NULL;
+ CPDF_Dictionary* pParentDict = NULL;
+
+ if (sAPState.IsEmpty()) {
+ pParentDict = pAPDict;
+ pStream = pAPDict->GetStream(sAPType);
+ } else {
+ CPDF_Dictionary* pAPTypeDict = pAPDict->GetDict(sAPType);
+ if (!pAPTypeDict) {
+ pAPTypeDict = new CPDF_Dictionary;
+ pAPDict->SetAt(sAPType, pAPTypeDict);
}
- CPDF_Stream* pStream = NULL;
- CPDF_Dictionary* pParentDict = NULL;
+ pParentDict = pAPTypeDict;
+ pStream = pAPTypeDict->GetStream(sAPState);
+ }
- if (sAPState.IsEmpty())
- {
- pParentDict = pAPDict;
- pStream = pAPDict->GetStream(sAPType);
- }
- else
- {
- CPDF_Dictionary* pAPTypeDict = pAPDict->GetDict(sAPType);
- if (!pAPTypeDict)
- {
- pAPTypeDict = new CPDF_Dictionary;
- pAPDict->SetAt(sAPType, pAPTypeDict);
- }
-
- pParentDict = pAPTypeDict;
- pStream = pAPTypeDict->GetStream(sAPState);
- }
+ if (!pStream) {
+ CPDF_Document* pDoc = m_pPageView->GetPDFDocument();
+ pStream = new CPDF_Stream(NULL, 0, NULL);
+ int32_t objnum = pDoc->AddIndirectObject(pStream);
+ pParentDict->SetAtReference(sAPType, pDoc, objnum);
+ }
- if (!pStream)
- {
- CPDF_Document* pDoc = m_pPageView->GetPDFDocument();
- pStream = new CPDF_Stream(NULL, 0, NULL);
- int32_t objnum = pDoc->AddIndirectObject(pStream);
- pParentDict->SetAtReference(sAPType, pDoc, objnum);
- }
+ CPDF_Dictionary* pStreamDict = pStream->GetDict();
+ if (!pStreamDict) {
+ pStreamDict = new CPDF_Dictionary;
+ pStreamDict->SetAtName("Type", "XObject");
+ pStreamDict->SetAtName("Subtype", "Form");
+ pStreamDict->SetAtInteger("FormType", 1);
+ pStream->InitStream(NULL, 0, pStreamDict);
+ }
- CPDF_Dictionary *pStreamDict = pStream->GetDict();
- if (!pStreamDict)
- {
- pStreamDict = new CPDF_Dictionary;
- pStreamDict->SetAtName("Type", "XObject");
- pStreamDict->SetAtName("Subtype", "Form");
- pStreamDict->SetAtInteger("FormType", 1);
- pStream->InitStream(NULL,0,pStreamDict);
- }
-
- if (pStreamDict)
- {
- pStreamDict->SetAtMatrix("Matrix",matrix);
- pStreamDict->SetAtRect("BBox", rcBBox);
- }
+ if (pStreamDict) {
+ pStreamDict->SetAtMatrix("Matrix", matrix);
+ pStreamDict->SetAtRect("BBox", rcBBox);
+ }
- pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FALSE, FALSE);
+ pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FALSE,
+ FALSE);
}
-#define BA_ANNOT_MINWIDTH 1
-#define BA_ANNOT_MINHEIGHT 1
+#define BA_ANNOT_MINWIDTH 1
+#define BA_ANNOT_MINHEIGHT 1
-FX_FLOAT CPDFSDK_Annot::GetMinWidth() const
-{
- return BA_ANNOT_MINWIDTH;
+FX_FLOAT CPDFSDK_Annot::GetMinWidth() const {
+ return BA_ANNOT_MINWIDTH;
}
-FX_FLOAT CPDFSDK_Annot::GetMinHeight() const
-{
- return BA_ANNOT_MINHEIGHT;
+FX_FLOAT CPDFSDK_Annot::GetMinHeight() const {
+ return BA_ANNOT_MINHEIGHT;
}
-FX_BOOL CPDFSDK_Annot::CreateFormFiller()
-{
- return TRUE;
+FX_BOOL CPDFSDK_Annot::CreateFormFiller() {
+ return TRUE;
}
-FX_BOOL CPDFSDK_Annot::IsVisible() const
-{
- int nFlags = GetFlags();
- return !((nFlags & ANNOTFLAG_INVISIBLE) || (nFlags & ANNOTFLAG_HIDDEN) || (nFlags & ANNOTFLAG_NOVIEW));
+FX_BOOL CPDFSDK_Annot::IsVisible() const {
+ int nFlags = GetFlags();
+ return !((nFlags & ANNOTFLAG_INVISIBLE) || (nFlags & ANNOTFLAG_HIDDEN) ||
+ (nFlags & ANNOTFLAG_NOVIEW));
}
-CPDF_Action CPDFSDK_Annot::GetAction() const
-{
- return CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"));
+CPDF_Action CPDFSDK_Annot::GetAction() const {
+ return CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"));
}
-void CPDFSDK_Annot::SetAction(const CPDF_Action& action)
-{
- ASSERT(action);
- if ((CPDF_Action&)action != CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A")))
- {
- CPDF_Document* pDoc = m_pPageView->GetPDFDocument();
- CPDF_Dictionary* pDict = action.GetDict();
- if (pDict && pDict->GetObjNum() == 0) {
- pDoc->AddIndirectObject(pDict);
- }
- m_pAnnot->GetAnnotDict()->SetAtReference("A", pDoc, pDict->GetObjNum());
+void CPDFSDK_Annot::SetAction(const CPDF_Action& action) {
+ ASSERT(action);
+ if ((CPDF_Action&)action !=
+ CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"))) {
+ CPDF_Document* pDoc = m_pPageView->GetPDFDocument();
+ CPDF_Dictionary* pDict = action.GetDict();
+ if (pDict && pDict->GetObjNum() == 0) {
+ pDoc->AddIndirectObject(pDict);
}
+ m_pAnnot->GetAnnotDict()->SetAtReference("A", pDoc, pDict->GetObjNum());
+ }
}
-void CPDFSDK_Annot::RemoveAction()
-{
- m_pAnnot->GetAnnotDict()->RemoveAt("A");
+void CPDFSDK_Annot::RemoveAction() {
+ m_pAnnot->GetAnnotDict()->RemoveAt("A");
}
-CPDF_AAction CPDFSDK_Annot::GetAAction() const
-{
- return m_pAnnot->GetAnnotDict()->GetDict("AA");
+CPDF_AAction CPDFSDK_Annot::GetAAction() const {
+ return m_pAnnot->GetAnnotDict()->GetDict("AA");
}
-void CPDFSDK_Annot::SetAAction(const CPDF_AAction& aa)
-{
- ASSERT(aa != NULL);
+void CPDFSDK_Annot::SetAAction(const CPDF_AAction& aa) {
+ ASSERT(aa != NULL);
- if ((CPDF_AAction&)aa != m_pAnnot->GetAnnotDict()->GetDict("AA"))
- m_pAnnot->GetAnnotDict()->SetAt("AA", (CPDF_AAction&)aa);
+ if ((CPDF_AAction&)aa != m_pAnnot->GetAnnotDict()->GetDict("AA"))
+ m_pAnnot->GetAnnotDict()->SetAt("AA", (CPDF_AAction&)aa);
}
-void CPDFSDK_Annot::RemoveAAction()
-{
- m_pAnnot->GetAnnotDict()->RemoveAt("AA");
+void CPDFSDK_Annot::RemoveAAction() {
+ m_pAnnot->GetAnnotDict()->RemoveAt("AA");
}
-CPDF_Action CPDFSDK_Annot::GetAAction(CPDF_AAction::AActionType eAAT)
-{
- CPDF_AAction AAction = GetAAction();
+CPDF_Action CPDFSDK_Annot::GetAAction(CPDF_AAction::AActionType eAAT) {
+ CPDF_AAction AAction = GetAAction();
- if (AAction.ActionExist(eAAT))
- return AAction.GetAction(eAAT);
+ if (AAction.ActionExist(eAAT))
+ return AAction.GetAction(eAAT);
- if (eAAT == CPDF_AAction::ButtonUp)
- return GetAction();
+ if (eAAT == CPDF_AAction::ButtonUp)
+ return GetAction();
- return CPDF_Action();
+ return CPDF_Action();
}
-void CPDFSDK_Annot::Annot_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, CPDF_RenderOptions* pOptions)
-{
-
- m_pAnnot->GetAPForm(m_pPageView->GetPDFPage(), CPDF_Annot::Normal);
- m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, CPDF_Annot::Normal, NULL);
+void CPDFSDK_Annot::Annot_OnDraw(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ CPDF_RenderOptions* pOptions) {
+ m_pAnnot->GetAPForm(m_pPageView->GetPDFPage(), CPDF_Annot::Normal);
+ m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device,
+ CPDF_Annot::Normal, NULL);
- return ;
+ return;
}
-CPDF_Page* CPDFSDK_Annot::GetPDFPage()
-{
- if(m_pPageView)
- return m_pPageView->GetPDFPage();
- return NULL;
+CPDF_Page* CPDFSDK_Annot::GetPDFPage() {
+ if (m_pPageView)
+ return m_pPageView->GetPDFPage();
+ return NULL;
}
-
diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp
index ee16212f46..bc041fd05f 100644
--- a/fpdfsdk/src/fsdk_baseform.cpp
+++ b/fpdfsdk/src/fsdk_baseform.cpp
@@ -18,1562 +18,1484 @@
//* CPDFSDK_Widget
//------------------------------------------------------------------------------------
-#define IsFloatZero(f) ((f) < 0.01 && (f) > -0.01)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
-
-CPDFSDK_Widget::CPDFSDK_Widget(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView, CPDFSDK_InterForm* pInterForm) :
- CPDFSDK_Annot(pAnnot, pPageView),
- m_pInterForm(pInterForm),
- m_nAppAge(0),
- m_nValueAge(0)
-{
- ASSERT(m_pInterForm != NULL);
-}
-
-CPDFSDK_Widget::~CPDFSDK_Widget()
-{
-
-}
-
-FX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode)
-{
- CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP");
- if (pAP == NULL) return FALSE;
-
- // Choose the right sub-ap
- const FX_CHAR* ap_entry = "N";
- if (mode == CPDF_Annot::Down)
- ap_entry = "D";
- else if (mode == CPDF_Annot::Rollover)
- ap_entry = "R";
- if (!pAP->KeyExist(ap_entry))
- ap_entry = "N";
+#define IsFloatZero(f) ((f) < 0.01 && (f) > -0.01)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
+
+CPDFSDK_Widget::CPDFSDK_Widget(CPDF_Annot* pAnnot,
+ CPDFSDK_PageView* pPageView,
+ CPDFSDK_InterForm* pInterForm)
+ : CPDFSDK_Annot(pAnnot, pPageView),
+ m_pInterForm(pInterForm),
+ m_nAppAge(0),
+ m_nValueAge(0) {
+ ASSERT(m_pInterForm != NULL);
+}
+
+CPDFSDK_Widget::~CPDFSDK_Widget() {}
+
+FX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid(
+ CPDF_Annot::AppearanceMode mode) {
+ CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP");
+ if (pAP == NULL)
+ return FALSE;
- // Get the AP stream or subdirectory
- CPDF_Object* psub = pAP->GetElementValue(ap_entry);
- if (psub == NULL) return FALSE;
+ // Choose the right sub-ap
+ const FX_CHAR* ap_entry = "N";
+ if (mode == CPDF_Annot::Down)
+ ap_entry = "D";
+ else if (mode == CPDF_Annot::Rollover)
+ ap_entry = "R";
+ if (!pAP->KeyExist(ap_entry))
+ ap_entry = "N";
+
+ // Get the AP stream or subdirectory
+ CPDF_Object* psub = pAP->GetElementValue(ap_entry);
+ if (psub == NULL)
+ return FALSE;
- int nFieldType = GetFieldType();
- switch (nFieldType)
- {
+ int nFieldType = GetFieldType();
+ switch (nFieldType) {
case FIELDTYPE_PUSHBUTTON:
case FIELDTYPE_COMBOBOX:
case FIELDTYPE_LISTBOX:
case FIELDTYPE_TEXTFIELD:
case FIELDTYPE_SIGNATURE:
- return psub->GetType() == PDFOBJ_STREAM;
+ return psub->GetType() == PDFOBJ_STREAM;
case FIELDTYPE_CHECKBOX:
case FIELDTYPE_RADIOBUTTON:
- if (psub->GetType() == PDFOBJ_DICTIONARY) {
- CPDF_Dictionary* pSubDict = (CPDF_Dictionary*)psub;
- return pSubDict->GetStream(GetAppState()) != NULL;
- }
- return FALSE;
- }
+ if (psub->GetType() == PDFOBJ_DICTIONARY) {
+ CPDF_Dictionary* pSubDict = (CPDF_Dictionary*)psub;
+ return pSubDict->GetStream(GetAppState()) != NULL;
+ }
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-int CPDFSDK_Widget::GetFieldType() const
-{
- CPDF_FormField* pField = GetFormField();
- ASSERT(pField != NULL);
+int CPDFSDK_Widget::GetFieldType() const {
+ CPDF_FormField* pField = GetFormField();
+ ASSERT(pField != NULL);
- return pField->GetFieldType();
+ return pField->GetFieldType();
}
-int CPDFSDK_Widget::GetFieldFlags() const
-{
- CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm();
- ASSERT(pPDFInterForm != NULL);
+int CPDFSDK_Widget::GetFieldFlags() const {
+ CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm();
+ ASSERT(pPDFInterForm != NULL);
- CPDF_FormControl* pFormControl = pPDFInterForm->GetControlByDict(m_pAnnot->GetAnnotDict());
- CPDF_FormField* pFormField = pFormControl->GetField();
- return pFormField->GetFieldFlags();
+ CPDF_FormControl* pFormControl =
+ pPDFInterForm->GetControlByDict(m_pAnnot->GetAnnotDict());
+ CPDF_FormField* pFormField = pFormControl->GetField();
+ return pFormField->GetFieldFlags();
}
-CFX_ByteString CPDFSDK_Widget::GetSubType() const
-{
- int nType = GetFieldType();
+CFX_ByteString CPDFSDK_Widget::GetSubType() const {
+ int nType = GetFieldType();
- if (nType == FIELDTYPE_SIGNATURE)
- return BFFT_SIGNATURE;
- return CPDFSDK_Annot::GetSubType();
+ if (nType == FIELDTYPE_SIGNATURE)
+ return BFFT_SIGNATURE;
+ return CPDFSDK_Annot::GetSubType();
}
-CPDF_FormField* CPDFSDK_Widget::GetFormField() const
-{
- ASSERT(m_pInterForm != NULL);
+CPDF_FormField* CPDFSDK_Widget::GetFormField() const {
+ ASSERT(m_pInterForm != NULL);
- CPDF_FormControl* pCtrl = GetFormControl();
- ASSERT(pCtrl != NULL);
+ CPDF_FormControl* pCtrl = GetFormControl();
+ ASSERT(pCtrl != NULL);
- return pCtrl->GetField();
+ return pCtrl->GetField();
}
-CPDF_FormControl* CPDFSDK_Widget::GetFormControl() const
-{
- ASSERT(m_pInterForm != NULL);
+CPDF_FormControl* CPDFSDK_Widget::GetFormControl() const {
+ ASSERT(m_pInterForm != NULL);
- CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm();
- ASSERT(pPDFInterForm != NULL);
+ CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm();
+ ASSERT(pPDFInterForm != NULL);
- return pPDFInterForm->GetControlByDict(GetAnnotDict());
+ return pPDFInterForm->GetControlByDict(GetAnnotDict());
}
-CPDF_FormControl* CPDFSDK_Widget::GetFormControl(CPDF_InterForm* pInterForm, CPDF_Dictionary* pAnnotDict)
-{
- ASSERT(pInterForm != NULL);
- ASSERT(pAnnotDict != NULL);
+CPDF_FormControl* CPDFSDK_Widget::GetFormControl(CPDF_InterForm* pInterForm,
+ CPDF_Dictionary* pAnnotDict) {
+ ASSERT(pInterForm != NULL);
+ ASSERT(pAnnotDict != NULL);
- CPDF_FormControl* pControl = pInterForm->GetControlByDict(pAnnotDict);
+ CPDF_FormControl* pControl = pInterForm->GetControlByDict(pAnnotDict);
- return pControl;
+ return pControl;
}
-int CPDFSDK_Widget::GetRotate() const
-{
- CPDF_FormControl* pCtrl = GetFormControl();
- ASSERT(pCtrl != NULL);
+int CPDFSDK_Widget::GetRotate() const {
+ CPDF_FormControl* pCtrl = GetFormControl();
+ ASSERT(pCtrl != NULL);
- return pCtrl->GetRotation() % 360;
+ return pCtrl->GetRotation() % 360;
}
-FX_BOOL CPDFSDK_Widget::GetFillColor(FX_COLORREF& color) const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+FX_BOOL CPDFSDK_Widget::GetFillColor(FX_COLORREF& color) const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- int iColorType = 0;
- color = FX_ARGBTOCOLORREF(pFormCtrl->GetBackgroundColor(iColorType));
+ int iColorType = 0;
+ color = FX_ARGBTOCOLORREF(pFormCtrl->GetBackgroundColor(iColorType));
- return iColorType != COLORTYPE_TRANSPARENT;
+ return iColorType != COLORTYPE_TRANSPARENT;
}
-FX_BOOL CPDFSDK_Widget::GetBorderColor(FX_COLORREF& color) const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+FX_BOOL CPDFSDK_Widget::GetBorderColor(FX_COLORREF& color) const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- int iColorType = 0;
- color = FX_ARGBTOCOLORREF(pFormCtrl->GetBorderColor(iColorType));
+ int iColorType = 0;
+ color = FX_ARGBTOCOLORREF(pFormCtrl->GetBorderColor(iColorType));
- return iColorType != COLORTYPE_TRANSPARENT;
+ return iColorType != COLORTYPE_TRANSPARENT;
}
-FX_BOOL CPDFSDK_Widget::GetTextColor(FX_COLORREF& color) const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+FX_BOOL CPDFSDK_Widget::GetTextColor(FX_COLORREF& color) const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance();
- if (da.HasColor())
- {
- FX_ARGB argb;
- int iColorType = COLORTYPE_TRANSPARENT;
- da.GetColor(argb, iColorType);
- color = FX_ARGBTOCOLORREF(argb);
+ CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance();
+ if (da.HasColor()) {
+ FX_ARGB argb;
+ int iColorType = COLORTYPE_TRANSPARENT;
+ da.GetColor(argb, iColorType);
+ color = FX_ARGBTOCOLORREF(argb);
- return iColorType != COLORTYPE_TRANSPARENT;
- }
+ return iColorType != COLORTYPE_TRANSPARENT;
+ }
- return FALSE;
+ return FALSE;
}
-FX_FLOAT CPDFSDK_Widget::GetFontSize() const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+FX_FLOAT CPDFSDK_Widget::GetFontSize() const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- CPDF_DefaultAppearance pDa = pFormCtrl->GetDefaultAppearance();
- CFX_ByteString csFont = "";
- FX_FLOAT fFontSize = 0.0f;
- pDa.GetFont(csFont, fFontSize);
+ CPDF_DefaultAppearance pDa = pFormCtrl->GetDefaultAppearance();
+ CFX_ByteString csFont = "";
+ FX_FLOAT fFontSize = 0.0f;
+ pDa.GetFont(csFont, fFontSize);
- return fFontSize;
+ return fFontSize;
}
-int CPDFSDK_Widget::GetSelectedIndex(int nIndex) const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+int CPDFSDK_Widget::GetSelectedIndex(int nIndex) const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetSelectedIndex(nIndex);
+ return pFormField->GetSelectedIndex(nIndex);
}
-CFX_WideString CPDFSDK_Widget::GetValue() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+CFX_WideString CPDFSDK_Widget::GetValue() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetValue();
+ return pFormField->GetValue();
}
-CFX_WideString CPDFSDK_Widget::GetDefaultValue() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+CFX_WideString CPDFSDK_Widget::GetDefaultValue() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetDefaultValue();
+ return pFormField->GetDefaultValue();
}
-CFX_WideString CPDFSDK_Widget::GetOptionLabel(int nIndex) const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+CFX_WideString CPDFSDK_Widget::GetOptionLabel(int nIndex) const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetOptionLabel(nIndex);
+ return pFormField->GetOptionLabel(nIndex);
}
-int CPDFSDK_Widget::CountOptions() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+int CPDFSDK_Widget::CountOptions() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->CountOptions();
+ return pFormField->CountOptions();
}
-FX_BOOL CPDFSDK_Widget::IsOptionSelected(int nIndex) const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+FX_BOOL CPDFSDK_Widget::IsOptionSelected(int nIndex) const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->IsItemSelected(nIndex);
+ return pFormField->IsItemSelected(nIndex);
}
-int CPDFSDK_Widget::GetTopVisibleIndex() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+int CPDFSDK_Widget::GetTopVisibleIndex() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetTopVisibleIndex();
+ return pFormField->GetTopVisibleIndex();
}
-FX_BOOL CPDFSDK_Widget::IsChecked() const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+FX_BOOL CPDFSDK_Widget::IsChecked() const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- return pFormCtrl->IsChecked();
+ return pFormCtrl->IsChecked();
}
-int CPDFSDK_Widget::GetAlignment() const
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+int CPDFSDK_Widget::GetAlignment() const {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- return pFormCtrl->GetControlAlignment();
+ return pFormCtrl->GetControlAlignment();
}
-int CPDFSDK_Widget::GetMaxLen() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+int CPDFSDK_Widget::GetMaxLen() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- return pFormField->GetMaxLen();
+ return pFormField->GetMaxLen();
}
-void CPDFSDK_Widget::SetCheck(FX_BOOL bChecked, FX_BOOL bNotify)
-{
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+void CPDFSDK_Widget::SetCheck(FX_BOOL bChecked, FX_BOOL bNotify) {
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- CPDF_FormField* pFormField = pFormCtrl->GetField();
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = pFormCtrl->GetField();
+ ASSERT(pFormField != NULL);
- pFormField->CheckControl(pFormField->GetControlIndex(pFormCtrl), bChecked, bNotify);
+ pFormField->CheckControl(pFormField->GetControlIndex(pFormCtrl), bChecked,
+ bNotify);
}
-void CPDFSDK_Widget::SetValue(const CFX_WideString& sValue, FX_BOOL bNotify)
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+void CPDFSDK_Widget::SetValue(const CFX_WideString& sValue, FX_BOOL bNotify) {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- pFormField->SetValue(sValue, bNotify);
+ pFormField->SetValue(sValue, bNotify);
}
-void CPDFSDK_Widget::SetDefaultValue(const CFX_WideString& sValue)
-{
-}
-void CPDFSDK_Widget::SetOptionSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify)
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+void CPDFSDK_Widget::SetDefaultValue(const CFX_WideString& sValue) {}
+void CPDFSDK_Widget::SetOptionSelection(int index,
+ FX_BOOL bSelected,
+ FX_BOOL bNotify) {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- pFormField->SetItemSelection(index, bSelected, bNotify);
+ pFormField->SetItemSelection(index, bSelected, bNotify);
}
-void CPDFSDK_Widget::ClearSelection(FX_BOOL bNotify)
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+void CPDFSDK_Widget::ClearSelection(FX_BOOL bNotify) {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- pFormField->ClearSelection(bNotify);
+ pFormField->ClearSelection(bNotify);
}
-void CPDFSDK_Widget::SetTopVisibleIndex(int index)
-{
-}
+void CPDFSDK_Widget::SetTopVisibleIndex(int index) {}
-void CPDFSDK_Widget::SetAppModified()
-{
- m_bAppModified = TRUE;
+void CPDFSDK_Widget::SetAppModified() {
+ m_bAppModified = TRUE;
}
-void CPDFSDK_Widget::ClearAppModified()
-{
- m_bAppModified = FALSE;
+void CPDFSDK_Widget::ClearAppModified() {
+ m_bAppModified = FALSE;
}
-FX_BOOL CPDFSDK_Widget::IsAppModified() const
-{
- return m_bAppModified;
+FX_BOOL CPDFSDK_Widget::IsAppModified() const {
+ return m_bAppModified;
}
-void CPDFSDK_Widget::ResetAppearance(const FX_WCHAR* sValue, FX_BOOL bValueChanged)
-{
- SetAppModified();
+void CPDFSDK_Widget::ResetAppearance(const FX_WCHAR* sValue,
+ FX_BOOL bValueChanged) {
+ SetAppModified();
- m_nAppAge++;
- if (m_nAppAge > 999999)
- m_nAppAge = 0;
- if (bValueChanged)
- m_nValueAge++;
+ m_nAppAge++;
+ if (m_nAppAge > 999999)
+ m_nAppAge = 0;
+ if (bValueChanged)
+ m_nValueAge++;
- int nFieldType = GetFieldType();
+ int nFieldType = GetFieldType();
- switch (nFieldType)
- {
+ switch (nFieldType) {
case FIELDTYPE_PUSHBUTTON:
- ResetAppearance_PushButton();
- break;
+ ResetAppearance_PushButton();
+ break;
case FIELDTYPE_CHECKBOX:
- ResetAppearance_CheckBox();
- break;
+ ResetAppearance_CheckBox();
+ break;
case FIELDTYPE_RADIOBUTTON:
- ResetAppearance_RadioButton();
- break;
+ ResetAppearance_RadioButton();
+ break;
case FIELDTYPE_COMBOBOX:
- ResetAppearance_ComboBox(sValue);
- break;
+ ResetAppearance_ComboBox(sValue);
+ break;
case FIELDTYPE_LISTBOX:
- ResetAppearance_ListBox();
- break;
+ ResetAppearance_ListBox();
+ break;
case FIELDTYPE_TEXTFIELD:
- ResetAppearance_TextField(sValue);
- break;
- }
+ ResetAppearance_TextField(sValue);
+ break;
+ }
- ASSERT(m_pAnnot != NULL);
- m_pAnnot->ClearCachedAP();
+ ASSERT(m_pAnnot != NULL);
+ m_pAnnot->ClearCachedAP();
}
-CFX_WideString CPDFSDK_Widget::OnFormat(FX_BOOL& bFormated)
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
- return m_pInterForm->OnFormat(pFormField, bFormated);
+CFX_WideString CPDFSDK_Widget::OnFormat(FX_BOOL& bFormated) {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
+ return m_pInterForm->OnFormat(pFormField, bFormated);
}
-void CPDFSDK_Widget::ResetFieldAppearance(FX_BOOL bValueChanged)
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+void CPDFSDK_Widget::ResetFieldAppearance(FX_BOOL bValueChanged) {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- ASSERT(m_pInterForm != NULL);
+ ASSERT(m_pInterForm != NULL);
- m_pInterForm->ResetFieldAppearance(pFormField, NULL, bValueChanged);
+ m_pInterForm->ResetFieldAppearance(pFormField, NULL, bValueChanged);
}
-void CPDFSDK_Widget::DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device,
- CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions)
-{
- int nFieldType = GetFieldType();
+void CPDFSDK_Widget::DrawAppearance(CFX_RenderDevice* pDevice,
+ const CPDF_Matrix* pUser2Device,
+ CPDF_Annot::AppearanceMode mode,
+ const CPDF_RenderOptions* pOptions) {
+ int nFieldType = GetFieldType();
- if ((nFieldType == FIELDTYPE_CHECKBOX || nFieldType == FIELDTYPE_RADIOBUTTON) &&
- mode == CPDF_Annot::Normal &&
- !IsWidgetAppearanceValid(CPDF_Annot::Normal))
- {
- CFX_PathData pathData;
+ if ((nFieldType == FIELDTYPE_CHECKBOX ||
+ nFieldType == FIELDTYPE_RADIOBUTTON) &&
+ mode == CPDF_Annot::Normal &&
+ !IsWidgetAppearanceValid(CPDF_Annot::Normal)) {
+ CFX_PathData pathData;
- CPDF_Rect rcAnnot = GetRect();
+ CPDF_Rect rcAnnot = GetRect();
- pathData.AppendRect(rcAnnot.left, rcAnnot.bottom,
- rcAnnot.right, rcAnnot.top);
+ pathData.AppendRect(rcAnnot.left, rcAnnot.bottom, rcAnnot.right,
+ rcAnnot.top);
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 0.0f;
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 0.0f;
- pDevice->DrawPath(&pathData, pUser2Device, &gsd, 0, 0xFFAAAAAA, FXFILL_ALTERNATE);
- }
- else
- {
- CPDFSDK_Annot::DrawAppearance(pDevice, pUser2Device, mode, pOptions);
- }
+ pDevice->DrawPath(&pathData, pUser2Device, &gsd, 0, 0xFFAAAAAA,
+ FXFILL_ALTERNATE);
+ } else {
+ CPDFSDK_Annot::DrawAppearance(pDevice, pUser2Device, mode, pOptions);
+ }
}
-void CPDFSDK_Widget::UpdateField()
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
+void CPDFSDK_Widget::UpdateField() {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
- ASSERT(m_pInterForm != NULL);
- m_pInterForm->UpdateField(pFormField);
+ ASSERT(m_pInterForm != NULL);
+ m_pInterForm->UpdateField(pFormField);
}
-void CPDFSDK_Widget::DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView)
-{
- ASSERT(m_pInterForm != NULL);
+void CPDFSDK_Widget::DrawShadow(CFX_RenderDevice* pDevice,
+ CPDFSDK_PageView* pPageView) {
+ ASSERT(m_pInterForm != NULL);
- int nFieldType = GetFieldType();
- if (m_pInterForm->IsNeedHighLight(nFieldType))
- {
-
-// if (nFieldType != FIELDTYPE_PUSHBUTTON)
-// {
- CPDF_Rect rc = GetRect();
- FX_COLORREF color = m_pInterForm->GetHighlightColor(nFieldType);
- uint8_t alpha = m_pInterForm->GetHighlightAlpha();
-
- CFX_FloatRect rcDevice;
- ASSERT(m_pInterForm->GetDocument());
- CPDFDoc_Environment* pEnv = m_pInterForm->GetDocument()->GetEnv();
- if(!pEnv)
- return;
- CFX_AffineMatrix page2device;
- pPageView->GetCurrentMatrix(page2device);
- page2device.Transform(((FX_FLOAT)rc.left), ((FX_FLOAT)rc.bottom), rcDevice.left, rcDevice.bottom);
-// pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.left, rc.bottom, &rcDevice.left, &rcDevice.bottom);
-// pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.right, rc.top, &rcDevice.right, &rcDevice.top);
- page2device.Transform(((FX_FLOAT)rc.right), ((FX_FLOAT)rc.top), rcDevice.right, rcDevice.top);
-
- rcDevice.Normalize();
-
- FX_ARGB argb = ArgbEncode((int)alpha, color);
- FX_RECT rcDev((int)rcDevice.left,(int)rcDevice.top,(int)rcDevice.right,(int)rcDevice.bottom);
- pDevice->FillRect(&rcDev, argb);
- /* }*/
- }
-}
+ int nFieldType = GetFieldType();
+ if (m_pInterForm->IsNeedHighLight(nFieldType)) {
+ // if (nFieldType != FIELDTYPE_PUSHBUTTON)
+ // {
+ CPDF_Rect rc = GetRect();
+ FX_COLORREF color = m_pInterForm->GetHighlightColor(nFieldType);
+ uint8_t alpha = m_pInterForm->GetHighlightAlpha();
-void CPDFSDK_Widget::ResetAppearance_PushButton()
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
+ CFX_FloatRect rcDevice;
+ ASSERT(m_pInterForm->GetDocument());
+ CPDFDoc_Environment* pEnv = m_pInterForm->GetDocument()->GetEnv();
+ if (!pEnv)
+ return;
+ CFX_AffineMatrix page2device;
+ pPageView->GetCurrentMatrix(page2device);
+ page2device.Transform(((FX_FLOAT)rc.left), ((FX_FLOAT)rc.bottom),
+ rcDevice.left, rcDevice.bottom);
+ // pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.left,
+ // rc.bottom, &rcDevice.left, &rcDevice.bottom);
+ // pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.right,
+ // rc.top, &rcDevice.right, &rcDevice.top);
+ page2device.Transform(((FX_FLOAT)rc.right), ((FX_FLOAT)rc.top),
+ rcDevice.right, rcDevice.top);
+ rcDevice.Normalize();
+
+ FX_ARGB argb = ArgbEncode((int)alpha, color);
+ FX_RECT rcDev((int)rcDevice.left, (int)rcDevice.top, (int)rcDevice.right,
+ (int)rcDevice.bottom);
+ pDevice->FillRect(&rcDev, argb);
+ /* }*/
+ }
+}
+void CPDFSDK_Widget::ResetAppearance_PushButton() {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
- CPDF_Rect rcWindow = GetRotatedRect();
+ CPDF_Rect rcWindow = GetRotatedRect();
- int32_t nLayout = 0;
+ int32_t nLayout = 0;
- switch (pControl->GetTextPosition())
- {
+ switch (pControl->GetTextPosition()) {
case TEXTPOS_ICON:
- nLayout = PPBL_ICON;
- break;
+ nLayout = PPBL_ICON;
+ break;
case TEXTPOS_BELOW:
- nLayout = PPBL_ICONTOPLABELBOTTOM;
- break;
+ nLayout = PPBL_ICONTOPLABELBOTTOM;
+ break;
case TEXTPOS_ABOVE:
- nLayout = PPBL_LABELTOPICONBOTTOM;
- break;
+ nLayout = PPBL_LABELTOPICONBOTTOM;
+ break;
case TEXTPOS_RIGHT:
- nLayout = PPBL_ICONLEFTLABELRIGHT;
- break;
+ nLayout = PPBL_ICONLEFTLABELRIGHT;
+ break;
case TEXTPOS_LEFT:
- nLayout = PPBL_LABELLEFTICONRIGHT;
- break;
+ nLayout = PPBL_LABELLEFTICONRIGHT;
+ break;
case TEXTPOS_OVERLAID:
- nLayout = PPBL_LABELOVERICON;
- break;
+ nLayout = PPBL_LABELOVERICON;
+ break;
default:
- nLayout = PPBL_LABEL;
- break;
- }
+ nLayout = PPBL_LABEL;
+ break;
+ }
- CPWL_Color crBackground, crBorder;
+ CPWL_Color crBackground, crBorder;
- int iColorType;
- FX_FLOAT fc[4];
+ int iColorType;
+ FX_FLOAT fc[4];
- pControl->GetOriginalBackgroundColor(iColorType, fc);
- if (iColorType > 0)
- crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ pControl->GetOriginalBackgroundColor(iColorType, fc);
+ if (iColorType > 0)
+ crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- pControl->GetOriginalBorderColor(iColorType, fc);
- if (iColorType > 0)
- crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ pControl->GetOriginalBorderColor(iColorType, fc);
+ if (iColorType > 0)
+ crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- int32_t nBorderStyle = 0;
- CPWL_Dash dsBorder(3,0,0);
- CPWL_Color crLeftTop,crRightBottom;
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ int32_t nBorderStyle = 0;
+ CPWL_Dash dsBorder(3, 0, 0);
+ CPWL_Color crLeftTop, crRightBottom;
- switch (GetBorderStyle())
- {
+ switch (GetBorderStyle()) {
case BBS_DASH:
- nBorderStyle = PBS_DASH;
- dsBorder = CPWL_Dash(3, 3, 0);
- break;
+ nBorderStyle = PBS_DASH;
+ dsBorder = CPWL_Dash(3, 3, 0);
+ break;
case BBS_BEVELED:
- nBorderStyle = PBS_BEVELED;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,1);
- crRightBottom = CPWL_Utils::DevideColor(crBackground,2);
- break;
+ nBorderStyle = PBS_BEVELED;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
+ crRightBottom = CPWL_Utils::DevideColor(crBackground, 2);
+ break;
case BBS_INSET:
- nBorderStyle = PBS_INSET;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75);
- break;
+ nBorderStyle = PBS_INSET;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75);
+ break;
case BBS_UNDERLINE:
- nBorderStyle = PBS_UNDERLINED;
- break;
+ nBorderStyle = PBS_UNDERLINED;
+ break;
default:
- nBorderStyle = PBS_SOLID;
+ nBorderStyle = PBS_SOLID;
+ break;
+ }
+
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
+
+ CPWL_Color crText(COLORTYPE_GRAY, 0);
+
+ FX_FLOAT fFontSize = 12.0f;
+ CFX_ByteString csNameTag;
+
+ CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
+ if (da.HasColor()) {
+ da.GetColor(iColorType, fc);
+ crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ }
+
+ if (da.HasFont())
+ da.GetFont(csNameTag, fFontSize);
+
+ CFX_WideString csWCaption;
+ CFX_WideString csNormalCaption, csRolloverCaption, csDownCaption;
+
+ if (pControl->HasMKEntry("CA")) {
+ csNormalCaption = pControl->GetNormalCaption();
+ }
+ if (pControl->HasMKEntry("RC")) {
+ csRolloverCaption = pControl->GetRolloverCaption();
+ }
+ if (pControl->HasMKEntry("AC")) {
+ csDownCaption = pControl->GetDownCaption();
+ }
+
+ CPDF_Stream* pNormalIcon = NULL;
+ CPDF_Stream* pRolloverIcon = NULL;
+ CPDF_Stream* pDownIcon = NULL;
+
+ if (pControl->HasMKEntry("I")) {
+ pNormalIcon = pControl->GetNormalIcon();
+ }
+ if (pControl->HasMKEntry("RI")) {
+ pRolloverIcon = pControl->GetRolloverIcon();
+ }
+ if (pControl->HasMKEntry("IX")) {
+ pDownIcon = pControl->GetDownIcon();
+ }
+
+ if (pNormalIcon) {
+ if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) {
+ if (pImageDict->GetString("Name").IsEmpty())
+ pImageDict->SetAtString("Name", "ImgA");
+ }
+ }
+
+ if (pRolloverIcon) {
+ if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) {
+ if (pImageDict->GetString("Name").IsEmpty())
+ pImageDict->SetAtString("Name", "ImgB");
+ }
+ }
+
+ if (pDownIcon) {
+ if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) {
+ if (pImageDict->GetString("Name").IsEmpty())
+ pImageDict->SetAtString("Name", "ImgC");
+ }
+ }
+
+ CPDF_IconFit iconFit = pControl->GetIconFit();
+
+ CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
+ ASSERT(pDoc != NULL);
+ CPDFDoc_Environment* pEnv = pDoc->GetEnv();
+
+ CBA_FontMap FontMap(
+ this,
+ pEnv->GetSysHandler()); //,
+ //ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv()));
+ FontMap.Initial();
+
+ FontMap.SetAPType("N");
+
+ CFX_ByteString csAP =
+ CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom, nBorderStyle,
+ dsBorder) +
+ CPWL_Utils::GetPushButtonAppStream(
+ iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap,
+ pNormalIcon, iconFit, csNormalCaption, crText, fFontSize, nLayout);
+
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP);
+ if (pNormalIcon)
+ AddImageToAppearance("N", pNormalIcon);
+
+ CPDF_FormControl::HighlightingMode eHLM = pControl->GetHighlightingMode();
+ if (eHLM == CPDF_FormControl::Push || eHLM == CPDF_FormControl::Toggle) {
+ if (csRolloverCaption.IsEmpty() && !pRolloverIcon) {
+ csRolloverCaption = csNormalCaption;
+ pRolloverIcon = pNormalIcon;
+ }
+
+ FontMap.SetAPType("R");
+
+ csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder) +
+ CPWL_Utils::GetPushButtonAppStream(
+ iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap,
+ pRolloverIcon, iconFit, csRolloverCaption, crText, fFontSize,
+ nLayout);
+
+ WriteAppearance("R", GetRotatedRect(), GetMatrix(), csAP);
+ if (pRolloverIcon)
+ AddImageToAppearance("R", pRolloverIcon);
+
+ if (csDownCaption.IsEmpty() && !pDownIcon) {
+ csDownCaption = csNormalCaption;
+ pDownIcon = pNormalIcon;
+ }
+
+ switch (nBorderStyle) {
+ case PBS_BEVELED: {
+ CPWL_Color crTemp = crLeftTop;
+ crLeftTop = crRightBottom;
+ crRightBottom = crTemp;
+ } break;
+ case PBS_INSET:
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
break;
}
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow,fBorderWidth);
-
- CPWL_Color crText(COLORTYPE_GRAY,0);
-
- FX_FLOAT fFontSize = 12.0f;
- CFX_ByteString csNameTag;
-
- CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
- if (da.HasColor())
- {
- da.GetColor(iColorType, fc);
- crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- }
-
- if (da.HasFont())
- da.GetFont(csNameTag, fFontSize);
+ FontMap.SetAPType("D");
- CFX_WideString csWCaption;
- CFX_WideString csNormalCaption, csRolloverCaption, csDownCaption;
-
- if (pControl->HasMKEntry("CA"))
- {
- csNormalCaption = pControl->GetNormalCaption();
- }
- if (pControl->HasMKEntry("RC"))
- {
- csRolloverCaption = pControl->GetRolloverCaption();
- }
- if (pControl->HasMKEntry("AC"))
- {
- csDownCaption = pControl->GetDownCaption();
- }
-
- CPDF_Stream* pNormalIcon = NULL;
- CPDF_Stream* pRolloverIcon = NULL;
- CPDF_Stream* pDownIcon = NULL;
-
- if (pControl->HasMKEntry("I"))
- {
- pNormalIcon = pControl->GetNormalIcon();
- }
- if (pControl->HasMKEntry("RI"))
- {
- pRolloverIcon = pControl->GetRolloverIcon();
- }
- if (pControl->HasMKEntry("IX"))
- {
- pDownIcon = pControl->GetDownIcon();
- }
-
- if (pNormalIcon)
- {
- if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict())
- {
- if (pImageDict->GetString("Name").IsEmpty())
- pImageDict->SetAtString("Name", "ImgA");
- }
- }
-
- if (pRolloverIcon)
- {
- if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict())
- {
- if (pImageDict->GetString("Name").IsEmpty())
- pImageDict->SetAtString("Name", "ImgB");
- }
- }
+ csAP = CPWL_Utils::GetRectFillAppStream(
+ rcWindow, CPWL_Utils::SubstractColor(crBackground, 0.25f)) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder) +
+ CPWL_Utils::GetPushButtonAppStream(
+ iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap,
+ pDownIcon, iconFit, csDownCaption, crText, fFontSize, nLayout);
+ WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP);
if (pDownIcon)
- {
- if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict())
- {
- if (pImageDict->GetString("Name").IsEmpty())
- pImageDict->SetAtString("Name", "ImgC");
- }
- }
-
- CPDF_IconFit iconFit = pControl->GetIconFit();
-
- CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
- ASSERT(pDoc != NULL);
- CPDFDoc_Environment* pEnv = pDoc->GetEnv();
-
- CBA_FontMap FontMap(this,pEnv->GetSysHandler());//, ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv()));
- FontMap.Initial();
-
- FontMap.SetAPType("N");
-
- CFX_ByteString csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
- CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) +
- CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pNormalIcon, iconFit, csNormalCaption, crText, fFontSize, nLayout);
-
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP);
- if (pNormalIcon)
- AddImageToAppearance("N", pNormalIcon);
-
- CPDF_FormControl::HighlightingMode eHLM = pControl->GetHighlightingMode();
- if (eHLM == CPDF_FormControl::Push || eHLM == CPDF_FormControl::Toggle)
- {
- if (csRolloverCaption.IsEmpty() && !pRolloverIcon)
- {
- csRolloverCaption = csNormalCaption;
- pRolloverIcon = pNormalIcon;
- }
-
- FontMap.SetAPType("R");
-
- csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
- CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) +
- CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pRolloverIcon, iconFit, csRolloverCaption, crText, fFontSize, nLayout);
-
- WriteAppearance("R", GetRotatedRect(), GetMatrix(), csAP);
- if (pRolloverIcon)
- AddImageToAppearance("R", pRolloverIcon);
-
- if (csDownCaption.IsEmpty() && !pDownIcon)
- {
- csDownCaption = csNormalCaption;
- pDownIcon = pNormalIcon;
- }
-
- switch (nBorderStyle)
- {
- case PBS_BEVELED:
- {
- CPWL_Color crTemp = crLeftTop;
- crLeftTop = crRightBottom;
- crRightBottom = crTemp;
- }
- break;
- case PBS_INSET:
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,1);
- break;
- }
-
- FontMap.SetAPType("D");
-
- csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, CPWL_Utils::SubstractColor(crBackground,0.25f)) +
- CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) +
- CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pDownIcon, iconFit, csDownCaption, crText, fFontSize, nLayout);
-
- WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP);
- if (pDownIcon)
- AddImageToAppearance("D", pDownIcon);
- }
- else
- {
- RemoveAppearance("D");
- RemoveAppearance("R");
- }
+ AddImageToAppearance("D", pDownIcon);
+ } else {
+ RemoveAppearance("D");
+ RemoveAppearance("R");
+ }
}
-void CPDFSDK_Widget::ResetAppearance_CheckBox()
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
+void CPDFSDK_Widget::ResetAppearance_CheckBox() {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
+ CPWL_Color crBackground, crBorder, crText;
+ int iColorType;
+ FX_FLOAT fc[4];
- CPWL_Color crBackground, crBorder, crText;
+ pControl->GetOriginalBackgroundColor(iColorType, fc);
+ if (iColorType > 0)
+ crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- int iColorType;
- FX_FLOAT fc[4];
-
- pControl->GetOriginalBackgroundColor(iColorType, fc);
- if (iColorType > 0)
- crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ pControl->GetOriginalBorderColor(iColorType, fc);
+ if (iColorType > 0)
+ crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- pControl->GetOriginalBorderColor(iColorType, fc);
- if (iColorType > 0)
- crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ int32_t nBorderStyle = 0;
+ CPWL_Dash dsBorder(3, 0, 0);
+ CPWL_Color crLeftTop, crRightBottom;
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- int32_t nBorderStyle = 0;
- CPWL_Dash dsBorder(3,0,0);
- CPWL_Color crLeftTop,crRightBottom;
-
- switch (GetBorderStyle())
- {
+ switch (GetBorderStyle()) {
case BBS_DASH:
- nBorderStyle = PBS_DASH;
- dsBorder = CPWL_Dash(3, 3, 0);
- break;
+ nBorderStyle = PBS_DASH;
+ dsBorder = CPWL_Dash(3, 3, 0);
+ break;
case BBS_BEVELED:
- nBorderStyle = PBS_BEVELED;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,1);
- crRightBottom = CPWL_Utils::DevideColor(crBackground,2);
- break;
+ nBorderStyle = PBS_BEVELED;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
+ crRightBottom = CPWL_Utils::DevideColor(crBackground, 2);
+ break;
case BBS_INSET:
- nBorderStyle = PBS_INSET;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75);
- break;
+ nBorderStyle = PBS_INSET;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75);
+ break;
case BBS_UNDERLINE:
- nBorderStyle = PBS_UNDERLINED;
- break;
+ nBorderStyle = PBS_UNDERLINED;
+ break;
default:
- nBorderStyle = PBS_SOLID;
- break;
- }
+ nBorderStyle = PBS_SOLID;
+ break;
+ }
- CPDF_Rect rcWindow = GetRotatedRect();
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow,fBorderWidth);
+ CPDF_Rect rcWindow = GetRotatedRect();
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
- CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
- if (da.HasColor())
- {
- da.GetColor(iColorType, fc);
- crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- }
+ CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
+ if (da.HasColor()) {
+ da.GetColor(iColorType, fc);
+ crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ }
- int32_t nStyle = 0;
+ int32_t nStyle = 0;
- CFX_WideString csWCaption = pControl->GetNormalCaption();
- if (csWCaption.GetLength() > 0)
- {
- switch (csWCaption[0])
- {
- case L'l':
- nStyle = PCS_CIRCLE;
- break;
- case L'8':
- nStyle = PCS_CROSS;
- break;
- case L'u':
- nStyle = PCS_DIAMOND;
- break;
- case L'n':
- nStyle = PCS_SQUARE;
- break;
- case L'H':
- nStyle = PCS_STAR;
- break;
- default: //L'4'
- nStyle = PCS_CHECK;
- break;
- }
- }
- else
- {
+ CFX_WideString csWCaption = pControl->GetNormalCaption();
+ if (csWCaption.GetLength() > 0) {
+ switch (csWCaption[0]) {
+ case L'l':
+ nStyle = PCS_CIRCLE;
+ break;
+ case L'8':
+ nStyle = PCS_CROSS;
+ break;
+ case L'u':
+ nStyle = PCS_DIAMOND;
+ break;
+ case L'n':
+ nStyle = PCS_SQUARE;
+ break;
+ case L'H':
+ nStyle = PCS_STAR;
+ break;
+ default: // L'4'
nStyle = PCS_CHECK;
+ break;
}
+ } else {
+ nStyle = PCS_CHECK;
+ }
- CFX_ByteString csAP_N_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,crBackground) +
- CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
+ CFX_ByteString csAP_N_ON =
+ CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom, nBorderStyle,
+ dsBorder);
- CFX_ByteString csAP_N_OFF = csAP_N_ON;
+ CFX_ByteString csAP_N_OFF = csAP_N_ON;
- switch (nBorderStyle)
- {
- case PBS_BEVELED:
- {
- CPWL_Color crTemp = crLeftTop;
- crLeftTop = crRightBottom;
- crRightBottom = crTemp;
- }
- break;
+ switch (nBorderStyle) {
+ case PBS_BEVELED: {
+ CPWL_Color crTemp = crLeftTop;
+ crLeftTop = crRightBottom;
+ crRightBottom = crTemp;
+ } break;
case PBS_INSET:
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,1);
- break;
- }
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
+ break;
+ }
- CFX_ByteString csAP_D_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,CPWL_Utils::SubstractColor(crBackground,0.25f)) +
- CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
+ CFX_ByteString csAP_D_ON =
+ CPWL_Utils::GetRectFillAppStream(
+ rcWindow, CPWL_Utils::SubstractColor(crBackground, 0.25f)) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom, nBorderStyle,
+ dsBorder);
- CFX_ByteString csAP_D_OFF = csAP_D_ON;
+ CFX_ByteString csAP_D_OFF = csAP_D_ON;
- csAP_N_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient,nStyle,crText);
- csAP_D_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient,nStyle,crText);
+ csAP_N_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient, nStyle, crText);
+ csAP_D_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient, nStyle, crText);
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON, pControl->GetCheckedAPState());
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off");
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON,
+ pControl->GetCheckedAPState());
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off");
- WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, pControl->GetCheckedAPState());
- WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off");
+ WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON,
+ pControl->GetCheckedAPState());
+ WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off");
- CFX_ByteString csAS = GetAppState();
- if (csAS.IsEmpty())
- SetAppState("Off");
+ CFX_ByteString csAS = GetAppState();
+ if (csAS.IsEmpty())
+ SetAppState("Off");
}
-void CPDFSDK_Widget::ResetAppearance_RadioButton()
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
+void CPDFSDK_Widget::ResetAppearance_RadioButton() {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
+ CPWL_Color crBackground, crBorder, crText;
+ int iColorType;
+ FX_FLOAT fc[4];
- CPWL_Color crBackground, crBorder, crText;
-
- int iColorType;
- FX_FLOAT fc[4];
+ pControl->GetOriginalBackgroundColor(iColorType, fc);
+ if (iColorType > 0)
+ crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- pControl->GetOriginalBackgroundColor(iColorType, fc);
- if (iColorType > 0)
- crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ pControl->GetOriginalBorderColor(iColorType, fc);
+ if (iColorType > 0)
+ crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- pControl->GetOriginalBorderColor(iColorType, fc);
- if (iColorType > 0)
- crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ int32_t nBorderStyle = 0;
+ CPWL_Dash dsBorder(3, 0, 0);
+ CPWL_Color crLeftTop, crRightBottom;
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- int32_t nBorderStyle = 0;
- CPWL_Dash dsBorder(3,0,0);
- CPWL_Color crLeftTop,crRightBottom;
-
- switch (GetBorderStyle())
- {
+ switch (GetBorderStyle()) {
case BBS_DASH:
- nBorderStyle = PBS_DASH;
- dsBorder = CPWL_Dash(3, 3, 0);
- break;
+ nBorderStyle = PBS_DASH;
+ dsBorder = CPWL_Dash(3, 3, 0);
+ break;
case BBS_BEVELED:
- nBorderStyle = PBS_BEVELED;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,1);
- crRightBottom = CPWL_Utils::DevideColor(crBackground,2);
- break;
+ nBorderStyle = PBS_BEVELED;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
+ crRightBottom = CPWL_Utils::DevideColor(crBackground, 2);
+ break;
case BBS_INSET:
- nBorderStyle = PBS_INSET;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75);
- break;
+ nBorderStyle = PBS_INSET;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75);
+ break;
case BBS_UNDERLINE:
- nBorderStyle = PBS_UNDERLINED;
- break;
+ nBorderStyle = PBS_UNDERLINED;
+ break;
default:
- nBorderStyle = PBS_SOLID;
- break;
- }
+ nBorderStyle = PBS_SOLID;
+ break;
+ }
- CPDF_Rect rcWindow = GetRotatedRect();
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
+ CPDF_Rect rcWindow = GetRotatedRect();
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
- CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
- if (da.HasColor())
- {
- da.GetColor(iColorType, fc);
- crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- }
+ CPDF_DefaultAppearance da = pControl->GetDefaultAppearance();
+ if (da.HasColor()) {
+ da.GetColor(iColorType, fc);
+ crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ }
- int32_t nStyle = 0;
+ int32_t nStyle = 0;
- CFX_WideString csWCaption = pControl->GetNormalCaption();
- if (csWCaption.GetLength() > 0)
- {
- switch (csWCaption[0])
- {
- default: //L'l':
- nStyle = PCS_CIRCLE;
- break;
- case L'8':
- nStyle = PCS_CROSS;
- break;
- case L'u':
- nStyle = PCS_DIAMOND;
- break;
- case L'n':
- nStyle = PCS_SQUARE;
- break;
- case L'H':
- nStyle = PCS_STAR;
- break;
- case L'4':
- nStyle = PCS_CHECK;
- break;
- }
- }
- else
- {
+ CFX_WideString csWCaption = pControl->GetNormalCaption();
+ if (csWCaption.GetLength() > 0) {
+ switch (csWCaption[0]) {
+ default: // L'l':
nStyle = PCS_CIRCLE;
+ break;
+ case L'8':
+ nStyle = PCS_CROSS;
+ break;
+ case L'u':
+ nStyle = PCS_DIAMOND;
+ break;
+ case L'n':
+ nStyle = PCS_SQUARE;
+ break;
+ case L'H':
+ nStyle = PCS_STAR;
+ break;
+ case L'4':
+ nStyle = PCS_CHECK;
+ break;
}
+ } else {
+ nStyle = PCS_CIRCLE;
+ }
+
+ CFX_ByteString csAP_N_ON;
+
+ CPDF_Rect rcCenter =
+ CPWL_Utils::DeflateRect(CPWL_Utils::GetCenterSquare(rcWindow), 1.0f);
+
+ if (nStyle == PCS_CIRCLE) {
+ if (nBorderStyle == PBS_BEVELED) {
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
+ crRightBottom = CPWL_Utils::SubstractColor(crBackground, 0.25f);
+ } else if (nBorderStyle == PBS_INSET) {
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5f);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75f);
+ }
+
+ csAP_N_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter, crBackground) +
+ CPWL_Utils::GetCircleBorderAppStream(
+ rcCenter, fBorderWidth, crBorder, crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder);
+ } else {
+ csAP_N_ON = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder);
+ }
+
+ CFX_ByteString csAP_N_OFF = csAP_N_ON;
+
+ switch (nBorderStyle) {
+ case PBS_BEVELED: {
+ CPWL_Color crTemp = crLeftTop;
+ crLeftTop = crRightBottom;
+ crRightBottom = crTemp;
+ } break;
+ case PBS_INSET:
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
+ break;
+ }
+
+ CFX_ByteString csAP_D_ON;
+
+ if (nStyle == PCS_CIRCLE) {
+ CPWL_Color crBK = CPWL_Utils::SubstractColor(crBackground, 0.25f);
+ if (nBorderStyle == PBS_BEVELED) {
+ crLeftTop = CPWL_Utils::SubstractColor(crBackground, 0.25f);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
+ crBK = crBackground;
+ } else if (nBorderStyle == PBS_INSET) {
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
+ }
+
+ csAP_D_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter, crBK) +
+ CPWL_Utils::GetCircleBorderAppStream(
+ rcCenter, fBorderWidth, crBorder, crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder);
+ } else {
+ csAP_D_ON = CPWL_Utils::GetRectFillAppStream(
+ rcWindow, CPWL_Utils::SubstractColor(crBackground, 0.25f)) +
+ CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom,
+ nBorderStyle, dsBorder);
+ }
+
+ CFX_ByteString csAP_D_OFF = csAP_D_ON;
+
+ csAP_N_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient, nStyle, crText);
+ csAP_D_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient, nStyle, crText);
+
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON,
+ pControl->GetCheckedAPState());
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off");
+
+ WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON,
+ pControl->GetCheckedAPState());
+ WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off");
+
+ CFX_ByteString csAS = GetAppState();
+ if (csAS.IsEmpty())
+ SetAppState("Off");
+}
+
+void CPDFSDK_Widget::ResetAppearance_ComboBox(const FX_WCHAR* sValue) {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
+ CPDF_FormField* pField = pControl->GetField();
+ ASSERT(pField != NULL);
+
+ CFX_ByteTextBuf sBody, sLines;
+
+ CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcButton = rcClient;
+ rcButton.left = rcButton.right - 13;
+ rcButton.Normalize();
+
+ if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) {
+ pEdit->EnableRefresh(FALSE);
- CFX_ByteString csAP_N_ON;
+ CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
+ ASSERT(pDoc != NULL);
+ CPDFDoc_Environment* pEnv = pDoc->GetEnv();
+ CBA_FontMap FontMap(this, pEnv->GetSysHandler());
+ FontMap.Initial();
+ pEdit->SetFontMap(&FontMap);
- CPDF_Rect rcCenter = CPWL_Utils::DeflateRect(CPWL_Utils::GetCenterSquare(rcWindow), 1.0f);
+ CPDF_Rect rcEdit = rcClient;
+ rcEdit.right = rcButton.left;
+ rcEdit.Normalize();
- if (nStyle == PCS_CIRCLE)
- {
- if (nBorderStyle == PBS_BEVELED)
- {
- crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
- crRightBottom = CPWL_Utils::SubstractColor(crBackground,0.25f);
- }
- else if (nBorderStyle == PBS_INSET)
- {
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5f);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75f);
- }
+ pEdit->SetPlateRect(rcEdit);
+ pEdit->SetAlignmentV(1);
- csAP_N_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter,crBackground) +
- CPWL_Utils::GetCircleBorderAppStream(rcCenter,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
- }
+ FX_FLOAT fFontSize = GetFontSize();
+ if (IsFloatZero(fFontSize))
+ pEdit->SetAutoFontSize(TRUE);
else
- {
- csAP_N_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,crBackground) +
- CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
- }
+ pEdit->SetFontSize(fFontSize);
- CFX_ByteString csAP_N_OFF = csAP_N_ON;
+ pEdit->Initialize();
- switch (nBorderStyle)
- {
- case PBS_BEVELED:
- {
- CPWL_Color crTemp = crLeftTop;
- crLeftTop = crRightBottom;
- crRightBottom = crTemp;
- }
- break;
- case PBS_INSET:
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,1);
- break;
+ if (sValue)
+ pEdit->SetText(sValue);
+ else {
+ int32_t nCurSel = pField->GetSelectedIndex(0);
+
+ if (nCurSel < 0)
+ pEdit->SetText(pField->GetValue().c_str());
+ else
+ pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str());
}
- CFX_ByteString csAP_D_ON;
+ CPDF_Rect rcContent = pEdit->GetContentRect();
- if (nStyle == PCS_CIRCLE)
- {
- CPWL_Color crBK = CPWL_Utils::SubstractColor(crBackground,0.25f);
- if (nBorderStyle == PBS_BEVELED)
- {
- crLeftTop = CPWL_Utils::SubstractColor(crBackground,0.25f);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1);
- crBK = crBackground;
- }
- else if (nBorderStyle == PBS_INSET)
- {
- crLeftTop = CPWL_Color(COLORTYPE_GRAY,0);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY,1);
- }
+ CFX_ByteString sEdit =
+ CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, 0.0f));
+ if (sEdit.GetLength() > 0) {
+ sBody << "/Tx BMC\n"
+ << "q\n";
+ if (rcContent.Width() > rcEdit.Width() ||
+ rcContent.Height() > rcEdit.Height()) {
+ sBody << rcEdit.left << " " << rcEdit.bottom << " " << rcEdit.Width()
+ << " " << rcEdit.Height() << " re\nW\nn\n";
+ }
- csAP_D_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter,crBK)
- + CPWL_Utils::GetCircleBorderAppStream(rcCenter,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
- }
- else
- {
- csAP_D_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,CPWL_Utils::SubstractColor(crBackground,0.25f)) +
- CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder);
+ CPWL_Color crText = GetTextPWLColor();
+ sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit
+ << "ET\n"
+ << "Q\nEMC\n";
}
- CFX_ByteString csAP_D_OFF = csAP_D_ON;
+ IFX_Edit::DelEdit(pEdit);
+ }
- csAP_N_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient,nStyle,crText);
- csAP_D_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient,nStyle,crText);
+ sBody << CPWL_Utils::GetDropButtonAppStream(rcButton);
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON, pControl->GetCheckedAPState());
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off");
+ CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() +
+ sLines.GetByteString() + sBody.GetByteString();
- WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, pControl->GetCheckedAPState());
- WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off");
-
- CFX_ByteString csAS = GetAppState();
- if (csAS.IsEmpty())
- SetAppState("Off");
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
}
-void CPDFSDK_Widget::ResetAppearance_ComboBox(const FX_WCHAR* sValue)
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
- CPDF_FormField* pField = pControl->GetField();
- ASSERT(pField != NULL);
+void CPDFSDK_Widget::ResetAppearance_ListBox() {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
+ CPDF_FormField* pField = pControl->GetField();
+ ASSERT(pField != NULL);
- CFX_ByteTextBuf sBody, sLines;
+ CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcButton = rcClient;
- rcButton.left = rcButton.right - 13;
- rcButton.Normalize();
-
- if (IFX_Edit * pEdit = IFX_Edit::NewEdit())
- {
- pEdit->EnableRefresh(FALSE);
+ CFX_ByteTextBuf sBody, sLines;
- CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
- ASSERT(pDoc != NULL);
- CPDFDoc_Environment* pEnv = pDoc->GetEnv();
- CBA_FontMap FontMap(this,pEnv->GetSysHandler());
- FontMap.Initial();
- pEdit->SetFontMap(&FontMap);
+ if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) {
+ pEdit->EnableRefresh(FALSE);
- CPDF_Rect rcEdit = rcClient;
- rcEdit.right = rcButton.left;
- rcEdit.Normalize();
+ CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
+ ASSERT(pDoc != NULL);
+ CPDFDoc_Environment* pEnv = pDoc->GetEnv();
- pEdit->SetPlateRect(rcEdit);
- pEdit->SetAlignmentV(1);
+ CBA_FontMap FontMap(this, pEnv->GetSysHandler());
+ FontMap.Initial();
+ pEdit->SetFontMap(&FontMap);
- FX_FLOAT fFontSize = GetFontSize();
- if (IsFloatZero(fFontSize))
- pEdit->SetAutoFontSize(TRUE);
- else
- pEdit->SetFontSize(fFontSize);
+ pEdit->SetPlateRect(CPDF_Rect(rcClient.left, 0.0f, rcClient.right, 0.0f));
- pEdit->Initialize();
+ FX_FLOAT fFontSize = GetFontSize();
- if (sValue)
- pEdit->SetText(sValue);
- else
- {
- int32_t nCurSel = pField->GetSelectedIndex(0);
+ if (IsFloatZero(fFontSize))
+ pEdit->SetFontSize(12.0f);
+ else
+ pEdit->SetFontSize(fFontSize);
- if (nCurSel < 0)
- pEdit->SetText(pField->GetValue().c_str());
- else
- pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str());
- }
+ pEdit->Initialize();
- CPDF_Rect rcContent = pEdit->GetContentRect();
+ CFX_ByteTextBuf sList;
+ FX_FLOAT fy = rcClient.top;
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f));
- if (sEdit.GetLength() > 0)
- {
- sBody << "/Tx BMC\n" << "q\n";
- if (rcContent.Width() > rcEdit.Width() ||
- rcContent.Height() > rcEdit.Height())
- {
- sBody << rcEdit.left << " " << rcEdit.bottom << " "
- << rcEdit.Width() << " " << rcEdit.Height() << " re\nW\nn\n";
- }
+ int32_t nTop = pField->GetTopVisibleIndex();
+ int32_t nCount = pField->CountOptions();
+ int32_t nSelCount = pField->CountSelectedItems();
- CPWL_Color crText = GetTextPWLColor();
- sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n" << "Q\nEMC\n";
+ for (int32_t i = nTop; i < nCount; i++) {
+ FX_BOOL bSelected = FALSE;
+ for (int32_t j = 0; j < nSelCount; j++) {
+ if (pField->GetSelectedIndex(j) == i) {
+ bSelected = TRUE;
+ break;
}
+ }
- IFX_Edit::DelEdit(pEdit);
- }
-
- sBody << CPWL_Utils::GetDropButtonAppStream(rcButton);
-
- CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString();
-
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
-}
-
-void CPDFSDK_Widget::ResetAppearance_ListBox()
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
- CPDF_FormField* pField = pControl->GetField();
- ASSERT(pField != NULL);
-
- CPDF_Rect rcClient = GetClientRect();
-
- CFX_ByteTextBuf sBody, sLines;
-
- if (IFX_Edit * pEdit = IFX_Edit::NewEdit())
- {
- pEdit->EnableRefresh(FALSE);
-
- CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
- ASSERT(pDoc != NULL);
- CPDFDoc_Environment* pEnv = pDoc->GetEnv();
-
- CBA_FontMap FontMap(this,pEnv->GetSysHandler());
- FontMap.Initial();
- pEdit->SetFontMap(&FontMap);
-
- pEdit->SetPlateRect(CPDF_Rect(rcClient.left,0.0f,rcClient.right,0.0f));
-
- FX_FLOAT fFontSize = GetFontSize();
-
- if (IsFloatZero(fFontSize))
- pEdit->SetFontSize(12.0f);
- else
- pEdit->SetFontSize(fFontSize);
-
- pEdit->Initialize();
-
- CFX_ByteTextBuf sList;
- FX_FLOAT fy = rcClient.top;
-
- int32_t nTop = pField->GetTopVisibleIndex();
- int32_t nCount = pField->CountOptions();
- int32_t nSelCount = pField->CountSelectedItems();
-
- for (int32_t i=nTop; i<nCount; i++)
- {
- FX_BOOL bSelected = FALSE;
- for (int32_t j=0; j<nSelCount; j++)
- {
- if (pField->GetSelectedIndex(j) == i)
- {
- bSelected = TRUE;
- break;
- }
- }
-
- pEdit->SetText(pField->GetOptionLabel(i).c_str());
-
- CPDF_Rect rcContent = pEdit->GetContentRect();
- FX_FLOAT fItemHeight = rcContent.Height();
-
- if (bSelected)
- {
- CPDF_Rect rcItem = CPDF_Rect(rcClient.left,fy-fItemHeight,rcClient.right,fy);
- sList << "q\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,0,51.0f/255.0f,113.0f/255.0f),TRUE)
- << rcItem.left << " " << rcItem.bottom << " " << rcItem.Width() << " " << rcItem.Height() << " re f\n" << "Q\n";
-
- sList << "BT\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY,1),TRUE) <<
- CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,fy)) << "ET\n";
- }
- else
- {
- CPWL_Color crText = GetTextPWLColor();
- sList << "BT\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) <<
- CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,fy)) << "ET\n";
- }
-
- fy -= fItemHeight;
- }
+ pEdit->SetText(pField->GetOptionLabel(i).c_str());
+
+ CPDF_Rect rcContent = pEdit->GetContentRect();
+ FX_FLOAT fItemHeight = rcContent.Height();
+
+ if (bSelected) {
+ CPDF_Rect rcItem =
+ CPDF_Rect(rcClient.left, fy - fItemHeight, rcClient.right, fy);
+ sList << "q\n" << CPWL_Utils::GetColorAppStream(
+ CPWL_Color(COLORTYPE_RGB, 0, 51.0f / 255.0f,
+ 113.0f / 255.0f),
+ TRUE)
+ << rcItem.left << " " << rcItem.bottom << " " << rcItem.Width()
+ << " " << rcItem.Height() << " re f\n"
+ << "Q\n";
+
+ sList << "BT\n" << CPWL_Utils::GetColorAppStream(
+ CPWL_Color(COLORTYPE_GRAY, 1), TRUE)
+ << CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, fy))
+ << "ET\n";
+ } else {
+ CPWL_Color crText = GetTextPWLColor();
+ sList << "BT\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, fy))
+ << "ET\n";
+ }
- if (sList.GetSize() > 0)
- {
- sBody << "/Tx BMC\n" << "q\n" << rcClient.left << " " << rcClient.bottom << " "
- << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n";
- sBody << sList << "Q\nEMC\n";
- }
+ fy -= fItemHeight;
+ }
- IFX_Edit::DelEdit(pEdit);
+ if (sList.GetSize() > 0) {
+ sBody << "/Tx BMC\n"
+ << "q\n" << rcClient.left << " " << rcClient.bottom << " "
+ << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n";
+ sBody << sList << "Q\nEMC\n";
}
- CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString();
+ IFX_Edit::DelEdit(pEdit);
+ }
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
+ CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() +
+ sLines.GetByteString() + sBody.GetByteString();
+
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
}
-void CPDFSDK_Widget::ResetAppearance_TextField(const FX_WCHAR* sValue)
-{
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
- CPDF_FormField* pField = pControl->GetField();
- ASSERT(pField != NULL);
+void CPDFSDK_Widget::ResetAppearance_TextField(const FX_WCHAR* sValue) {
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
+ CPDF_FormField* pField = pControl->GetField();
+ ASSERT(pField != NULL);
- CFX_ByteTextBuf sBody, sLines;
+ CFX_ByteTextBuf sBody, sLines;
- if (IFX_Edit * pEdit = IFX_Edit::NewEdit())
- {
- pEdit->EnableRefresh(FALSE);
+ if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) {
+ pEdit->EnableRefresh(FALSE);
- CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
- ASSERT(pDoc != NULL);
- CPDFDoc_Environment* pEnv = pDoc->GetEnv();
+ CPDFSDK_Document* pDoc = m_pInterForm->GetDocument();
+ ASSERT(pDoc != NULL);
+ CPDFDoc_Environment* pEnv = pDoc->GetEnv();
- CBA_FontMap FontMap(this,pEnv->GetSysHandler());//, ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv()));
- FontMap.Initial();
- pEdit->SetFontMap(&FontMap);
+ CBA_FontMap FontMap(
+ this,
+ pEnv->GetSysHandler()); //,
+ //ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv()));
+ FontMap.Initial();
+ pEdit->SetFontMap(&FontMap);
- CPDF_Rect rcClient = GetClientRect();
- pEdit->SetPlateRect(rcClient);
- pEdit->SetAlignmentH(pControl->GetControlAlignment());
+ CPDF_Rect rcClient = GetClientRect();
+ pEdit->SetPlateRect(rcClient);
+ pEdit->SetAlignmentH(pControl->GetControlAlignment());
- FX_DWORD dwFieldFlags = pField->GetFieldFlags();
- FX_BOOL bMultiLine = (dwFieldFlags >> 12) & 1;
+ FX_DWORD dwFieldFlags = pField->GetFieldFlags();
+ FX_BOOL bMultiLine = (dwFieldFlags >> 12) & 1;
- if (bMultiLine)
- {
- pEdit->SetMultiLine(TRUE);
- pEdit->SetAutoReturn(TRUE);
- }
- else
- {
- pEdit->SetAlignmentV(1);
- }
+ if (bMultiLine) {
+ pEdit->SetMultiLine(TRUE);
+ pEdit->SetAutoReturn(TRUE);
+ } else {
+ pEdit->SetAlignmentV(1);
+ }
- FX_WORD subWord = 0;
- if ((dwFieldFlags >> 13) & 1)
- {
- subWord = '*';
- pEdit->SetPasswordChar(subWord);
- }
+ FX_WORD subWord = 0;
+ if ((dwFieldFlags >> 13) & 1) {
+ subWord = '*';
+ pEdit->SetPasswordChar(subWord);
+ }
- int nMaxLen = pField->GetMaxLen();
- FX_BOOL bCharArray = (dwFieldFlags >> 24) & 1;
- FX_FLOAT fFontSize = GetFontSize();
+ int nMaxLen = pField->GetMaxLen();
+ FX_BOOL bCharArray = (dwFieldFlags >> 24) & 1;
+ FX_FLOAT fFontSize = GetFontSize();
- if (nMaxLen > 0)
- {
- if (bCharArray)
- {
- pEdit->SetCharArray(nMaxLen);
+ if (nMaxLen > 0) {
+ if (bCharArray) {
+ pEdit->SetCharArray(nMaxLen);
- if (IsFloatZero(fFontSize))
- {
- fFontSize = CPWL_Edit::GetCharArrayAutoFontSize(FontMap.GetPDFFont(0),rcClient,nMaxLen);
- }
- }
- else
- {
- if (sValue)
- nMaxLen = wcslen((const wchar_t*)sValue);
- pEdit->SetLimitChar(nMaxLen);
- }
+ if (IsFloatZero(fFontSize)) {
+ fFontSize = CPWL_Edit::GetCharArrayAutoFontSize(FontMap.GetPDFFont(0),
+ rcClient, nMaxLen);
}
+ } else {
+ if (sValue)
+ nMaxLen = wcslen((const wchar_t*)sValue);
+ pEdit->SetLimitChar(nMaxLen);
+ }
+ }
- if (IsFloatZero(fFontSize))
- pEdit->SetAutoFontSize(TRUE);
- else
- pEdit->SetFontSize(fFontSize);
+ if (IsFloatZero(fFontSize))
+ pEdit->SetAutoFontSize(TRUE);
+ else
+ pEdit->SetFontSize(fFontSize);
- pEdit->Initialize();
+ pEdit->Initialize();
- if (sValue)
- pEdit->SetText(sValue);
- else
- pEdit->SetText(pField->GetValue().c_str());
+ if (sValue)
+ pEdit->SetText(sValue);
+ else
+ pEdit->SetText(pField->GetValue().c_str());
- CPDF_Rect rcContent = pEdit->GetContentRect();
+ CPDF_Rect rcContent = pEdit->GetContentRect();
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f),
- NULL,!bCharArray,subWord);
+ CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(
+ pEdit, CPDF_Point(0.0f, 0.0f), NULL, !bCharArray, subWord);
- if (sEdit.GetLength() > 0)
- {
- sBody << "/Tx BMC\n" << "q\n";
- if (rcContent.Width() > rcClient.Width() ||
- rcContent.Height() > rcClient.Height())
- {
- sBody << rcClient.left << " " << rcClient.bottom << " "
- << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n";
+ if (sEdit.GetLength() > 0) {
+ sBody << "/Tx BMC\n"
+ << "q\n";
+ if (rcContent.Width() > rcClient.Width() ||
+ rcContent.Height() > rcClient.Height()) {
+ sBody << rcClient.left << " " << rcClient.bottom << " "
+ << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n";
+ }
+ CPWL_Color crText = GetTextPWLColor();
+ sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit
+ << "ET\n"
+ << "Q\nEMC\n";
+ }
+
+ if (bCharArray) {
+ switch (GetBorderStyle()) {
+ case BBS_SOLID: {
+ CFX_ByteString sColor =
+ CPWL_Utils::GetColorAppStream(GetBorderPWLColor(), FALSE);
+ if (sColor.GetLength() > 0) {
+ sLines << "q\n" << GetBorderWidth() << " w\n"
+ << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(), FALSE)
+ << " 2 J 0 j\n";
+
+ for (int32_t i = 1; i < nMaxLen; i++) {
+ sLines << rcClient.left +
+ ((rcClient.right - rcClient.left) / nMaxLen) * i
+ << " " << rcClient.bottom << " m\n"
+ << rcClient.left +
+ ((rcClient.right - rcClient.left) / nMaxLen) * i
+ << " " << rcClient.top << " l S\n";
}
- CPWL_Color crText = GetTextPWLColor();
- sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n" << "Q\nEMC\n";
- }
- if (bCharArray)
- {
- switch (GetBorderStyle())
- {
- case BBS_SOLID:
- {
- CFX_ByteString sColor = CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE);
- if (sColor.GetLength() > 0)
- {
- sLines << "q\n" << GetBorderWidth() << " w\n"
- << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE) << " 2 J 0 j\n";
-
- for (int32_t i=1;i<nMaxLen;i++)
- {
- sLines << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " "
- << rcClient.bottom << " m\n"
- << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " "
- << rcClient.top << " l S\n";
- }
-
- sLines << "Q\n";
- }
- }
- break;
- case BBS_DASH:
- {
- CFX_ByteString sColor = CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE);
- if (sColor.GetLength() > 0)
- {
- CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0);
-
- sLines << "q\n" << GetBorderWidth() << " w\n"
- << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE)
- << "[" << dsBorder.nDash << " "
- << dsBorder.nGap << "] "
- << dsBorder.nPhase << " d\n";
-
- for (int32_t i=1;i<nMaxLen;i++)
- {
- sLines << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " "
- << rcClient.bottom << " m\n"
- << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " "
- << rcClient.top << " l S\n";
- }
-
- sLines << "Q\n";
- }
- }
- break;
+ sLines << "Q\n";
+ }
+ } break;
+ case BBS_DASH: {
+ CFX_ByteString sColor =
+ CPWL_Utils::GetColorAppStream(GetBorderPWLColor(), FALSE);
+ if (sColor.GetLength() > 0) {
+ CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0);
+
+ sLines << "q\n" << GetBorderWidth() << " w\n"
+ << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(), FALSE)
+ << "[" << dsBorder.nDash << " " << dsBorder.nGap << "] "
+ << dsBorder.nPhase << " d\n";
+
+ for (int32_t i = 1; i < nMaxLen; i++) {
+ sLines << rcClient.left +
+ ((rcClient.right - rcClient.left) / nMaxLen) * i
+ << " " << rcClient.bottom << " m\n"
+ << rcClient.left +
+ ((rcClient.right - rcClient.left) / nMaxLen) * i
+ << " " << rcClient.top << " l S\n";
}
- }
- IFX_Edit::DelEdit(pEdit);
+ sLines << "Q\n";
+ }
+ } break;
+ }
}
- CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString();
- WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
+ IFX_Edit::DelEdit(pEdit);
+ }
+
+ CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() +
+ sLines.GetByteString() + sBody.GetByteString();
+ WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP);
}
-CPDF_Rect CPDFSDK_Widget::GetClientRect() const
-{
- CPDF_Rect rcWindow = GetRotatedRect();
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- switch (GetBorderStyle())
- {
+CPDF_Rect CPDFSDK_Widget::GetClientRect() const {
+ CPDF_Rect rcWindow = GetRotatedRect();
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ switch (GetBorderStyle()) {
case BBS_BEVELED:
case BBS_INSET:
- fBorderWidth *= 2.0f;
- break;
- }
+ fBorderWidth *= 2.0f;
+ break;
+ }
- return CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
-}
-
-CPDF_Rect CPDFSDK_Widget::GetRotatedRect() const
-{
- CPDF_Rect rectAnnot = GetRect();
- FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left;
- FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom;
-
- CPDF_FormControl* pControl = GetFormControl();
- CPDF_Rect rcPDFWindow;
- switch(abs(pControl->GetRotation() % 360))
- {
- case 0:
- case 180:
- default:
- rcPDFWindow = CPDF_Rect(0, 0, fWidth, fHeight);
- break;
- case 90:
- case 270:
- rcPDFWindow = CPDF_Rect(0, 0, fHeight, fWidth);
- break;
- }
+ return CPWL_Utils::DeflateRect(rcWindow, fBorderWidth);
+}
- return rcPDFWindow;
+CPDF_Rect CPDFSDK_Widget::GetRotatedRect() const {
+ CPDF_Rect rectAnnot = GetRect();
+ FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left;
+ FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom;
+
+ CPDF_FormControl* pControl = GetFormControl();
+ CPDF_Rect rcPDFWindow;
+ switch (abs(pControl->GetRotation() % 360)) {
+ case 0:
+ case 180:
+ default:
+ rcPDFWindow = CPDF_Rect(0, 0, fWidth, fHeight);
+ break;
+ case 90:
+ case 270:
+ rcPDFWindow = CPDF_Rect(0, 0, fHeight, fWidth);
+ break;
+ }
+
+ return rcPDFWindow;
}
-CFX_ByteString CPDFSDK_Widget::GetBackgroundAppStream() const
-{
- CPWL_Color crBackground = GetFillPWLColor();
- if (crBackground.nColorType != COLORTYPE_TRANSPARENT) {
- return CPWL_Utils::GetRectFillAppStream(GetRotatedRect(), crBackground);
- }
- return "";
+CFX_ByteString CPDFSDK_Widget::GetBackgroundAppStream() const {
+ CPWL_Color crBackground = GetFillPWLColor();
+ if (crBackground.nColorType != COLORTYPE_TRANSPARENT) {
+ return CPWL_Utils::GetRectFillAppStream(GetRotatedRect(), crBackground);
+ }
+ return "";
}
-CFX_ByteString CPDFSDK_Widget::GetBorderAppStream() const
-{
- CPDF_Rect rcWindow = GetRotatedRect();
- CPWL_Color crBorder = GetBorderPWLColor();
- CPWL_Color crBackground = GetFillPWLColor();
- CPWL_Color crLeftTop, crRightBottom;
+CFX_ByteString CPDFSDK_Widget::GetBorderAppStream() const {
+ CPDF_Rect rcWindow = GetRotatedRect();
+ CPWL_Color crBorder = GetBorderPWLColor();
+ CPWL_Color crBackground = GetFillPWLColor();
+ CPWL_Color crLeftTop, crRightBottom;
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- int32_t nBorderStyle = 0;
- CPWL_Dash dsBorder(3,0,0);
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ int32_t nBorderStyle = 0;
+ CPWL_Dash dsBorder(3, 0, 0);
- switch (GetBorderStyle())
- {
+ switch (GetBorderStyle()) {
case BBS_DASH:
- nBorderStyle = PBS_DASH;
- dsBorder = CPWL_Dash(3, 3, 0);
- break;
+ nBorderStyle = PBS_DASH;
+ dsBorder = CPWL_Dash(3, 3, 0);
+ break;
case BBS_BEVELED:
- nBorderStyle = PBS_BEVELED;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
- crRightBottom = CPWL_Utils::DevideColor(crBackground, 2);
- break;
+ nBorderStyle = PBS_BEVELED;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1);
+ crRightBottom = CPWL_Utils::DevideColor(crBackground, 2);
+ break;
case BBS_INSET:
- nBorderStyle = PBS_INSET;
- fBorderWidth *= 2;
- crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5);
- crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75);
- break;
+ nBorderStyle = PBS_INSET;
+ fBorderWidth *= 2;
+ crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5);
+ crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75);
+ break;
case BBS_UNDERLINE:
- nBorderStyle = PBS_UNDERLINED;
- break;
+ nBorderStyle = PBS_UNDERLINED;
+ break;
default:
- nBorderStyle = PBS_SOLID;
- break;
- }
+ nBorderStyle = PBS_SOLID;
+ break;
+ }
- return CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop,
- crRightBottom, nBorderStyle, dsBorder);
+ return CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder,
+ crLeftTop, crRightBottom, nBorderStyle,
+ dsBorder);
}
-CPDF_Matrix CPDFSDK_Widget::GetMatrix() const
-{
- CPDF_Matrix mt;
- CPDF_FormControl* pControl = GetFormControl();
- ASSERT(pControl != NULL);
+CPDF_Matrix CPDFSDK_Widget::GetMatrix() const {
+ CPDF_Matrix mt;
+ CPDF_FormControl* pControl = GetFormControl();
+ ASSERT(pControl != NULL);
- CPDF_Rect rcAnnot = GetRect();
- FX_FLOAT fWidth = rcAnnot.right - rcAnnot.left;
- FX_FLOAT fHeight = rcAnnot.top - rcAnnot.bottom;
-
-
-
- switch (abs(pControl->GetRotation() % 360))
- {
- case 0:
- default:
- mt = CPDF_Matrix(1, 0, 0, 1, 0, 0);
- break;
- case 90:
- mt = CPDF_Matrix(0, 1, -1, 0, fWidth, 0);
- break;
- case 180:
- mt = CPDF_Matrix(-1, 0, 0, -1, fWidth, fHeight);
- break;
- case 270:
- mt = CPDF_Matrix(0, -1, 1, 0, 0, fHeight);
- break;
- }
-
- return mt;
-}
+ CPDF_Rect rcAnnot = GetRect();
+ FX_FLOAT fWidth = rcAnnot.right - rcAnnot.left;
+ FX_FLOAT fHeight = rcAnnot.top - rcAnnot.bottom;
-CPWL_Color CPDFSDK_Widget::GetTextPWLColor() const
-{
- CPWL_Color crText = CPWL_Color(COLORTYPE_GRAY, 0);
-
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
-
- CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance();
- if (da.HasColor())
- {
- int32_t iColorType;
- FX_FLOAT fc[4];
- da.GetColor(iColorType, fc);
- crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- }
+ switch (abs(pControl->GetRotation() % 360)) {
+ case 0:
+ default:
+ mt = CPDF_Matrix(1, 0, 0, 1, 0, 0);
+ break;
+ case 90:
+ mt = CPDF_Matrix(0, 1, -1, 0, fWidth, 0);
+ break;
+ case 180:
+ mt = CPDF_Matrix(-1, 0, 0, -1, fWidth, fHeight);
+ break;
+ case 270:
+ mt = CPDF_Matrix(0, -1, 1, 0, 0, fHeight);
+ break;
+ }
+
+ return mt;
+}
+
+CPWL_Color CPDFSDK_Widget::GetTextPWLColor() const {
+ CPWL_Color crText = CPWL_Color(COLORTYPE_GRAY, 0);
+
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
+
+ CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance();
+ if (da.HasColor()) {
+ int32_t iColorType;
+ FX_FLOAT fc[4];
+ da.GetColor(iColorType, fc);
+ crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ }
- return crText;
+ return crText;
}
-CPWL_Color CPDFSDK_Widget::GetBorderPWLColor() const
-{
- CPWL_Color crBorder;
+CPWL_Color CPDFSDK_Widget::GetBorderPWLColor() const {
+ CPWL_Color crBorder;
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- int32_t iColorType;
- FX_FLOAT fc[4];
- pFormCtrl->GetOriginalBorderColor(iColorType, fc);
- if (iColorType > 0)
- crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ int32_t iColorType;
+ FX_FLOAT fc[4];
+ pFormCtrl->GetOriginalBorderColor(iColorType, fc);
+ if (iColorType > 0)
+ crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- return crBorder;
+ return crBorder;
}
-CPWL_Color CPDFSDK_Widget::GetFillPWLColor() const
-{
- CPWL_Color crFill;
+CPWL_Color CPDFSDK_Widget::GetFillPWLColor() const {
+ CPWL_Color crFill;
- CPDF_FormControl* pFormCtrl = GetFormControl();
- ASSERT(pFormCtrl != NULL);
+ CPDF_FormControl* pFormCtrl = GetFormControl();
+ ASSERT(pFormCtrl != NULL);
- int32_t iColorType;
- FX_FLOAT fc[4];
- pFormCtrl->GetOriginalBackgroundColor(iColorType, fc);
- if (iColorType > 0)
- crFill = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
+ int32_t iColorType;
+ FX_FLOAT fc[4];
+ pFormCtrl->GetOriginalBackgroundColor(iColorType, fc);
+ if (iColorType > 0)
+ crFill = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]);
- return crFill;
+ return crFill;
}
-void CPDFSDK_Widget::AddImageToAppearance(const CFX_ByteString& sAPType, CPDF_Stream* pImage)
-{
- ASSERT(pImage != NULL);
+void CPDFSDK_Widget::AddImageToAppearance(const CFX_ByteString& sAPType,
+ CPDF_Stream* pImage) {
+ ASSERT(pImage != NULL);
- CPDF_Document* pDoc = m_pPageView->GetPDFDocument();//pDocument->GetDocument();
- ASSERT(pDoc != NULL);
+ CPDF_Document* pDoc =
+ m_pPageView->GetPDFDocument(); // pDocument->GetDocument();
+ ASSERT(pDoc != NULL);
- CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP");
- ASSERT(pAPDict != NULL);
+ CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP");
+ ASSERT(pAPDict != NULL);
- CPDF_Stream* pStream = pAPDict->GetStream(sAPType);
- ASSERT(pStream != NULL);
+ CPDF_Stream* pStream = pAPDict->GetStream(sAPType);
+ ASSERT(pStream != NULL);
- CPDF_Dictionary* pStreamDict = pStream->GetDict();
- ASSERT(pStreamDict != NULL);
+ CPDF_Dictionary* pStreamDict = pStream->GetDict();
+ ASSERT(pStreamDict != NULL);
- CFX_ByteString sImageAlias = "IMG";
+ CFX_ByteString sImageAlias = "IMG";
- if (CPDF_Dictionary* pImageDict = pImage->GetDict())
- {
- sImageAlias = pImageDict->GetString("Name");
- if (sImageAlias.IsEmpty())
- sImageAlias = "IMG";
- }
+ if (CPDF_Dictionary* pImageDict = pImage->GetDict()) {
+ sImageAlias = pImageDict->GetString("Name");
+ if (sImageAlias.IsEmpty())
+ sImageAlias = "IMG";
+ }
- CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources");
- if (!pStreamResList)
- {
- pStreamResList = new CPDF_Dictionary();
- pStreamDict->SetAt("Resources", pStreamResList);
- }
+ CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources");
+ if (!pStreamResList) {
+ pStreamResList = new CPDF_Dictionary();
+ pStreamDict->SetAt("Resources", pStreamResList);
+ }
- if (pStreamResList)
- {
- CPDF_Dictionary* pXObject = new CPDF_Dictionary;
- pXObject->SetAtReference(sImageAlias, pDoc, pImage);
- pStreamResList->SetAt("XObject", pXObject);
- }
+ if (pStreamResList) {
+ CPDF_Dictionary* pXObject = new CPDF_Dictionary;
+ pXObject->SetAtReference(sImageAlias, pDoc, pImage);
+ pStreamResList->SetAt("XObject", pXObject);
+ }
}
-void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType)
-{
- if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP"))
- {
- pAPDict->RemoveAt(sAPType);
- }
+void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) {
+ if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP")) {
+ pAPDict->RemoveAt(sAPType);
+ }
}
-FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, PDFSDK_FieldAction& data, CPDFSDK_PageView* pPageView)
-{
- CPDF_Action action = GetAAction(type);
+FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type,
+ PDFSDK_FieldAction& data,
+ CPDFSDK_PageView* pPageView) {
+ CPDF_Action action = GetAAction(type);
- if (action && action.GetType() != CPDF_Action::Unknown)
- {
- CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
- ASSERT(pDocument != NULL);
+ if (action && action.GetType() != CPDF_Action::Unknown) {
+ CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
+ ASSERT(pDocument != NULL);
- CPDFDoc_Environment* pEnv = pDocument->GetEnv();
- ASSERT(pEnv != NULL);
+ CPDFDoc_Environment* pEnv = pDocument->GetEnv();
+ ASSERT(pEnv != NULL);
- CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();/*(CPDFSDK_ActionHandler*)pApp->GetActionHandler();*/
- ASSERT(pActionHandler != NULL);
+ CPDFSDK_ActionHandler* pActionHandler =
+ pEnv->GetActionHander(); /*(CPDFSDK_ActionHandler*)pApp->GetActionHandler();*/
+ ASSERT(pActionHandler != NULL);
- return pActionHandler->DoAction_Field(action, type, pDocument, GetFormField(), data);
- }
+ return pActionHandler->DoAction_Field(action, type, pDocument,
+ GetFormField(), data);
+ }
- return FALSE;
+ return FALSE;
}
-CPDF_Action CPDFSDK_Widget::GetAAction(CPDF_AAction::AActionType eAAT)
-{
- switch (eAAT)
- {
+CPDF_Action CPDFSDK_Widget::GetAAction(CPDF_AAction::AActionType eAAT) {
+ switch (eAAT) {
case CPDF_AAction::CursorEnter:
case CPDF_AAction::CursorExit:
case CPDF_AAction::ButtonDown:
@@ -1584,1295 +1506,1174 @@ CPDF_Action CPDFSDK_Widget::GetAAction(CPDF_AAction::AActionType eAAT)
case CPDF_AAction::PageClose:
case CPDF_AAction::PageVisible:
case CPDF_AAction::PageInvisible:
- return CPDFSDK_Annot::GetAAction(eAAT);
+ return CPDFSDK_Annot::GetAAction(eAAT);
case CPDF_AAction::KeyStroke:
case CPDF_AAction::Format:
case CPDF_AAction::Validate:
- case CPDF_AAction::Calculate:
- {
- CPDF_FormField* pField = GetFormField();
- if (CPDF_AAction aa = pField->GetAdditionalAction())
- return aa.GetAction(eAAT);
+ case CPDF_AAction::Calculate: {
+ CPDF_FormField* pField = GetFormField();
+ if (CPDF_AAction aa = pField->GetAdditionalAction())
+ return aa.GetAction(eAAT);
- return CPDFSDK_Annot::GetAAction(eAAT);
- }
- default:
- break;
+ return CPDFSDK_Annot::GetAAction(eAAT);
}
+ default:
+ break;
+ }
- return CPDF_Action();
+ return CPDF_Action();
}
+CFX_WideString CPDFSDK_Widget::GetAlternateName() const {
+ CPDF_FormField* pFormField = GetFormField();
+ ASSERT(pFormField != NULL);
-CFX_WideString CPDFSDK_Widget::GetAlternateName() const
-{
- CPDF_FormField* pFormField = GetFormField();
- ASSERT(pFormField != NULL);
-
- return pFormField->GetAlternateName();
+ return pFormField->GetAlternateName();
}
-int32_t CPDFSDK_Widget::GetAppearanceAge() const
-{
- return m_nAppAge;
+int32_t CPDFSDK_Widget::GetAppearanceAge() const {
+ return m_nAppAge;
}
-int32_t CPDFSDK_Widget::GetValueAge() const
-{
- return m_nValueAge;
+int32_t CPDFSDK_Widget::GetValueAge() const {
+ return m_nValueAge;
}
+FX_BOOL CPDFSDK_Widget::HitTest(FX_FLOAT pageX, FX_FLOAT pageY) {
+ CPDF_Annot* pAnnot = GetPDFAnnot();
+ CFX_FloatRect annotRect;
+ pAnnot->GetRect(annotRect);
+ if (annotRect.Contains(pageX, pageY)) {
+ if (!IsVisible())
+ return FALSE;
-FX_BOOL CPDFSDK_Widget::HitTest(FX_FLOAT pageX, FX_FLOAT pageY)
-{
- CPDF_Annot* pAnnot = GetPDFAnnot();
- CFX_FloatRect annotRect;
- pAnnot->GetRect(annotRect);
- if(annotRect.Contains(pageX, pageY))
- {
- if (!IsVisible()) return FALSE;
-
- int nFieldFlags = GetFieldFlags();
- if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY)
- return FALSE;
+ int nFieldFlags = GetFieldFlags();
+ if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY)
+ return FALSE;
- return TRUE;
- }
- return FALSE;
+ return TRUE;
+ }
+ return FALSE;
}
CPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument)
- :m_pDocument(pDocument),
- m_pInterForm(NULL),
- m_bCalculate(TRUE),
- m_bBusy(FALSE)
-{
- ASSERT(m_pDocument != NULL);
- m_pInterForm = new CPDF_InterForm(m_pDocument->GetDocument(), FALSE);
- ASSERT(m_pInterForm != NULL);
- m_pInterForm->SetFormNotify(this);
+ : m_pDocument(pDocument),
+ m_pInterForm(NULL),
+ m_bCalculate(TRUE),
+ m_bBusy(FALSE) {
+ ASSERT(m_pDocument != NULL);
+ m_pInterForm = new CPDF_InterForm(m_pDocument->GetDocument(), FALSE);
+ ASSERT(m_pInterForm != NULL);
+ m_pInterForm->SetFormNotify(this);
- for(int i=0; i<6; i++)
- m_bNeedHightlight[i] = FALSE;
- m_iHighlightAlpha = 0;
+ for (int i = 0; i < 6; i++)
+ m_bNeedHightlight[i] = FALSE;
+ m_iHighlightAlpha = 0;
}
-CPDFSDK_InterForm::~CPDFSDK_InterForm()
-{
- delete m_pInterForm;
- m_pInterForm = nullptr;
- m_Map.clear();
+CPDFSDK_InterForm::~CPDFSDK_InterForm() {
+ delete m_pInterForm;
+ m_pInterForm = nullptr;
+ m_Map.clear();
}
-FX_BOOL CPDFSDK_InterForm::HighlightWidgets()
-{
- return FALSE;
+FX_BOOL CPDFSDK_InterForm::HighlightWidgets() {
+ return FALSE;
}
-CPDFSDK_Widget* CPDFSDK_InterForm::GetSibling(CPDFSDK_Widget* pWidget, FX_BOOL bNext) const
-{
- nonstd::unique_ptr<CBA_AnnotIterator> pIterator(
- new CBA_AnnotIterator(pWidget->GetPageView(), "Widget", ""));
+CPDFSDK_Widget* CPDFSDK_InterForm::GetSibling(CPDFSDK_Widget* pWidget,
+ FX_BOOL bNext) const {
+ nonstd::unique_ptr<CBA_AnnotIterator> pIterator(
+ new CBA_AnnotIterator(pWidget->GetPageView(), "Widget", ""));
- if (bNext) {
- return (CPDFSDK_Widget*)pIterator->GetNextAnnot(pWidget);
- }
- return (CPDFSDK_Widget*)pIterator->GetPrevAnnot(pWidget);
+ if (bNext) {
+ return (CPDFSDK_Widget*)pIterator->GetNextAnnot(pWidget);
+ }
+ return (CPDFSDK_Widget*)pIterator->GetPrevAnnot(pWidget);
}
-CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const
-{
- if (!pControl || !m_pInterForm)
- return nullptr;
+CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const {
+ if (!pControl || !m_pInterForm)
+ return nullptr;
- CPDFSDK_Widget* pWidget = nullptr;
- const auto it = m_Map.find(pControl);
- if (it != m_Map.end())
- pWidget = it->second;
+ CPDFSDK_Widget* pWidget = nullptr;
+ const auto it = m_Map.find(pControl);
+ if (it != m_Map.end())
+ pWidget = it->second;
- if (pWidget)
- return pWidget;
+ if (pWidget)
+ return pWidget;
- CPDF_Dictionary* pControlDict = pControl->GetWidget();
- CPDF_Document* pDocument = m_pDocument->GetDocument();
- CPDFSDK_PageView* pPage = nullptr;
+ CPDF_Dictionary* pControlDict = pControl->GetWidget();
+ CPDF_Document* pDocument = m_pDocument->GetDocument();
+ CPDFSDK_PageView* pPage = nullptr;
- if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) {
- int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum());
- if (nPageIndex >= 0) {
- pPage = m_pDocument->GetPageView(nPageIndex);
- }
+ if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) {
+ int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum());
+ if (nPageIndex >= 0) {
+ pPage = m_pDocument->GetPageView(nPageIndex);
}
+ }
- if (!pPage) {
- int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict);
- if (nPageIndex >= 0) {
- pPage = m_pDocument->GetPageView(nPageIndex);
- }
+ if (!pPage) {
+ int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict);
+ if (nPageIndex >= 0) {
+ pPage = m_pDocument->GetPageView(nPageIndex);
}
+ }
- if (!pPage)
- return nullptr;
- return (CPDFSDK_Widget*)pPage->GetAnnotByDict(pControlDict);
+ if (!pPage)
+ return nullptr;
+ return (CPDFSDK_Widget*)pPage->GetAnnotByDict(pControlDict);
}
-void CPDFSDK_InterForm::GetWidgets(const CFX_WideString& sFieldName, CFX_PtrArray& widgets)
-{
- ASSERT(m_pInterForm != NULL);
+void CPDFSDK_InterForm::GetWidgets(const CFX_WideString& sFieldName,
+ CFX_PtrArray& widgets) {
+ ASSERT(m_pInterForm != NULL);
- for (int i=0,sz=m_pInterForm->CountFields(sFieldName); i<sz; i++)
- {
- CPDF_FormField* pFormField = m_pInterForm->GetField(i, sFieldName);
- ASSERT(pFormField != NULL);
+ for (int i = 0, sz = m_pInterForm->CountFields(sFieldName); i < sz; i++) {
+ CPDF_FormField* pFormField = m_pInterForm->GetField(i, sFieldName);
+ ASSERT(pFormField != NULL);
- GetWidgets(pFormField, widgets);
- }
+ GetWidgets(pFormField, widgets);
+ }
}
-void CPDFSDK_InterForm::GetWidgets(CPDF_FormField* pField, CFX_PtrArray& widgets)
-{
- ASSERT(pField != NULL);
-
- for (int i=0,isz=pField->CountControls(); i<isz; i++)
- {
- CPDF_FormControl* pFormCtrl = pField->GetControl(i);
- ASSERT(pFormCtrl != NULL);
+void CPDFSDK_InterForm::GetWidgets(CPDF_FormField* pField,
+ CFX_PtrArray& widgets) {
+ ASSERT(pField != NULL);
- CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl);
-
- if (pWidget)
- widgets.Add(pWidget);
- }
-}
+ for (int i = 0, isz = pField->CountControls(); i < isz; i++) {
+ CPDF_FormControl* pFormCtrl = pField->GetControl(i);
+ ASSERT(pFormCtrl != NULL);
-int CPDFSDK_InterForm::GetPageIndexByAnnotDict(CPDF_Document* pDocument, CPDF_Dictionary* pAnnotDict) const
-{
- ASSERT(pDocument != NULL);
- ASSERT(pAnnotDict != NULL);
+ CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl);
- for (int i=0,sz=pDocument->GetPageCount(); i<sz; i++)
- {
- if (CPDF_Dictionary* pPageDict = pDocument->GetPage(i))
- {
- if (CPDF_Array* pAnnots = pPageDict->GetArray("Annots"))
- {
- for (int j=0,jsz=pAnnots->GetCount(); j<jsz; j++)
- {
- CPDF_Object* pDict = pAnnots->GetElementValue(j);
- if (pAnnotDict == pDict)
- {
- return i;
- }
- }
- }
+ if (pWidget)
+ widgets.Add(pWidget);
+ }
+}
+
+int CPDFSDK_InterForm::GetPageIndexByAnnotDict(
+ CPDF_Document* pDocument,
+ CPDF_Dictionary* pAnnotDict) const {
+ ASSERT(pDocument != NULL);
+ ASSERT(pAnnotDict != NULL);
+
+ for (int i = 0, sz = pDocument->GetPageCount(); i < sz; i++) {
+ if (CPDF_Dictionary* pPageDict = pDocument->GetPage(i)) {
+ if (CPDF_Array* pAnnots = pPageDict->GetArray("Annots")) {
+ for (int j = 0, jsz = pAnnots->GetCount(); j < jsz; j++) {
+ CPDF_Object* pDict = pAnnots->GetElementValue(j);
+ if (pAnnotDict == pDict) {
+ return i;
+ }
}
+ }
}
+ }
- return -1;
+ return -1;
}
-void CPDFSDK_InterForm::AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget)
-{
- m_Map[pControl] = pWidget;
+void CPDFSDK_InterForm::AddMap(CPDF_FormControl* pControl,
+ CPDFSDK_Widget* pWidget) {
+ m_Map[pControl] = pWidget;
}
-void CPDFSDK_InterForm::RemoveMap(CPDF_FormControl* pControl)
-{
- m_Map.erase(pControl);
+void CPDFSDK_InterForm::RemoveMap(CPDF_FormControl* pControl) {
+ m_Map.erase(pControl);
}
-void CPDFSDK_InterForm::EnableCalculate(FX_BOOL bEnabled)
-{
- m_bCalculate = bEnabled;
+void CPDFSDK_InterForm::EnableCalculate(FX_BOOL bEnabled) {
+ m_bCalculate = bEnabled;
}
-FX_BOOL CPDFSDK_InterForm::IsCalculateEnabled() const
-{
- return m_bCalculate;
+FX_BOOL CPDFSDK_InterForm::IsCalculateEnabled() const {
+ return m_bCalculate;
}
#ifdef _WIN32
-CPDF_Stream* CPDFSDK_InterForm::LoadImageFromFile(const CFX_WideString& sFile)
-{
- ASSERT(m_pDocument != NULL);
- CPDF_Document* pDocument = m_pDocument->GetDocument();
- ASSERT(pDocument != NULL);
-
- CPDF_Stream* pRetStream = NULL;
-
- if (CFX_DIBitmap* pBmp = CFX_WindowsDIB::LoadFromFile(sFile.c_str()))
- {
- int nWidth = pBmp->GetWidth();
- int nHeight = pBmp->GetHeight();
+CPDF_Stream* CPDFSDK_InterForm::LoadImageFromFile(const CFX_WideString& sFile) {
+ ASSERT(m_pDocument != NULL);
+ CPDF_Document* pDocument = m_pDocument->GetDocument();
+ ASSERT(pDocument != NULL);
+
+ CPDF_Stream* pRetStream = NULL;
+
+ if (CFX_DIBitmap* pBmp = CFX_WindowsDIB::LoadFromFile(sFile.c_str())) {
+ int nWidth = pBmp->GetWidth();
+ int nHeight = pBmp->GetHeight();
+
+ CPDF_Image Image(pDocument);
+ Image.SetImage(pBmp, FALSE);
+ CPDF_Stream* pImageStream = Image.GetStream();
+ if (pImageStream) {
+ if (pImageStream->GetObjNum() == 0)
+ pDocument->AddIndirectObject(pImageStream);
+
+ CPDF_Dictionary* pStreamDict = new CPDF_Dictionary();
+ pStreamDict->SetAtName("Subtype", "Form");
+ pStreamDict->SetAtName("Name", "IMG");
+ CPDF_Array* pMatrix = new CPDF_Array();
+ pStreamDict->SetAt("Matrix", pMatrix);
+ pMatrix->AddInteger(1);
+ pMatrix->AddInteger(0);
+ pMatrix->AddInteger(0);
+ pMatrix->AddInteger(1);
+ pMatrix->AddInteger(-nWidth / 2);
+ pMatrix->AddInteger(-nHeight / 2);
+ CPDF_Dictionary* pResource = new CPDF_Dictionary();
+ pStreamDict->SetAt("Resources", pResource);
+ CPDF_Dictionary* pXObject = new CPDF_Dictionary();
+ pResource->SetAt("XObject", pXObject);
+ pXObject->SetAtReference("Img", pDocument, pImageStream);
+ CPDF_Array* pProcSet = new CPDF_Array();
+ pResource->SetAt("ProcSet", pProcSet);
+ pProcSet->AddName("PDF");
+ pProcSet->AddName("ImageC");
+ pStreamDict->SetAtName("Type", "XObject");
+ CPDF_Array* pBBox = new CPDF_Array();
+ pStreamDict->SetAt("BBox", pBBox);
+ pBBox->AddInteger(0);
+ pBBox->AddInteger(0);
+ pBBox->AddInteger(nWidth);
+ pBBox->AddInteger(nHeight);
+ pStreamDict->SetAtInteger("FormType", 1);
+
+ pRetStream = new CPDF_Stream(NULL, 0, NULL);
+ CFX_ByteString csStream;
+ csStream.Format("q\n%d 0 0 %d 0 0 cm\n/Img Do\nQ", nWidth, nHeight);
+ pRetStream->InitStream((uint8_t*)csStream.c_str(), csStream.GetLength(),
+ pStreamDict);
+ pDocument->AddIndirectObject(pRetStream);
+ }
+
+ delete pBmp;
+ }
+
+ return pRetStream;
+}
+#endif
- CPDF_Image Image(pDocument);
- Image.SetImage(pBmp, FALSE);
- CPDF_Stream* pImageStream = Image.GetStream();
- if (pImageStream)
- {
- if (pImageStream->GetObjNum() == 0)
- pDocument->AddIndirectObject(pImageStream);
-
- CPDF_Dictionary* pStreamDict = new CPDF_Dictionary();
- pStreamDict->SetAtName("Subtype", "Form");
- pStreamDict->SetAtName("Name", "IMG");
- CPDF_Array* pMatrix = new CPDF_Array();
- pStreamDict->SetAt("Matrix", pMatrix);
- pMatrix->AddInteger(1);
- pMatrix->AddInteger(0);
- pMatrix->AddInteger(0);
- pMatrix->AddInteger(1);
- pMatrix->AddInteger(-nWidth / 2);
- pMatrix->AddInteger(-nHeight / 2);
- CPDF_Dictionary* pResource = new CPDF_Dictionary();
- pStreamDict->SetAt("Resources", pResource);
- CPDF_Dictionary* pXObject = new CPDF_Dictionary();
- pResource->SetAt("XObject", pXObject);
- pXObject->SetAtReference("Img", pDocument, pImageStream);
- CPDF_Array* pProcSet = new CPDF_Array();
- pResource->SetAt("ProcSet", pProcSet);
- pProcSet->AddName("PDF");
- pProcSet->AddName("ImageC");
- pStreamDict->SetAtName("Type", "XObject");
- CPDF_Array* pBBox = new CPDF_Array();
- pStreamDict->SetAt("BBox", pBBox);
- pBBox->AddInteger(0);
- pBBox->AddInteger(0);
- pBBox->AddInteger(nWidth);
- pBBox->AddInteger(nHeight);
- pStreamDict->SetAtInteger("FormType", 1);
-
- pRetStream = new CPDF_Stream(NULL, 0, NULL);
- CFX_ByteString csStream;
- csStream.Format("q\n%d 0 0 %d 0 0 cm\n/Img Do\nQ", nWidth, nHeight);
- pRetStream->InitStream((uint8_t*)csStream.c_str(), csStream.GetLength(), pStreamDict);
- pDocument->AddIndirectObject(pRetStream);
- }
+void CPDFSDK_InterForm::OnCalculate(CPDF_FormField* pFormField) {
+ ASSERT(m_pDocument != NULL);
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (!pEnv->IsJSInitiated())
+ return;
- delete pBmp;
- }
+ if (m_bBusy)
+ return;
- return pRetStream;
-}
-#endif
+ m_bBusy = TRUE;
-void CPDFSDK_InterForm::OnCalculate(CPDF_FormField* pFormField)
-{
- ASSERT(m_pDocument != NULL);
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv);
- if(!pEnv->IsJSInitiated())
- return;
+ if (IsCalculateEnabled()) {
+ IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
- if (m_bBusy) return;
+ pRuntime->SetReaderDocument(m_pDocument);
- m_bBusy = TRUE;
+ int nSize = m_pInterForm->CountFieldsInCalculationOrder();
+ for (int i = 0; i < nSize; i++) {
+ if (CPDF_FormField* pField =
+ m_pInterForm->GetFieldInCalculationOrder(i)) {
+ // ASSERT(pField != NULL);
+ int nType = pField->GetFieldType();
+ if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
+ CPDF_AAction aAction = pField->GetAdditionalAction();
+ if (aAction && aAction.ActionExist(CPDF_AAction::Calculate)) {
+ CPDF_Action action = aAction.GetAction(CPDF_AAction::Calculate);
+ if (action) {
+ CFX_WideString csJS = action.GetJavaScript();
+ if (!csJS.IsEmpty()) {
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
- if (IsCalculateEnabled())
- {
- IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
+ CFX_WideString sOldValue = pField->GetValue();
+ CFX_WideString sValue = sOldValue;
+ FX_BOOL bRC = TRUE;
+ pContext->OnField_Calculate(pFormField, pField, sValue, bRC);
- pRuntime->SetReaderDocument(m_pDocument);
+ CFX_WideString sInfo;
+ FX_BOOL bRet = pContext->RunScript(csJS, sInfo);
+ pRuntime->ReleaseContext(pContext);
- int nSize = m_pInterForm->CountFieldsInCalculationOrder();
- for (int i=0; i<nSize; i++)
- {
- if(CPDF_FormField* pField = m_pInterForm->GetFieldInCalculationOrder(i))
- {
-// ASSERT(pField != NULL);
- int nType = pField->GetFieldType();
- if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD)
- {
- CPDF_AAction aAction = pField->GetAdditionalAction();
- if (aAction && aAction.ActionExist(CPDF_AAction::Calculate))
- {
- CPDF_Action action = aAction.GetAction(CPDF_AAction::Calculate);
- if (action)
- {
- CFX_WideString csJS = action.GetJavaScript();
- if (!csJS.IsEmpty())
- {
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
-
- CFX_WideString sOldValue = pField->GetValue();
- CFX_WideString sValue = sOldValue;
- FX_BOOL bRC = TRUE;
- pContext->OnField_Calculate(pFormField, pField, sValue, bRC);
-
- CFX_WideString sInfo;
- FX_BOOL bRet = pContext->RunScript(csJS, sInfo);
- pRuntime->ReleaseContext(pContext);
-
- if (bRet)
- {
- if (bRC)
- {
- if (sValue.Compare(sOldValue) != 0)
- pField->SetValue(sValue, TRUE);
- }
- }
- }
- }
- }
+ if (bRet) {
+ if (bRC) {
+ if (sValue.Compare(sOldValue) != 0)
+ pField->SetValue(sValue, TRUE);
+ }
}
+ }
}
+ }
}
-
-
+ }
}
+ }
- m_bBusy = FALSE;
+ m_bBusy = FALSE;
}
-CFX_WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField, FX_BOOL& bFormated)
-{
- ASSERT(m_pDocument != NULL);
- ASSERT(pFormField != NULL);
+CFX_WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField,
+ FX_BOOL& bFormated) {
+ ASSERT(m_pDocument != NULL);
+ ASSERT(pFormField != NULL);
- CFX_WideString sValue = pFormField->GetValue();
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv);
- if(!pEnv->IsJSInitiated())
- {
- bFormated = FALSE;
- return sValue;
- }
+ CFX_WideString sValue = pFormField->GetValue();
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv);
+ if (!pEnv->IsJSInitiated()) {
+ bFormated = FALSE;
+ return sValue;
+ }
- IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime();
- ASSERT(pRuntime != NULL);
+ IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime();
+ ASSERT(pRuntime != NULL);
- pRuntime->SetReaderDocument(m_pDocument);
+ pRuntime->SetReaderDocument(m_pDocument);
- if (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX)
- {
- if (pFormField->CountSelectedItems() > 0)
- {
- int index = pFormField->GetSelectedIndex(0);
- if (index >= 0)
- sValue = pFormField->GetOptionLabel(index);
- }
+ if (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX) {
+ if (pFormField->CountSelectedItems() > 0) {
+ int index = pFormField->GetSelectedIndex(0);
+ if (index >= 0)
+ sValue = pFormField->GetOptionLabel(index);
}
+ }
- bFormated = FALSE;
+ bFormated = FALSE;
- CPDF_AAction aAction = pFormField->GetAdditionalAction();
- if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Format))
- {
- CPDF_Action action = aAction.GetAction(CPDF_AAction::Format);
- if (action)
- {
- CFX_WideString script = action.GetJavaScript();
- if (!script.IsEmpty())
- {
- CFX_WideString Value = sValue;
+ CPDF_AAction aAction = pFormField->GetAdditionalAction();
+ if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Format)) {
+ CPDF_Action action = aAction.GetAction(CPDF_AAction::Format);
+ if (action) {
+ CFX_WideString script = action.GetJavaScript();
+ if (!script.IsEmpty()) {
+ CFX_WideString Value = sValue;
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
- pContext->OnField_Format(pFormField, Value, TRUE);
+ pContext->OnField_Format(pFormField, Value, TRUE);
- CFX_WideString sInfo;
- FX_BOOL bRet = pContext->RunScript(script, sInfo);
- pRuntime->ReleaseContext(pContext);
+ CFX_WideString sInfo;
+ FX_BOOL bRet = pContext->RunScript(script, sInfo);
+ pRuntime->ReleaseContext(pContext);
- if (bRet)
- {
- sValue = Value;
- bFormated = TRUE;
- }
- }
+ if (bRet) {
+ sValue = Value;
+ bFormated = TRUE;
}
+ }
}
+ }
- return sValue;
+ return sValue;
}
-void CPDFSDK_InterForm::ResetFieldAppearance(CPDF_FormField* pFormField, const FX_WCHAR* sValue, FX_BOOL bValueChanged)
-{
- ASSERT(pFormField != NULL);
+void CPDFSDK_InterForm::ResetFieldAppearance(CPDF_FormField* pFormField,
+ const FX_WCHAR* sValue,
+ FX_BOOL bValueChanged) {
+ ASSERT(pFormField != NULL);
- for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
- {
- CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
- ASSERT(pFormCtrl != NULL);
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
+ ASSERT(pFormCtrl != NULL);
- ASSERT(m_pInterForm != NULL);
- if(CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl))
- pWidget->ResetAppearance(sValue, bValueChanged);
- }
+ ASSERT(m_pInterForm != NULL);
+ if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl))
+ pWidget->ResetAppearance(sValue, bValueChanged);
+ }
}
-void CPDFSDK_InterForm::UpdateField(CPDF_FormField* pFormField)
-{
- ASSERT(pFormField != NULL);
+void CPDFSDK_InterForm::UpdateField(CPDF_FormField* pFormField) {
+ ASSERT(pFormField != NULL);
- for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
- {
- CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
- ASSERT(pFormCtrl != NULL);
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
+ ASSERT(pFormCtrl != NULL);
- if(CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl))
- {
- CPDFDoc_Environment * pEnv = m_pDocument->GetEnv();
- CFFL_IFormFiller* pIFormFiller = pEnv->GetIFormFiller();
+ if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) {
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ CFFL_IFormFiller* pIFormFiller = pEnv->GetIFormFiller();
- CPDF_Page * pPage = pWidget->GetPDFPage();
- CPDFSDK_PageView * pPageView = m_pDocument->GetPageView(pPage,FALSE);
+ CPDF_Page* pPage = pWidget->GetPDFPage();
+ CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, FALSE);
- FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget);
+ FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget);
- pEnv->FFI_Invalidate(pPage,rcBBox.left, rcBBox.top, rcBBox.right, rcBBox.bottom);
- }
+ pEnv->FFI_Invalidate(pPage, rcBBox.left, rcBBox.top, rcBBox.right,
+ rcBBox.bottom);
}
+ }
}
-void CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC)
-{
- ASSERT(pFormField != NULL);
+void CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField,
+ CFX_WideString& csValue,
+ FX_BOOL& bRC) {
+ ASSERT(pFormField != NULL);
- CPDF_AAction aAction = pFormField->GetAdditionalAction();
- if (aAction != NULL && aAction.ActionExist(CPDF_AAction::KeyStroke))
- {
- CPDF_Action action = aAction.GetAction(CPDF_AAction::KeyStroke);
- if (action)
- {
- ASSERT(m_pDocument != NULL);
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv != NULL);
+ CPDF_AAction aAction = pFormField->GetAdditionalAction();
+ if (aAction != NULL && aAction.ActionExist(CPDF_AAction::KeyStroke)) {
+ CPDF_Action action = aAction.GetAction(CPDF_AAction::KeyStroke);
+ if (action) {
+ ASSERT(m_pDocument != NULL);
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv != NULL);
- CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
- ASSERT(pActionHandler != NULL);
+ CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
+ ASSERT(pActionHandler != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
- fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
- fa.sValue = csValue;
+ PDFSDK_FieldAction fa;
+ fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
+ fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
+ fa.sValue = csValue;
- pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::KeyStroke,
- m_pDocument, pFormField, fa);
- bRC = fa.bRC;
- }
+ pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::KeyStroke,
+ m_pDocument, pFormField, fa);
+ bRC = fa.bRC;
}
+ }
}
-void CPDFSDK_InterForm::OnValidate(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC)
-{
- ASSERT(pFormField != NULL);
+void CPDFSDK_InterForm::OnValidate(CPDF_FormField* pFormField,
+ CFX_WideString& csValue,
+ FX_BOOL& bRC) {
+ ASSERT(pFormField != NULL);
- CPDF_AAction aAction = pFormField->GetAdditionalAction();
- if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Validate))
- {
- CPDF_Action action = aAction.GetAction(CPDF_AAction::Validate);
- if (action)
- {
- ASSERT(m_pDocument != NULL);
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv != NULL);
+ CPDF_AAction aAction = pFormField->GetAdditionalAction();
+ if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Validate)) {
+ CPDF_Action action = aAction.GetAction(CPDF_AAction::Validate);
+ if (action) {
+ ASSERT(m_pDocument != NULL);
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv != NULL);
- CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
- ASSERT(pActionHandler != NULL);
+ CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
+ ASSERT(pActionHandler != NULL);
- PDFSDK_FieldAction fa;
- fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
- fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
- fa.sValue = csValue;
+ PDFSDK_FieldAction fa;
+ fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0);
+ fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0);
+ fa.sValue = csValue;
- pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::Validate, m_pDocument, pFormField, fa);
- bRC = fa.bRC;
-
- }
+ pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::Validate,
+ m_pDocument, pFormField, fa);
+ bRC = fa.bRC;
}
+ }
}
/* ----------------------------- action ----------------------------- */
-FX_BOOL CPDFSDK_InterForm::DoAction_Hide(const CPDF_Action& action)
-{
- ASSERT(action);
-
- CPDF_ActionFields af = action.GetWidgets();
- CFX_PtrArray fieldObjects;
- af.GetAllFields(fieldObjects);
- CFX_PtrArray widgetArray;
- CFX_PtrArray fields;
- GetFieldFromObjects(fieldObjects, fields);
-
- FX_BOOL bHide = action.GetHideStatus();
+FX_BOOL CPDFSDK_InterForm::DoAction_Hide(const CPDF_Action& action) {
+ ASSERT(action);
- FX_BOOL bChanged = FALSE;
+ CPDF_ActionFields af = action.GetWidgets();
+ CFX_PtrArray fieldObjects;
+ af.GetAllFields(fieldObjects);
+ CFX_PtrArray widgetArray;
+ CFX_PtrArray fields;
+ GetFieldFromObjects(fieldObjects, fields);
- for (int i=0, sz=fields.GetSize(); i<sz; i++)
- {
- CPDF_FormField* pField = (CPDF_FormField*)fields[i];
- ASSERT(pField != NULL);
-
-
- for (int j=0,jsz=pField->CountControls(); j<jsz; j++)
- {
- CPDF_FormControl* pControl = pField->GetControl(j);
- ASSERT(pControl != NULL);
-
- if (CPDFSDK_Widget* pWidget = GetWidget(pControl))
- {
- int nFlags = pWidget->GetFlags();
- if (bHide)
- {
- nFlags &= (~ANNOTFLAG_INVISIBLE);
- nFlags &= (~ANNOTFLAG_NOVIEW);
- nFlags |= (ANNOTFLAG_HIDDEN);
- }
- else
- {
- nFlags &= (~ANNOTFLAG_INVISIBLE);
- nFlags &= (~ANNOTFLAG_HIDDEN);
- nFlags &= (~ANNOTFLAG_NOVIEW);
- }
- pWidget->SetFlags(nFlags);
+ FX_BOOL bHide = action.GetHideStatus();
- CPDFSDK_PageView* pPageView = pWidget->GetPageView();
- ASSERT(pPageView != NULL);
+ FX_BOOL bChanged = FALSE;
- pPageView->UpdateView(pWidget);
+ for (int i = 0, sz = fields.GetSize(); i < sz; i++) {
+ CPDF_FormField* pField = (CPDF_FormField*)fields[i];
+ ASSERT(pField != NULL);
- bChanged = TRUE;
- }
+ for (int j = 0, jsz = pField->CountControls(); j < jsz; j++) {
+ CPDF_FormControl* pControl = pField->GetControl(j);
+ ASSERT(pControl != NULL);
+
+ if (CPDFSDK_Widget* pWidget = GetWidget(pControl)) {
+ int nFlags = pWidget->GetFlags();
+ if (bHide) {
+ nFlags &= (~ANNOTFLAG_INVISIBLE);
+ nFlags &= (~ANNOTFLAG_NOVIEW);
+ nFlags |= (ANNOTFLAG_HIDDEN);
+ } else {
+ nFlags &= (~ANNOTFLAG_INVISIBLE);
+ nFlags &= (~ANNOTFLAG_HIDDEN);
+ nFlags &= (~ANNOTFLAG_NOVIEW);
}
- }
+ pWidget->SetFlags(nFlags);
- return bChanged;
-}
+ CPDFSDK_PageView* pPageView = pWidget->GetPageView();
+ ASSERT(pPageView != NULL);
-FX_BOOL CPDFSDK_InterForm::DoAction_SubmitForm(const CPDF_Action& action)
-{
- ASSERT(m_pInterForm != NULL);
- CFX_WideString sDestination = action.GetFilePath();
- if (sDestination.IsEmpty())
- return FALSE;
-
- CPDF_Dictionary* pActionDict = action.GetDict();
- if (pActionDict->KeyExist("Fields"))
- {
- CPDF_ActionFields af = action.GetWidgets();
- FX_DWORD dwFlags = action.GetFlags();
- CFX_PtrArray fieldObjects;
- af.GetAllFields(fieldObjects);
-
- CFX_PtrArray fields;
- GetFieldFromObjects(fieldObjects, fields);
- if (fields.GetSize() != 0)
- {
- FX_BOOL bIncludeOrExclude = !(dwFlags & 0x01);
- if (m_pInterForm->CheckRequiredFields(&fields, bIncludeOrExclude))
- return FALSE;
+ pPageView->UpdateView(pWidget);
- return SubmitFields(sDestination, fields, bIncludeOrExclude, FALSE);
- }
+ bChanged = TRUE;
+ }
}
- if (m_pInterForm->CheckRequiredFields())
- return FALSE;
+ }
- return SubmitForm(sDestination, FALSE);
+ return bChanged;
}
-FX_BOOL CPDFSDK_InterForm::SubmitFields(const CFX_WideString& csDestination, const CFX_PtrArray& fields,
- FX_BOOL bIncludeOrExclude, FX_BOOL bUrlEncoded)
-{
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv != NULL);
+FX_BOOL CPDFSDK_InterForm::DoAction_SubmitForm(const CPDF_Action& action) {
+ ASSERT(m_pInterForm != NULL);
+ CFX_WideString sDestination = action.GetFilePath();
+ if (sDestination.IsEmpty())
+ return FALSE;
- CFX_ByteTextBuf textBuf;
- ExportFieldsToFDFTextBuf(fields, bIncludeOrExclude, textBuf);
+ CPDF_Dictionary* pActionDict = action.GetDict();
+ if (pActionDict->KeyExist("Fields")) {
+ CPDF_ActionFields af = action.GetWidgets();
+ FX_DWORD dwFlags = action.GetFlags();
+ CFX_PtrArray fieldObjects;
+ af.GetAllFields(fieldObjects);
- uint8_t* pBuffer = textBuf.GetBuffer();
- FX_STRSIZE nBufSize = textBuf.GetLength();
+ CFX_PtrArray fields;
+ GetFieldFromObjects(fieldObjects, fields);
+ if (fields.GetSize() != 0) {
+ FX_BOOL bIncludeOrExclude = !(dwFlags & 0x01);
+ if (m_pInterForm->CheckRequiredFields(&fields, bIncludeOrExclude))
+ return FALSE;
- if (bUrlEncoded)
- {
- if(!FDFToURLEncodedData(pBuffer, nBufSize))
- return FALSE;
+ return SubmitFields(sDestination, fields, bIncludeOrExclude, FALSE);
}
+ }
+ if (m_pInterForm->CheckRequiredFields())
+ return FALSE;
- pEnv->JS_docSubmitForm(pBuffer, nBufSize, csDestination.c_str());
-
- return TRUE;
+ return SubmitForm(sDestination, FALSE);
}
-void CPDFSDK_InterForm::DoFDFBuffer(CFX_ByteString sBuffer)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL CPDFSDK_InterForm::SubmitFields(const CFX_WideString& csDestination,
+ const CFX_PtrArray& fields,
+ FX_BOOL bIncludeOrExclude,
+ FX_BOOL bUrlEncoded) {
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv != NULL);
- if (CFDF_Document *pFDFDocument = CFDF_Document::ParseMemory((const unsigned char *)sBuffer.GetBuffer(sBuffer.GetLength()), sBuffer.GetLength()))
- {
- CPDF_Dictionary* pRootDic = pFDFDocument->GetRoot();
- if(pRootDic)
- {
- CPDF_Dictionary * pFDFDict=pRootDic->GetDict("FDF");
- if(pFDFDict)
- {
- CPDF_Dictionary * pJSDict = pFDFDict->GetDict("JavaScript");
- if(pJSDict)
- {
- CFX_WideString csJS;
-
- CPDF_Object* pJS = pJSDict->GetElementValue("Before");
- if (pJS != NULL)
- {
- int iType = pJS->GetType();
- if (iType == PDFOBJ_STRING)
- csJS = pJSDict->GetUnicodeText("Before");
- else if (iType == PDFOBJ_STREAM)
- csJS = pJS->GetUnicodeText();
- }
+ CFX_ByteTextBuf textBuf;
+ ExportFieldsToFDFTextBuf(fields, bIncludeOrExclude, textBuf);
- }
- }
- }
- delete pFDFDocument;
- }
+ uint8_t* pBuffer = textBuf.GetBuffer();
+ FX_STRSIZE nBufSize = textBuf.GetLength();
- sBuffer.ReleaseBuffer();
-}
+ if (bUrlEncoded) {
+ if (!FDFToURLEncodedData(pBuffer, nBufSize))
+ return FALSE;
+ }
-FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(CFX_WideString csFDFFile, CFX_WideString csTxtFile)
-{
- return TRUE;
-}
+ pEnv->JS_docSubmitForm(pBuffer, nBufSize, csDestination.c_str());
-FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(uint8_t*& pBuf, FX_STRSIZE& nBufSize)
-{
- CFDF_Document* pFDF = CFDF_Document::ParseMemory(pBuf, nBufSize);
- if (pFDF)
- {
- CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF");
- if (pMainDict == NULL) return FALSE;
+ return TRUE;
+}
- // Get fields
- CPDF_Array* pFields = pMainDict->GetArray("Fields");
- if (pFields == NULL) return FALSE;
+void CPDFSDK_InterForm::DoFDFBuffer(CFX_ByteString sBuffer) {
+ ASSERT(m_pDocument != NULL);
- CFX_ByteTextBuf fdfEncodedData;
+ if (CFDF_Document* pFDFDocument = CFDF_Document::ParseMemory(
+ (const unsigned char*)sBuffer.GetBuffer(sBuffer.GetLength()),
+ sBuffer.GetLength())) {
+ CPDF_Dictionary* pRootDic = pFDFDocument->GetRoot();
+ if (pRootDic) {
+ CPDF_Dictionary* pFDFDict = pRootDic->GetDict("FDF");
+ if (pFDFDict) {
+ CPDF_Dictionary* pJSDict = pFDFDict->GetDict("JavaScript");
+ if (pJSDict) {
+ CFX_WideString csJS;
- for (FX_DWORD i = 0; i < pFields->GetCount(); i ++)
- {
- CPDF_Dictionary* pField = pFields->GetDict(i);
- if (pField == NULL) continue;
- CFX_WideString name;
- name = pField->GetUnicodeText("T");
- CFX_ByteString name_b = CFX_ByteString::FromUnicode(name);
- CFX_ByteString csBValue = pField->GetString("V");
- CFX_WideString csWValue = PDF_DecodeText(csBValue);
- CFX_ByteString csValue_b = CFX_ByteString::FromUnicode(csWValue);
-
- fdfEncodedData = fdfEncodedData<<name_b.GetBuffer(name_b.GetLength());
- name_b.ReleaseBuffer();
- fdfEncodedData = fdfEncodedData<<"=";
- fdfEncodedData = fdfEncodedData<<csValue_b.GetBuffer(csValue_b.GetLength());
- csValue_b.ReleaseBuffer();
- if(i != pFields->GetCount()-1)
- fdfEncodedData = fdfEncodedData<<"&";
+ CPDF_Object* pJS = pJSDict->GetElementValue("Before");
+ if (pJS != NULL) {
+ int iType = pJS->GetType();
+ if (iType == PDFOBJ_STRING)
+ csJS = pJSDict->GetUnicodeText("Before");
+ else if (iType == PDFOBJ_STREAM)
+ csJS = pJS->GetUnicodeText();
+ }
}
-
- nBufSize = fdfEncodedData.GetLength();
- pBuf = FX_Alloc(uint8_t, nBufSize);
- FXSYS_memcpy(pBuf, fdfEncodedData.GetBuffer(), nBufSize);
+ }
}
- return TRUE;
-}
-
-FX_BOOL CPDFSDK_InterForm::ExportFieldsToFDFTextBuf(const CFX_PtrArray& fields,FX_BOOL bIncludeOrExclude, CFX_ByteTextBuf& textBuf)
-{
- ASSERT(m_pDocument != NULL);
- ASSERT(m_pInterForm != NULL);
-
- CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath(),(CFX_PtrArray&)fields, bIncludeOrExclude);
- if (!pFDF) return FALSE;
- FX_BOOL bRet = pFDF->WriteBuf(textBuf); // = FALSE;//
- delete pFDF;
+ delete pFDFDocument;
+ }
+
+ sBuffer.ReleaseBuffer();
+}
+
+FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(CFX_WideString csFDFFile,
+ CFX_WideString csTxtFile) {
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(uint8_t*& pBuf,
+ FX_STRSIZE& nBufSize) {
+ CFDF_Document* pFDF = CFDF_Document::ParseMemory(pBuf, nBufSize);
+ if (pFDF) {
+ CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF");
+ if (pMainDict == NULL)
+ return FALSE;
+
+ // Get fields
+ CPDF_Array* pFields = pMainDict->GetArray("Fields");
+ if (pFields == NULL)
+ return FALSE;
+
+ CFX_ByteTextBuf fdfEncodedData;
+
+ for (FX_DWORD i = 0; i < pFields->GetCount(); i++) {
+ CPDF_Dictionary* pField = pFields->GetDict(i);
+ if (pField == NULL)
+ continue;
+ CFX_WideString name;
+ name = pField->GetUnicodeText("T");
+ CFX_ByteString name_b = CFX_ByteString::FromUnicode(name);
+ CFX_ByteString csBValue = pField->GetString("V");
+ CFX_WideString csWValue = PDF_DecodeText(csBValue);
+ CFX_ByteString csValue_b = CFX_ByteString::FromUnicode(csWValue);
+
+ fdfEncodedData = fdfEncodedData << name_b.GetBuffer(name_b.GetLength());
+ name_b.ReleaseBuffer();
+ fdfEncodedData = fdfEncodedData << "=";
+ fdfEncodedData = fdfEncodedData
+ << csValue_b.GetBuffer(csValue_b.GetLength());
+ csValue_b.ReleaseBuffer();
+ if (i != pFields->GetCount() - 1)
+ fdfEncodedData = fdfEncodedData << "&";
+ }
+
+ nBufSize = fdfEncodedData.GetLength();
+ pBuf = FX_Alloc(uint8_t, nBufSize);
+ FXSYS_memcpy(pBuf, fdfEncodedData.GetBuffer(), nBufSize);
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDFSDK_InterForm::ExportFieldsToFDFTextBuf(const CFX_PtrArray& fields,
+ FX_BOOL bIncludeOrExclude,
+ CFX_ByteTextBuf& textBuf) {
+ ASSERT(m_pDocument != NULL);
+ ASSERT(m_pInterForm != NULL);
+
+ CFDF_Document* pFDF = m_pInterForm->ExportToFDF(
+ m_pDocument->GetPath(), (CFX_PtrArray&)fields, bIncludeOrExclude);
+ if (!pFDF)
+ return FALSE;
+ FX_BOOL bRet = pFDF->WriteBuf(textBuf); // = FALSE;//
+ delete pFDF;
- return bRet;
+ return bRet;
}
-CFX_WideString CPDFSDK_InterForm::GetTemporaryFileName(const CFX_WideString& sFileExt)
-{
- CFX_WideString sFileName;
- return L"";
+CFX_WideString CPDFSDK_InterForm::GetTemporaryFileName(
+ const CFX_WideString& sFileExt) {
+ CFX_WideString sFileName;
+ return L"";
}
-FX_BOOL CPDFSDK_InterForm::SubmitForm(const CFX_WideString& sDestination, FX_BOOL bUrlEncoded)
-{
- if (sDestination.IsEmpty()) return FALSE;
+FX_BOOL CPDFSDK_InterForm::SubmitForm(const CFX_WideString& sDestination,
+ FX_BOOL bUrlEncoded) {
+ if (sDestination.IsEmpty())
+ return FALSE;
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv != NULL);
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv != NULL);
- if(NULL == m_pDocument) return FALSE;
- CFX_WideString wsPDFFilePath = m_pDocument->GetPath();
+ if (NULL == m_pDocument)
+ return FALSE;
+ CFX_WideString wsPDFFilePath = m_pDocument->GetPath();
- if(NULL == m_pInterForm) return FALSE;
- CFDF_Document* pFDFDoc = m_pInterForm->ExportToFDF(wsPDFFilePath);
- if (NULL == pFDFDoc) return FALSE;
+ if (NULL == m_pInterForm)
+ return FALSE;
+ CFDF_Document* pFDFDoc = m_pInterForm->ExportToFDF(wsPDFFilePath);
+ if (NULL == pFDFDoc)
+ return FALSE;
- CFX_ByteTextBuf FdfBuffer;
- FX_BOOL bRet = pFDFDoc->WriteBuf(FdfBuffer);
- delete pFDFDoc;
- if (!bRet) return FALSE;
+ CFX_ByteTextBuf FdfBuffer;
+ FX_BOOL bRet = pFDFDoc->WriteBuf(FdfBuffer);
+ delete pFDFDoc;
+ if (!bRet)
+ return FALSE;
- uint8_t* pBuffer = FdfBuffer.GetBuffer();
- FX_STRSIZE nBufSize = FdfBuffer.GetLength();
+ uint8_t* pBuffer = FdfBuffer.GetBuffer();
+ FX_STRSIZE nBufSize = FdfBuffer.GetLength();
- if (bUrlEncoded)
- {
- if(!FDFToURLEncodedData(pBuffer, nBufSize))
- return FALSE;
- }
+ if (bUrlEncoded) {
+ if (!FDFToURLEncodedData(pBuffer, nBufSize))
+ return FALSE;
+ }
- pEnv->JS_docSubmitForm(pBuffer, nBufSize, sDestination.c_str());
+ pEnv->JS_docSubmitForm(pBuffer, nBufSize, sDestination.c_str());
- if (bUrlEncoded && pBuffer)
- {
- FX_Free(pBuffer);
- pBuffer = NULL;
- }
+ if (bUrlEncoded && pBuffer) {
+ FX_Free(pBuffer);
+ pBuffer = NULL;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPDFSDK_InterForm::ExportFormToFDFTextBuf(CFX_ByteTextBuf& textBuf)
-{
+FX_BOOL CPDFSDK_InterForm::ExportFormToFDFTextBuf(CFX_ByteTextBuf& textBuf) {
+ ASSERT(m_pInterForm != NULL);
+ ASSERT(m_pDocument != NULL);
- ASSERT(m_pInterForm != NULL);
- ASSERT(m_pDocument != NULL);
-
- CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath());
- if (!pFDF) return FALSE;
+ CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath());
+ if (!pFDF)
+ return FALSE;
- FX_BOOL bRet = pFDF->WriteBuf(textBuf);
- delete pFDF;
+ FX_BOOL bRet = pFDF->WriteBuf(textBuf);
+ delete pFDF;
- return bRet;
+ return bRet;
}
+FX_BOOL CPDFSDK_InterForm::DoAction_ResetForm(const CPDF_Action& action) {
+ ASSERT(action);
-FX_BOOL CPDFSDK_InterForm::DoAction_ResetForm(const CPDF_Action& action)
-{
- ASSERT(action);
-
- CPDF_Dictionary* pActionDict = action.GetDict();
- if (pActionDict->KeyExist("Fields"))
- {
- CPDF_ActionFields af = action.GetWidgets();
- FX_DWORD dwFlags = action.GetFlags();
+ CPDF_Dictionary* pActionDict = action.GetDict();
+ if (pActionDict->KeyExist("Fields")) {
+ CPDF_ActionFields af = action.GetWidgets();
+ FX_DWORD dwFlags = action.GetFlags();
- CFX_PtrArray fieldObjects;
- af.GetAllFields(fieldObjects);
- CFX_PtrArray fields;
- GetFieldFromObjects(fieldObjects, fields);
- return m_pInterForm->ResetForm(fields, !(dwFlags & 0x01), TRUE);
- }
+ CFX_PtrArray fieldObjects;
+ af.GetAllFields(fieldObjects);
+ CFX_PtrArray fields;
+ GetFieldFromObjects(fieldObjects, fields);
+ return m_pInterForm->ResetForm(fields, !(dwFlags & 0x01), TRUE);
+ }
- return m_pInterForm->ResetForm(TRUE);
+ return m_pInterForm->ResetForm(TRUE);
}
-FX_BOOL CPDFSDK_InterForm::DoAction_ImportData(const CPDF_Action& action)
-{
- return FALSE;
+FX_BOOL CPDFSDK_InterForm::DoAction_ImportData(const CPDF_Action& action) {
+ return FALSE;
}
-void CPDFSDK_InterForm::GetFieldFromObjects(const CFX_PtrArray& objects, CFX_PtrArray& fields)
-{
- ASSERT(m_pInterForm != NULL);
+void CPDFSDK_InterForm::GetFieldFromObjects(const CFX_PtrArray& objects,
+ CFX_PtrArray& fields) {
+ ASSERT(m_pInterForm != NULL);
- int iCount = objects.GetSize();
- for (int i = 0; i < iCount; i ++)
- {
- CPDF_Object* pObject = (CPDF_Object*)objects[i];
- if (pObject == NULL) continue;
+ int iCount = objects.GetSize();
+ for (int i = 0; i < iCount; i++) {
+ CPDF_Object* pObject = (CPDF_Object*)objects[i];
+ if (pObject == NULL)
+ continue;
- int iType = pObject->GetType();
- if (iType == PDFOBJ_STRING)
- {
- CFX_WideString csName = pObject->GetUnicodeText();
- CPDF_FormField* pField = m_pInterForm->GetField(0, csName);
- if (pField != NULL)
- fields.Add(pField);
- }
- else if (iType == PDFOBJ_DICTIONARY)
- {
- if (m_pInterForm->IsValidFormField(pObject))
- fields.Add(pObject);
- }
+ int iType = pObject->GetType();
+ if (iType == PDFOBJ_STRING) {
+ CFX_WideString csName = pObject->GetUnicodeText();
+ CPDF_FormField* pField = m_pInterForm->GetField(0, csName);
+ if (pField != NULL)
+ fields.Add(pField);
+ } else if (iType == PDFOBJ_DICTIONARY) {
+ if (m_pInterForm->IsValidFormField(pObject))
+ fields.Add(pObject);
}
+ }
}
-/* ----------------------------- CPDF_FormNotify ----------------------------- */
+/* ----------------------------- CPDF_FormNotify -----------------------------
+ */
-int CPDFSDK_InterForm::BeforeValueChange(const CPDF_FormField* pField, CFX_WideString& csValue)
-{
- CPDF_FormField* pFormField = (CPDF_FormField*)pField;
- int nType = pFormField->GetFieldType();
- if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD)
- {
- FX_BOOL bRC = TRUE;
- OnKeyStrokeCommit(pFormField, csValue, bRC);
- if (bRC)
- {
- OnValidate(pFormField, csValue, bRC);
- return bRC ? 1 : -1;
- }
- return -1;
+int CPDFSDK_InterForm::BeforeValueChange(const CPDF_FormField* pField,
+ CFX_WideString& csValue) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)pField;
+ int nType = pFormField->GetFieldType();
+ if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
+ FX_BOOL bRC = TRUE;
+ OnKeyStrokeCommit(pFormField, csValue, bRC);
+ if (bRC) {
+ OnValidate(pFormField, csValue, bRC);
+ return bRC ? 1 : -1;
}
- return 0;
+ return -1;
+ }
+ return 0;
+}
+
+int CPDFSDK_InterForm::AfterValueChange(const CPDF_FormField* pField) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)pField;
+ int nType = pFormField->GetFieldType();
+ if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
+ OnCalculate(pFormField);
+ FX_BOOL bFormated = FALSE;
+ CFX_WideString sValue = OnFormat(pFormField, bFormated);
+ if (bFormated)
+ ResetFieldAppearance(pFormField, sValue.c_str(), TRUE);
+ else
+ ResetFieldAppearance(pFormField, NULL, TRUE);
+ UpdateField(pFormField);
+ }
+ return 0;
}
-int CPDFSDK_InterForm::AfterValueChange(const CPDF_FormField* pField)
-{
- CPDF_FormField* pFormField = (CPDF_FormField*)pField;
- int nType = pFormField->GetFieldType();
- if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD)
- {
- OnCalculate(pFormField);
- FX_BOOL bFormated = FALSE;
- CFX_WideString sValue = OnFormat(pFormField, bFormated);
- if (bFormated)
- ResetFieldAppearance(pFormField, sValue.c_str(), TRUE);
- else
- ResetFieldAppearance(pFormField, NULL, TRUE);
- UpdateField(pFormField);
- }
+int CPDFSDK_InterForm::BeforeSelectionChange(const CPDF_FormField* pField,
+ CFX_WideString& csValue) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)pField;
+ if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
return 0;
-}
-
-int CPDFSDK_InterForm::BeforeSelectionChange(const CPDF_FormField* pField, CFX_WideString& csValue)
-{
- CPDF_FormField* pFormField = (CPDF_FormField*)pField;
- if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
- return 0;
- FX_BOOL bRC = TRUE;
- OnKeyStrokeCommit(pFormField, csValue, bRC);
- if (!bRC)
- return -1;
+ FX_BOOL bRC = TRUE;
+ OnKeyStrokeCommit(pFormField, csValue, bRC);
+ if (!bRC)
+ return -1;
- OnValidate(pFormField, csValue, bRC);
- if (!bRC)
- return -1;
+ OnValidate(pFormField, csValue, bRC);
+ if (!bRC)
+ return -1;
- return 1;
+ return 1;
}
-int CPDFSDK_InterForm::AfterSelectionChange(const CPDF_FormField* pField)
-{
- CPDF_FormField* pFormField = (CPDF_FormField*)pField;
- if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX)
- {
- OnCalculate(pFormField);
- ResetFieldAppearance(pFormField, NULL, TRUE);
- UpdateField(pFormField);
- }
- return 0;
+int CPDFSDK_InterForm::AfterSelectionChange(const CPDF_FormField* pField) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)pField;
+ if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX) {
+ OnCalculate(pFormField);
+ ResetFieldAppearance(pFormField, NULL, TRUE);
+ UpdateField(pFormField);
+ }
+ return 0;
}
-int CPDFSDK_InterForm::AfterCheckedStatusChange(const CPDF_FormField* pField, const CFX_ByteArray& statusArray)
-{
- CPDF_FormField* pFormField = (CPDF_FormField*)pField;
- int nType = pFormField->GetFieldType();
- if (nType == FIELDTYPE_CHECKBOX || nType == FIELDTYPE_RADIOBUTTON)
- {
- OnCalculate(pFormField);
- UpdateField(pFormField);
- }
- return 0;
+int CPDFSDK_InterForm::AfterCheckedStatusChange(
+ const CPDF_FormField* pField,
+ const CFX_ByteArray& statusArray) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)pField;
+ int nType = pFormField->GetFieldType();
+ if (nType == FIELDTYPE_CHECKBOX || nType == FIELDTYPE_RADIOBUTTON) {
+ OnCalculate(pFormField);
+ UpdateField(pFormField);
+ }
+ return 0;
}
-int CPDFSDK_InterForm::BeforeFormReset(const CPDF_InterForm* pForm)
-{
- return 0;
+int CPDFSDK_InterForm::BeforeFormReset(const CPDF_InterForm* pForm) {
+ return 0;
}
-int CPDFSDK_InterForm::AfterFormReset(const CPDF_InterForm* pForm)
-{
- OnCalculate(nullptr);
- return 0;
+int CPDFSDK_InterForm::AfterFormReset(const CPDF_InterForm* pForm) {
+ OnCalculate(nullptr);
+ return 0;
}
-int CPDFSDK_InterForm::BeforeFormImportData(const CPDF_InterForm* pForm)
-{
- return 0;
+int CPDFSDK_InterForm::BeforeFormImportData(const CPDF_InterForm* pForm) {
+ return 0;
}
-int CPDFSDK_InterForm::AfterFormImportData(const CPDF_InterForm* pForm)
-{
- OnCalculate(nullptr);
- return 0;
+int CPDFSDK_InterForm::AfterFormImportData(const CPDF_InterForm* pForm) {
+ OnCalculate(nullptr);
+ return 0;
}
-FX_BOOL CPDFSDK_InterForm::IsNeedHighLight(int nFieldType)
-{
- if(nFieldType <1 || nFieldType > 6)
- return FALSE;
- return m_bNeedHightlight[nFieldType-1];
+FX_BOOL CPDFSDK_InterForm::IsNeedHighLight(int nFieldType) {
+ if (nFieldType < 1 || nFieldType > 6)
+ return FALSE;
+ return m_bNeedHightlight[nFieldType - 1];
}
-void CPDFSDK_InterForm::RemoveAllHighLight()
-{
- memset((void*)m_bNeedHightlight, 0, 6*sizeof(FX_BOOL));
+void CPDFSDK_InterForm::RemoveAllHighLight() {
+ memset((void*)m_bNeedHightlight, 0, 6 * sizeof(FX_BOOL));
}
-void CPDFSDK_InterForm::SetHighlightColor(FX_COLORREF clr, int nFieldType)
-{
- if(nFieldType <0 || nFieldType > 6) return;
- switch(nFieldType)
- {
- case 0:
- {
- for(int i=0; i<6; i++)
- {
- m_aHighlightColor[i] = clr;
- m_bNeedHightlight[i] = TRUE;
- }
- break;
- }
- default:
- {
- m_aHighlightColor[nFieldType-1] = clr;
- m_bNeedHightlight[nFieldType-1] = TRUE;
- break;
- }
+void CPDFSDK_InterForm::SetHighlightColor(FX_COLORREF clr, int nFieldType) {
+ if (nFieldType < 0 || nFieldType > 6)
+ return;
+ switch (nFieldType) {
+ case 0: {
+ for (int i = 0; i < 6; i++) {
+ m_aHighlightColor[i] = clr;
+ m_bNeedHightlight[i] = TRUE;
+ }
+ break;
}
-
+ default: {
+ m_aHighlightColor[nFieldType - 1] = clr;
+ m_bNeedHightlight[nFieldType - 1] = TRUE;
+ break;
+ }
+ }
}
-FX_COLORREF CPDFSDK_InterForm::GetHighlightColor(int nFieldType)
-{
- if (nFieldType < 0 || nFieldType > 6)
- return FXSYS_RGB(255,255,255);
- if (nFieldType == 0)
- return m_aHighlightColor[0];
- return m_aHighlightColor[nFieldType-1];
+FX_COLORREF CPDFSDK_InterForm::GetHighlightColor(int nFieldType) {
+ if (nFieldType < 0 || nFieldType > 6)
+ return FXSYS_RGB(255, 255, 255);
+ if (nFieldType == 0)
+ return m_aHighlightColor[0];
+ return m_aHighlightColor[nFieldType - 1];
}
/* ------------------------- CBA_AnnotIterator ------------------------- */
-CBA_AnnotIterator::CBA_AnnotIterator(CPDFSDK_PageView* pPageView, const CFX_ByteString& sType, const CFX_ByteString& sSubType)
- :m_pPageView(pPageView),
- m_sType(sType),
- m_sSubType(sSubType),
- m_nTabs(BAI_STRUCTURE)
-{
- ASSERT(m_pPageView != NULL);
+CBA_AnnotIterator::CBA_AnnotIterator(CPDFSDK_PageView* pPageView,
+ const CFX_ByteString& sType,
+ const CFX_ByteString& sSubType)
+ : m_pPageView(pPageView),
+ m_sType(sType),
+ m_sSubType(sSubType),
+ m_nTabs(BAI_STRUCTURE) {
+ ASSERT(m_pPageView != NULL);
- CPDF_Page* pPDFPage = m_pPageView->GetPDFPage();
- ASSERT(pPDFPage != NULL);
- ASSERT(pPDFPage->m_pFormDict != NULL);
+ CPDF_Page* pPDFPage = m_pPageView->GetPDFPage();
+ ASSERT(pPDFPage != NULL);
+ ASSERT(pPDFPage->m_pFormDict != NULL);
- CFX_ByteString sTabs = pPDFPage->m_pFormDict->GetString("Tabs");
+ CFX_ByteString sTabs = pPDFPage->m_pFormDict->GetString("Tabs");
- if (sTabs == "R")
- {
- m_nTabs = BAI_ROW;
- }
- else if (sTabs == "C")
- {
- m_nTabs = BAI_COLUMN;
- }
- else
- {
- m_nTabs = BAI_STRUCTURE;
- }
+ if (sTabs == "R") {
+ m_nTabs = BAI_ROW;
+ } else if (sTabs == "C") {
+ m_nTabs = BAI_COLUMN;
+ } else {
+ m_nTabs = BAI_STRUCTURE;
+ }
- GenerateResults();
+ GenerateResults();
}
-CBA_AnnotIterator::~CBA_AnnotIterator()
-{
- m_Annots.RemoveAll();
+CBA_AnnotIterator::~CBA_AnnotIterator() {
+ m_Annots.RemoveAll();
}
-CPDFSDK_Annot* CBA_AnnotIterator::GetFirstAnnot()
-{
- if (m_Annots.GetSize() > 0)
- return m_Annots[0];
+CPDFSDK_Annot* CBA_AnnotIterator::GetFirstAnnot() {
+ if (m_Annots.GetSize() > 0)
+ return m_Annots[0];
- return NULL;
+ return NULL;
}
-CPDFSDK_Annot* CBA_AnnotIterator::GetLastAnnot()
-{
- if (m_Annots.GetSize() > 0)
- return m_Annots[m_Annots.GetSize() - 1];
+CPDFSDK_Annot* CBA_AnnotIterator::GetLastAnnot() {
+ if (m_Annots.GetSize() > 0)
+ return m_Annots[m_Annots.GetSize() - 1];
- return NULL;
+ return NULL;
}
-CPDFSDK_Annot* CBA_AnnotIterator::GetNextAnnot(CPDFSDK_Annot* pAnnot)
-{
- for (int i = 0, sz = m_Annots.GetSize(); i < sz; ++i) {
- if (m_Annots[i] == pAnnot)
- return (i + 1 < sz) ? m_Annots[i+1] : m_Annots[0];
- }
- return NULL;
+CPDFSDK_Annot* CBA_AnnotIterator::GetNextAnnot(CPDFSDK_Annot* pAnnot) {
+ for (int i = 0, sz = m_Annots.GetSize(); i < sz; ++i) {
+ if (m_Annots[i] == pAnnot)
+ return (i + 1 < sz) ? m_Annots[i + 1] : m_Annots[0];
+ }
+ return NULL;
}
-CPDFSDK_Annot* CBA_AnnotIterator::GetPrevAnnot(CPDFSDK_Annot* pAnnot)
-{
- for (int i = 0, sz = m_Annots.GetSize(); i < sz; ++i) {
- if (m_Annots[i] == pAnnot)
- return (i - 1 >= 0) ? m_Annots[i-1] : m_Annots[sz-1];
- }
- return NULL;
+CPDFSDK_Annot* CBA_AnnotIterator::GetPrevAnnot(CPDFSDK_Annot* pAnnot) {
+ for (int i = 0, sz = m_Annots.GetSize(); i < sz; ++i) {
+ if (m_Annots[i] == pAnnot)
+ return (i - 1 >= 0) ? m_Annots[i - 1] : m_Annots[sz - 1];
+ }
+ return NULL;
}
-int CBA_AnnotIterator::CompareByLeft(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2)
-{
- ASSERT(p1);
- ASSERT(p2);
+int CBA_AnnotIterator::CompareByLeft(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) {
+ ASSERT(p1);
+ ASSERT(p2);
- CPDF_Rect rcAnnot1 = GetAnnotRect(p1);
- CPDF_Rect rcAnnot2 = GetAnnotRect(p2);
+ CPDF_Rect rcAnnot1 = GetAnnotRect(p1);
+ CPDF_Rect rcAnnot2 = GetAnnotRect(p2);
- if (rcAnnot1.left < rcAnnot2.left)
- return -1;
- if (rcAnnot1.left > rcAnnot2.left)
- return 1;
- return 0;
+ if (rcAnnot1.left < rcAnnot2.left)
+ return -1;
+ if (rcAnnot1.left > rcAnnot2.left)
+ return 1;
+ return 0;
}
+int CBA_AnnotIterator::CompareByTop(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) {
+ ASSERT(p1 != NULL);
+ ASSERT(p2 != NULL);
-int CBA_AnnotIterator::CompareByTop(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2)
-{
- ASSERT(p1 != NULL);
- ASSERT(p2 != NULL);
+ CPDF_Rect rcAnnot1 = GetAnnotRect(p1);
+ CPDF_Rect rcAnnot2 = GetAnnotRect(p2);
- CPDF_Rect rcAnnot1 = GetAnnotRect(p1);
- CPDF_Rect rcAnnot2 = GetAnnotRect(p2);
-
- if (rcAnnot1.top < rcAnnot2.top)
- return -1;
- if (rcAnnot1.top > rcAnnot2.top)
- return 1;
- return 0;
+ if (rcAnnot1.top < rcAnnot2.top)
+ return -1;
+ if (rcAnnot1.top > rcAnnot2.top)
+ return 1;
+ return 0;
}
-void CBA_AnnotIterator::GenerateResults()
-{
- ASSERT(m_pPageView != NULL);
+void CBA_AnnotIterator::GenerateResults() {
+ ASSERT(m_pPageView != NULL);
- switch (m_nTabs)
- {
- case BAI_STRUCTURE:
- {
- for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++)
- {
- CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
-
- if (pAnnot->GetType() == m_sType
- && pAnnot->GetSubType() == m_sSubType)
- m_Annots.Add(pAnnot);
- }
+ switch (m_nTabs) {
+ case BAI_STRUCTURE: {
+ for (int i = 0, sz = m_pPageView->CountAnnots(); i < sz; i++) {
+ CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
+ ASSERT(pAnnot != NULL);
+
+ if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType)
+ m_Annots.Add(pAnnot);
+ }
+ } break;
+ case BAI_ROW: {
+ CPDFSDK_SortAnnots sa;
+
+ {
+ for (int i = 0, sz = m_pPageView->CountAnnots(); i < sz; i++) {
+ CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
+ ASSERT(pAnnot != NULL);
+
+ if (pAnnot->GetType() == m_sType &&
+ pAnnot->GetSubType() == m_sSubType)
+ sa.Add(pAnnot);
}
- break;
- case BAI_ROW:
- {
- CPDFSDK_SortAnnots sa;
+ }
- {
+ if (sa.GetSize() > 0) {
+ sa.Sort(CBA_AnnotIterator::CompareByLeft);
+ }
- for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++)
- {
- CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
+ while (sa.GetSize() > 0) {
+ int nLeftTopIndex = -1;
- if (pAnnot->GetType() == m_sType
- && pAnnot->GetSubType() == m_sSubType)
- sa.Add(pAnnot);
- }
- }
+ {
+ FX_FLOAT fTop = 0.0f;
- if (sa.GetSize() > 0)
- {
- sa.Sort(CBA_AnnotIterator::CompareByLeft);
- }
+ for (int i = sa.GetSize() - 1; i >= 0; i--) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot != NULL);
- while (sa.GetSize() > 0)
- {
- int nLeftTopIndex = -1;
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- {
- FX_FLOAT fTop = 0.0f;
+ if (rcAnnot.top > fTop) {
+ nLeftTopIndex = i;
+ fTop = rcAnnot.top;
+ }
+ }
+ }
- for (int i=sa.GetSize()-1; i>=0; i--)
- {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
+ if (nLeftTopIndex >= 0) {
+ CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
+ ASSERT(pLeftTopAnnot != NULL);
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
- if (rcAnnot.top > fTop)
- {
- nLeftTopIndex = i;
- fTop = rcAnnot.top;
- }
- }
- }
+ m_Annots.Add(pLeftTopAnnot);
+ sa.RemoveAt(nLeftTopIndex);
- if (nLeftTopIndex >= 0)
- {
- CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
- ASSERT(pLeftTopAnnot != NULL);
+ CFX_ArrayTemplate<int> aSelect;
- CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
+ {
+ for (int i = 0, sz = sa.GetSize(); i < sz; i++) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot != NULL);
- m_Annots.Add(pLeftTopAnnot);
- sa.RemoveAt(nLeftTopIndex);
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- CFX_ArrayTemplate<int> aSelect;
+ FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f;
- {
- for (int i=0,sz=sa.GetSize(); i<sz; i++)
- {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
+ if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top)
+ aSelect.Add(i);
+ }
+ }
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ {
+ for (int i = 0, sz = aSelect.GetSize(); i < sz; i++) {
+ m_Annots.Add(sa[aSelect[i]]);
+ }
+ }
- FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f;
+ {
+ for (int i = aSelect.GetSize() - 1; i >= 0; i--) {
+ sa.RemoveAt(aSelect[i]);
+ }
+ }
- if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top)
- aSelect.Add(i);
- }
- }
+ aSelect.RemoveAll();
+ }
+ }
+ sa.RemoveAll();
+ } break;
+ case BAI_COLUMN: {
+ CPDFSDK_SortAnnots sa;
+
+ {
+ for (int i = 0, sz = m_pPageView->CountAnnots(); i < sz; i++) {
+ CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
+ ASSERT(pAnnot != NULL);
+
+ if (pAnnot->GetType() == m_sType &&
+ pAnnot->GetSubType() == m_sSubType)
+ sa.Add(pAnnot);
+ }
+ }
- {
- for (int i=0,sz=aSelect.GetSize(); i<sz; i++)
- {
- m_Annots.Add(sa[aSelect[i]]);
- }
- }
+ if (sa.GetSize() > 0) {
+ sa.Sort(CBA_AnnotIterator::CompareByTop, FALSE);
+ }
- {
- for (int i=aSelect.GetSize()-1; i>=0; i--)
- {
- sa.RemoveAt(aSelect[i]);
- }
- }
+ while (sa.GetSize() > 0) {
+ int nLeftTopIndex = -1;
- aSelect.RemoveAll();
- }
- }
- sa.RemoveAll();
- }
- break;
- case BAI_COLUMN:
{
- CPDFSDK_SortAnnots sa;
+ FX_FLOAT fLeft = -1.0f;
- {
- for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++)
- {
- CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
+ for (int i = sa.GetSize() - 1; i >= 0; i--) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot != NULL);
- if (pAnnot->GetType() == m_sType
- && pAnnot->GetSubType() == m_sSubType)
- sa.Add(pAnnot);
- }
- }
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- if (sa.GetSize() > 0)
- {
- sa.Sort(CBA_AnnotIterator::CompareByTop, FALSE);
+ if (fLeft < 0) {
+ nLeftTopIndex = 0;
+ fLeft = rcAnnot.left;
+ } else if (rcAnnot.left < fLeft) {
+ nLeftTopIndex = i;
+ fLeft = rcAnnot.left;
}
+ }
+ }
- while (sa.GetSize() > 0)
- {
- int nLeftTopIndex = -1;
-
- {
- FX_FLOAT fLeft = -1.0f;
-
- for (int i=sa.GetSize()-1; i>=0; i--)
- {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
-
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
-
- if (fLeft < 0)
- {
- nLeftTopIndex = 0;
- fLeft = rcAnnot.left;
- }
- else if (rcAnnot.left < fLeft)
- {
- nLeftTopIndex = i;
- fLeft = rcAnnot.left;
- }
- }
- }
-
- if (nLeftTopIndex >= 0)
- {
- CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
- ASSERT(pLeftTopAnnot != NULL);
-
- CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
+ if (nLeftTopIndex >= 0) {
+ CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
+ ASSERT(pLeftTopAnnot != NULL);
- m_Annots.Add(pLeftTopAnnot);
- sa.RemoveAt(nLeftTopIndex);
+ CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
- CFX_ArrayTemplate<int> aSelect;
+ m_Annots.Add(pLeftTopAnnot);
+ sa.RemoveAt(nLeftTopIndex);
- {
- for (int i=0,sz=sa.GetSize(); i<sz; i++)
- {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
+ CFX_ArrayTemplate<int> aSelect;
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ {
+ for (int i = 0, sz = sa.GetSize(); i < sz; i++) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot != NULL);
- FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f;
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right)
- aSelect.Add(i);
- }
- }
+ FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f;
- {
- for (int i=0,sz=aSelect.GetSize(); i<sz; i++)
- {
- m_Annots.Add(sa[aSelect[i]]);
- }
- }
+ if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right)
+ aSelect.Add(i);
+ }
+ }
- {
- for (int i=aSelect.GetSize()-1; i>=0; i--)
- {
- sa.RemoveAt(aSelect[i]);
- }
- }
+ {
+ for (int i = 0, sz = aSelect.GetSize(); i < sz; i++) {
+ m_Annots.Add(sa[aSelect[i]]);
+ }
+ }
- aSelect.RemoveAll();
- }
+ {
+ for (int i = aSelect.GetSize() - 1; i >= 0; i--) {
+ sa.RemoveAt(aSelect[i]);
}
- sa.RemoveAll();
+ }
+
+ aSelect.RemoveAll();
}
- break;
- }
+ }
+ sa.RemoveAll();
+ } break;
+ }
}
-CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot)
-{
- ASSERT(pAnnot != NULL);
+CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) {
+ ASSERT(pAnnot != NULL);
- CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
- ASSERT(pPDFAnnot != NULL);
+ CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
+ ASSERT(pPDFAnnot != NULL);
- CPDF_Rect rcAnnot;
- pPDFAnnot->GetRect(rcAnnot);
+ CPDF_Rect rcAnnot;
+ pPDFAnnot->GetRect(rcAnnot);
- return rcAnnot;
+ return rcAnnot;
}
-
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp
index 05c1a3dd89..df9a0ff316 100644
--- a/fpdfsdk/src/fsdk_mgr.cpp
+++ b/fpdfsdk/src/fsdk_mgr.cpp
@@ -17,1077 +17,1009 @@
#include <ctime>
#endif
-//extern CPDFDoc_Environment* g_pFormFillApp;
-class CFX_SystemHandler:public IFX_SystemHandler
-{
-public:
- CFX_SystemHandler(CPDFDoc_Environment* pEnv):m_pEnv(pEnv),m_nCharSet(-1) {}
-public:
- virtual void InvalidateRect(FX_HWND hWnd, FX_RECT rect) ;
- virtual void OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect);
-
- virtual FX_BOOL IsSelectionImplemented();
-
- virtual CFX_WideString GetClipboardText(FX_HWND hWnd){return L"";}
- virtual FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString string) {return FALSE;}
-
- virtual void ClientToScreen(FX_HWND hWnd, int32_t& x, int32_t& y) {}
- virtual void ScreenToClient(FX_HWND hWnd, int32_t& x, int32_t& y) {}
-
- /*cursor style
- FXCT_ARROW
- FXCT_NESW
- FXCT_NWSE
- FXCT_VBEAM
- FXCT_HBEAM
- FXCT_HAND
- */
- virtual void SetCursor(int32_t nCursorType);
-
- virtual FX_HMENU CreatePopupMenu() {return NULL;}
- virtual FX_BOOL AppendMenuItem(FX_HMENU hMenu, int32_t nIDNewItem, CFX_WideString string) {return FALSE;}
- virtual FX_BOOL EnableMenuItem(FX_HMENU hMenu, int32_t nIDItem, FX_BOOL bEnabled) {return FALSE;}
- virtual int32_t TrackPopupMenu(FX_HMENU hMenu, int32_t x, int32_t y, FX_HWND hParent) {return -1;}
- virtual void DestroyMenu(FX_HMENU hMenu) {}
-
- virtual CFX_ByteString GetNativeTrueTypeFont(int32_t nCharset);
- virtual FX_BOOL FindNativeTrueTypeFont(int32_t nCharset, CFX_ByteString sFontFaceName);
- virtual CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc, CFX_ByteString sFontFaceName, uint8_t nCharset);
-
- virtual int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc) ;
- virtual void KillTimer(int32_t nID) ;
-
-
- virtual FX_BOOL IsSHIFTKeyDown(FX_DWORD nFlag) {return m_pEnv->FFI_IsSHIFTKeyDown(nFlag);}
- virtual FX_BOOL IsCTRLKeyDown(FX_DWORD nFlag) {return m_pEnv->FFI_IsCTRLKeyDown(nFlag);}
- virtual FX_BOOL IsALTKeyDown(FX_DWORD nFlag) {return m_pEnv->FFI_IsALTKeyDown(nFlag);}
- virtual FX_BOOL IsINSERTKeyDown(FX_DWORD nFlag) {return m_pEnv->FFI_IsINSERTKeyDown(nFlag);}
-
- virtual FX_SYSTEMTIME GetLocalTime();
-
- virtual int32_t GetCharSet() {return m_nCharSet;}
- virtual void SetCharSet(int32_t nCharSet) {m_nCharSet = nCharSet;}
-private:
- CPDFDoc_Environment* m_pEnv;
- int m_nCharSet;
-};
+// extern CPDFDoc_Environment* g_pFormFillApp;
+class CFX_SystemHandler : public IFX_SystemHandler {
+ public:
+ CFX_SystemHandler(CPDFDoc_Environment* pEnv) : m_pEnv(pEnv), m_nCharSet(-1) {}
-void CFX_SystemHandler::SetCursor(int32_t nCursorType)
-{
-
- m_pEnv->FFI_SetCursor(nCursorType);
-}
-
-void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect)
-{
- //g_pFormFillApp->FFI_Invalidate();
- CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd;
- CPDF_Page* pPage = NULL;
- CPDFSDK_PageView* pPageView = NULL;
- pPageView = pSDKAnnot->GetPageView();
- pPage = pSDKAnnot->GetPDFPage();
- if(!pPage || !pPageView)
- return;
- CPDF_Matrix page2device;
- pPageView->GetCurrentMatrix(page2device);
- CPDF_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);
-// m_pEnv->FFI_DeviceToPage(pPage, rect.left, rect.top, (double*)&left, (double*)&top);
-// m_pEnv->FFI_DeviceToPage(pPage, rect.right, rect.bottom, (double*)&right, (double*)&bottom);
- CPDF_Rect 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, CPDF_Rect& rect)
-{
- CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller;
- if(pFFL)
- {
- CPDF_Point leftbottom = CPDF_Point(rect.left, rect.bottom);
- CPDF_Point righttop = CPDF_Point(rect.right, rect.top);
- CPDF_Point ptA = pFFL->PWLtoFFL(leftbottom);
- CPDF_Point ptB = pFFL->PWLtoFFL(righttop);
-
-
- CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot();
- ASSERT(pAnnot);
- CPDF_Page* pPage = pAnnot->GetPDFPage();
- ASSERT(pPage);
- m_pEnv->FFI_OutputSelectedRect(pPage, ptA.x, ptB.y, ptB.x, ptA.y);
- }
+ public:
+ virtual void InvalidateRect(FX_HWND hWnd, FX_RECT rect);
+ virtual void OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect);
-}
+ virtual FX_BOOL IsSelectionImplemented();
-FX_BOOL CFX_SystemHandler::IsSelectionImplemented()
-{
- if(m_pEnv)
- {
- FPDF_FORMFILLINFO* pInfo = m_pEnv->GetFormFillInfo();
- if(pInfo && pInfo->FFI_OutputSelectedRect)
- return TRUE;
- }
+ virtual CFX_WideString GetClipboardText(FX_HWND hWnd) { return L""; }
+ virtual FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString string) {
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)
- {
- CFX_FontMapper* pFontMapper = pFontMgr->m_pBuiltinMapper;
- if(pFontMapper)
- {
- int nSize = pFontMapper->m_InstalledTTFonts.GetSize();
- if(nSize ==0)
- {
- pFontMapper->LoadInstalledFonts();
- nSize = pFontMapper->m_InstalledTTFonts.GetSize();
- }
-
- for(int i=0; i<nSize; i++)
- {
- if(pFontMapper->m_InstalledTTFonts[i].Compare(sFontFaceName))
- return TRUE;
- }
- }
-
- }
-
+ }
+
+ virtual void ClientToScreen(FX_HWND hWnd, int32_t& x, int32_t& y) {}
+ virtual void ScreenToClient(FX_HWND hWnd, int32_t& x, int32_t& y) {}
+
+ /*cursor style
+ FXCT_ARROW
+ FXCT_NESW
+ FXCT_NWSE
+ FXCT_VBEAM
+ FXCT_HBEAM
+ FXCT_HAND
+ */
+ virtual void SetCursor(int32_t nCursorType);
+
+ virtual FX_HMENU CreatePopupMenu() { return NULL; }
+ virtual FX_BOOL AppendMenuItem(FX_HMENU hMenu,
+ int32_t nIDNewItem,
+ CFX_WideString string) {
return FALSE;
-}
-
-static 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;
-}
-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();
-}
-
-
-CJS_RuntimeFactory* GetJSRuntimeFactory()
-{
- static CJS_RuntimeFactory s_JSRuntimeFactory;
- return &s_JSRuntimeFactory;
-}
-
-CPDFDoc_Environment::CPDFDoc_Environment(CPDF_Document* pDoc, FPDF_FORMFILLINFO* pFFinfo) :
- m_pAnnotHandlerMgr(NULL),
- m_pActionHandler(NULL),
- m_pJSRuntime(NULL),
- m_pInfo(pFFinfo),
- m_pSDKDoc(NULL),
- m_pPDFDoc(pDoc),
- m_pIFormFiller(NULL)
-{
- m_pSysHandler = new CFX_SystemHandler(this);
- m_pJSRuntimeFactory = GetJSRuntimeFactory();
- m_pJSRuntimeFactory->AddRef();
-}
-
-CPDFDoc_Environment::~CPDFDoc_Environment()
-{
- delete m_pIFormFiller;
- m_pIFormFiller = NULL;
- if (m_pJSRuntime && m_pJSRuntimeFactory)
- m_pJSRuntimeFactory->DeleteJSRuntime(m_pJSRuntime);
- m_pJSRuntimeFactory->Release();
-
- delete m_pSysHandler;
- m_pSysHandler = NULL;
-
- delete m_pAnnotHandlerMgr;
- m_pAnnotHandlerMgr = NULL;
- delete m_pActionHandler;
- m_pActionHandler = NULL;
-}
-
-int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg, const FX_WCHAR* Title, FX_UINT Type, FX_UINT Icon)
-{
- if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->app_alert)
- {
- CFX_ByteString bsMsg = CFX_WideString(Msg).UTF16LE_Encode();
- CFX_ByteString bsTitle = CFX_WideString(Title).UTF16LE_Encode();
- FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength());
- FPDF_WIDESTRING pTitle = (FPDF_WIDESTRING)bsTitle.GetBuffer(bsTitle.GetLength());
- int ret = m_pInfo->m_pJsPlatform->app_alert(m_pInfo->m_pJsPlatform, pMsg, pTitle, Type, Icon);
- bsMsg.ReleaseBuffer();
- bsTitle.ReleaseBuffer();
- return ret;
- }
- return -1;
-}
-
-int CPDFDoc_Environment::JS_appResponse(const FX_WCHAR* Question, const FX_WCHAR* Title, const FX_WCHAR* Default,
- const FX_WCHAR* cLabel, FPDF_BOOL bPassword, void* response, int length)
-{
- if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->app_response)
- {
- CFX_ByteString bsQuestion = CFX_WideString(Question).UTF16LE_Encode();
- CFX_ByteString bsTitle = CFX_WideString(Title).UTF16LE_Encode();
- CFX_ByteString bsDefault = CFX_WideString(Default).UTF16LE_Encode();
- CFX_ByteString bsLabel = CFX_WideString(cLabel).UTF16LE_Encode();
- FPDF_WIDESTRING pQuestion = (FPDF_WIDESTRING)bsQuestion.GetBuffer(bsQuestion.GetLength());
- FPDF_WIDESTRING pTitle = (FPDF_WIDESTRING)bsTitle.GetBuffer(bsTitle.GetLength());
- FPDF_WIDESTRING pDefault = (FPDF_WIDESTRING)bsDefault.GetBuffer(bsDefault.GetLength());
- FPDF_WIDESTRING pLabel = (FPDF_WIDESTRING)bsLabel.GetBuffer(bsLabel.GetLength());
- int ret = m_pInfo->m_pJsPlatform->app_response(m_pInfo->m_pJsPlatform, pQuestion, pTitle,
- pDefault, pLabel, bPassword, response, length);
- bsQuestion.ReleaseBuffer();
- bsTitle.ReleaseBuffer();
- bsDefault.ReleaseBuffer();
- bsLabel.ReleaseBuffer();
- return ret;
- }
+ }
+ virtual FX_BOOL EnableMenuItem(FX_HMENU hMenu,
+ int32_t nIDItem,
+ FX_BOOL bEnabled) {
+ return FALSE;
+ }
+ virtual int32_t TrackPopupMenu(FX_HMENU hMenu,
+ int32_t x,
+ int32_t y,
+ FX_HWND hParent) {
return -1;
-}
-
-CFX_WideString CPDFDoc_Environment::JS_fieldBrowse()
-{
- if (!m_pInfo ||
- !m_pInfo->m_pJsPlatform ||
- !m_pInfo->m_pJsPlatform->Field_browse) {
- return L"";
- }
-
- const int nRequiredLen = m_pInfo->m_pJsPlatform->Field_browse(
- m_pInfo->m_pJsPlatform, nullptr, 0);
- if (nRequiredLen <= 0)
- return L"";
-
- nonstd::unique_ptr<char[]> pBuff(new char[nRequiredLen]);
- memset(pBuff.get(), 0, nRequiredLen);
- const int nActualLen = m_pInfo->m_pJsPlatform->Field_browse(
- m_pInfo->m_pJsPlatform, pBuff.get(), nRequiredLen);
- if (nActualLen <= 0 || nActualLen > nRequiredLen)
- return L"";
-
- CFX_ByteString bsRet = CFX_ByteString(pBuff.get(), nActualLen);
- CFX_WideString wsRet = CFX_WideString::FromLocal(bsRet);
- return wsRet;
-}
-
-CFX_WideString CPDFDoc_Environment::JS_docGetFilePath()
-{
- if (!m_pInfo ||
- !m_pInfo->m_pJsPlatform ||
- !m_pInfo->m_pJsPlatform->Doc_getFilePath) {
- return L"";
- }
-
- const int nRequiredLen = m_pInfo->m_pJsPlatform->Doc_getFilePath(
- m_pInfo->m_pJsPlatform, nullptr, 0);
- if (nRequiredLen <= 0)
- return L"";
-
- nonstd::unique_ptr<char[]> pBuff(new char[nRequiredLen]);
- memset(pBuff.get(), 0, nRequiredLen);
- const int nActualLen = m_pInfo->m_pJsPlatform->Doc_getFilePath(
- m_pInfo->m_pJsPlatform, pBuff.get(), nRequiredLen);
- if (nActualLen <= 0 || nActualLen > nRequiredLen)
- return L"";
-
- CFX_ByteString bsRet = CFX_ByteString(pBuff.get(), nActualLen);
- CFX_WideString wsRet = CFX_WideString::FromLocal(bsRet);
- return wsRet;
-}
-
-void CPDFDoc_Environment::JS_docSubmitForm(void* formData, int length, const FX_WCHAR* URL)
-{
- if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->Doc_submitForm)
- {
- CFX_ByteString bsDestination = CFX_WideString(URL).UTF16LE_Encode();
- FPDF_WIDESTRING pDestination = (FPDF_WIDESTRING)bsDestination.GetBuffer(bsDestination.GetLength());
- m_pInfo->m_pJsPlatform->Doc_submitForm(m_pInfo->m_pJsPlatform, formData, length, pDestination);
- bsDestination.ReleaseBuffer();
- }
-}
+ }
+ virtual void DestroyMenu(FX_HMENU hMenu) {}
+
+ virtual CFX_ByteString GetNativeTrueTypeFont(int32_t nCharset);
+ virtual FX_BOOL FindNativeTrueTypeFont(int32_t nCharset,
+ CFX_ByteString sFontFaceName);
+ virtual CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc,
+ CFX_ByteString sFontFaceName,
+ uint8_t nCharset);
+
+ virtual int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc);
+ virtual void KillTimer(int32_t nID);
+
+ virtual FX_BOOL IsSHIFTKeyDown(FX_DWORD nFlag) {
+ return m_pEnv->FFI_IsSHIFTKeyDown(nFlag);
+ }
+ virtual FX_BOOL IsCTRLKeyDown(FX_DWORD nFlag) {
+ return m_pEnv->FFI_IsCTRLKeyDown(nFlag);
+ }
+ virtual FX_BOOL IsALTKeyDown(FX_DWORD nFlag) {
+ return m_pEnv->FFI_IsALTKeyDown(nFlag);
+ }
+ virtual FX_BOOL IsINSERTKeyDown(FX_DWORD nFlag) {
+ return m_pEnv->FFI_IsINSERTKeyDown(nFlag);
+ }
+
+ virtual FX_SYSTEMTIME GetLocalTime();
+
+ virtual int32_t GetCharSet() { return m_nCharSet; }
+ virtual void SetCharSet(int32_t nCharSet) { m_nCharSet = nCharSet; }
+
+ private:
+ CPDFDoc_Environment* m_pEnv;
+ int m_nCharSet;
+};
-void CPDFDoc_Environment::JS_docmailForm(void* mailData, int length, FPDF_BOOL bUI,
- const FX_WCHAR* To, const FX_WCHAR* Subject,
- const FX_WCHAR* CC, const FX_WCHAR* BCC,
- const FX_WCHAR* Msg)
-{
- if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->Doc_mail)
- {
- CFX_ByteString bsTo = CFX_WideString(To).UTF16LE_Encode();
- CFX_ByteString bsCC = CFX_WideString(Subject).UTF16LE_Encode();
- CFX_ByteString bsBcc = CFX_WideString(BCC).UTF16LE_Encode();
- CFX_ByteString bsSubject = CFX_WideString(Subject).UTF16LE_Encode();
- CFX_ByteString bsMsg = CFX_WideString(Msg).UTF16LE_Encode();
- FPDF_WIDESTRING pTo = (FPDF_WIDESTRING)bsTo.GetBuffer(bsTo.GetLength());
- FPDF_WIDESTRING pCC = (FPDF_WIDESTRING)bsCC.GetBuffer(bsCC.GetLength());
- FPDF_WIDESTRING pBcc = (FPDF_WIDESTRING)bsBcc.GetBuffer(bsBcc.GetLength());
- FPDF_WIDESTRING pSubject = (FPDF_WIDESTRING)bsSubject.GetBuffer(bsSubject.GetLength());
- FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength());
- m_pInfo->m_pJsPlatform->Doc_mail(m_pInfo->m_pJsPlatform, mailData, length, bUI, pTo, pSubject,
- pCC, pBcc, pMsg);
- bsTo.ReleaseBuffer();
- bsCC.ReleaseBuffer();
- bsBcc.ReleaseBuffer();
- bsSubject.ReleaseBuffer();
- bsMsg.ReleaseBuffer();
+void CFX_SystemHandler::SetCursor(int32_t nCursorType) {
+ m_pEnv->FFI_SetCursor(nCursorType);
+}
+
+void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect) {
+ // g_pFormFillApp->FFI_Invalidate();
+ CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd;
+ CPDF_Page* pPage = NULL;
+ CPDFSDK_PageView* pPageView = NULL;
+ pPageView = pSDKAnnot->GetPageView();
+ pPage = pSDKAnnot->GetPDFPage();
+ if (!pPage || !pPageView)
+ return;
+ CPDF_Matrix page2device;
+ pPageView->GetCurrentMatrix(page2device);
+ CPDF_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);
+ // m_pEnv->FFI_DeviceToPage(pPage, rect.left, rect.top, (double*)&left,
+ // (double*)&top);
+ // m_pEnv->FFI_DeviceToPage(pPage, rect.right, rect.bottom, (double*)&right,
+ // (double*)&bottom);
+ CPDF_Rect 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, CPDF_Rect& rect) {
+ CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller;
+ if (pFFL) {
+ CPDF_Point leftbottom = CPDF_Point(rect.left, rect.bottom);
+ CPDF_Point righttop = CPDF_Point(rect.right, rect.top);
+ CPDF_Point ptA = pFFL->PWLtoFFL(leftbottom);
+ CPDF_Point ptB = pFFL->PWLtoFFL(righttop);
+
+ CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot();
+ ASSERT(pAnnot);
+ CPDF_Page* pPage = pAnnot->GetPDFPage();
+ 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) {
+ CFX_FontMapper* pFontMapper = pFontMgr->m_pBuiltinMapper;
+ if (pFontMapper) {
+ int nSize = pFontMapper->m_InstalledTTFonts.GetSize();
+ if (nSize == 0) {
+ pFontMapper->LoadInstalledFonts();
+ nSize = pFontMapper->m_InstalledTTFonts.GetSize();
+ }
+
+ for (int i = 0; i < nSize; i++) {
+ if (pFontMapper->m_InstalledTTFonts[i].Compare(sFontFaceName))
+ return TRUE;
+ }
}
+ }
+
+ return FALSE;
+}
+
+static 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;
+}
+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();
+}
+
+CJS_RuntimeFactory* GetJSRuntimeFactory() {
+ static CJS_RuntimeFactory s_JSRuntimeFactory;
+ return &s_JSRuntimeFactory;
+}
+
+CPDFDoc_Environment::CPDFDoc_Environment(CPDF_Document* pDoc,
+ FPDF_FORMFILLINFO* pFFinfo)
+ : m_pAnnotHandlerMgr(NULL),
+ m_pActionHandler(NULL),
+ m_pJSRuntime(NULL),
+ m_pInfo(pFFinfo),
+ m_pSDKDoc(NULL),
+ m_pPDFDoc(pDoc),
+ m_pIFormFiller(NULL) {
+ m_pSysHandler = new CFX_SystemHandler(this);
+ m_pJSRuntimeFactory = GetJSRuntimeFactory();
+ m_pJSRuntimeFactory->AddRef();
+}
+
+CPDFDoc_Environment::~CPDFDoc_Environment() {
+ delete m_pIFormFiller;
+ m_pIFormFiller = NULL;
+ if (m_pJSRuntime && m_pJSRuntimeFactory)
+ m_pJSRuntimeFactory->DeleteJSRuntime(m_pJSRuntime);
+ m_pJSRuntimeFactory->Release();
+
+ delete m_pSysHandler;
+ m_pSysHandler = NULL;
+
+ delete m_pAnnotHandlerMgr;
+ m_pAnnotHandlerMgr = NULL;
+ delete m_pActionHandler;
+ m_pActionHandler = NULL;
+}
+
+int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg,
+ const FX_WCHAR* Title,
+ FX_UINT Type,
+ FX_UINT Icon) {
+ if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->app_alert) {
+ CFX_ByteString bsMsg = CFX_WideString(Msg).UTF16LE_Encode();
+ CFX_ByteString bsTitle = CFX_WideString(Title).UTF16LE_Encode();
+ FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength());
+ FPDF_WIDESTRING pTitle =
+ (FPDF_WIDESTRING)bsTitle.GetBuffer(bsTitle.GetLength());
+ int ret = m_pInfo->m_pJsPlatform->app_alert(m_pInfo->m_pJsPlatform, pMsg,
+ pTitle, Type, Icon);
+ bsMsg.ReleaseBuffer();
+ bsTitle.ReleaseBuffer();
+ return ret;
+ }
+ return -1;
+}
+
+int CPDFDoc_Environment::JS_appResponse(const FX_WCHAR* Question,
+ const FX_WCHAR* Title,
+ const FX_WCHAR* Default,
+ const FX_WCHAR* cLabel,
+ FPDF_BOOL bPassword,
+ void* response,
+ int length) {
+ if (m_pInfo && m_pInfo->m_pJsPlatform &&
+ m_pInfo->m_pJsPlatform->app_response) {
+ CFX_ByteString bsQuestion = CFX_WideString(Question).UTF16LE_Encode();
+ CFX_ByteString bsTitle = CFX_WideString(Title).UTF16LE_Encode();
+ CFX_ByteString bsDefault = CFX_WideString(Default).UTF16LE_Encode();
+ CFX_ByteString bsLabel = CFX_WideString(cLabel).UTF16LE_Encode();
+ FPDF_WIDESTRING pQuestion =
+ (FPDF_WIDESTRING)bsQuestion.GetBuffer(bsQuestion.GetLength());
+ FPDF_WIDESTRING pTitle =
+ (FPDF_WIDESTRING)bsTitle.GetBuffer(bsTitle.GetLength());
+ FPDF_WIDESTRING pDefault =
+ (FPDF_WIDESTRING)bsDefault.GetBuffer(bsDefault.GetLength());
+ FPDF_WIDESTRING pLabel =
+ (FPDF_WIDESTRING)bsLabel.GetBuffer(bsLabel.GetLength());
+ int ret = m_pInfo->m_pJsPlatform->app_response(
+ m_pInfo->m_pJsPlatform, pQuestion, pTitle, pDefault, pLabel, bPassword,
+ response, length);
+ bsQuestion.ReleaseBuffer();
+ bsTitle.ReleaseBuffer();
+ bsDefault.ReleaseBuffer();
+ bsLabel.ReleaseBuffer();
+ return ret;
+ }
+ return -1;
+}
+
+CFX_WideString CPDFDoc_Environment::JS_fieldBrowse() {
+ if (!m_pInfo || !m_pInfo->m_pJsPlatform ||
+ !m_pInfo->m_pJsPlatform->Field_browse) {
+ return L"";
+ }
+
+ const int nRequiredLen =
+ m_pInfo->m_pJsPlatform->Field_browse(m_pInfo->m_pJsPlatform, nullptr, 0);
+ if (nRequiredLen <= 0)
+ return L"";
+
+ nonstd::unique_ptr<char[]> pBuff(new char[nRequiredLen]);
+ memset(pBuff.get(), 0, nRequiredLen);
+ const int nActualLen = m_pInfo->m_pJsPlatform->Field_browse(
+ m_pInfo->m_pJsPlatform, pBuff.get(), nRequiredLen);
+ if (nActualLen <= 0 || nActualLen > nRequiredLen)
+ return L"";
+
+ CFX_ByteString bsRet = CFX_ByteString(pBuff.get(), nActualLen);
+ CFX_WideString wsRet = CFX_WideString::FromLocal(bsRet);
+ return wsRet;
+}
+
+CFX_WideString CPDFDoc_Environment::JS_docGetFilePath() {
+ if (!m_pInfo || !m_pInfo->m_pJsPlatform ||
+ !m_pInfo->m_pJsPlatform->Doc_getFilePath) {
+ return L"";
+ }
+
+ const int nRequiredLen = m_pInfo->m_pJsPlatform->Doc_getFilePath(
+ m_pInfo->m_pJsPlatform, nullptr, 0);
+ if (nRequiredLen <= 0)
+ return L"";
+
+ nonstd::unique_ptr<char[]> pBuff(new char[nRequiredLen]);
+ memset(pBuff.get(), 0, nRequiredLen);
+ const int nActualLen = m_pInfo->m_pJsPlatform->Doc_getFilePath(
+ m_pInfo->m_pJsPlatform, pBuff.get(), nRequiredLen);
+ if (nActualLen <= 0 || nActualLen > nRequiredLen)
+ return L"";
+
+ CFX_ByteString bsRet = CFX_ByteString(pBuff.get(), nActualLen);
+ CFX_WideString wsRet = CFX_WideString::FromLocal(bsRet);
+ return wsRet;
+}
+
+void CPDFDoc_Environment::JS_docSubmitForm(void* formData,
+ int length,
+ const FX_WCHAR* URL) {
+ if (m_pInfo && m_pInfo->m_pJsPlatform &&
+ m_pInfo->m_pJsPlatform->Doc_submitForm) {
+ CFX_ByteString bsDestination = CFX_WideString(URL).UTF16LE_Encode();
+ FPDF_WIDESTRING pDestination =
+ (FPDF_WIDESTRING)bsDestination.GetBuffer(bsDestination.GetLength());
+ m_pInfo->m_pJsPlatform->Doc_submitForm(m_pInfo->m_pJsPlatform, formData,
+ length, pDestination);
+ bsDestination.ReleaseBuffer();
+ }
+}
+
+void CPDFDoc_Environment::JS_docmailForm(void* mailData,
+ int length,
+ FPDF_BOOL bUI,
+ const FX_WCHAR* To,
+ const FX_WCHAR* Subject,
+ const FX_WCHAR* CC,
+ const FX_WCHAR* BCC,
+ const FX_WCHAR* Msg) {
+ if (m_pInfo && m_pInfo->m_pJsPlatform && m_pInfo->m_pJsPlatform->Doc_mail) {
+ CFX_ByteString bsTo = CFX_WideString(To).UTF16LE_Encode();
+ CFX_ByteString bsCC = CFX_WideString(Subject).UTF16LE_Encode();
+ CFX_ByteString bsBcc = CFX_WideString(BCC).UTF16LE_Encode();
+ CFX_ByteString bsSubject = CFX_WideString(Subject).UTF16LE_Encode();
+ CFX_ByteString bsMsg = CFX_WideString(Msg).UTF16LE_Encode();
+ FPDF_WIDESTRING pTo = (FPDF_WIDESTRING)bsTo.GetBuffer(bsTo.GetLength());
+ FPDF_WIDESTRING pCC = (FPDF_WIDESTRING)bsCC.GetBuffer(bsCC.GetLength());
+ FPDF_WIDESTRING pBcc = (FPDF_WIDESTRING)bsBcc.GetBuffer(bsBcc.GetLength());
+ FPDF_WIDESTRING pSubject =
+ (FPDF_WIDESTRING)bsSubject.GetBuffer(bsSubject.GetLength());
+ FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength());
+ m_pInfo->m_pJsPlatform->Doc_mail(m_pInfo->m_pJsPlatform, mailData, length,
+ bUI, pTo, pSubject, pCC, pBcc, pMsg);
+ bsTo.ReleaseBuffer();
+ bsCC.ReleaseBuffer();
+ bsBcc.ReleaseBuffer();
+ bsSubject.ReleaseBuffer();
+ bsMsg.ReleaseBuffer();
+ }
+}
+
+IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime() {
+ if (!IsJSInitiated())
+ return NULL;
+ if (!m_pJSRuntime)
+ m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this);
+ return m_pJSRuntime;
}
-IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime()
-{
- if (!IsJSInitiated())
- return NULL;
- if (!m_pJSRuntime)
- m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this);
- return m_pJSRuntime;
-}
-
-CPDFSDK_AnnotHandlerMgr* CPDFDoc_Environment::GetAnnotHandlerMgr()
-{
- if (!m_pAnnotHandlerMgr)
- m_pAnnotHandlerMgr = new CPDFSDK_AnnotHandlerMgr(this);
- return m_pAnnotHandlerMgr;
+CPDFSDK_AnnotHandlerMgr* CPDFDoc_Environment::GetAnnotHandlerMgr() {
+ if (!m_pAnnotHandlerMgr)
+ m_pAnnotHandlerMgr = new CPDFSDK_AnnotHandlerMgr(this);
+ return m_pAnnotHandlerMgr;
}
-CPDFSDK_ActionHandler* CPDFDoc_Environment::GetActionHander()
-{
- if (!m_pActionHandler)
- m_pActionHandler = new CPDFSDK_ActionHandler(this);
- return m_pActionHandler;
+CPDFSDK_ActionHandler* CPDFDoc_Environment::GetActionHander() {
+ if (!m_pActionHandler)
+ m_pActionHandler = new CPDFSDK_ActionHandler(this);
+ return m_pActionHandler;
}
-CFFL_IFormFiller* CPDFDoc_Environment::GetIFormFiller()
-{
- if (!m_pIFormFiller)
- m_pIFormFiller = new CFFL_IFormFiller(this);
- return m_pIFormFiller;
+CFFL_IFormFiller* CPDFDoc_Environment::GetIFormFiller() {
+ if (!m_pIFormFiller)
+ m_pIFormFiller = new CFFL_IFormFiller(this);
+ return m_pIFormFiller;
}
-CPDFSDK_Document::CPDFSDK_Document(CPDF_Document* pDoc,CPDFDoc_Environment* pEnv) :
- m_pDoc(pDoc),
- m_pInterForm(nullptr),
- m_pFocusAnnot(nullptr),
- m_pEnv(pEnv),
- m_pOccontent(nullptr),
- m_bChangeMask(FALSE)
-{
-}
+CPDFSDK_Document::CPDFSDK_Document(CPDF_Document* pDoc,
+ CPDFDoc_Environment* pEnv)
+ : m_pDoc(pDoc),
+ m_pInterForm(nullptr),
+ m_pFocusAnnot(nullptr),
+ m_pEnv(pEnv),
+ m_pOccontent(nullptr),
+ m_bChangeMask(FALSE) {}
-CPDFSDK_Document::~CPDFSDK_Document()
-{
- for (auto& it : m_pageMap)
- delete it.second;
- m_pageMap.clear();
+CPDFSDK_Document::~CPDFSDK_Document() {
+ for (auto& it : m_pageMap)
+ delete it.second;
+ m_pageMap.clear();
- delete m_pInterForm;
- m_pInterForm = nullptr;
+ delete m_pInterForm;
+ m_pInterForm = nullptr;
- delete m_pOccontent;
- m_pOccontent = nullptr;
+ delete m_pOccontent;
+ m_pOccontent = nullptr;
}
-CPDFSDK_PageView* CPDFSDK_Document::GetPageView(CPDF_Page* pPDFPage, FX_BOOL ReNew)
-{
- auto it = m_pageMap.find(pPDFPage);
- if (it != m_pageMap.end())
- return it->second;
+CPDFSDK_PageView* CPDFSDK_Document::GetPageView(CPDF_Page* pPDFPage,
+ FX_BOOL ReNew) {
+ auto it = m_pageMap.find(pPDFPage);
+ if (it != m_pageMap.end())
+ return it->second;
- if (!ReNew)
- return nullptr;
+ if (!ReNew)
+ return nullptr;
- CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pPDFPage);
- m_pageMap[pPDFPage] = pPageView;
- // Delay to load all the annotations, to avoid endless loop.
- pPageView->LoadFXAnnots();
- return pPageView;
+ CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pPDFPage);
+ m_pageMap[pPDFPage] = pPageView;
+ // Delay to load all the annotations, to avoid endless loop.
+ pPageView->LoadFXAnnots();
+ return pPageView;
}
-CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView()
-{
- CPDF_Page* pPage = (CPDF_Page*)m_pEnv->FFI_GetCurrentPage(m_pDoc);
- return pPage ? GetPageView(pPage, TRUE) : nullptr;
+CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() {
+ CPDF_Page* pPage = (CPDF_Page*)m_pEnv->FFI_GetCurrentPage(m_pDoc);
+ return pPage ? GetPageView(pPage, TRUE) : nullptr;
}
-CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex)
-{
- CPDF_Page* pTempPage = (CPDF_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex);
- if (!pTempPage)
- return nullptr;
+CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex) {
+ CPDF_Page* pTempPage = (CPDF_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex);
+ if (!pTempPage)
+ return nullptr;
- auto it = m_pageMap.find(pTempPage);
- return it->second;
+ auto it = m_pageMap.find(pTempPage);
+ return it->second;
}
-void CPDFSDK_Document:: ProcJavascriptFun()
-{
- CPDF_Document* pPDFDoc = GetDocument();
- CPDF_DocJSActions docJS(pPDFDoc);
- int iCount = docJS.CountJSActions();
- if (iCount < 1) return;
- for (int i = 0; i < iCount; i ++)
- {
- CFX_ByteString csJSName;
- CPDF_Action jsAction = docJS.GetJSAction(i, csJSName);
- if(m_pEnv->GetActionHander())
- m_pEnv->GetActionHander()->DoAction_JavaScript(jsAction,CFX_WideString::FromLocal(csJSName),this);
- }
-
+void CPDFSDK_Document::ProcJavascriptFun() {
+ CPDF_Document* pPDFDoc = GetDocument();
+ CPDF_DocJSActions docJS(pPDFDoc);
+ int iCount = docJS.CountJSActions();
+ if (iCount < 1)
+ return;
+ for (int i = 0; i < iCount; i++) {
+ CFX_ByteString csJSName;
+ CPDF_Action jsAction = docJS.GetJSAction(i, csJSName);
+ if (m_pEnv->GetActionHander())
+ m_pEnv->GetActionHander()->DoAction_JavaScript(
+ jsAction, CFX_WideString::FromLocal(csJSName), this);
+ }
}
-FX_BOOL CPDFSDK_Document::ProcOpenAction()
-{
- if(!m_pDoc)
- return FALSE;
+FX_BOOL CPDFSDK_Document::ProcOpenAction() {
+ if (!m_pDoc)
+ return FALSE;
- CPDF_Dictionary* pRoot = m_pDoc->GetRoot();
- if (!pRoot)
- return FALSE;
+ CPDF_Dictionary* pRoot = m_pDoc->GetRoot();
+ if (!pRoot)
+ return FALSE;
- CPDF_Object* pOpenAction = pRoot->GetDict("OpenAction");
- if(!pOpenAction)
- pOpenAction = pRoot->GetArray("OpenAction");
+ CPDF_Object* pOpenAction = pRoot->GetDict("OpenAction");
+ if (!pOpenAction)
+ pOpenAction = pRoot->GetArray("OpenAction");
- if(!pOpenAction)
- return FALSE;
+ if (!pOpenAction)
+ return FALSE;
- if(pOpenAction->GetType()==PDFOBJ_ARRAY)
- return TRUE;
+ if (pOpenAction->GetType() == PDFOBJ_ARRAY)
+ return TRUE;
- if(pOpenAction->GetType()==PDFOBJ_DICTIONARY)
- {
- CPDF_Dictionary * pDict=(CPDF_Dictionary*)pOpenAction;
- CPDF_Action action(pDict);
- if(m_pEnv->GetActionHander())
- m_pEnv->GetActionHander()->DoAction_DocOpen(action, this);
- return TRUE;
- }
- return FALSE;
+ if (pOpenAction->GetType() == PDFOBJ_DICTIONARY) {
+ CPDF_Dictionary* pDict = (CPDF_Dictionary*)pOpenAction;
+ CPDF_Action action(pDict);
+ if (m_pEnv->GetActionHander())
+ m_pEnv->GetActionHander()->DoAction_DocOpen(action, this);
+ return TRUE;
+ }
+ return FALSE;
}
-CPDF_OCContext* CPDFSDK_Document::GetOCContext()
-{
- if(!m_pOccontent)
- m_pOccontent = new CPDF_OCContext(m_pDoc);
- return m_pOccontent;
+CPDF_OCContext* CPDFSDK_Document::GetOCContext() {
+ if (!m_pOccontent)
+ m_pOccontent = new CPDF_OCContext(m_pDoc);
+ return m_pOccontent;
}
-void CPDFSDK_Document::ReMovePageView(CPDF_Page* pPDFPage)
-{
- auto it = m_pageMap.find(pPDFPage);
- if (it == m_pageMap.end())
- return;
+void CPDFSDK_Document::ReMovePageView(CPDF_Page* pPDFPage) {
+ auto it = m_pageMap.find(pPDFPage);
+ if (it == m_pageMap.end())
+ return;
- CPDFSDK_PageView* pPageView = it->second;
- if (pPageView->IsLocked())
- return;
+ CPDFSDK_PageView* pPageView = it->second;
+ if (pPageView->IsLocked())
+ return;
- delete pPageView;
- m_pageMap.erase(it);
+ delete pPageView;
+ m_pageMap.erase(it);
}
-CPDF_Page * CPDFSDK_Document::GetPage(int nIndex)
-{
- CPDF_Page * pTempPage = (CPDF_Page*)m_pEnv->FFI_GetPage(m_pDoc,nIndex);
- if(!pTempPage)
- return NULL;
- return pTempPage;
+CPDF_Page* CPDFSDK_Document::GetPage(int nIndex) {
+ CPDF_Page* pTempPage = (CPDF_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex);
+ if (!pTempPage)
+ return NULL;
+ return pTempPage;
}
-CPDFSDK_InterForm* CPDFSDK_Document::GetInterForm()
-{
- if(!m_pInterForm)
- m_pInterForm = new CPDFSDK_InterForm(this);
- return m_pInterForm;
+CPDFSDK_InterForm* CPDFSDK_Document::GetInterForm() {
+ if (!m_pInterForm)
+ m_pInterForm = new CPDFSDK_InterForm(this);
+ return m_pInterForm;
}
-void CPDFSDK_Document::UpdateAllViews(CPDFSDK_PageView* pSender, CPDFSDK_Annot* pAnnot)
-{
- for (const auto& it : m_pageMap) {
- CPDFSDK_PageView* pPageView = it.second;
- if (pPageView != pSender) {
- pPageView->UpdateView(pAnnot);
- }
+void CPDFSDK_Document::UpdateAllViews(CPDFSDK_PageView* pSender,
+ CPDFSDK_Annot* pAnnot) {
+ for (const auto& it : m_pageMap) {
+ CPDFSDK_PageView* pPageView = it.second;
+ if (pPageView != pSender) {
+ pPageView->UpdateView(pAnnot);
}
+ }
}
-CPDFSDK_Annot* CPDFSDK_Document::GetFocusAnnot()
-{
- return m_pFocusAnnot;
+CPDFSDK_Annot* CPDFSDK_Document::GetFocusAnnot() {
+ return m_pFocusAnnot;
}
-FX_BOOL CPDFSDK_Document::SetFocusAnnot(CPDFSDK_Annot* pAnnot,FX_UINT nFlag)
-{
+FX_BOOL CPDFSDK_Document::SetFocusAnnot(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) {
+ if (m_pFocusAnnot == pAnnot)
+ return TRUE;
- if(m_pFocusAnnot==pAnnot) return TRUE;
+ if (m_pFocusAnnot) {
+ if (!KillFocusAnnot(nFlag))
+ return FALSE;
+ }
+ CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
+ if (pAnnot && pPageView->IsValid()) {
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandler = m_pEnv->GetAnnotHandlerMgr();
- if(m_pFocusAnnot)
- {
- if(!KillFocusAnnot(nFlag) ) return FALSE;
+ if (pAnnotHandler && !m_pFocusAnnot) {
+ if (!pAnnotHandler->Annot_OnSetFocus(pAnnot, nFlag))
+ return FALSE;
+ if (!m_pFocusAnnot) {
+ m_pFocusAnnot = pAnnot;
+ return TRUE;
+ }
}
- CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
- if(pAnnot && pPageView->IsValid())
- {
- CPDFSDK_AnnotHandlerMgr *pAnnotHandler=m_pEnv->GetAnnotHandlerMgr();
-
- if(pAnnotHandler&&!m_pFocusAnnot)
- {
- if (!pAnnotHandler->Annot_OnSetFocus(pAnnot,nFlag))
- return FALSE;
- if(!m_pFocusAnnot)
- {
- m_pFocusAnnot=pAnnot;
- return TRUE;
- }
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_Document::KillFocusAnnot(FX_UINT nFlag) {
+ if (m_pFocusAnnot) {
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandler = m_pEnv->GetAnnotHandlerMgr();
+ if (pAnnotHandler) {
+ CPDFSDK_Annot* pFocusAnnot = m_pFocusAnnot;
+ m_pFocusAnnot = NULL;
+ if (pAnnotHandler->Annot_OnKillFocus(pFocusAnnot, nFlag)) {
+ if (pFocusAnnot->GetType() == FX_BSTRC("Widget")) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pFocusAnnot;
+ int nFieldType = pWidget->GetFieldType();
+ if (FIELDTYPE_TEXTFIELD == nFieldType ||
+ FIELDTYPE_COMBOBOX == nFieldType)
+ m_pEnv->FFI_OnSetFieldInputFocus(NULL, NULL, 0, FALSE);
}
- }
- return FALSE;
-}
-FX_BOOL CPDFSDK_Document::KillFocusAnnot(FX_UINT nFlag)
-{
- if(m_pFocusAnnot)
- {
- CPDFSDK_AnnotHandlerMgr *pAnnotHandler=m_pEnv->GetAnnotHandlerMgr();
- if(pAnnotHandler)
- {
- CPDFSDK_Annot* pFocusAnnot = m_pFocusAnnot;
- m_pFocusAnnot = NULL;
- if(pAnnotHandler->Annot_OnKillFocus(pFocusAnnot, nFlag))
- {
-
- if(pFocusAnnot->GetType() == FX_BSTRC("Widget"))
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pFocusAnnot;
- int nFieldType = pWidget->GetFieldType();
- if(FIELDTYPE_TEXTFIELD == nFieldType || FIELDTYPE_COMBOBOX == nFieldType)
- m_pEnv->FFI_OnSetFieldInputFocus(NULL, NULL, 0, FALSE);
- }
-
- if(!m_pFocusAnnot)
- return TRUE;
- }
- else
- {
- m_pFocusAnnot = pFocusAnnot;
- }
- }
+ if (!m_pFocusAnnot)
+ return TRUE;
+ } else {
+ m_pFocusAnnot = pFocusAnnot;
+ }
}
- return FALSE;
+ }
+ return FALSE;
}
-void CPDFSDK_Document::OnCloseDocument()
-{
- KillFocusAnnot();
+void CPDFSDK_Document::OnCloseDocument() {
+ KillFocusAnnot();
}
-FX_BOOL CPDFSDK_Document::GetPermissions(int nFlag)
-{
- FX_DWORD dwPermissions = m_pDoc->GetUserPermissions();
- return dwPermissions&nFlag;
+FX_BOOL CPDFSDK_Document::GetPermissions(int nFlag) {
+ FX_DWORD dwPermissions = m_pDoc->GetUserPermissions();
+ return dwPermissions & nFlag;
}
-IFXJS_Runtime * CPDFSDK_Document::GetJsRuntime()
-{
- ASSERT(m_pEnv!=NULL);
- return m_pEnv->GetJSRuntime();
+IFXJS_Runtime* CPDFSDK_Document::GetJsRuntime() {
+ ASSERT(m_pEnv != NULL);
+ return m_pEnv->GetJSRuntime();
}
-CFX_WideString CPDFSDK_Document::GetPath()
-{
- ASSERT(m_pEnv != NULL);
- return m_pEnv->JS_docGetFilePath();
+CFX_WideString CPDFSDK_Document::GetPath() {
+ ASSERT(m_pEnv != NULL);
+ return m_pEnv->JS_docGetFilePath();
}
+CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc, CPDF_Page* page)
+ : m_page(page), m_pSDKDoc(pSDKDoc) {
+ CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm();
+ if (pInterForm) {
+ CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
+ pPDFInterForm->FixPageFields(page);
+ }
+ m_page->SetPrivateData((void*)m_page, (void*)this, NULL);
+ m_fxAnnotArray.RemoveAll();
-CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc,CPDF_Page* page):m_page(page),m_pSDKDoc(pSDKDoc)
-{
- CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm();
- if(pInterForm)
- {
- CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
- pPDFInterForm->FixPageFields(page);
- }
- m_page->SetPrivateData((void*)m_page, (void*)this, NULL);
- m_fxAnnotArray.RemoveAll();
-
- m_bEnterWidget = FALSE;
- m_bExitWidget = FALSE;
- m_bOnWidget = FALSE;
- m_CaptureWidget = NULL;
- m_bValid = FALSE;
- m_bLocked = FALSE;
- m_bTakeOverPage = FALSE;
+ m_bEnterWidget = FALSE;
+ m_bExitWidget = FALSE;
+ m_bOnWidget = FALSE;
+ m_CaptureWidget = NULL;
+ m_bValid = FALSE;
+ m_bLocked = FALSE;
+ m_bTakeOverPage = FALSE;
}
-CPDFSDK_PageView::~CPDFSDK_PageView()
-{
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- int nAnnotCount = m_fxAnnotArray.GetSize();
-
- for (int i=0; i<nAnnotCount; i++)
- {
- CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
- //if there is a focused annot on the page, we should kill the focus first.
- if(pAnnot == m_pSDKDoc->GetFocusAnnot())
- KillFocusAnnot();
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
- pAnnotHandlerMgr->ReleaseAnnot(pAnnot);
- }
- m_fxAnnotArray.RemoveAll();
-
- delete m_pAnnotList;
- m_pAnnotList = NULL;
+CPDFSDK_PageView::~CPDFSDK_PageView() {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ int nAnnotCount = m_fxAnnotArray.GetSize();
- m_page->RemovePrivateData((void*)m_page);
- if(m_bTakeOverPage) {
- delete m_page;
- }
-}
+ for (int i = 0; i < nAnnotCount; i++) {
+ CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
+ // if there is a focused annot on the page, we should kill the focus first.
+ if (pAnnot == m_pSDKDoc->GetFocusAnnot())
+ KillFocusAnnot();
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
+ pAnnotHandlerMgr->ReleaseAnnot(pAnnot);
+ }
+ m_fxAnnotArray.RemoveAll();
-void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,CPDF_RenderOptions* pOptions)
-{
- m_curMatrix = *pUser2Device;
+ delete m_pAnnotList;
+ m_pAnnotList = NULL;
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotIterator annotIterator(this, TRUE);
- CPDFSDK_Annot* pSDKAnnot = nullptr;
- int index = -1;
- while ((pSDKAnnot = annotIterator.Next(index))) {
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
- pAnnotHandlerMgr->Annot_OnDraw(
- this, pSDKAnnot, pDevice, pUser2Device, 0);
- }
+ m_page->RemovePrivateData((void*)m_page);
+ if (m_bTakeOverPage) {
+ delete m_page;
+ }
}
-CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY)
-{
+void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ CPDF_RenderOptions* pOptions) {
+ m_curMatrix = *pUser2Device;
- int nCount = m_pAnnotList->Count();
- for(int i = 0 ; i<nCount; i++)
- {
- CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
- CFX_FloatRect annotRect;
- pAnnot->GetRect(annotRect);
- if(annotRect.Contains(pageX, pageY))
- return pAnnot;
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ CPDFSDK_AnnotIterator annotIterator(this, TRUE);
+ CPDFSDK_Annot* pSDKAnnot = nullptr;
+ int index = -1;
+ while ((pSDKAnnot = annotIterator.Next(index))) {
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
+ pAnnotHandlerMgr->Annot_OnDraw(this, pSDKAnnot, pDevice, pUser2Device, 0);
+ }
+}
+
+CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
+ FX_FLOAT pageY) {
+ int nCount = m_pAnnotList->Count();
+ for (int i = 0; i < nCount; i++) {
+ CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
+ CFX_FloatRect annotRect;
+ pAnnot->GetRect(annotRect);
+ if (annotRect.Contains(pageX, pageY))
+ return pAnnot;
+ }
+ return NULL;
+}
+
+CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX,
+ FX_FLOAT pageY) {
+ int nCount = m_pAnnotList->Count();
+ for (int i = 0; i < nCount; i++) {
+ CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
+ if (pAnnot->GetSubType() == "Widget") {
+ CFX_FloatRect annotRect;
+ pAnnot->GetRect(annotRect);
+ if (annotRect.Contains(pageX, pageY))
+ return pAnnot;
}
- return NULL;
-}
+ }
+ return NULL;
+}
+
+CPDFSDK_Annot* CPDFSDK_PageView::GetFXAnnotAtPoint(FX_FLOAT pageX,
+ FX_FLOAT pageY) {
+ CPDFSDK_AnnotIterator annotIterator(this, FALSE);
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
+ CPDFSDK_Annot* pSDKAnnot = NULL;
+ int index = -1;
+ while ((pSDKAnnot = annotIterator.Next(index))) {
+ CPDF_Rect rc = pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
+ if (rc.Contains(pageX, pageY))
+ return pSDKAnnot;
+ }
+
+ return NULL;
+}
+
+CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX,
+ FX_FLOAT pageY) {
+ CPDFSDK_AnnotIterator annotIterator(this, FALSE);
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
+ CPDFSDK_Annot* pSDKAnnot = NULL;
+ int index = -1;
+ while ((pSDKAnnot = annotIterator.Next(index))) {
+ if (pSDKAnnot->GetType() == "Widget") {
+ pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
+ CPDF_Point point(pageX, pageY);
+ if (pAnnotMgr->Annot_OnHitTest(this, pSDKAnnot, point))
+ return pSDKAnnot;
+ }
+ }
-CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX, FX_FLOAT pageY)
-{
+ return NULL;
+}
- int nCount = m_pAnnotList->Count();
- for(int i = 0 ; i<nCount; i++)
- {
- CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
- if(pAnnot->GetSubType() == "Widget")
- {
- CFX_FloatRect annotRect;
- pAnnot->GetRect(annotRect);
- if(annotRect.Contains(pageX, pageY))
- return pAnnot;
- }
- }
- return NULL;
+FX_BOOL CPDFSDK_PageView::Annot_HasAppearance(CPDF_Annot* pAnnot) {
+ CPDF_Dictionary* pAnnotDic = pAnnot->GetAnnotDict();
+ if (pAnnotDic)
+ return pAnnotDic->KeyExist("AS");
+ return FALSE;
}
-CPDFSDK_Annot* CPDFSDK_PageView::GetFXAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY)
-{
+CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Annot* pPDFAnnot) {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ ASSERT(pEnv);
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandler = pEnv->GetAnnotHandlerMgr();
- CPDFSDK_AnnotIterator annotIterator(this, FALSE);
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
- CPDFSDK_Annot* pSDKAnnot = NULL;
- int index = -1;
- while((pSDKAnnot = annotIterator.Next(index)))
- {
- CPDF_Rect rc = pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
- if(rc.Contains(pageX, pageY))
- return pSDKAnnot;
- }
+ CPDFSDK_Annot* pSDKAnnot = NULL;
+ if (pAnnotHandler) {
+ pSDKAnnot = pAnnotHandler->NewAnnot(pPDFAnnot, this);
+ }
+ if (!pSDKAnnot)
return NULL;
-}
-CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX, FX_FLOAT pageY)
-{
+ m_fxAnnotArray.Add(pSDKAnnot);
- CPDFSDK_AnnotIterator annotIterator(this, FALSE);
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
- CPDFSDK_Annot* pSDKAnnot = NULL;
- int index = -1;
- while((pSDKAnnot = annotIterator.Next(index)))
- {
- if(pSDKAnnot->GetType() == "Widget")
- {
- pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
- CPDF_Point point(pageX, pageY);
- if (pAnnotMgr->Annot_OnHitTest(this, pSDKAnnot, point))
- return pSDKAnnot;
- }
- }
+ if (pAnnotHandler) {
+ pAnnotHandler->Annot_OnCreate(pSDKAnnot);
+ }
- return NULL;
+ return pSDKAnnot;
}
-
-FX_BOOL CPDFSDK_PageView::Annot_HasAppearance(CPDF_Annot* pAnnot)
-{
- CPDF_Dictionary* pAnnotDic = pAnnot->GetAnnotDict();
- if(pAnnotDic)
- return pAnnotDic->KeyExist("AS");
- return FALSE;
+CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Dictionary* pDict) {
+ return pDict ? AddAnnot(pDict->GetString("Subtype"), pDict) : nullptr;
}
-CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Annot * pPDFAnnot)
-{
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- ASSERT(pEnv);
- CPDFSDK_AnnotHandlerMgr * pAnnotHandler= pEnv->GetAnnotHandlerMgr();
-
- CPDFSDK_Annot* pSDKAnnot =NULL;
-
- if(pAnnotHandler)
- {
- pSDKAnnot = pAnnotHandler->NewAnnot(pPDFAnnot, this);
- }
- if(!pSDKAnnot)
- return NULL;
-
- m_fxAnnotArray.Add(pSDKAnnot);
-
- if(pAnnotHandler)
- {
- pAnnotHandler->Annot_OnCreate(pSDKAnnot);
-
- }
-
- return pSDKAnnot;
+CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(const FX_CHAR* lpSubType,
+ CPDF_Dictionary* pDict) {
+ return NULL;
}
-CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Dictionary * pDict)
-{
- return pDict ? AddAnnot(pDict->GetString("Subtype"), pDict) : nullptr;
+FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) {
+ return FALSE;
}
-CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(const FX_CHAR* lpSubType,CPDF_Dictionary * pDict)
-{
- return NULL;
+CPDF_Document* CPDFSDK_PageView::GetPDFDocument() {
+ if (m_page) {
+ return m_page->m_pDocument;
+ }
+ return NULL;
}
-FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot)
-{
- return FALSE;
+int CPDFSDK_PageView::CountAnnots() {
+ return m_pAnnotList->Count();
}
-CPDF_Document* CPDFSDK_PageView::GetPDFDocument()
-{
- if(m_page)
- {
- return m_page->m_pDocument;
- }
+CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(int nIndex) {
+ int nCount = m_fxAnnotArray.GetSize();
+ if (nIndex < 0 || nIndex >= nCount) {
return NULL;
-}
+ }
-int CPDFSDK_PageView::CountAnnots()
-{
- return m_pAnnotList->Count();
+ return (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(nIndex);
}
-CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(int nIndex)
-{
- int nCount = m_fxAnnotArray.GetSize();
- if ( nIndex < 0 || nIndex >= nCount )
- {
- return NULL;
- }
-
- return (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(nIndex);
+CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary* pDict) {
+ int nCount = m_fxAnnotArray.GetSize();
+ for (int i = 0; i < nCount; i++) {
+ CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
+ if (pDict == pAnnot->GetPDFAnnot()->GetAnnotDict())
+ return pAnnot;
+ }
+ return NULL;
}
-CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary * pDict)
-{
- int nCount = m_fxAnnotArray.GetSize();
- for(int i=0; i<nCount; i++)
- {
- CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
- if (pDict == pAnnot->GetPDFAnnot()->GetAnnotDict())
- return pAnnot;
- }
- return NULL;
-}
+FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CPDF_Point& point,
+ FX_UINT nFlag) {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ ASSERT(pEnv);
+ CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y);
+ if (!pFXAnnot) {
+ KillFocusAnnot(nFlag);
+ } else {
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
-FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CPDF_Point & point, FX_UINT nFlag)
-{
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- ASSERT(pEnv);
- CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y);
- if(!pFXAnnot)
- {
- KillFocusAnnot(nFlag);
+ FX_BOOL bRet =
+ pAnnotHandlerMgr->Annot_OnLButtonDown(this, pFXAnnot, nFlag, point);
+ if (bRet) {
+ SetFocusAnnot(pFXAnnot);
}
- else
- {
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
-
- FX_BOOL bRet = pAnnotHandlerMgr->Annot_OnLButtonDown(this, pFXAnnot, nFlag,point);
- if(bRet)
- {
- SetFocusAnnot(pFXAnnot);
- }
- return bRet;
+ return bRet;
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDFSDK_PageView::OnLButtonUp(const CPDF_Point& point, FX_UINT nFlag) {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ ASSERT(pEnv);
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
+ CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y);
+ CPDFSDK_Annot* pFocusAnnot = GetFocusAnnot();
+ FX_BOOL bRet = FALSE;
+ if (pFocusAnnot && pFocusAnnot != pFXAnnot) {
+ // Last focus Annot gets a chance to handle the event.
+ bRet = pAnnotHandlerMgr->Annot_OnLButtonUp(this, pFocusAnnot, nFlag, point);
+ }
+ if (pFXAnnot && !bRet) {
+ bRet = pAnnotHandlerMgr->Annot_OnLButtonUp(this, pFXAnnot, nFlag, point);
+ return bRet;
+ }
+ return bRet;
+}
+
+FX_BOOL CPDFSDK_PageView::OnMouseMove(const CPDF_Point& point, int nFlag) {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
+ if (CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y)) {
+ if (m_CaptureWidget && m_CaptureWidget != pFXAnnot) {
+ m_bExitWidget = TRUE;
+ m_bEnterWidget = FALSE;
+ pAnnotHandlerMgr->Annot_OnMouseExit(this, m_CaptureWidget, nFlag);
}
- return FALSE;
+ m_CaptureWidget = (CPDFSDK_Widget*)pFXAnnot;
+ m_bOnWidget = TRUE;
+ if (!m_bEnterWidget) {
+ m_bEnterWidget = TRUE;
+ m_bExitWidget = FALSE;
+ pAnnotHandlerMgr->Annot_OnMouseEnter(this, pFXAnnot, nFlag);
+ }
+ pAnnotHandlerMgr->Annot_OnMouseMove(this, pFXAnnot, nFlag, point);
+ return TRUE;
+ }
+ if (m_bOnWidget) {
+ m_bOnWidget = FALSE;
+ m_bExitWidget = TRUE;
+ m_bEnterWidget = FALSE;
+ if (m_CaptureWidget) {
+ pAnnotHandlerMgr->Annot_OnMouseExit(this, m_CaptureWidget, nFlag);
+ m_CaptureWidget = NULL;
+ }
+ }
+ return FALSE;
}
-
-FX_BOOL CPDFSDK_PageView::OnLButtonUp(const CPDF_Point & point, FX_UINT nFlag)
-{
+FX_BOOL CPDFSDK_PageView::OnMouseWheel(double deltaX,
+ double deltaY,
+ const CPDF_Point& point,
+ int nFlag) {
+ if (CPDFSDK_Annot* pAnnot = GetFXWidgetAtPoint(point.x, point.y)) {
CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- ASSERT(pEnv);
CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
ASSERT(pAnnotHandlerMgr);
- CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y);
- CPDFSDK_Annot* pFocusAnnot = GetFocusAnnot();
- FX_BOOL bRet = FALSE;
- if(pFocusAnnot && pFocusAnnot != pFXAnnot)
- {
- //Last focus Annot gets a chance to handle the event.
- bRet = pAnnotHandlerMgr->Annot_OnLButtonUp(this, pFocusAnnot, nFlag,point);
- }
- if(pFXAnnot && !bRet)
- {
- bRet = pAnnotHandlerMgr->Annot_OnLButtonUp(this, pFXAnnot, nFlag,point);
- return bRet;
- }
- return bRet;
+ return pAnnotHandlerMgr->Annot_OnMouseWheel(this, pAnnot, nFlag,
+ (int)deltaY, point);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_PageView::OnMouseMove(const CPDF_Point & point, int nFlag)
-{
-
+FX_BOOL CPDFSDK_PageView::OnChar(int nChar, FX_UINT nFlag) {
+ if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
ASSERT(pAnnotHandlerMgr);
- if(CPDFSDK_Annot* pFXAnnot = GetFXWidgetAtPoint(point.x, point.y))
- {
- if(m_CaptureWidget && m_CaptureWidget != pFXAnnot)
- {
- m_bExitWidget = TRUE;
- m_bEnterWidget = FALSE;
- pAnnotHandlerMgr->Annot_OnMouseExit(this, m_CaptureWidget, nFlag);
- }
- m_CaptureWidget = (CPDFSDK_Widget*)pFXAnnot;
- m_bOnWidget = TRUE;
- if(!m_bEnterWidget)
- {
- m_bEnterWidget = TRUE;
- m_bExitWidget = FALSE;
- pAnnotHandlerMgr->Annot_OnMouseEnter(this, pFXAnnot,nFlag);
- }
- pAnnotHandlerMgr->Annot_OnMouseMove(this, pFXAnnot, nFlag, point);
- return TRUE;
- }
- if(m_bOnWidget)
- {
- m_bOnWidget = FALSE;
- m_bExitWidget = TRUE;
- m_bEnterWidget = FALSE;
- if(m_CaptureWidget)
- {
- pAnnotHandlerMgr->Annot_OnMouseExit(this, m_CaptureWidget, nFlag);
- m_CaptureWidget = NULL;
- }
- }
- return FALSE;
-}
-
-FX_BOOL CPDFSDK_PageView::OnMouseWheel(double deltaX, double deltaY,const CPDF_Point& point, int nFlag)
-{
- if(CPDFSDK_Annot* pAnnot = GetFXWidgetAtPoint(point.x, point.y))
- {
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
- return pAnnotHandlerMgr->Annot_OnMouseWheel(this, pAnnot, nFlag, (int)deltaY, point);
- }
- return FALSE;
+ return pAnnotHandlerMgr->Annot_OnChar(pAnnot, nChar, nFlag);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_PageView::OnChar(int nChar, FX_UINT nFlag)
-{
- if(CPDFSDK_Annot* pAnnot = GetFocusAnnot())
- {
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
- return pAnnotHandlerMgr->Annot_OnChar(pAnnot, nChar, nFlag);
- }
-
- return FALSE;
+FX_BOOL CPDFSDK_PageView::OnKeyDown(int nKeyCode, int nFlag) {
+ if (CPDFSDK_Annot* pAnnot = GetFocusAnnot()) {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr);
+ return pAnnotHandlerMgr->Annot_OnKeyDown(pAnnot, nKeyCode, nFlag);
+ }
+ return FALSE;
}
-FX_BOOL CPDFSDK_PageView::OnKeyDown(int nKeyCode, int nFlag)
-{
- if(CPDFSDK_Annot* pAnnot = GetFocusAnnot())
- {
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr);
- return pAnnotHandlerMgr->Annot_OnKeyDown(pAnnot, nKeyCode, nFlag);
- }
- return FALSE;
+FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag) {
+ // if(CPDFSDK_Annot* pAnnot = GetFocusAnnot())
+ // {
+ // CFFL_IFormFiller* pIFormFiller = g_pFormFillApp->GetIFormFiller();
+ // return pIFormFiller->OnKeyUp(pAnnot, nKeyCode, nFlag);
+ // }
+ return FALSE;
}
-FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag)
-{
-// if(CPDFSDK_Annot* pAnnot = GetFocusAnnot())
-// {
-// CFFL_IFormFiller* pIFormFiller = g_pFormFillApp->GetIFormFiller();
-// return pIFormFiller->OnKeyUp(pAnnot, nKeyCode, nFlag);
-// }
- return FALSE;
-}
+extern void CheckUnSupportAnnot(CPDF_Document* pDoc, CPDF_Annot* pPDFAnnot);
-extern void CheckUnSupportAnnot(CPDF_Document * pDoc, CPDF_Annot* pPDFAnnot);
+void CPDFSDK_PageView::LoadFXAnnots() {
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
-void CPDFSDK_PageView::LoadFXAnnots()
-{
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled();
+ // Disable the default AP construction.
+ CPDF_InterForm::EnableUpdateAP(FALSE);
+ m_pAnnotList = new CPDF_AnnotList(m_page);
+ CPDF_InterForm::EnableUpdateAP(enableAPUpdate);
+ int nCount = m_pAnnotList->Count();
+ SetLock(TRUE);
+ for (int i = 0; i < nCount; i++) {
+ CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);
+ CPDF_Document* pDoc = GetPDFDocument();
- FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled();
- //Disable the default AP construction.
- CPDF_InterForm::EnableUpdateAP(FALSE);
- m_pAnnotList = new CPDF_AnnotList(m_page);
- CPDF_InterForm::EnableUpdateAP(enableAPUpdate);
- int nCount = m_pAnnotList->Count();
- SetLock(TRUE);
- for(int i=0; i<nCount; i++)
- {
- CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);
- CPDF_Document * pDoc = GetPDFDocument();
-
- CheckUnSupportAnnot(pDoc, pPDFAnnot);
-
- CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
- ASSERT(pAnnotHandlerMgr != NULL);
-
- if(pAnnotHandlerMgr)
- {
- CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
- if(!pAnnot)
- continue;
- m_fxAnnotArray.Add(pAnnot);
-
- pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
- }
+ CheckUnSupportAnnot(pDoc, pPDFAnnot);
- }
- SetLock(FALSE);
-}
+ CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
+ ASSERT(pAnnotHandlerMgr != NULL);
+
+ if (pAnnotHandlerMgr) {
+ CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
+ if (!pAnnot)
+ continue;
+ m_fxAnnotArray.Add(pAnnot);
-void CPDFSDK_PageView::UpdateRects(CFX_RectArray& rects)
-{
- for(int i=0; i<rects.GetSize(); i++)
- {
- CPDF_Rect rc = rects.GetAt(i);
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- pEnv->FFI_Invalidate(m_page, rc.left, rc.top, rc.right, rc.bottom);
+ pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
}
+ }
+ SetLock(FALSE);
}
-void CPDFSDK_PageView::UpdateView(CPDFSDK_Annot* pAnnot)
-{
- CPDF_Rect rcWindow = pAnnot->GetRect();
+void CPDFSDK_PageView::UpdateRects(CFX_RectArray& rects) {
+ for (int i = 0; i < rects.GetSize(); i++) {
+ CPDF_Rect rc = rects.GetAt(i);
CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
- pEnv->FFI_Invalidate(
- m_page, rcWindow.left, rcWindow.top, rcWindow.right, rcWindow.bottom);
-}
-
-int CPDFSDK_PageView::GetPageIndex()
-{
- if(m_page)
- {
- CPDF_Dictionary* pDic = m_page->m_pFormDict;
- CPDF_Document* pDoc = m_pSDKDoc->GetDocument();
- if(pDoc && pDic)
- {
- return pDoc->GetPageIndex(pDic->GetObjNum());
- }
- }
- return -1;
+ pEnv->FFI_Invalidate(m_page, rc.left, rc.top, rc.right, rc.bottom);
+ }
}
-FX_BOOL CPDFSDK_PageView::IsValidAnnot(void* p)
-{
- if (p == NULL) return FALSE;
- int iCount = m_pAnnotList->Count();
- for (int i = 0; i < iCount; i++)
- {
- if (m_pAnnotList->GetAt(i) == p)
- return TRUE;
- }
- return FALSE;
+void CPDFSDK_PageView::UpdateView(CPDFSDK_Annot* pAnnot) {
+ CPDF_Rect rcWindow = pAnnot->GetRect();
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
+ pEnv->FFI_Invalidate(m_page, rcWindow.left, rcWindow.top, rcWindow.right,
+ rcWindow.bottom);
}
+int CPDFSDK_PageView::GetPageIndex() {
+ if (m_page) {
+ CPDF_Dictionary* pDic = m_page->m_pFormDict;
+ CPDF_Document* pDoc = m_pSDKDoc->GetDocument();
+ if (pDoc && pDic) {
+ return pDoc->GetPageIndex(pDic->GetObjNum());
+ }
+ }
+ return -1;
+}
-CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot()
-{
- CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
- if(!pFocusAnnot)
- return NULL;
+FX_BOOL CPDFSDK_PageView::IsValidAnnot(void* p) {
+ if (p == NULL)
+ return FALSE;
+ int iCount = m_pAnnotList->Count();
+ for (int i = 0; i < iCount; i++) {
+ if (m_pAnnotList->GetAt(i) == p)
+ return TRUE;
+ }
+ return FALSE;
+}
- for(int i=0; i<m_fxAnnotArray.GetSize(); i++)
- {
- CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
- if(pAnnot == pFocusAnnot)
- return pAnnot;
- }
+CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
+ CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
+ if (!pFocusAnnot)
return NULL;
+
+ for (int i = 0; i < m_fxAnnotArray.GetSize(); i++) {
+ CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
+ if (pAnnot == pFocusAnnot)
+ return pAnnot;
+ }
+ return NULL;
}
diff --git a/fpdfsdk/src/fsdk_rendercontext.cpp b/fpdfsdk/src/fsdk_rendercontext.cpp
index f96db94150..1320824236 100644
--- a/fpdfsdk/src/fsdk_rendercontext.cpp
+++ b/fpdfsdk/src/fsdk_rendercontext.cpp
@@ -6,42 +6,39 @@
#include "../include/fsdk_rendercontext.h"
-void CRenderContext::Clear()
-{
- m_pDevice = NULL;
- m_pContext = NULL;
- m_pRenderer = NULL;
- m_pAnnots = NULL;
- m_pOptions = NULL;
+void CRenderContext::Clear() {
+ m_pDevice = NULL;
+ m_pContext = NULL;
+ m_pRenderer = NULL;
+ m_pAnnots = NULL;
+ m_pOptions = NULL;
#ifdef _WIN32_WCE
- m_pBitmap = NULL;
- m_hBitmap = NULL;
+ m_pBitmap = NULL;
+ m_hBitmap = NULL;
#endif
}
-CRenderContext::~CRenderContext()
-{
- delete m_pRenderer;
- delete m_pContext;
- delete m_pDevice;
- delete m_pAnnots;
- delete m_pOptions->m_pOCContext;
- delete m_pOptions;
+CRenderContext::~CRenderContext() {
+ delete m_pRenderer;
+ delete m_pContext;
+ delete m_pDevice;
+ delete m_pAnnots;
+ delete m_pOptions->m_pOCContext;
+ delete m_pOptions;
#ifdef _WIN32_WCE
- delete m_pBitmap;
- if (m_hBitmap) DeleteObject(m_hBitmap);
+ delete m_pBitmap;
+ if (m_hBitmap)
+ DeleteObject(m_hBitmap);
#endif
}
-IFSDK_PAUSE_Adapter::IFSDK_PAUSE_Adapter(IFSDK_PAUSE* IPause )
-{
- m_IPause = IPause;
+IFSDK_PAUSE_Adapter::IFSDK_PAUSE_Adapter(IFSDK_PAUSE* IPause) {
+ m_IPause = IPause;
}
-FX_BOOL IFSDK_PAUSE_Adapter::NeedToPauseNow()
-{
- if (m_IPause->NeedToPauseNow) {
- return m_IPause->NeedToPauseNow(m_IPause);
- }
- return FALSE;
+FX_BOOL IFSDK_PAUSE_Adapter::NeedToPauseNow() {
+ if (m_IPause->NeedToPauseNow) {
+ return m_IPause->NeedToPauseNow(m_IPause);
+ }
+ return FALSE;
}
diff --git a/fpdfsdk/src/fxedit/fxet_ap.cpp b/fpdfsdk/src/fxedit/fxet_ap.cpp
index 309a98f41e..b9900d899b 100644
--- a/fpdfsdk/src/fxedit/fxet_ap.cpp
+++ b/fpdfsdk/src/fxedit/fxet_ap.cpp
@@ -8,218 +8,206 @@
#include "../../include/fxedit/fx_edit.h"
#include "../../include/fxedit/fxet_edit.h"
-CFX_ByteString GetPDFWordString(IFX_Edit_FontMap * pFontMap, int32_t nFontIndex, FX_WORD Word, FX_WORD SubWord)
-{
- ASSERT (pFontMap != NULL);
-
- CFX_ByteString sWord;
-
- if (CPDF_Font * pPDFFont = pFontMap->GetPDFFont(nFontIndex))
- {
- if (SubWord > 0)
- {
- Word = SubWord;
- }
- else
- {
- FX_DWORD dwCharCode = -1;
-
- if (pPDFFont->IsUnicodeCompatible())
- dwCharCode = pPDFFont->CharCodeFromUnicode(Word);
- else
- dwCharCode = pFontMap->CharCodeFromUnicode(nFontIndex, Word);
-
- if (dwCharCode > 0 )
- {
- pPDFFont->AppendChar(sWord, dwCharCode);
- return sWord;
- }
- }
-
- pPDFFont->AppendChar(sWord, Word);
- }
-
- return sWord;
+CFX_ByteString GetPDFWordString(IFX_Edit_FontMap* pFontMap,
+ int32_t nFontIndex,
+ FX_WORD Word,
+ FX_WORD SubWord) {
+ ASSERT(pFontMap != NULL);
+
+ CFX_ByteString sWord;
+
+ if (CPDF_Font* pPDFFont = pFontMap->GetPDFFont(nFontIndex)) {
+ if (SubWord > 0) {
+ Word = SubWord;
+ } else {
+ FX_DWORD dwCharCode = -1;
+
+ if (pPDFFont->IsUnicodeCompatible())
+ dwCharCode = pPDFFont->CharCodeFromUnicode(Word);
+ else
+ dwCharCode = pFontMap->CharCodeFromUnicode(nFontIndex, Word);
+
+ if (dwCharCode > 0) {
+ pPDFFont->AppendChar(sWord, dwCharCode);
+ return sWord;
+ }
+ }
+
+ pPDFFont->AppendChar(sWord, Word);
+ }
+
+ return sWord;
}
-static CFX_ByteString GetWordRenderString(const CFX_ByteString & strWords)
-{
- if (strWords.GetLength() > 0)
- return PDF_EncodeString(strWords) + " Tj\n";
+static CFX_ByteString GetWordRenderString(const CFX_ByteString& strWords) {
+ if (strWords.GetLength() > 0)
+ return PDF_EncodeString(strWords) + " Tj\n";
- return "";
+ return "";
}
-static CFX_ByteString GetFontSetString(IFX_Edit_FontMap * pFontMap, int32_t nFontIndex, FX_FLOAT fFontSize)
-{
- CFX_ByteTextBuf sRet;
+static CFX_ByteString GetFontSetString(IFX_Edit_FontMap* pFontMap,
+ int32_t nFontIndex,
+ FX_FLOAT fFontSize) {
+ CFX_ByteTextBuf sRet;
- if (pFontMap)
- {
- CFX_ByteString sFontAlias = pFontMap->GetPDFFontAlias(nFontIndex);
+ if (pFontMap) {
+ CFX_ByteString sFontAlias = pFontMap->GetPDFFontAlias(nFontIndex);
- if (sFontAlias.GetLength() > 0 && fFontSize > 0 )
- sRet << "/" << sFontAlias << " " << fFontSize << " Tf\n";
- }
+ if (sFontAlias.GetLength() > 0 && fFontSize > 0)
+ sRet << "/" << sFontAlias << " " << fFontSize << " Tf\n";
+ }
- return sRet.GetByteString();
+ return sRet.GetByteString();
}
-CFX_ByteString IFX_Edit::GetEditAppearanceStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset,
- const CPVT_WordRange * pRange /* = NULL*/, FX_BOOL bContinuous/* = TRUE*/, FX_WORD SubWord/* = 0*/)
-{
- CFX_ByteTextBuf sEditStream, sWords;
-
- CPDF_Point ptOld(0.0f,0.0f),ptNew(0.0f,0.0f);
- int32_t nCurFontIndex = -1;
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
-
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- if (bContinuous)
- {
- if (place.LineCmp(oldplace) != 0)
- {
- if (sWords.GetSize() > 0)
- {
- sEditStream << GetWordRenderString(sWords.GetByteString());
- sWords.Clear();
- }
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- ptNew = CPDF_Point(word.ptWord.x + ptOffset.x, word.ptWord.y + ptOffset.y);
- }
- else
- {
- CPVT_Line line;
- pIterator->GetLine(line);
- ptNew = CPDF_Point(line.ptLine.x + ptOffset.x, line.ptLine.y + ptOffset.y);
- }
-
- if (ptNew.x != ptOld.x || ptNew.y != ptOld.y)
- {
- sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y << " Td\n";
-
- ptOld = ptNew;
- }
- }
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- if (word.nFontIndex != nCurFontIndex)
- {
- if (sWords.GetSize() > 0)
- {
- sEditStream << GetWordRenderString(sWords.GetByteString());
- sWords.Clear();
- }
- sEditStream << GetFontSetString(pEdit->GetFontMap(),word.nFontIndex,word.fFontSize);
- nCurFontIndex = word.nFontIndex;
- }
-
- sWords << GetPDFWordString(pEdit->GetFontMap(),nCurFontIndex,word.Word,SubWord);
- }
-
- oldplace = place;
- }
- else
- {
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- ptNew = CPDF_Point(word.ptWord.x + ptOffset.x, word.ptWord.y + ptOffset.y);
-
- if (ptNew.x != ptOld.x || ptNew.y != ptOld.y)
- {
- sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y << " Td\n";
- ptOld = ptNew;
- }
-
- if (word.nFontIndex != nCurFontIndex)
- {
- sEditStream << GetFontSetString(pEdit->GetFontMap(),word.nFontIndex,word.fFontSize);
- nCurFontIndex = word.nFontIndex;
- }
-
- sEditStream << GetWordRenderString(GetPDFWordString(pEdit->GetFontMap(),nCurFontIndex,word.Word,SubWord));
- }
- }
- }
-
- if (sWords.GetSize() > 0)
- {
- sEditStream << GetWordRenderString(sWords.GetByteString());
- sWords.Clear();
- }
- }
-
- CFX_ByteTextBuf sAppStream;
- if (sEditStream.GetSize() > 0)
- {
- int32_t nHorzScale = pEdit->GetHorzScale();
- if (nHorzScale != 100)
- {
- sAppStream << nHorzScale << " Tz\n";
- }
-
- FX_FLOAT fCharSpace = pEdit->GetCharSpace();
- if (!FX_EDIT_IsFloatZero(fCharSpace))
- {
- sAppStream << fCharSpace << " Tc\n";
- }
-
- sAppStream << sEditStream;
- }
-
- return sAppStream.GetByteString();
+CFX_ByteString IFX_Edit::GetEditAppearanceStream(
+ IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange /* = NULL*/,
+ FX_BOOL bContinuous /* = TRUE*/,
+ FX_WORD SubWord /* = 0*/) {
+ CFX_ByteTextBuf sEditStream, sWords;
+
+ CPDF_Point ptOld(0.0f, 0.0f), ptNew(0.0f, 0.0f);
+ int32_t nCurFontIndex = -1;
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ if (bContinuous) {
+ if (place.LineCmp(oldplace) != 0) {
+ if (sWords.GetSize() > 0) {
+ sEditStream << GetWordRenderString(sWords.GetByteString());
+ sWords.Clear();
+ }
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ ptNew = CPDF_Point(word.ptWord.x + ptOffset.x,
+ word.ptWord.y + ptOffset.y);
+ } else {
+ CPVT_Line line;
+ pIterator->GetLine(line);
+ ptNew = CPDF_Point(line.ptLine.x + ptOffset.x,
+ line.ptLine.y + ptOffset.y);
+ }
+
+ if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) {
+ sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y
+ << " Td\n";
+
+ ptOld = ptNew;
+ }
+ }
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ if (word.nFontIndex != nCurFontIndex) {
+ if (sWords.GetSize() > 0) {
+ sEditStream << GetWordRenderString(sWords.GetByteString());
+ sWords.Clear();
+ }
+ sEditStream << GetFontSetString(pEdit->GetFontMap(),
+ word.nFontIndex, word.fFontSize);
+ nCurFontIndex = word.nFontIndex;
+ }
+
+ sWords << GetPDFWordString(pEdit->GetFontMap(), nCurFontIndex,
+ word.Word, SubWord);
+ }
+
+ oldplace = place;
+ } else {
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ ptNew = CPDF_Point(word.ptWord.x + ptOffset.x,
+ word.ptWord.y + ptOffset.y);
+
+ if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) {
+ sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y
+ << " Td\n";
+ ptOld = ptNew;
+ }
+
+ if (word.nFontIndex != nCurFontIndex) {
+ sEditStream << GetFontSetString(pEdit->GetFontMap(),
+ word.nFontIndex, word.fFontSize);
+ nCurFontIndex = word.nFontIndex;
+ }
+
+ sEditStream << GetWordRenderString(GetPDFWordString(
+ pEdit->GetFontMap(), nCurFontIndex, word.Word, SubWord));
+ }
+ }
+ }
+
+ if (sWords.GetSize() > 0) {
+ sEditStream << GetWordRenderString(sWords.GetByteString());
+ sWords.Clear();
+ }
+ }
+
+ CFX_ByteTextBuf sAppStream;
+ if (sEditStream.GetSize() > 0) {
+ int32_t nHorzScale = pEdit->GetHorzScale();
+ if (nHorzScale != 100) {
+ sAppStream << nHorzScale << " Tz\n";
+ }
+
+ FX_FLOAT fCharSpace = pEdit->GetCharSpace();
+ if (!FX_EDIT_IsFloatZero(fCharSpace)) {
+ sAppStream << fCharSpace << " Tc\n";
+ }
+
+ sAppStream << sEditStream;
+ }
+
+ return sAppStream.GetByteString();
}
-CFX_ByteString IFX_Edit::GetSelectAppearanceStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset,
- const CPVT_WordRange * pRange /*= NULL*/)
-{
- CFX_ByteTextBuf sRet;
-
- if (pRange && pRange->IsExist())
- {
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- pIterator->SetAt(pRange->BeginPos);
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
-
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- CPVT_Line line;
- if (pIterator->GetWord(word) && pIterator->GetLine(line))
- {
- //CPDF_Rect rcWordSel = CPDF_Rect(word.ptWord.x,line.ptLine.y + line.fLineDescent,
- // word.ptWord.x+word.fWidth,line.ptLine.y + line.fLineAscent);
-
- sRet << word.ptWord.x + ptOffset.x << " " << line.ptLine.y + line.fLineDescent
- << " " << word.fWidth << " " << line.fLineAscent - line.fLineDescent << " re\nf\n";
- }
- }
- }
- }
-
- return sRet.GetByteString();
+CFX_ByteString IFX_Edit::GetSelectAppearanceStream(
+ IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange /*= NULL*/) {
+ CFX_ByteTextBuf sRet;
+
+ if (pRange && pRange->IsExist()) {
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ pIterator->SetAt(pRange->BeginPos);
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ CPVT_Line line;
+ if (pIterator->GetWord(word) && pIterator->GetLine(line)) {
+ // CPDF_Rect rcWordSel = CPDF_Rect(word.ptWord.x,line.ptLine.y +
+ // line.fLineDescent,
+ // word.ptWord.x+word.fWidth,line.ptLine.y +
+ //line.fLineAscent);
+
+ sRet << word.ptWord.x + ptOffset.x << " "
+ << line.ptLine.y + line.fLineDescent << " " << word.fWidth << " "
+ << line.fLineAscent - line.fLineDescent << " re\nf\n";
+ }
+ }
+ }
+ }
+
+ return sRet.GetByteString();
}
-
diff --git a/fpdfsdk/src/fxedit/fxet_edit.cpp b/fpdfsdk/src/fxedit/fxet_edit.cpp
index 63115c2626..efef2ca884 100644
--- a/fpdfsdk/src/fxedit/fxet_edit.cpp
+++ b/fpdfsdk/src/fxedit/fxet_edit.cpp
@@ -7,1495 +7,1312 @@
#include "../../include/fxedit/fxet_stub.h"
#include "../../include/fxedit/fxet_edit.h"
-#define FX_EDIT_UNDO_MAXITEM 10000
+#define FX_EDIT_UNDO_MAXITEM 10000
-/* ---------------------------- CFX_Edit_Iterator ---------------------------- */
+/* ---------------------------- CFX_Edit_Iterator ----------------------------
+ */
-CFX_Edit_Iterator::CFX_Edit_Iterator(CFX_Edit * pEdit,IPDF_VariableText_Iterator * pVTIterator) :
- m_pEdit(pEdit),
- m_pVTIterator(pVTIterator)
-{
-}
+CFX_Edit_Iterator::CFX_Edit_Iterator(CFX_Edit* pEdit,
+ IPDF_VariableText_Iterator* pVTIterator)
+ : m_pEdit(pEdit), m_pVTIterator(pVTIterator) {}
-CFX_Edit_Iterator::~CFX_Edit_Iterator()
-{
-}
+CFX_Edit_Iterator::~CFX_Edit_Iterator() {}
-FX_BOOL CFX_Edit_Iterator::NextWord()
-{
- return m_pVTIterator->NextWord();
+FX_BOOL CFX_Edit_Iterator::NextWord() {
+ return m_pVTIterator->NextWord();
}
-FX_BOOL CFX_Edit_Iterator::NextLine()
-{
- return m_pVTIterator->NextLine();
+FX_BOOL CFX_Edit_Iterator::NextLine() {
+ return m_pVTIterator->NextLine();
}
-FX_BOOL CFX_Edit_Iterator::NextSection()
-{
- return m_pVTIterator->NextSection();
+FX_BOOL CFX_Edit_Iterator::NextSection() {
+ return m_pVTIterator->NextSection();
}
-FX_BOOL CFX_Edit_Iterator::PrevWord()
-{
- return m_pVTIterator->PrevWord();
+FX_BOOL CFX_Edit_Iterator::PrevWord() {
+ return m_pVTIterator->PrevWord();
}
-FX_BOOL CFX_Edit_Iterator::PrevLine()
-{
- return m_pVTIterator->PrevLine();
+FX_BOOL CFX_Edit_Iterator::PrevLine() {
+ return m_pVTIterator->PrevLine();
}
-FX_BOOL CFX_Edit_Iterator::PrevSection()
-{
- return m_pVTIterator->PrevSection();
+FX_BOOL CFX_Edit_Iterator::PrevSection() {
+ return m_pVTIterator->PrevSection();
}
-FX_BOOL CFX_Edit_Iterator::GetWord(CPVT_Word & word) const
-{
- ASSERT(m_pEdit);
+FX_BOOL CFX_Edit_Iterator::GetWord(CPVT_Word& word) const {
+ ASSERT(m_pEdit);
- if (m_pVTIterator->GetWord(word))
- {
- word.ptWord = m_pEdit->VTToEdit(word.ptWord);
- return TRUE;
- }
- return FALSE;
+ if (m_pVTIterator->GetWord(word)) {
+ word.ptWord = m_pEdit->VTToEdit(word.ptWord);
+ return TRUE;
+ }
+ return FALSE;
}
-FX_BOOL CFX_Edit_Iterator::GetLine(CPVT_Line & line) const
-{
- ASSERT(m_pEdit);
+FX_BOOL CFX_Edit_Iterator::GetLine(CPVT_Line& line) const {
+ ASSERT(m_pEdit);
- if (m_pVTIterator->GetLine(line))
- {
- line.ptLine = m_pEdit->VTToEdit(line.ptLine);
- return TRUE;
- }
- return FALSE;
+ if (m_pVTIterator->GetLine(line)) {
+ line.ptLine = m_pEdit->VTToEdit(line.ptLine);
+ return TRUE;
+ }
+ return FALSE;
}
-FX_BOOL CFX_Edit_Iterator::GetSection(CPVT_Section & section) const
-{
- ASSERT(m_pEdit);
+FX_BOOL CFX_Edit_Iterator::GetSection(CPVT_Section& section) const {
+ ASSERT(m_pEdit);
- if (m_pVTIterator->GetSection(section))
- {
- section.rcSection = m_pEdit->VTToEdit(section.rcSection);
- return TRUE;
- }
- return FALSE;
+ if (m_pVTIterator->GetSection(section)) {
+ section.rcSection = m_pEdit->VTToEdit(section.rcSection);
+ return TRUE;
+ }
+ return FALSE;
}
-void CFX_Edit_Iterator::SetAt(int32_t nWordIndex)
-{
- m_pVTIterator->SetAt(nWordIndex);
+void CFX_Edit_Iterator::SetAt(int32_t nWordIndex) {
+ m_pVTIterator->SetAt(nWordIndex);
}
-void CFX_Edit_Iterator::SetAt(const CPVT_WordPlace & place)
-{
- m_pVTIterator->SetAt(place);
+void CFX_Edit_Iterator::SetAt(const CPVT_WordPlace& place) {
+ m_pVTIterator->SetAt(place);
}
-const CPVT_WordPlace & CFX_Edit_Iterator::GetAt() const
-{
- return m_pVTIterator->GetAt();
+const CPVT_WordPlace& CFX_Edit_Iterator::GetAt() const {
+ return m_pVTIterator->GetAt();
}
-IFX_Edit* CFX_Edit_Iterator::GetEdit() const
-{
- return m_pEdit;
+IFX_Edit* CFX_Edit_Iterator::GetEdit() const {
+ return m_pEdit;
}
-/* --------------------------- CFX_Edit_Provider ------------------------------- */
+/* --------------------------- CFX_Edit_Provider -------------------------------
+ */
-CFX_Edit_Provider::CFX_Edit_Provider(IFX_Edit_FontMap * pFontMap) : m_pFontMap(pFontMap)
-{
- ASSERT(m_pFontMap != NULL);
+CFX_Edit_Provider::CFX_Edit_Provider(IFX_Edit_FontMap* pFontMap)
+ : m_pFontMap(pFontMap) {
+ ASSERT(m_pFontMap != NULL);
}
-CFX_Edit_Provider::~CFX_Edit_Provider()
-{
-}
+CFX_Edit_Provider::~CFX_Edit_Provider() {}
-IFX_Edit_FontMap* CFX_Edit_Provider::GetFontMap()
-{
- return m_pFontMap;
+IFX_Edit_FontMap* CFX_Edit_Provider::GetFontMap() {
+ return m_pFontMap;
}
-int32_t CFX_Edit_Provider::GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_t nWordStyle)
-{
- if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
- {
- FX_DWORD charcode = word;
+int32_t CFX_Edit_Provider::GetCharWidth(int32_t nFontIndex,
+ FX_WORD word,
+ int32_t nWordStyle) {
+ if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) {
+ FX_DWORD charcode = word;
- if (pPDFFont->IsUnicodeCompatible())
- charcode = pPDFFont->CharCodeFromUnicode(word);
- else
- charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, word);
+ if (pPDFFont->IsUnicodeCompatible())
+ charcode = pPDFFont->CharCodeFromUnicode(word);
+ else
+ charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, word);
- if (charcode != -1)
- return pPDFFont->GetCharWidthF(charcode);
- }
+ if (charcode != -1)
+ return pPDFFont->GetCharWidthF(charcode);
+ }
- return 0;
+ return 0;
}
-int32_t CFX_Edit_Provider::GetTypeAscent(int32_t nFontIndex)
-{
- if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
- return pPDFFont->GetTypeAscent();
+int32_t CFX_Edit_Provider::GetTypeAscent(int32_t nFontIndex) {
+ if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
+ return pPDFFont->GetTypeAscent();
- return 0;
+ return 0;
}
-int32_t CFX_Edit_Provider::GetTypeDescent(int32_t nFontIndex)
-{
- if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
- return pPDFFont->GetTypeDescent();
+int32_t CFX_Edit_Provider::GetTypeDescent(int32_t nFontIndex) {
+ if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
+ return pPDFFont->GetTypeDescent();
- return 0;
+ return 0;
}
-int32_t CFX_Edit_Provider::GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex)
-{
- return m_pFontMap->GetWordFontIndex(word,charset,nFontIndex);
+int32_t CFX_Edit_Provider::GetWordFontIndex(FX_WORD word,
+ int32_t charset,
+ int32_t nFontIndex) {
+ return m_pFontMap->GetWordFontIndex(word, charset, nFontIndex);
}
-int32_t CFX_Edit_Provider::GetDefaultFontIndex()
-{
- return 0;
+int32_t CFX_Edit_Provider::GetDefaultFontIndex() {
+ return 0;
}
-FX_BOOL CFX_Edit_Provider::IsLatinWord(FX_WORD word)
-{
- return FX_EDIT_ISLATINWORD(word);
+FX_BOOL CFX_Edit_Provider::IsLatinWord(FX_WORD word) {
+ return FX_EDIT_ISLATINWORD(word);
}
-/* --------------------------------- CFX_Edit_Refresh --------------------------------- */
+/* --------------------------------- CFX_Edit_Refresh
+ * --------------------------------- */
-CFX_Edit_Refresh::CFX_Edit_Refresh()
-{
-}
+CFX_Edit_Refresh::CFX_Edit_Refresh() {}
-CFX_Edit_Refresh::~CFX_Edit_Refresh()
-{
-}
+CFX_Edit_Refresh::~CFX_Edit_Refresh() {}
-void CFX_Edit_Refresh::BeginRefresh()
-{
- m_RefreshRects.Empty();
- m_OldLineRects = m_NewLineRects;
+void CFX_Edit_Refresh::BeginRefresh() {
+ m_RefreshRects.Empty();
+ m_OldLineRects = m_NewLineRects;
}
-void CFX_Edit_Refresh::Push(const CPVT_WordRange & linerange,const CPDF_Rect & rect)
-{
- m_NewLineRects.Add(linerange,rect);
+void CFX_Edit_Refresh::Push(const CPVT_WordRange& linerange,
+ const CPDF_Rect& rect) {
+ m_NewLineRects.Add(linerange, rect);
}
-void CFX_Edit_Refresh::NoAnalyse()
-{
- {
- for (int32_t i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++)
- if (CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i))
- m_RefreshRects.Add(pOldRect->m_rcLine);
- }
+void CFX_Edit_Refresh::NoAnalyse() {
+ {
+ for (int32_t i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++)
+ if (CFX_Edit_LineRect* pOldRect = m_OldLineRects.GetAt(i))
+ m_RefreshRects.Add(pOldRect->m_rcLine);
+ }
- {
- for (int32_t i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++)
- if (CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i))
- m_RefreshRects.Add(pNewRect->m_rcLine);
- }
+ {
+ for (int32_t i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++)
+ if (CFX_Edit_LineRect* pNewRect = m_NewLineRects.GetAt(i))
+ m_RefreshRects.Add(pNewRect->m_rcLine);
+ }
}
-void CFX_Edit_Refresh::Analyse(int32_t nAlignment)
-{
- FX_BOOL bLineTopChanged = FALSE;
- CPDF_Rect rcResult;
- FX_FLOAT fWidthDiff;
-
- int32_t szMax = FX_EDIT_MAX(m_OldLineRects.GetSize(),m_NewLineRects.GetSize());
- int32_t i = 0;
-
- while (i < szMax)
- {
- CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i);
- CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i);
-
- if (pOldRect)
- {
- if (pNewRect)
- {
- if (bLineTopChanged)
- {
- rcResult = pOldRect->m_rcLine;
- rcResult.Union(pNewRect->m_rcLine);
- m_RefreshRects.Add(rcResult);
- }
- else
- {
- if (*pNewRect != *pOldRect)
- {
- if (!pNewRect->IsSameTop(*pOldRect) || !pNewRect->IsSameHeight(*pOldRect))
- {
- bLineTopChanged = TRUE;
- continue;
- }
-
- if (nAlignment == 0)
- {
- if (pNewRect->m_wrLine.BeginPos != pOldRect->m_wrLine.BeginPos)
- {
- rcResult = pOldRect->m_rcLine;
- rcResult.Union(pNewRect->m_rcLine);
- m_RefreshRects.Add(rcResult);
- }
- else
- {
- if (!pNewRect->IsSameLeft(*pOldRect))
- {
- rcResult = pOldRect->m_rcLine;
- rcResult.Union(pNewRect->m_rcLine);
- }
- else
- {
- fWidthDiff = pNewRect->m_rcLine.Width() - pOldRect->m_rcLine.Width();
- rcResult = pNewRect->m_rcLine;
- if (fWidthDiff > 0.0f)
- rcResult.left = rcResult.right - fWidthDiff;
- else
- {
- rcResult.left = rcResult.right;
- rcResult.right += (-fWidthDiff);
- }
- }
- m_RefreshRects.Add(rcResult);
- }
- }
- else
- {
- rcResult = pOldRect->m_rcLine;
- rcResult.Union(pNewRect->m_rcLine);
- m_RefreshRects.Add(rcResult);
- }
- }
- else
- {
- //don't need to do anything
- }
- }
- }
- else
- {
- m_RefreshRects.Add(pOldRect->m_rcLine);
- }
- }
- else
- {
- if (pNewRect)
- {
- m_RefreshRects.Add(pNewRect->m_rcLine);
+void CFX_Edit_Refresh::Analyse(int32_t nAlignment) {
+ FX_BOOL bLineTopChanged = FALSE;
+ CPDF_Rect rcResult;
+ FX_FLOAT fWidthDiff;
+
+ int32_t szMax =
+ FX_EDIT_MAX(m_OldLineRects.GetSize(), m_NewLineRects.GetSize());
+ int32_t i = 0;
+
+ while (i < szMax) {
+ CFX_Edit_LineRect* pOldRect = m_OldLineRects.GetAt(i);
+ CFX_Edit_LineRect* pNewRect = m_NewLineRects.GetAt(i);
+
+ if (pOldRect) {
+ if (pNewRect) {
+ if (bLineTopChanged) {
+ rcResult = pOldRect->m_rcLine;
+ rcResult.Union(pNewRect->m_rcLine);
+ m_RefreshRects.Add(rcResult);
+ } else {
+ if (*pNewRect != *pOldRect) {
+ if (!pNewRect->IsSameTop(*pOldRect) ||
+ !pNewRect->IsSameHeight(*pOldRect)) {
+ bLineTopChanged = TRUE;
+ continue;
}
- else
- {
- //error
+
+ if (nAlignment == 0) {
+ if (pNewRect->m_wrLine.BeginPos != pOldRect->m_wrLine.BeginPos) {
+ rcResult = pOldRect->m_rcLine;
+ rcResult.Union(pNewRect->m_rcLine);
+ m_RefreshRects.Add(rcResult);
+ } else {
+ if (!pNewRect->IsSameLeft(*pOldRect)) {
+ rcResult = pOldRect->m_rcLine;
+ rcResult.Union(pNewRect->m_rcLine);
+ } else {
+ fWidthDiff =
+ pNewRect->m_rcLine.Width() - pOldRect->m_rcLine.Width();
+ rcResult = pNewRect->m_rcLine;
+ if (fWidthDiff > 0.0f)
+ rcResult.left = rcResult.right - fWidthDiff;
+ else {
+ rcResult.left = rcResult.right;
+ rcResult.right += (-fWidthDiff);
+ }
+ }
+ m_RefreshRects.Add(rcResult);
+ }
+ } else {
+ rcResult = pOldRect->m_rcLine;
+ rcResult.Union(pNewRect->m_rcLine);
+ m_RefreshRects.Add(rcResult);
}
+ } else {
+ // don't need to do anything
+ }
}
- i++;
+ } else {
+ m_RefreshRects.Add(pOldRect->m_rcLine);
+ }
+ } else {
+ if (pNewRect) {
+ m_RefreshRects.Add(pNewRect->m_rcLine);
+ } else {
+ // error
+ }
}
+ i++;
+ }
}
-void CFX_Edit_Refresh::AddRefresh(const CPDF_Rect & rect)
-{
- m_RefreshRects.Add(rect);
+void CFX_Edit_Refresh::AddRefresh(const CPDF_Rect& rect) {
+ m_RefreshRects.Add(rect);
}
-const CFX_Edit_RectArray * CFX_Edit_Refresh::GetRefreshRects() const
-{
- return &m_RefreshRects;
+const CFX_Edit_RectArray* CFX_Edit_Refresh::GetRefreshRects() const {
+ return &m_RefreshRects;
}
-void CFX_Edit_Refresh::EndRefresh()
-{
- m_RefreshRects.Empty();
+void CFX_Edit_Refresh::EndRefresh() {
+ m_RefreshRects.Empty();
}
-/* ------------------------------------- CFX_Edit_Undo ------------------------------------- */
+/* ------------------------------------- CFX_Edit_Undo
+ * ------------------------------------- */
-CFX_Edit_Undo::CFX_Edit_Undo(int32_t nBufsize) : m_nCurUndoPos(0),
- m_nBufSize(nBufsize),
- m_bModified(FALSE),
- m_bVirgin(TRUE),
- m_bWorking(FALSE)
-{
-}
+CFX_Edit_Undo::CFX_Edit_Undo(int32_t nBufsize)
+ : m_nCurUndoPos(0),
+ m_nBufSize(nBufsize),
+ m_bModified(FALSE),
+ m_bVirgin(TRUE),
+ m_bWorking(FALSE) {}
-CFX_Edit_Undo::~CFX_Edit_Undo()
-{
- Reset();
+CFX_Edit_Undo::~CFX_Edit_Undo() {
+ Reset();
}
-FX_BOOL CFX_Edit_Undo::CanUndo() const
-{
- return m_nCurUndoPos > 0;
+FX_BOOL CFX_Edit_Undo::CanUndo() const {
+ return m_nCurUndoPos > 0;
}
-void CFX_Edit_Undo::Undo()
-{
- m_bWorking = TRUE;
+void CFX_Edit_Undo::Undo() {
+ m_bWorking = TRUE;
- if (m_nCurUndoPos > 0)
- {
- IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos-1);
- ASSERT(pItem != NULL);
+ if (m_nCurUndoPos > 0) {
+ IFX_Edit_UndoItem* pItem = m_UndoItemStack.GetAt(m_nCurUndoPos - 1);
+ ASSERT(pItem != NULL);
- pItem->Undo();
+ pItem->Undo();
- m_nCurUndoPos--;
- m_bModified = (m_nCurUndoPos != 0);
- }
+ m_nCurUndoPos--;
+ m_bModified = (m_nCurUndoPos != 0);
+ }
- m_bWorking = FALSE;
+ m_bWorking = FALSE;
}
-FX_BOOL CFX_Edit_Undo::CanRedo() const
-{
- return m_nCurUndoPos < m_UndoItemStack.GetSize();
+FX_BOOL CFX_Edit_Undo::CanRedo() const {
+ return m_nCurUndoPos < m_UndoItemStack.GetSize();
}
-void CFX_Edit_Undo::Redo()
-{
- m_bWorking = TRUE;
+void CFX_Edit_Undo::Redo() {
+ m_bWorking = TRUE;
- int32_t nStackSize = m_UndoItemStack.GetSize();
+ int32_t nStackSize = m_UndoItemStack.GetSize();
- if (m_nCurUndoPos < nStackSize)
- {
- IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos);
- ASSERT(pItem != NULL);
+ if (m_nCurUndoPos < nStackSize) {
+ IFX_Edit_UndoItem* pItem = m_UndoItemStack.GetAt(m_nCurUndoPos);
+ ASSERT(pItem != NULL);
- pItem->Redo();
+ pItem->Redo();
- m_nCurUndoPos++;
- m_bModified = (m_nCurUndoPos != 0);
- }
+ m_nCurUndoPos++;
+ m_bModified = (m_nCurUndoPos != 0);
+ }
- m_bWorking = FALSE;
+ m_bWorking = FALSE;
}
-FX_BOOL CFX_Edit_Undo::IsWorking() const
-{
- return m_bWorking;
+FX_BOOL CFX_Edit_Undo::IsWorking() const {
+ return m_bWorking;
}
-void CFX_Edit_Undo::AddItem(IFX_Edit_UndoItem* pItem)
-{
- ASSERT(!m_bWorking);
- ASSERT(pItem != NULL);
- ASSERT(m_nBufSize > 1);
+void CFX_Edit_Undo::AddItem(IFX_Edit_UndoItem* pItem) {
+ ASSERT(!m_bWorking);
+ ASSERT(pItem != NULL);
+ ASSERT(m_nBufSize > 1);
- if (m_nCurUndoPos < m_UndoItemStack.GetSize())
- RemoveTails();
+ if (m_nCurUndoPos < m_UndoItemStack.GetSize())
+ RemoveTails();
- if (m_UndoItemStack.GetSize() >= m_nBufSize)
- {
- RemoveHeads();
- m_bVirgin = FALSE;
- }
+ if (m_UndoItemStack.GetSize() >= m_nBufSize) {
+ RemoveHeads();
+ m_bVirgin = FALSE;
+ }
- m_UndoItemStack.Add(pItem);
- m_nCurUndoPos = m_UndoItemStack.GetSize();
+ m_UndoItemStack.Add(pItem);
+ m_nCurUndoPos = m_UndoItemStack.GetSize();
- m_bModified = (m_nCurUndoPos != 0);
+ m_bModified = (m_nCurUndoPos != 0);
}
-FX_BOOL CFX_Edit_Undo::IsModified() const
-{
- return m_bVirgin ? m_bModified : TRUE;
+FX_BOOL CFX_Edit_Undo::IsModified() const {
+ return m_bVirgin ? m_bModified : TRUE;
}
-IFX_Edit_UndoItem* CFX_Edit_Undo::GetItem(int32_t nIndex)
-{
- if (nIndex>=0 && nIndex < m_UndoItemStack.GetSize())
- return m_UndoItemStack.GetAt(nIndex);
+IFX_Edit_UndoItem* CFX_Edit_Undo::GetItem(int32_t nIndex) {
+ if (nIndex >= 0 && nIndex < m_UndoItemStack.GetSize())
+ return m_UndoItemStack.GetAt(nIndex);
- return NULL;
+ return NULL;
}
-void CFX_Edit_Undo::RemoveHeads()
-{
- ASSERT(m_UndoItemStack.GetSize() > 1);
+void CFX_Edit_Undo::RemoveHeads() {
+ ASSERT(m_UndoItemStack.GetSize() > 1);
- delete m_UndoItemStack.GetAt(0);
- m_UndoItemStack.RemoveAt(0);
+ delete m_UndoItemStack.GetAt(0);
+ m_UndoItemStack.RemoveAt(0);
}
-void CFX_Edit_Undo::RemoveTails()
-{
- for (int32_t i = m_UndoItemStack.GetSize()-1; i >= m_nCurUndoPos; i--)
- {
- delete m_UndoItemStack.GetAt(i);
- m_UndoItemStack.RemoveAt(i);
- }
+void CFX_Edit_Undo::RemoveTails() {
+ for (int32_t i = m_UndoItemStack.GetSize() - 1; i >= m_nCurUndoPos; i--) {
+ delete m_UndoItemStack.GetAt(i);
+ m_UndoItemStack.RemoveAt(i);
+ }
}
-void CFX_Edit_Undo::Reset()
-{
- for (int32_t i=0, sz=m_UndoItemStack.GetSize(); i < sz; i++)
- {
- delete m_UndoItemStack.GetAt(i);
- }
- m_nCurUndoPos = 0;
- m_UndoItemStack.RemoveAll();
+void CFX_Edit_Undo::Reset() {
+ for (int32_t i = 0, sz = m_UndoItemStack.GetSize(); i < sz; i++) {
+ delete m_UndoItemStack.GetAt(i);
+ }
+ m_nCurUndoPos = 0;
+ m_UndoItemStack.RemoveAll();
}
-/* -------------------------------- CFX_Edit_GroupUndoItem -------------------------------- */
+/* -------------------------------- CFX_Edit_GroupUndoItem
+ * -------------------------------- */
-CFX_Edit_GroupUndoItem::CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle) : m_sTitle(sTitle)
-{
-}
+CFX_Edit_GroupUndoItem::CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle)
+ : m_sTitle(sTitle) {}
-CFX_Edit_GroupUndoItem::~CFX_Edit_GroupUndoItem()
-{
- for (int i=0,sz=m_Items.GetSize(); i<sz; i++)
- {
- delete m_Items[i];
- }
+CFX_Edit_GroupUndoItem::~CFX_Edit_GroupUndoItem() {
+ for (int i = 0, sz = m_Items.GetSize(); i < sz; i++) {
+ delete m_Items[i];
+ }
- m_Items.RemoveAll();
+ m_Items.RemoveAll();
}
-void CFX_Edit_GroupUndoItem::AddUndoItem(CFX_Edit_UndoItem* pUndoItem)
-{
- ASSERT(pUndoItem != NULL);
+void CFX_Edit_GroupUndoItem::AddUndoItem(CFX_Edit_UndoItem* pUndoItem) {
+ ASSERT(pUndoItem != NULL);
- pUndoItem->SetFirst(FALSE);
- pUndoItem->SetLast(FALSE);
+ pUndoItem->SetFirst(FALSE);
+ pUndoItem->SetLast(FALSE);
- m_Items.Add(pUndoItem);
+ m_Items.Add(pUndoItem);
- if (m_sTitle.IsEmpty())
- m_sTitle = pUndoItem->GetUndoTitle();
+ if (m_sTitle.IsEmpty())
+ m_sTitle = pUndoItem->GetUndoTitle();
}
-void CFX_Edit_GroupUndoItem::UpdateItems()
-{
- if (m_Items.GetSize() > 0)
- {
- CFX_Edit_UndoItem* pFirstItem = m_Items[0];
- ASSERT(pFirstItem != NULL);
- pFirstItem->SetFirst(TRUE);
+void CFX_Edit_GroupUndoItem::UpdateItems() {
+ if (m_Items.GetSize() > 0) {
+ CFX_Edit_UndoItem* pFirstItem = m_Items[0];
+ ASSERT(pFirstItem != NULL);
+ pFirstItem->SetFirst(TRUE);
- CFX_Edit_UndoItem* pLastItem = m_Items[m_Items.GetSize() - 1];
- ASSERT(pLastItem != NULL);
- pLastItem->SetLast(TRUE);
- }
+ CFX_Edit_UndoItem* pLastItem = m_Items[m_Items.GetSize() - 1];
+ ASSERT(pLastItem != NULL);
+ pLastItem->SetLast(TRUE);
+ }
}
-void CFX_Edit_GroupUndoItem::Undo()
-{
- for (int i=m_Items.GetSize()-1; i>=0; i--)
- {
- CFX_Edit_UndoItem* pUndoItem = m_Items[i];
- ASSERT(pUndoItem != NULL);
+void CFX_Edit_GroupUndoItem::Undo() {
+ for (int i = m_Items.GetSize() - 1; i >= 0; i--) {
+ CFX_Edit_UndoItem* pUndoItem = m_Items[i];
+ ASSERT(pUndoItem != NULL);
- pUndoItem->Undo();
- }
+ pUndoItem->Undo();
+ }
}
-void CFX_Edit_GroupUndoItem::Redo()
-{
- for (int i=0,sz=m_Items.GetSize(); i<sz; i++)
- {
- CFX_Edit_UndoItem* pUndoItem = m_Items[i];
- ASSERT(pUndoItem != NULL);
+void CFX_Edit_GroupUndoItem::Redo() {
+ for (int i = 0, sz = m_Items.GetSize(); i < sz; i++) {
+ CFX_Edit_UndoItem* pUndoItem = m_Items[i];
+ ASSERT(pUndoItem != NULL);
- pUndoItem->Redo();
- }
+ pUndoItem->Redo();
+ }
}
-CFX_WideString CFX_Edit_GroupUndoItem::GetUndoTitle()
-{
- return m_sTitle;
+CFX_WideString CFX_Edit_GroupUndoItem::GetUndoTitle() {
+ return m_sTitle;
}
-/* ------------------------------------- CFX_Edit_UndoItem derived classes ------------------------------------- */
+/* ------------------------------------- CFX_Edit_UndoItem derived classes
+ * ------------------------------------- */
-CFXEU_InsertWord::CFXEU_InsertWord(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- FX_WORD word, int32_t charset, const CPVT_WordProps * pWordProps)
- : m_pEdit(pEdit), m_wpOld(wpOldPlace), m_wpNew(wpNewPlace), m_Word(word), m_nCharset(charset), m_WordProps()
-{
- if (pWordProps)
- m_WordProps = *pWordProps;
+CFXEU_InsertWord::CFXEU_InsertWord(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ FX_WORD word,
+ int32_t charset,
+ const CPVT_WordProps* pWordProps)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_Word(word),
+ m_nCharset(charset),
+ m_WordProps() {
+ if (pWordProps)
+ m_WordProps = *pWordProps;
}
-CFXEU_InsertWord::~CFXEU_InsertWord()
-{
-}
+CFXEU_InsertWord::~CFXEU_InsertWord() {}
-void CFXEU_InsertWord::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
- }
+void CFXEU_InsertWord::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ m_pEdit->InsertWord(m_Word, m_nCharset, &m_WordProps, FALSE, TRUE);
+ }
}
-void CFXEU_InsertWord::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpNew);
- m_pEdit->Backspace(FALSE,TRUE);
- }
+void CFXEU_InsertWord::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpNew);
+ m_pEdit->Backspace(FALSE, TRUE);
+ }
}
/* -------------------------------------------------------------------------- */
-CFXEU_InsertReturn::CFXEU_InsertReturn(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) :
- m_pEdit(pEdit),
- m_wpOld(wpOldPlace),
- m_wpNew(wpNewPlace),
- m_SecProps(),
- m_WordProps()
-{
- if (pSecProps)
- m_SecProps = *pSecProps;
- if (pWordProps)
- m_WordProps = *pWordProps;
-}
-
-CFXEU_InsertReturn::~CFXEU_InsertReturn()
-{
-}
-
-void CFXEU_InsertReturn::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
- }
+CFXEU_InsertReturn::CFXEU_InsertReturn(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_SecProps(),
+ m_WordProps() {
+ if (pSecProps)
+ m_SecProps = *pSecProps;
+ if (pWordProps)
+ m_WordProps = *pWordProps;
}
-void CFXEU_InsertReturn::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpNew);
- m_pEdit->Backspace(FALSE,TRUE);
- }
-}
+CFXEU_InsertReturn::~CFXEU_InsertReturn() {}
-/* -------------------------------------------------------------------------- */
-//CFXEU_Backspace
-
-CFXEU_Backspace::CFXEU_Backspace(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- FX_WORD word, int32_t charset,
- const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) :
- m_pEdit(pEdit),
- m_wpOld(wpOldPlace),
- m_wpNew(wpNewPlace),
- m_Word(word),
- m_nCharset(charset),
- m_SecProps(SecProps),
- m_WordProps(WordProps)
-{
-}
-
-CFXEU_Backspace::~CFXEU_Backspace()
-{
-}
-
-void CFXEU_Backspace::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- m_pEdit->Backspace(FALSE,TRUE);
- }
+void CFXEU_InsertReturn::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ m_pEdit->InsertReturn(&m_SecProps, &m_WordProps, FALSE, TRUE);
+ }
}
-void CFXEU_Backspace::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpNew);
- if (m_wpNew.SecCmp(m_wpOld) != 0)
- {
- m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
- }
- else
- {
- m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
- }
- }
+void CFXEU_InsertReturn::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpNew);
+ m_pEdit->Backspace(FALSE, TRUE);
+ }
}
/* -------------------------------------------------------------------------- */
-//CFXEU_Delete
-
-CFXEU_Delete::CFXEU_Delete(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- FX_WORD word, int32_t charset,
- const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps, FX_BOOL bSecEnd) :
- m_pEdit(pEdit),
- m_wpOld(wpOldPlace),
- m_wpNew(wpNewPlace),
- m_Word(word),
- m_nCharset(charset),
- m_SecProps(SecProps),
- m_WordProps(WordProps),
- m_bSecEnd(bSecEnd)
-{
-}
-
-CFXEU_Delete::~CFXEU_Delete()
-{
-}
-
-void CFXEU_Delete::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- m_pEdit->Delete(FALSE,TRUE);
- }
+// CFXEU_Backspace
+
+CFXEU_Backspace::CFXEU_Backspace(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ FX_WORD word,
+ int32_t charset,
+ const CPVT_SecProps& SecProps,
+ const CPVT_WordProps& WordProps)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_Word(word),
+ m_nCharset(charset),
+ m_SecProps(SecProps),
+ m_WordProps(WordProps) {}
+
+CFXEU_Backspace::~CFXEU_Backspace() {}
+
+void CFXEU_Backspace::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ m_pEdit->Backspace(FALSE, TRUE);
+ }
+}
+
+void CFXEU_Backspace::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpNew);
+ if (m_wpNew.SecCmp(m_wpOld) != 0) {
+ m_pEdit->InsertReturn(&m_SecProps, &m_WordProps, FALSE, TRUE);
+ } else {
+ m_pEdit->InsertWord(m_Word, m_nCharset, &m_WordProps, FALSE, TRUE);
+ }
+ }
}
-void CFXEU_Delete::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpNew);
- if (m_bSecEnd)
- {
- m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
- }
- else
- {
- m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
- }
- }
+/* -------------------------------------------------------------------------- */
+// CFXEU_Delete
+
+CFXEU_Delete::CFXEU_Delete(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ FX_WORD word,
+ int32_t charset,
+ const CPVT_SecProps& SecProps,
+ const CPVT_WordProps& WordProps,
+ FX_BOOL bSecEnd)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_Word(word),
+ m_nCharset(charset),
+ m_SecProps(SecProps),
+ m_WordProps(WordProps),
+ m_bSecEnd(bSecEnd) {}
+
+CFXEU_Delete::~CFXEU_Delete() {}
+
+void CFXEU_Delete::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ m_pEdit->Delete(FALSE, TRUE);
+ }
+}
+
+void CFXEU_Delete::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpNew);
+ if (m_bSecEnd) {
+ m_pEdit->InsertReturn(&m_SecProps, &m_WordProps, FALSE, TRUE);
+ } else {
+ m_pEdit->InsertWord(m_Word, m_nCharset, &m_WordProps, FALSE, TRUE);
+ }
+ }
}
/* -------------------------------------------------------------------------- */
-//CFXEU_Clear
+// CFXEU_Clear
-CFXEU_Clear::CFXEU_Clear(CFX_Edit * pEdit, const CPVT_WordRange & wrSel, const CFX_WideString & swText) :
- m_pEdit(pEdit),
- m_wrSel(wrSel),
- m_swText(swText)
-{
-}
+CFXEU_Clear::CFXEU_Clear(CFX_Edit* pEdit,
+ const CPVT_WordRange& wrSel,
+ const CFX_WideString& swText)
+ : m_pEdit(pEdit), m_wrSel(wrSel), m_swText(swText) {}
-CFXEU_Clear::~CFXEU_Clear()
-{
-}
+CFXEU_Clear::~CFXEU_Clear() {}
-void CFXEU_Clear::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
- m_pEdit->Clear(FALSE,TRUE);
- }
+void CFXEU_Clear::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetSel(m_wrSel.BeginPos, m_wrSel.EndPos);
+ m_pEdit->Clear(FALSE, TRUE);
+ }
}
-void CFXEU_Clear::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wrSel.BeginPos);
- m_pEdit->InsertText(m_swText.c_str(), DEFAULT_CHARSET, NULL, NULL, FALSE, TRUE);
- m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
- }
+void CFXEU_Clear::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wrSel.BeginPos);
+ m_pEdit->InsertText(m_swText.c_str(), DEFAULT_CHARSET, NULL, NULL, FALSE,
+ TRUE);
+ m_pEdit->SetSel(m_wrSel.BeginPos, m_wrSel.EndPos);
+ }
}
/* -------------------------------------------------------------------------- */
-//CFXEU_ClearRich
-
-CFXEU_ClearRich::CFXEU_ClearRich(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- const CPVT_WordRange & wrSel, FX_WORD word, int32_t charset,
- const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) :
- m_pEdit(pEdit),
- m_wpOld(wpOldPlace),
- m_wpNew(wpNewPlace),
- m_wrSel(wrSel),
- m_Word(word),
- m_nCharset(charset),
- m_SecProps(SecProps),
- m_WordProps(WordProps)
-{
-}
-
-CFXEU_ClearRich::~CFXEU_ClearRich()
-{
-}
-
-void CFXEU_ClearRich::Redo()
-{
- if (m_pEdit && IsLast())
- {
- m_pEdit->SelectNone();
- m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
- m_pEdit->Clear(FALSE,TRUE);
- }
-}
-
-void CFXEU_ClearRich::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- if (m_wpNew.SecCmp(m_wpOld) != 0)
- {
- m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,FALSE);
- }
- else
- {
- m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,FALSE);
- }
-
- if (IsFirst())
- {
- m_pEdit->PaintInsertText(m_wrSel.BeginPos,m_wrSel.EndPos);
- m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
- }
- }
+// CFXEU_ClearRich
+
+CFXEU_ClearRich::CFXEU_ClearRich(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ const CPVT_WordRange& wrSel,
+ FX_WORD word,
+ int32_t charset,
+ const CPVT_SecProps& SecProps,
+ const CPVT_WordProps& WordProps)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_wrSel(wrSel),
+ m_Word(word),
+ m_nCharset(charset),
+ m_SecProps(SecProps),
+ m_WordProps(WordProps) {}
+
+CFXEU_ClearRich::~CFXEU_ClearRich() {}
+
+void CFXEU_ClearRich::Redo() {
+ if (m_pEdit && IsLast()) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetSel(m_wrSel.BeginPos, m_wrSel.EndPos);
+ m_pEdit->Clear(FALSE, TRUE);
+ }
+}
+
+void CFXEU_ClearRich::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ if (m_wpNew.SecCmp(m_wpOld) != 0) {
+ m_pEdit->InsertReturn(&m_SecProps, &m_WordProps, FALSE, FALSE);
+ } else {
+ m_pEdit->InsertWord(m_Word, m_nCharset, &m_WordProps, FALSE, FALSE);
+ }
+
+ if (IsFirst()) {
+ m_pEdit->PaintInsertText(m_wrSel.BeginPos, m_wrSel.EndPos);
+ m_pEdit->SetSel(m_wrSel.BeginPos, m_wrSel.EndPos);
+ }
+ }
}
/* -------------------------------------------------------------------------- */
-//CFXEU_InsertText
-
-CFXEU_InsertText::CFXEU_InsertText(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
- const CFX_WideString & swText, int32_t charset,
- const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) :
- m_pEdit(pEdit),
- m_wpOld(wpOldPlace),
- m_wpNew(wpNewPlace),
- m_swText(swText),
- m_nCharset(charset),
- m_SecProps(),
- m_WordProps()
-{
- if (pSecProps)
- m_SecProps = *pSecProps;
- if (pWordProps)
- m_WordProps = *pWordProps;
-}
-
-CFXEU_InsertText::~CFXEU_InsertText()
-{
-}
-
-void CFXEU_InsertText::Redo()
-{
- if (m_pEdit && IsLast())
- {
- m_pEdit->SelectNone();
- m_pEdit->SetCaret(m_wpOld);
- m_pEdit->InsertText(m_swText.c_str(), m_nCharset, &m_SecProps, &m_WordProps, FALSE, TRUE);
- }
-}
-
-void CFXEU_InsertText::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SelectNone();
- m_pEdit->SetSel(m_wpOld,m_wpNew);
- m_pEdit->Clear(FALSE,TRUE);
- }
+// CFXEU_InsertText
+
+CFXEU_InsertText::CFXEU_InsertText(CFX_Edit* pEdit,
+ const CPVT_WordPlace& wpOldPlace,
+ const CPVT_WordPlace& wpNewPlace,
+ const CFX_WideString& swText,
+ int32_t charset,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps)
+ : m_pEdit(pEdit),
+ m_wpOld(wpOldPlace),
+ m_wpNew(wpNewPlace),
+ m_swText(swText),
+ m_nCharset(charset),
+ m_SecProps(),
+ m_WordProps() {
+ if (pSecProps)
+ m_SecProps = *pSecProps;
+ if (pWordProps)
+ m_WordProps = *pWordProps;
+}
+
+CFXEU_InsertText::~CFXEU_InsertText() {}
+
+void CFXEU_InsertText::Redo() {
+ if (m_pEdit && IsLast()) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetCaret(m_wpOld);
+ m_pEdit->InsertText(m_swText.c_str(), m_nCharset, &m_SecProps, &m_WordProps,
+ FALSE, TRUE);
+ }
+}
+
+void CFXEU_InsertText::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SelectNone();
+ m_pEdit->SetSel(m_wpOld, m_wpNew);
+ m_pEdit->Clear(FALSE, TRUE);
+ }
}
/* -------------------------------------------------------------------------- */
-CFXEU_SetSecProps::CFXEU_SetSecProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep,
- const CPVT_SecProps & oldsecprops, const CPVT_WordProps & oldwordprops,
- const CPVT_SecProps & newsecprops, const CPVT_WordProps & newwordprops, const CPVT_WordRange & range)
- : m_pEdit(pEdit),
- m_wpPlace(place),
- m_wrPlace(range),
- m_eProps(ep),
- m_OldSecProps(oldsecprops),
- m_NewSecProps(newsecprops),
- m_OldWordProps(oldwordprops),
- m_NewWordProps(newwordprops)
-{
-}
-
-CFXEU_SetSecProps::~CFXEU_SetSecProps()
-{
-}
-
-void CFXEU_SetSecProps::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_NewSecProps,&m_NewWordProps,m_wrPlace,FALSE);
- if (IsLast())
- {
- m_pEdit->SelectNone();
- m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
- m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
- }
- }
-}
-
-void CFXEU_SetSecProps::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_OldSecProps,&m_OldWordProps,m_wrPlace,FALSE);
- if (IsFirst())
- {
- m_pEdit->SelectNone();
- m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
- m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
- }
- }
+CFXEU_SetSecProps::CFXEU_SetSecProps(CFX_Edit* pEdit,
+ const CPVT_WordPlace& place,
+ EDIT_PROPS_E ep,
+ const CPVT_SecProps& oldsecprops,
+ const CPVT_WordProps& oldwordprops,
+ const CPVT_SecProps& newsecprops,
+ const CPVT_WordProps& newwordprops,
+ const CPVT_WordRange& range)
+ : m_pEdit(pEdit),
+ m_wpPlace(place),
+ m_wrPlace(range),
+ m_eProps(ep),
+ m_OldSecProps(oldsecprops),
+ m_NewSecProps(newsecprops),
+ m_OldWordProps(oldwordprops),
+ m_NewWordProps(newwordprops) {}
+
+CFXEU_SetSecProps::~CFXEU_SetSecProps() {}
+
+void CFXEU_SetSecProps::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SetSecProps(m_eProps, m_wpPlace, &m_NewSecProps, &m_NewWordProps,
+ m_wrPlace, FALSE);
+ if (IsLast()) {
+ m_pEdit->SelectNone();
+ m_pEdit->PaintSetProps(m_eProps, m_wrPlace);
+ m_pEdit->SetSel(m_wrPlace.BeginPos, m_wrPlace.EndPos);
+ }
+ }
+}
+
+void CFXEU_SetSecProps::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SetSecProps(m_eProps, m_wpPlace, &m_OldSecProps, &m_OldWordProps,
+ m_wrPlace, FALSE);
+ if (IsFirst()) {
+ m_pEdit->SelectNone();
+ m_pEdit->PaintSetProps(m_eProps, m_wrPlace);
+ m_pEdit->SetSel(m_wrPlace.BeginPos, m_wrPlace.EndPos);
+ }
+ }
}
/* -------------------------------------------------------------------------- */
-CFXEU_SetWordProps::CFXEU_SetWordProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep,
- const CPVT_WordProps & oldprops, const CPVT_WordProps & newprops, const CPVT_WordRange & range)
- : m_pEdit(pEdit),
- m_wpPlace(place),
- m_wrPlace(range),
- m_eProps(ep),
- m_OldWordProps(oldprops),
- m_NewWordProps(newprops)
-{
-}
-
-CFXEU_SetWordProps::~CFXEU_SetWordProps()
-{
-}
-
-void CFXEU_SetWordProps::Redo()
-{
- if (m_pEdit)
- {
- m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_NewWordProps,m_wrPlace,FALSE);
- if (IsLast())
- {
- m_pEdit->SelectNone();
- m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
- m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
- }
- }
-}
-
-void CFXEU_SetWordProps::Undo()
-{
- if (m_pEdit)
- {
- m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_OldWordProps,m_wrPlace,FALSE);
- if (IsFirst())
- {
- m_pEdit->SelectNone();
- m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
- m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
- }
- }
-}
-
-/* ------------------------------------- CFX_Edit ------------------------------------- */
-
-CFX_Edit::CFX_Edit(IPDF_VariableText * pVT) :
- m_pVT(pVT),
- m_pNotify(NULL),
- m_pOprNotify(NULL),
- m_pVTProvide(NULL),
- m_wpCaret(-1,-1,-1),
- m_wpOldCaret(-1,-1,-1),
- m_SelState(),
- m_ptScrollPos(0,0),
- m_ptRefreshScrollPos(0,0),
- m_bEnableScroll(FALSE),
- m_pIterator(NULL),
- m_ptCaret(0.0f,0.0f),
- m_Undo(FX_EDIT_UNDO_MAXITEM),
- m_nAlignment(0),
- m_bNotifyFlag(FALSE),
- m_bEnableOverflow(FALSE),
- m_bEnableRefresh(TRUE),
- m_rcOldContent(0.0f,0.0f,0.0f,0.0f),
- m_bEnableUndo(TRUE),
- m_bNotify(TRUE),
- m_bOprNotify(FALSE),
- m_pGroupUndoItem(NULL)
-{
- ASSERT(pVT != NULL);
-}
-
-CFX_Edit::~CFX_Edit()
-{
- delete m_pVTProvide;
- m_pVTProvide = NULL;
- delete m_pIterator;
- m_pIterator = NULL;
- ASSERT(m_pGroupUndoItem == NULL);
+CFXEU_SetWordProps::CFXEU_SetWordProps(CFX_Edit* pEdit,
+ const CPVT_WordPlace& place,
+ EDIT_PROPS_E ep,
+ const CPVT_WordProps& oldprops,
+ const CPVT_WordProps& newprops,
+ const CPVT_WordRange& range)
+ : m_pEdit(pEdit),
+ m_wpPlace(place),
+ m_wrPlace(range),
+ m_eProps(ep),
+ m_OldWordProps(oldprops),
+ m_NewWordProps(newprops) {}
+
+CFXEU_SetWordProps::~CFXEU_SetWordProps() {}
+
+void CFXEU_SetWordProps::Redo() {
+ if (m_pEdit) {
+ m_pEdit->SetWordProps(m_eProps, m_wpPlace, &m_NewWordProps, m_wrPlace,
+ FALSE);
+ if (IsLast()) {
+ m_pEdit->SelectNone();
+ m_pEdit->PaintSetProps(m_eProps, m_wrPlace);
+ m_pEdit->SetSel(m_wrPlace.BeginPos, m_wrPlace.EndPos);
+ }
+ }
+}
+
+void CFXEU_SetWordProps::Undo() {
+ if (m_pEdit) {
+ m_pEdit->SetWordProps(m_eProps, m_wpPlace, &m_OldWordProps, m_wrPlace,
+ FALSE);
+ if (IsFirst()) {
+ m_pEdit->SelectNone();
+ m_pEdit->PaintSetProps(m_eProps, m_wrPlace);
+ m_pEdit->SetSel(m_wrPlace.BeginPos, m_wrPlace.EndPos);
+ }
+ }
+}
+
+/* ------------------------------------- CFX_Edit
+ * ------------------------------------- */
+
+CFX_Edit::CFX_Edit(IPDF_VariableText* pVT)
+ : m_pVT(pVT),
+ m_pNotify(NULL),
+ m_pOprNotify(NULL),
+ m_pVTProvide(NULL),
+ m_wpCaret(-1, -1, -1),
+ m_wpOldCaret(-1, -1, -1),
+ m_SelState(),
+ m_ptScrollPos(0, 0),
+ m_ptRefreshScrollPos(0, 0),
+ m_bEnableScroll(FALSE),
+ m_pIterator(NULL),
+ m_ptCaret(0.0f, 0.0f),
+ m_Undo(FX_EDIT_UNDO_MAXITEM),
+ m_nAlignment(0),
+ m_bNotifyFlag(FALSE),
+ m_bEnableOverflow(FALSE),
+ m_bEnableRefresh(TRUE),
+ m_rcOldContent(0.0f, 0.0f, 0.0f, 0.0f),
+ m_bEnableUndo(TRUE),
+ m_bNotify(TRUE),
+ m_bOprNotify(FALSE),
+ m_pGroupUndoItem(NULL) {
+ ASSERT(pVT != NULL);
+}
+
+CFX_Edit::~CFX_Edit() {
+ delete m_pVTProvide;
+ m_pVTProvide = NULL;
+ delete m_pIterator;
+ m_pIterator = NULL;
+ ASSERT(m_pGroupUndoItem == NULL);
}
// public methods
-void CFX_Edit::Initialize()
-{
- m_pVT->Initialize();
- SetCaret(m_pVT->GetBeginWordPlace());
- SetCaretOrigin();
+void CFX_Edit::Initialize() {
+ m_pVT->Initialize();
+ SetCaret(m_pVT->GetBeginWordPlace());
+ SetCaretOrigin();
}
-void CFX_Edit::SetFontMap(IFX_Edit_FontMap * pFontMap)
-{
- delete m_pVTProvide;
- m_pVT->SetProvider(m_pVTProvide = new CFX_Edit_Provider(pFontMap));
+void CFX_Edit::SetFontMap(IFX_Edit_FontMap* pFontMap) {
+ delete m_pVTProvide;
+ m_pVT->SetProvider(m_pVTProvide = new CFX_Edit_Provider(pFontMap));
}
-void CFX_Edit::SetVTProvider(IPDF_VariableText_Provider* pProvider)
-{
- m_pVT->SetProvider(pProvider);
+void CFX_Edit::SetVTProvider(IPDF_VariableText_Provider* pProvider) {
+ m_pVT->SetProvider(pProvider);
}
-void CFX_Edit::SetNotify(IFX_Edit_Notify* pNotify)
-{
- m_pNotify = pNotify;
+void CFX_Edit::SetNotify(IFX_Edit_Notify* pNotify) {
+ m_pNotify = pNotify;
}
-void CFX_Edit::SetOprNotify(IFX_Edit_OprNotify* pOprNotify)
-{
- m_pOprNotify = pOprNotify;
+void CFX_Edit::SetOprNotify(IFX_Edit_OprNotify* pOprNotify) {
+ m_pOprNotify = pOprNotify;
}
-IFX_Edit_Iterator * CFX_Edit::GetIterator()
-{
- if (!m_pIterator)
- m_pIterator = new CFX_Edit_Iterator(this,m_pVT->GetIterator());
+IFX_Edit_Iterator* CFX_Edit::GetIterator() {
+ if (!m_pIterator)
+ m_pIterator = new CFX_Edit_Iterator(this, m_pVT->GetIterator());
- return m_pIterator;
+ return m_pIterator;
}
-IPDF_VariableText * CFX_Edit::GetVariableText()
-{
- return m_pVT;
+IPDF_VariableText* CFX_Edit::GetVariableText() {
+ return m_pVT;
}
-IFX_Edit_FontMap* CFX_Edit::GetFontMap()
-{
- if (m_pVTProvide)
- return m_pVTProvide->GetFontMap();
+IFX_Edit_FontMap* CFX_Edit::GetFontMap() {
+ if (m_pVTProvide)
+ return m_pVTProvide->GetFontMap();
- return NULL;
+ return NULL;
}
-void CFX_Edit::SetPlateRect(const CPDF_Rect & rect, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetPlateRect(rect);
- m_ptScrollPos = CPDF_Point(rect.left,rect.top);
- if (bPaint) Paint();
+void CFX_Edit::SetPlateRect(const CPDF_Rect& rect, FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetPlateRect(rect);
+ m_ptScrollPos = CPDF_Point(rect.left, rect.top);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetAlignmentH(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetAlignment(nFormat);
- if (bPaint) Paint();
+void CFX_Edit::SetAlignmentH(int32_t nFormat /* =0 */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetAlignment(nFormat);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetAlignmentV(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_nAlignment = nFormat;
- if (bPaint) Paint();
+void CFX_Edit::SetAlignmentV(int32_t nFormat /* =0 */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_nAlignment = nFormat;
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetPasswordChar(FX_WORD wSubWord/* ='*' */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetPasswordChar(wSubWord);
- if (bPaint) Paint();
+void CFX_Edit::SetPasswordChar(FX_WORD wSubWord /* ='*' */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetPasswordChar(wSubWord);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetLimitChar(int32_t nLimitChar/* =0 */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetLimitChar(nLimitChar);
- if (bPaint) Paint();
+void CFX_Edit::SetLimitChar(int32_t nLimitChar /* =0 */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetLimitChar(nLimitChar);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetCharArray(int32_t nCharArray/* =0 */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetCharArray(nCharArray);
- if (bPaint) Paint();
+void CFX_Edit::SetCharArray(int32_t nCharArray /* =0 */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetCharArray(nCharArray);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetCharSpace(FX_FLOAT fCharSpace/* =0.0f */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetCharSpace(fCharSpace);
- if (bPaint) Paint();
+void CFX_Edit::SetCharSpace(FX_FLOAT fCharSpace /* =0.0f */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetCharSpace(fCharSpace);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetHorzScale(int32_t nHorzScale/* =100 */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetHorzScale(nHorzScale);
- if (bPaint) Paint();
+void CFX_Edit::SetHorzScale(int32_t nHorzScale /* =100 */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetHorzScale(nHorzScale);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetMultiLine(FX_BOOL bMultiLine/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetMultiLine(bMultiLine);
- if (bPaint) Paint();
+void CFX_Edit::SetMultiLine(FX_BOOL bMultiLine /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetMultiLine(bMultiLine);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetAutoReturn(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetAutoReturn(bAuto);
- if (bPaint) Paint();
+void CFX_Edit::SetAutoReturn(FX_BOOL bAuto /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetAutoReturn(bAuto);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetLineLeading(FX_FLOAT fLineLeading/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetLineLeading(fLineLeading);
- if (bPaint) Paint();
+void CFX_Edit::SetLineLeading(FX_FLOAT fLineLeading /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetLineLeading(fLineLeading);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetAutoFontSize(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetAutoFontSize(bAuto);
- if (bPaint) Paint();
+void CFX_Edit::SetAutoFontSize(FX_BOOL bAuto /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetAutoFontSize(bAuto);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetFontSize(fFontSize);
- if (bPaint) Paint();
+void CFX_Edit::SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetFontSize(fFontSize);
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetAutoScroll(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_bEnableScroll = bAuto;
- if (bPaint) Paint();
+void CFX_Edit::SetAutoScroll(FX_BOOL bAuto /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_bEnableScroll = bAuto;
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetTextOverflow(FX_BOOL bAllowed /*= FALSE*/, FX_BOOL bPaint/* = TRUE*/)
-{
- m_bEnableOverflow = bAllowed;
- if (bPaint) Paint();
+void CFX_Edit::SetTextOverflow(FX_BOOL bAllowed /*= FALSE*/,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_bEnableOverflow = bAllowed;
+ if (bPaint)
+ Paint();
}
-void CFX_Edit::SetSel(int32_t nStartChar,int32_t nEndChar)
-{
- if (m_pVT->IsValid())
- {
- if (nStartChar == 0 && nEndChar < 0)
- {
- SelectAll();
- }
- else if (nStartChar < 0)
- {
- SelectNone();
- }
- else
- {
- if (nStartChar < nEndChar)
- {
- SetSel(m_pVT->WordIndexToWordPlace(nStartChar),m_pVT->WordIndexToWordPlace(nEndChar));
- }
- else
- {
- SetSel(m_pVT->WordIndexToWordPlace(nEndChar),m_pVT->WordIndexToWordPlace(nStartChar));
- }
- }
+void CFX_Edit::SetSel(int32_t nStartChar, int32_t nEndChar) {
+ if (m_pVT->IsValid()) {
+ if (nStartChar == 0 && nEndChar < 0) {
+ SelectAll();
+ } else if (nStartChar < 0) {
+ SelectNone();
+ } else {
+ if (nStartChar < nEndChar) {
+ SetSel(m_pVT->WordIndexToWordPlace(nStartChar),
+ m_pVT->WordIndexToWordPlace(nEndChar));
+ } else {
+ SetSel(m_pVT->WordIndexToWordPlace(nEndChar),
+ m_pVT->WordIndexToWordPlace(nStartChar));
+ }
}
+ }
}
-void CFX_Edit::SetSel(const CPVT_WordPlace & begin,const CPVT_WordPlace & end)
-{
- if (m_pVT->IsValid())
- {
- SelectNone();
+void CFX_Edit::SetSel(const CPVT_WordPlace& begin, const CPVT_WordPlace& end) {
+ if (m_pVT->IsValid()) {
+ SelectNone();
- m_SelState.Set(begin,end);
+ m_SelState.Set(begin, end);
- SetCaret(m_SelState.EndPos);
+ SetCaret(m_SelState.EndPos);
- if (m_SelState.IsExist())
- {
- ScrollToCaret();
- CPVT_WordRange wr(m_SelState.BeginPos,m_SelState.EndPos);
- Refresh(RP_OPTIONAL,&wr);
- SetCaretInfo();
- }
- else
- {
- ScrollToCaret();
- SetCaretInfo();
- }
+ if (m_SelState.IsExist()) {
+ ScrollToCaret();
+ CPVT_WordRange wr(m_SelState.BeginPos, m_SelState.EndPos);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretInfo();
+ } else {
+ ScrollToCaret();
+ SetCaretInfo();
}
+ }
}
-void CFX_Edit::GetSel(int32_t & nStartChar, int32_t & nEndChar) const
-{
- nStartChar = -1;
- nEndChar = -1;
+void CFX_Edit::GetSel(int32_t& nStartChar, int32_t& nEndChar) const {
+ nStartChar = -1;
+ nEndChar = -1;
- if (m_pVT->IsValid())
- {
- if (m_SelState.IsExist())
- {
- if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
- {
- nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
- nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
- }
- else
- {
- nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
- nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
- }
- }
- else
- {
- nStartChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
- nEndChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
- }
+ if (m_pVT->IsValid()) {
+ if (m_SelState.IsExist()) {
+ if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos) < 0) {
+ nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
+ nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
+ } else {
+ nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
+ nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
+ }
+ } else {
+ nStartChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
+ nEndChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
}
+ }
}
-int32_t CFX_Edit::GetCaret() const
-{
- if (m_pVT->IsValid())
- return m_pVT->WordPlaceToWordIndex(m_wpCaret);
+int32_t CFX_Edit::GetCaret() const {
+ if (m_pVT->IsValid())
+ return m_pVT->WordPlaceToWordIndex(m_wpCaret);
- return -1;
+ return -1;
}
-CPVT_WordPlace CFX_Edit::GetCaretWordPlace() const
-{
- return m_wpCaret;
+CPVT_WordPlace CFX_Edit::GetCaretWordPlace() const {
+ return m_wpCaret;
}
-CFX_WideString CFX_Edit::GetText() const
-{
- CFX_WideString swRet;
+CFX_WideString CFX_Edit::GetText() const {
+ CFX_WideString swRet;
- if (m_pVT->IsValid())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- FX_BOOL bRich = m_pVT->IsRichText();
+ if (m_pVT->IsValid()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ FX_BOOL bRich = m_pVT->IsRichText();
- pIterator->SetAt(0);
+ pIterator->SetAt(0);
- CPVT_Word wordinfo;
- CPVT_WordPlace oldplace = pIterator->GetAt();
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
-
- if (pIterator->GetWord(wordinfo))
- {
- if (bRich)
- {
- swRet += wordinfo.Word;
- }
- else
- {
- swRet += wordinfo.Word;
- }
- }
+ CPVT_Word wordinfo;
+ CPVT_WordPlace oldplace = pIterator->GetAt();
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
- if (oldplace.SecCmp(place) != 0)
- {
- swRet += 0x0D;
- swRet += 0x0A;
- }
+ if (pIterator->GetWord(wordinfo)) {
+ if (bRich) {
+ swRet += wordinfo.Word;
+ } else {
+ swRet += wordinfo.Word;
+ }
+ }
- oldplace = place;
- }
+ if (oldplace.SecCmp(place) != 0) {
+ swRet += 0x0D;
+ swRet += 0x0A;
}
+
+ oldplace = place;
+ }
}
+ }
- return swRet;
+ return swRet;
}
-CFX_WideString CFX_Edit::GetRangeText(const CPVT_WordRange & range) const
-{
- CFX_WideString swRet;
+CFX_WideString CFX_Edit::GetRangeText(const CPVT_WordRange& range) const {
+ CFX_WideString swRet;
- if (m_pVT->IsValid())
- {
- FX_BOOL bRich = m_pVT->IsRichText();
+ if (m_pVT->IsValid()) {
+ FX_BOOL bRich = m_pVT->IsRichText();
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- CPVT_WordRange wrTemp = range;
- m_pVT->UpdateWordPlace(wrTemp.BeginPos);
- m_pVT->UpdateWordPlace(wrTemp.EndPos);
- pIterator->SetAt(wrTemp.BeginPos);
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordRange wrTemp = range;
+ m_pVT->UpdateWordPlace(wrTemp.BeginPos);
+ m_pVT->UpdateWordPlace(wrTemp.EndPos);
+ pIterator->SetAt(wrTemp.BeginPos);
- CPVT_Word wordinfo;
- CPVT_WordPlace oldplace = wrTemp.BeginPos;
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (place.WordCmp(wrTemp.EndPos) > 0)break;
-
- if (pIterator->GetWord(wordinfo))
- {
- if (bRich)
- {
- swRet += wordinfo.Word;
- }
- else
- {
- swRet += wordinfo.Word;
- }
- }
+ CPVT_Word wordinfo;
+ CPVT_WordPlace oldplace = wrTemp.BeginPos;
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (place.WordCmp(wrTemp.EndPos) > 0)
+ break;
- if (oldplace.SecCmp(place) != 0)
- {
- swRet += 0x0D;
- swRet += 0x0A;
- }
+ if (pIterator->GetWord(wordinfo)) {
+ if (bRich) {
+ swRet += wordinfo.Word;
+ } else {
+ swRet += wordinfo.Word;
+ }
+ }
- oldplace = place;
- }
+ if (oldplace.SecCmp(place) != 0) {
+ swRet += 0x0D;
+ swRet += 0x0A;
}
+
+ oldplace = place;
+ }
}
+ }
- return swRet;
+ return swRet;
}
-CFX_WideString CFX_Edit::GetSelText() const
-{
- return GetRangeText(m_SelState.ConvertToWordRange());
+CFX_WideString CFX_Edit::GetSelText() const {
+ return GetRangeText(m_SelState.ConvertToWordRange());
}
-int32_t CFX_Edit::GetTotalWords() const
-{
- return m_pVT->GetTotalWords();
+int32_t CFX_Edit::GetTotalWords() const {
+ return m_pVT->GetTotalWords();
}
-int32_t CFX_Edit::GetTotalLines() const
-{
- int32_t nLines = 0;
+int32_t CFX_Edit::GetTotalLines() const {
+ int32_t nLines = 0;
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(0);
- while (pIterator->NextLine())
- nLines++;
- }
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(0);
+ while (pIterator->NextLine())
+ nLines++;
+ }
- return nLines+1;
+ return nLines + 1;
}
-CPVT_WordRange CFX_Edit::GetSelectWordRange() const
-{
- return m_SelState.ConvertToWordRange();
+CPVT_WordRange CFX_Edit::GetSelectWordRange() const {
+ return m_SelState.ConvertToWordRange();
}
-CPVT_WordRange CFX_Edit::CombineWordRange(const CPVT_WordRange & wr1, const CPVT_WordRange & wr2)
-{
- CPVT_WordRange wrRet;
+CPVT_WordRange CFX_Edit::CombineWordRange(const CPVT_WordRange& wr1,
+ const CPVT_WordRange& wr2) {
+ CPVT_WordRange wrRet;
- if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0)
- {
- wrRet.BeginPos = wr1.BeginPos;
- }
- else
- {
- wrRet.BeginPos = wr2.BeginPos;
- }
+ if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) {
+ wrRet.BeginPos = wr1.BeginPos;
+ } else {
+ wrRet.BeginPos = wr2.BeginPos;
+ }
- if (wr1.EndPos.WordCmp(wr2.EndPos) < 0)
- {
- wrRet.EndPos = wr2.EndPos;
- }
- else
- {
- wrRet.EndPos = wr1.EndPos;
- }
+ if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) {
+ wrRet.EndPos = wr2.EndPos;
+ } else {
+ wrRet.EndPos = wr1.EndPos;
+ }
- return wrRet;
+ return wrRet;
}
-FX_BOOL CFX_Edit::IsRichText() const
-{
- return m_pVT->IsRichText();
+FX_BOOL CFX_Edit::IsRichText() const {
+ return m_pVT->IsRichText();
}
-void CFX_Edit::SetRichText(FX_BOOL bRichText/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pVT->SetRichText(bRichText);
- if (bPaint) Paint();
+void CFX_Edit::SetRichText(FX_BOOL bRichText /* =TRUE */,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pVT->SetRichText(bRichText);
+ if (bPaint)
+ Paint();
}
-FX_BOOL CFX_Edit::SetRichFontIndex(int32_t nFontIndex)
-{
- CPVT_WordProps WordProps;
- WordProps.nFontIndex = nFontIndex;
- return SetRichTextProps(EP_FONTINDEX,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichFontIndex(int32_t nFontIndex) {
+ CPVT_WordProps WordProps;
+ WordProps.nFontIndex = nFontIndex;
+ return SetRichTextProps(EP_FONTINDEX, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichFontSize(FX_FLOAT fFontSize)
-{
- CPVT_WordProps WordProps;
- WordProps.fFontSize = fFontSize;
- return SetRichTextProps(EP_FONTSIZE,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichFontSize(FX_FLOAT fFontSize) {
+ CPVT_WordProps WordProps;
+ WordProps.fFontSize = fFontSize;
+ return SetRichTextProps(EP_FONTSIZE, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextColor(FX_COLORREF dwColor)
-{
- CPVT_WordProps WordProps;
- WordProps.dwWordColor = dwColor;
- return SetRichTextProps(EP_WORDCOLOR,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextColor(FX_COLORREF dwColor) {
+ CPVT_WordProps WordProps;
+ WordProps.dwWordColor = dwColor;
+ return SetRichTextProps(EP_WORDCOLOR, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextScript(int32_t nScriptType)
-{
- CPVT_WordProps WordProps;
- WordProps.nScriptType = nScriptType;
- return SetRichTextProps(EP_SCRIPTTYPE,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextScript(int32_t nScriptType) {
+ CPVT_WordProps WordProps;
+ WordProps.nScriptType = nScriptType;
+ return SetRichTextProps(EP_SCRIPTTYPE, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextBold(FX_BOOL bBold)
-{
- CPVT_WordProps WordProps;
- if (bBold)
- WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
- return SetRichTextProps(EP_BOLD,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextBold(FX_BOOL bBold) {
+ CPVT_WordProps WordProps;
+ if (bBold)
+ WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
+ return SetRichTextProps(EP_BOLD, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextItalic(FX_BOOL bItalic)
-{
- CPVT_WordProps WordProps;
- if (bItalic)
- WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
- return SetRichTextProps(EP_ITALIC,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextItalic(FX_BOOL bItalic) {
+ CPVT_WordProps WordProps;
+ if (bItalic)
+ WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
+ return SetRichTextProps(EP_ITALIC, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextUnderline(FX_BOOL bUnderline)
-{
- CPVT_WordProps WordProps;
- if (bUnderline)
- WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
- return SetRichTextProps(EP_UNDERLINE,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextUnderline(FX_BOOL bUnderline) {
+ CPVT_WordProps WordProps;
+ if (bUnderline)
+ WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
+ return SetRichTextProps(EP_UNDERLINE, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextCrossout(FX_BOOL bCrossout)
-{
- CPVT_WordProps WordProps;
- if (bCrossout)
- WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
- return SetRichTextProps(EP_CROSSOUT,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextCrossout(FX_BOOL bCrossout) {
+ CPVT_WordProps WordProps;
+ if (bCrossout)
+ WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
+ return SetRichTextProps(EP_CROSSOUT, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextCharSpace(FX_FLOAT fCharSpace)
-{
- CPVT_WordProps WordProps;
- WordProps.fCharSpace = fCharSpace;
- return SetRichTextProps(EP_CHARSPACE,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextCharSpace(FX_FLOAT fCharSpace) {
+ CPVT_WordProps WordProps;
+ WordProps.fCharSpace = fCharSpace;
+ return SetRichTextProps(EP_CHARSPACE, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextHorzScale(int32_t nHorzScale /*= 100*/)
-{
- CPVT_WordProps WordProps;
- WordProps.nHorzScale = nHorzScale;
- return SetRichTextProps(EP_HORZSCALE,NULL,&WordProps);
+FX_BOOL CFX_Edit::SetRichTextHorzScale(int32_t nHorzScale /*= 100*/) {
+ CPVT_WordProps WordProps;
+ WordProps.nHorzScale = nHorzScale;
+ return SetRichTextProps(EP_HORZSCALE, NULL, &WordProps);
}
-FX_BOOL CFX_Edit::SetRichTextLineLeading(FX_FLOAT fLineLeading)
-{
- CPVT_SecProps SecProps;
- SecProps.fLineLeading = fLineLeading;
- return SetRichTextProps(EP_LINELEADING,&SecProps,NULL);
+FX_BOOL CFX_Edit::SetRichTextLineLeading(FX_FLOAT fLineLeading) {
+ CPVT_SecProps SecProps;
+ SecProps.fLineLeading = fLineLeading;
+ return SetRichTextProps(EP_LINELEADING, &SecProps, NULL);
}
-FX_BOOL CFX_Edit::SetRichTextLineIndent(FX_FLOAT fLineIndent)
-{
- CPVT_SecProps SecProps;
- SecProps.fLineIndent = fLineIndent;
- return SetRichTextProps(EP_LINEINDENT,&SecProps,NULL);
+FX_BOOL CFX_Edit::SetRichTextLineIndent(FX_FLOAT fLineIndent) {
+ CPVT_SecProps SecProps;
+ SecProps.fLineIndent = fLineIndent;
+ return SetRichTextProps(EP_LINEINDENT, &SecProps, NULL);
}
-FX_BOOL CFX_Edit::SetRichTextAlignment(int32_t nAlignment)
-{
- CPVT_SecProps SecProps;
- SecProps.nAlignment = nAlignment;
- return SetRichTextProps(EP_ALIGNMENT,&SecProps,NULL);
+FX_BOOL CFX_Edit::SetRichTextAlignment(int32_t nAlignment) {
+ CPVT_SecProps SecProps;
+ SecProps.nAlignment = nAlignment;
+ return SetRichTextProps(EP_ALIGNMENT, &SecProps, NULL);
}
-FX_BOOL CFX_Edit::SetRichTextProps(EDIT_PROPS_E eProps, const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps)
-{
- FX_BOOL bSet = FALSE;
- FX_BOOL bSet1,bSet2;
- if (m_pVT->IsValid() && m_pVT->IsRichText())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
+FX_BOOL CFX_Edit::SetRichTextProps(EDIT_PROPS_E eProps,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps) {
+ FX_BOOL bSet = FALSE;
+ FX_BOOL bSet1, bSet2;
+ if (m_pVT->IsValid() && m_pVT->IsRichText()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
- m_pVT->UpdateWordPlace(wrTemp.BeginPos);
- m_pVT->UpdateWordPlace(wrTemp.EndPos);
- pIterator->SetAt(wrTemp.BeginPos);
+ m_pVT->UpdateWordPlace(wrTemp.BeginPos);
+ m_pVT->UpdateWordPlace(wrTemp.EndPos);
+ pIterator->SetAt(wrTemp.BeginPos);
- BeginGroupUndo(L"");;
+ BeginGroupUndo(L"");
+ ;
- bSet = SetSecProps(eProps,wrTemp.BeginPos,pSecProps,pWordProps,wrTemp,TRUE);
+ bSet = SetSecProps(eProps, wrTemp.BeginPos, pSecProps, pWordProps, wrTemp,
+ TRUE);
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (place.WordCmp(wrTemp.EndPos) > 0) break;
- bSet1 = SetSecProps(eProps,place,pSecProps,pWordProps,wrTemp,TRUE);
- bSet2 = SetWordProps(eProps,place,pWordProps,wrTemp,TRUE);
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (place.WordCmp(wrTemp.EndPos) > 0)
+ break;
+ bSet1 = SetSecProps(eProps, place, pSecProps, pWordProps, wrTemp, TRUE);
+ bSet2 = SetWordProps(eProps, place, pWordProps, wrTemp, TRUE);
- if (!bSet)
- bSet = (bSet1 || bSet2);
- }
+ if (!bSet)
+ bSet = (bSet1 || bSet2);
+ }
- EndGroupUndo();
+ EndGroupUndo();
- if (bSet)
- {
- PaintSetProps(eProps,wrTemp);
- }
- }
+ if (bSet) {
+ PaintSetProps(eProps, wrTemp);
+ }
}
+ }
- return bSet;
+ return bSet;
}
-void CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr)
-{
- switch(eProps)
- {
+void CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange& wr) {
+ switch (eProps) {
case EP_LINELEADING:
case EP_LINEINDENT:
case EP_ALIGNMENT:
- RearrangePart(wr);
- ScrollToCaret();
- Refresh(RP_ANALYSE);
- SetCaretOrigin();
- SetCaretInfo();
- break;
+ RearrangePart(wr);
+ ScrollToCaret();
+ Refresh(RP_ANALYSE);
+ SetCaretOrigin();
+ SetCaretInfo();
+ break;
case EP_WORDCOLOR:
case EP_UNDERLINE:
case EP_CROSSOUT:
- Refresh(RP_OPTIONAL,&wr);
- break;
+ Refresh(RP_OPTIONAL, &wr);
+ break;
case EP_FONTINDEX:
case EP_FONTSIZE:
case EP_SCRIPTTYPE:
@@ -1503,2053 +1320,1814 @@ void CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr)
case EP_HORZSCALE:
case EP_BOLD:
case EP_ITALIC:
- RearrangePart(wr);
- ScrollToCaret();
-
- CPVT_WordRange wrRefresh(m_pVT->GetSectionBeginPlace(wr.BeginPos),
- m_pVT->GetSectionEndPlace(wr.EndPos));
- Refresh(RP_ANALYSE,&wrRefresh);
-
- SetCaretOrigin();
- SetCaretInfo();
- break;
- }
-}
-
-FX_BOOL CFX_Edit::SetSecProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place,
- const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps,
- const CPVT_WordRange & wr, FX_BOOL bAddUndo)
-{
- if (m_pVT->IsValid() && m_pVT->IsRichText())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- FX_BOOL bSet = FALSE;
- CPVT_Section secinfo;
- CPVT_Section OldSecinfo;
-
- CPVT_WordPlace oldplace = pIterator->GetAt();
-
- if (eProps == EP_LINELEADING || eProps == EP_LINEINDENT || eProps == EP_ALIGNMENT)
- {
- if (pSecProps)
- {
- pIterator->SetAt(place);
- if (pIterator->GetSection(secinfo))
- {
- if (bAddUndo) OldSecinfo = secinfo;
-
- switch(eProps)
- {
- case EP_LINELEADING:
- if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineLeading,pSecProps->fLineLeading))
- {
- secinfo.SecProps.fLineLeading = pSecProps->fLineLeading;
- bSet = TRUE;
- }
- break;
- case EP_LINEINDENT:
- if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineIndent,pSecProps->fLineIndent))
- {
- secinfo.SecProps.fLineIndent = pSecProps->fLineIndent;
- bSet = TRUE;
- }
- break;
- case EP_ALIGNMENT:
- if (secinfo.SecProps.nAlignment != pSecProps->nAlignment)
- {
- secinfo.SecProps.nAlignment = pSecProps->nAlignment;
- bSet = TRUE;
- }
- break;
- default:
- break;
- }
- }
+ RearrangePart(wr);
+ ScrollToCaret();
+
+ CPVT_WordRange wrRefresh(m_pVT->GetSectionBeginPlace(wr.BeginPos),
+ m_pVT->GetSectionEndPlace(wr.EndPos));
+ Refresh(RP_ANALYSE, &wrRefresh);
+
+ SetCaretOrigin();
+ SetCaretInfo();
+ break;
+ }
+}
+
+FX_BOOL CFX_Edit::SetSecProps(EDIT_PROPS_E eProps,
+ const CPVT_WordPlace& place,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps,
+ const CPVT_WordRange& wr,
+ FX_BOOL bAddUndo) {
+ if (m_pVT->IsValid() && m_pVT->IsRichText()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ FX_BOOL bSet = FALSE;
+ CPVT_Section secinfo;
+ CPVT_Section OldSecinfo;
+
+ CPVT_WordPlace oldplace = pIterator->GetAt();
+
+ if (eProps == EP_LINELEADING || eProps == EP_LINEINDENT ||
+ eProps == EP_ALIGNMENT) {
+ if (pSecProps) {
+ pIterator->SetAt(place);
+ if (pIterator->GetSection(secinfo)) {
+ if (bAddUndo)
+ OldSecinfo = secinfo;
+
+ switch (eProps) {
+ case EP_LINELEADING:
+ if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineLeading,
+ pSecProps->fLineLeading)) {
+ secinfo.SecProps.fLineLeading = pSecProps->fLineLeading;
+ bSet = TRUE;
}
- }
- else
- {
- if (pWordProps && place == m_pVT->GetSectionBeginPlace(place))
- {
- pIterator->SetAt(place);
- if (pIterator->GetSection(secinfo))
- {
- if (bAddUndo) OldSecinfo = secinfo;
-
- switch(eProps)
- {
- case EP_FONTINDEX:
- if (secinfo.WordProps.nFontIndex != pWordProps->nFontIndex)
- {
- secinfo.WordProps.nFontIndex = pWordProps->nFontIndex;
- bSet = TRUE;
- }
- break;
- case EP_FONTSIZE:
- if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fFontSize,pWordProps->fFontSize))
- {
- secinfo.WordProps.fFontSize = pWordProps->fFontSize;
- bSet = TRUE;
- }
- break;
- case EP_WORDCOLOR:
- if (secinfo.WordProps.dwWordColor != pWordProps->dwWordColor)
- {
- secinfo.WordProps.dwWordColor = pWordProps->dwWordColor;
- bSet = TRUE;
- }
- break;
- case EP_SCRIPTTYPE:
- if (secinfo.WordProps.nScriptType != pWordProps->nScriptType)
- {
- secinfo.WordProps.nScriptType = pWordProps->nScriptType;
- bSet = TRUE;
- }
- break;
- case EP_CHARSPACE:
- if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fCharSpace,pWordProps->fCharSpace))
- {
- secinfo.WordProps.fCharSpace = pWordProps->fCharSpace;
- bSet = TRUE;
- }
- break;
- case EP_HORZSCALE:
- if (secinfo.WordProps.nHorzScale != pWordProps->nHorzScale)
- {
- secinfo.WordProps.nHorzScale = pWordProps->nHorzScale;
- bSet = TRUE;
- }
- break;
- case EP_UNDERLINE:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE)
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0)
- {
- secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
- bSet = TRUE;
- }
- }
- else
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0)
- {
- secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE;
- bSet = TRUE;
- }
- }
- break;
- case EP_CROSSOUT:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT)
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0)
- {
- secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
- bSet = TRUE;
- }
- }
- else
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0)
- {
- secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT;
- bSet = TRUE;
- }
- }
- break;
- case EP_BOLD:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD)
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0)
- {
- secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
- bSet = TRUE;
- }
- }
- else
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0)
- {
- secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD;
- bSet = TRUE;
- }
- }
- break;
- case EP_ITALIC:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC)
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) == 0)
- {
- secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
- bSet = TRUE;
- }
- }
- else
- {
- if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) != 0)
- {
- secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC;
- bSet = TRUE;
- }
- }
- break;
- default:
- break;
- }
- }
+ break;
+ case EP_LINEINDENT:
+ if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineIndent,
+ pSecProps->fLineIndent)) {
+ secinfo.SecProps.fLineIndent = pSecProps->fLineIndent;
+ bSet = TRUE;
}
+ break;
+ case EP_ALIGNMENT:
+ if (secinfo.SecProps.nAlignment != pSecProps->nAlignment) {
+ secinfo.SecProps.nAlignment = pSecProps->nAlignment;
+ bSet = TRUE;
+ }
+ break;
+ default:
+ break;
}
-
- if (bSet)
- {
- pIterator->SetSection(secinfo);
-
- if (bAddUndo && m_bEnableUndo)
- {
- AddEditUndoItem(new CFXEU_SetSecProps
- (this,place,eProps,OldSecinfo.SecProps,OldSecinfo.WordProps,secinfo.SecProps,secinfo.WordProps,wr));
+ }
+ }
+ } else {
+ if (pWordProps && place == m_pVT->GetSectionBeginPlace(place)) {
+ pIterator->SetAt(place);
+ if (pIterator->GetSection(secinfo)) {
+ if (bAddUndo)
+ OldSecinfo = secinfo;
+
+ switch (eProps) {
+ case EP_FONTINDEX:
+ if (secinfo.WordProps.nFontIndex != pWordProps->nFontIndex) {
+ secinfo.WordProps.nFontIndex = pWordProps->nFontIndex;
+ bSet = TRUE;
+ }
+ break;
+ case EP_FONTSIZE:
+ if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fFontSize,
+ pWordProps->fFontSize)) {
+ secinfo.WordProps.fFontSize = pWordProps->fFontSize;
+ bSet = TRUE;
+ }
+ break;
+ case EP_WORDCOLOR:
+ if (secinfo.WordProps.dwWordColor != pWordProps->dwWordColor) {
+ secinfo.WordProps.dwWordColor = pWordProps->dwWordColor;
+ bSet = TRUE;
+ }
+ break;
+ case EP_SCRIPTTYPE:
+ if (secinfo.WordProps.nScriptType != pWordProps->nScriptType) {
+ secinfo.WordProps.nScriptType = pWordProps->nScriptType;
+ bSet = TRUE;
+ }
+ break;
+ case EP_CHARSPACE:
+ if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fCharSpace,
+ pWordProps->fCharSpace)) {
+ secinfo.WordProps.fCharSpace = pWordProps->fCharSpace;
+ bSet = TRUE;
+ }
+ break;
+ case EP_HORZSCALE:
+ if (secinfo.WordProps.nHorzScale != pWordProps->nHorzScale) {
+ secinfo.WordProps.nHorzScale = pWordProps->nHorzScale;
+ bSet = TRUE;
+ }
+ break;
+ case EP_UNDERLINE:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE) {
+ if ((secinfo.WordProps.nWordStyle &
+ PVTWORD_STYLE_UNDERLINE) == 0) {
+ secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
+ bSet = TRUE;
+ }
+ } else {
+ if ((secinfo.WordProps.nWordStyle &
+ PVTWORD_STYLE_UNDERLINE) != 0) {
+ secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_CROSSOUT:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT) {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) ==
+ 0) {
+ secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
+ bSet = TRUE;
+ }
+ } else {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) !=
+ 0) {
+ secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_BOLD:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD) {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) ==
+ 0) {
+ secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
+ bSet = TRUE;
+ }
+ } else {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) !=
+ 0) {
+ secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_ITALIC:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC) {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) ==
+ 0) {
+ secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
+ bSet = TRUE;
+ }
+ } else {
+ if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) !=
+ 0) {
+ secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC;
+ bSet = TRUE;
+ }
}
+ break;
+ default:
+ break;
}
+ }
+ }
+ }
- pIterator->SetAt(oldplace);
+ if (bSet) {
+ pIterator->SetSection(secinfo);
- return bSet;
+ if (bAddUndo && m_bEnableUndo) {
+ AddEditUndoItem(new CFXEU_SetSecProps(
+ this, place, eProps, OldSecinfo.SecProps, OldSecinfo.WordProps,
+ secinfo.SecProps, secinfo.WordProps, wr));
}
+ }
+
+ pIterator->SetAt(oldplace);
+
+ return bSet;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::SetWordProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place,
- const CPVT_WordProps * pWordProps, const CPVT_WordRange & wr, FX_BOOL bAddUndo)
-{
- if (m_pVT->IsValid() && m_pVT->IsRichText())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- FX_BOOL bSet = FALSE;
- CPVT_Word wordinfo;
- CPVT_Word OldWordinfo;
-
- CPVT_WordPlace oldplace = pIterator->GetAt();
-
- if (pWordProps)
- {
- pIterator->SetAt(place);
- if (pIterator->GetWord(wordinfo))
- {
- if (bAddUndo) OldWordinfo = wordinfo;
-
- switch(eProps)
- {
- case EP_FONTINDEX:
- if (wordinfo.WordProps.nFontIndex != pWordProps->nFontIndex)
- {
- if (IFX_Edit_FontMap* pFontMap = GetFontMap())
- {
- wordinfo.WordProps.nFontIndex = pFontMap->GetWordFontIndex(wordinfo.Word,wordinfo.nCharset,pWordProps->nFontIndex);
- }
- bSet = TRUE;
- }
- break;
- case EP_FONTSIZE:
- if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fFontSize,pWordProps->fFontSize))
- {
- wordinfo.WordProps.fFontSize = pWordProps->fFontSize;
- bSet = TRUE;
- }
- break;
- case EP_WORDCOLOR:
- if (wordinfo.WordProps.dwWordColor != pWordProps->dwWordColor)
- {
- wordinfo.WordProps.dwWordColor = pWordProps->dwWordColor;
- bSet = TRUE;
- }
- break;
- case EP_SCRIPTTYPE:
- if (wordinfo.WordProps.nScriptType != pWordProps->nScriptType)
- {
- wordinfo.WordProps.nScriptType = pWordProps->nScriptType;
- bSet = TRUE;
- }
- break;
- case EP_CHARSPACE:
- if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fCharSpace,pWordProps->fCharSpace))
- {
- wordinfo.WordProps.fCharSpace = pWordProps->fCharSpace;
- bSet = TRUE;
- }
- break;
- case EP_HORZSCALE:
- if (wordinfo.WordProps.nHorzScale != pWordProps->nHorzScale)
- {
- wordinfo.WordProps.nHorzScale = pWordProps->nHorzScale;
- bSet = TRUE;
- }
- break;
- case EP_UNDERLINE:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE)
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0)
- {
- wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
- bSet = TRUE;
- }
- }
- else
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0)
- {
- wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE;
- bSet = TRUE;
- }
- }
- break;
- case EP_CROSSOUT:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT)
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0)
- {
- wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
- bSet = TRUE;
- }
- }
- else
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0)
- {
- wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT;
- bSet = TRUE;
- }
- }
- break;
- case EP_BOLD:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD)
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0)
- {
- wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
- bSet = TRUE;
- }
- }
- else
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0)
- {
- wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD;
- bSet = TRUE;
- }
- }
- break;
- case EP_ITALIC:
- if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC)
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) == 0)
- {
- wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
- bSet = TRUE;
- }
- }
- else
- {
- if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) != 0)
- {
- wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC;
- bSet = TRUE;
- }
- }
- break;
- default:
- break;
- }
- }
- }
+FX_BOOL CFX_Edit::SetWordProps(EDIT_PROPS_E eProps,
+ const CPVT_WordPlace& place,
+ const CPVT_WordProps* pWordProps,
+ const CPVT_WordRange& wr,
+ FX_BOOL bAddUndo) {
+ if (m_pVT->IsValid() && m_pVT->IsRichText()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ FX_BOOL bSet = FALSE;
+ CPVT_Word wordinfo;
+ CPVT_Word OldWordinfo;
- if (bSet)
- {
- pIterator->SetWord(wordinfo);
+ CPVT_WordPlace oldplace = pIterator->GetAt();
- if (bAddUndo && m_bEnableUndo)
- {
- AddEditUndoItem(new CFXEU_SetWordProps
- (this,place,eProps,OldWordinfo.WordProps,wordinfo.WordProps,wr));
+ if (pWordProps) {
+ pIterator->SetAt(place);
+ if (pIterator->GetWord(wordinfo)) {
+ if (bAddUndo)
+ OldWordinfo = wordinfo;
+
+ switch (eProps) {
+ case EP_FONTINDEX:
+ if (wordinfo.WordProps.nFontIndex != pWordProps->nFontIndex) {
+ if (IFX_Edit_FontMap* pFontMap = GetFontMap()) {
+ wordinfo.WordProps.nFontIndex = pFontMap->GetWordFontIndex(
+ wordinfo.Word, wordinfo.nCharset, pWordProps->nFontIndex);
}
- }
+ bSet = TRUE;
+ }
+ break;
+ case EP_FONTSIZE:
+ if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fFontSize,
+ pWordProps->fFontSize)) {
+ wordinfo.WordProps.fFontSize = pWordProps->fFontSize;
+ bSet = TRUE;
+ }
+ break;
+ case EP_WORDCOLOR:
+ if (wordinfo.WordProps.dwWordColor != pWordProps->dwWordColor) {
+ wordinfo.WordProps.dwWordColor = pWordProps->dwWordColor;
+ bSet = TRUE;
+ }
+ break;
+ case EP_SCRIPTTYPE:
+ if (wordinfo.WordProps.nScriptType != pWordProps->nScriptType) {
+ wordinfo.WordProps.nScriptType = pWordProps->nScriptType;
+ bSet = TRUE;
+ }
+ break;
+ case EP_CHARSPACE:
+ if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fCharSpace,
+ pWordProps->fCharSpace)) {
+ wordinfo.WordProps.fCharSpace = pWordProps->fCharSpace;
+ bSet = TRUE;
+ }
+ break;
+ case EP_HORZSCALE:
+ if (wordinfo.WordProps.nHorzScale != pWordProps->nHorzScale) {
+ wordinfo.WordProps.nHorzScale = pWordProps->nHorzScale;
+ bSet = TRUE;
+ }
+ break;
+ case EP_UNDERLINE:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE) {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) ==
+ 0) {
+ wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
+ bSet = TRUE;
+ }
+ } else {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) !=
+ 0) {
+ wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_CROSSOUT:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT) {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) ==
+ 0) {
+ wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
+ bSet = TRUE;
+ }
+ } else {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) !=
+ 0) {
+ wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_BOLD:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD) {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0) {
+ wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
+ bSet = TRUE;
+ }
+ } else {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0) {
+ wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD;
+ bSet = TRUE;
+ }
+ }
+ break;
+ case EP_ITALIC:
+ if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC) {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) ==
+ 0) {
+ wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
+ bSet = TRUE;
+ }
+ } else {
+ if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) !=
+ 0) {
+ wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC;
+ bSet = TRUE;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
- pIterator->SetAt(oldplace);
- return bSet;
+ if (bSet) {
+ pIterator->SetWord(wordinfo);
+
+ if (bAddUndo && m_bEnableUndo) {
+ AddEditUndoItem(new CFXEU_SetWordProps(this, place, eProps,
+ OldWordinfo.WordProps,
+ wordinfo.WordProps, wr));
}
+ }
+
+ pIterator->SetAt(oldplace);
+ return bSet;
}
+ }
- return FALSE;
+ return FALSE;
}
-void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset /*= DEFAULT_CHARSET*/,
- const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/)
-{
- SetText(text,charset,pSecProps,pWordProps,TRUE,TRUE);
+void CFX_Edit::SetText(const FX_WCHAR* text,
+ int32_t charset /*= DEFAULT_CHARSET*/,
+ const CPVT_SecProps* pSecProps /*= NULL*/,
+ const CPVT_WordProps* pWordProps /*= NULL*/) {
+ SetText(text, charset, pSecProps, pWordProps, TRUE, TRUE);
}
-FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset /*= DEFAULT_CHARSET*/, const CPVT_WordProps * pWordProps /*= NULL*/)
-{
- return InsertWord(word,charset,pWordProps,TRUE,TRUE);
+FX_BOOL CFX_Edit::InsertWord(FX_WORD word,
+ int32_t charset /*= DEFAULT_CHARSET*/,
+ const CPVT_WordProps* pWordProps /*= NULL*/) {
+ return InsertWord(word, charset, pWordProps, TRUE, TRUE);
}
-FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/)
-{
- return InsertReturn(pSecProps,pWordProps,TRUE,TRUE);
+FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps* pSecProps /*= NULL*/,
+ const CPVT_WordProps* pWordProps /*= NULL*/) {
+ return InsertReturn(pSecProps, pWordProps, TRUE, TRUE);
}
-FX_BOOL CFX_Edit::Backspace()
-{
- return Backspace(TRUE,TRUE);
+FX_BOOL CFX_Edit::Backspace() {
+ return Backspace(TRUE, TRUE);
}
-FX_BOOL CFX_Edit::Delete()
-{
- return Delete(TRUE,TRUE);
+FX_BOOL CFX_Edit::Delete() {
+ return Delete(TRUE, TRUE);
}
-FX_BOOL CFX_Edit::Clear()
-{
- return Clear(TRUE,TRUE);
+FX_BOOL CFX_Edit::Clear() {
+ return Clear(TRUE, TRUE);
}
-FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset /*= DEFAULT_CHARSET*/,
- const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/)
-{
- return InsertText(text,charset,pSecProps,pWordProps,TRUE,TRUE);
+FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text,
+ int32_t charset /*= DEFAULT_CHARSET*/,
+ const CPVT_SecProps* pSecProps /*= NULL*/,
+ const CPVT_WordProps* pWordProps /*= NULL*/) {
+ return InsertText(text, charset, pSecProps, pWordProps, TRUE, TRUE);
}
-FX_FLOAT CFX_Edit::GetFontSize() const
-{
- return m_pVT->GetFontSize();
+FX_FLOAT CFX_Edit::GetFontSize() const {
+ return m_pVT->GetFontSize();
}
-FX_WORD CFX_Edit::GetPasswordChar() const
-{
- return m_pVT->GetPasswordChar();
+FX_WORD CFX_Edit::GetPasswordChar() const {
+ return m_pVT->GetPasswordChar();
}
-int32_t CFX_Edit::GetCharArray() const
-{
- return m_pVT->GetCharArray();
+int32_t CFX_Edit::GetCharArray() const {
+ return m_pVT->GetCharArray();
}
-CPDF_Rect CFX_Edit::GetPlateRect() const
-{
- return m_pVT->GetPlateRect();
+CPDF_Rect CFX_Edit::GetPlateRect() const {
+ return m_pVT->GetPlateRect();
}
-CPDF_Rect CFX_Edit::GetContentRect() const
-{
- return VTToEdit(m_pVT->GetContentRect());
+CPDF_Rect CFX_Edit::GetContentRect() const {
+ return VTToEdit(m_pVT->GetContentRect());
}
-int32_t CFX_Edit::GetHorzScale() const
-{
- return m_pVT->GetHorzScale();
+int32_t CFX_Edit::GetHorzScale() const {
+ return m_pVT->GetHorzScale();
}
-FX_FLOAT CFX_Edit::GetCharSpace() const
-{
- return m_pVT->GetCharSpace();
+FX_FLOAT CFX_Edit::GetCharSpace() const {
+ return m_pVT->GetCharSpace();
}
// inner methods
-CPVT_WordRange CFX_Edit::GetWholeWordRange() const
-{
- if (m_pVT->IsValid())
- return CPVT_WordRange(m_pVT->GetBeginWordPlace(),m_pVT->GetEndWordPlace());
+CPVT_WordRange CFX_Edit::GetWholeWordRange() const {
+ if (m_pVT->IsValid())
+ return CPVT_WordRange(m_pVT->GetBeginWordPlace(), m_pVT->GetEndWordPlace());
- return CPVT_WordRange();
+ return CPVT_WordRange();
}
-CPVT_WordRange CFX_Edit::GetVisibleWordRange() const
-{
- if (m_bEnableOverflow) return GetWholeWordRange();
+CPVT_WordRange CFX_Edit::GetVisibleWordRange() const {
+ if (m_bEnableOverflow)
+ return GetWholeWordRange();
- if (m_pVT->IsValid())
- {
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+ if (m_pVT->IsValid()) {
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- CPVT_WordPlace place1 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPlate.left,rcPlate.top)));
- CPVT_WordPlace place2 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPlate.right,rcPlate.bottom)));
+ CPVT_WordPlace place1 =
+ m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPlate.left, rcPlate.top)));
+ CPVT_WordPlace place2 = m_pVT->SearchWordPlace(
+ EditToVT(CPDF_Point(rcPlate.right, rcPlate.bottom)));
- return CPVT_WordRange(place1,place2);
- }
+ return CPVT_WordRange(place1, place2);
+ }
- return CPVT_WordRange();
+ return CPVT_WordRange();
}
-CPVT_WordPlace CFX_Edit::SearchWordPlace(const CPDF_Point& point) const
-{
- if (m_pVT->IsValid())
- {
- return m_pVT->SearchWordPlace(EditToVT(point));
- }
-
- return CPVT_WordPlace();
-}
+CPVT_WordPlace CFX_Edit::SearchWordPlace(const CPDF_Point& point) const {
+ if (m_pVT->IsValid()) {
+ return m_pVT->SearchWordPlace(EditToVT(point));
+ }
-void CFX_Edit::Paint()
-{
- if (m_pVT->IsValid())
- {
- RearrangeAll();
- ScrollToCaret();
- Refresh(RP_NOANALYSE);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ return CPVT_WordPlace();
}
-void CFX_Edit::RearrangeAll()
-{
- if (m_pVT->IsValid())
- {
- m_pVT->UpdateWordPlace(m_wpCaret);
- m_pVT->RearrangeAll();
- m_pVT->UpdateWordPlace(m_wpCaret);
- SetScrollInfo();
- SetContentChanged();
- }
+void CFX_Edit::Paint() {
+ if (m_pVT->IsValid()) {
+ RearrangeAll();
+ ScrollToCaret();
+ Refresh(RP_NOANALYSE);
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
}
-void CFX_Edit::RearrangePart(const CPVT_WordRange & range)
-{
- if (m_pVT->IsValid())
- {
- m_pVT->UpdateWordPlace(m_wpCaret);
- m_pVT->RearrangePart(range);
- m_pVT->UpdateWordPlace(m_wpCaret);
- SetScrollInfo();
- SetContentChanged();
- }
+void CFX_Edit::RearrangeAll() {
+ if (m_pVT->IsValid()) {
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ m_pVT->RearrangeAll();
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ SetScrollInfo();
+ SetContentChanged();
+ }
}
-void CFX_Edit::SetContentChanged()
-{
- if (m_bNotify && m_pNotify)
- {
- CPDF_Rect rcContent = m_pVT->GetContentRect();
- if (rcContent.Width() != m_rcOldContent.Width() ||
- rcContent.Height() != m_rcOldContent.Height())
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnContentChange(rcContent);
- m_bNotifyFlag = FALSE;
- }
- m_rcOldContent = rcContent;
- }
- }
+void CFX_Edit::RearrangePart(const CPVT_WordRange& range) {
+ if (m_pVT->IsValid()) {
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ m_pVT->RearrangePart(range);
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ SetScrollInfo();
+ SetContentChanged();
+ }
}
-void CFX_Edit::SelectAll()
-{
- if (m_pVT->IsValid())
- {
- m_SelState = GetWholeWordRange();
- SetCaret(m_SelState.EndPos);
-
- ScrollToCaret();
- CPVT_WordRange wrVisible = GetVisibleWordRange();
- Refresh(RP_OPTIONAL,&wrVisible);
- SetCaretInfo();
- }
+void CFX_Edit::SetContentChanged() {
+ if (m_bNotify && m_pNotify) {
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
+ if (rcContent.Width() != m_rcOldContent.Width() ||
+ rcContent.Height() != m_rcOldContent.Height()) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnContentChange(rcContent);
+ m_bNotifyFlag = FALSE;
+ }
+ m_rcOldContent = rcContent;
+ }
+ }
+}
+
+void CFX_Edit::SelectAll() {
+ if (m_pVT->IsValid()) {
+ m_SelState = GetWholeWordRange();
+ SetCaret(m_SelState.EndPos);
+
+ ScrollToCaret();
+ CPVT_WordRange wrVisible = GetVisibleWordRange();
+ Refresh(RP_OPTIONAL, &wrVisible);
+ SetCaretInfo();
+ }
}
-void CFX_Edit::SelectNone()
-{
- if (m_pVT->IsValid())
- {
- if (m_SelState.IsExist())
- {
- CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
- m_SelState.Default();
- Refresh(RP_OPTIONAL,&wrTemp);
- }
+void CFX_Edit::SelectNone() {
+ if (m_pVT->IsValid()) {
+ if (m_SelState.IsExist()) {
+ CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
+ m_SelState.Default();
+ Refresh(RP_OPTIONAL, &wrTemp);
}
+ }
}
-FX_BOOL CFX_Edit::IsSelected() const
-{
- return m_SelState.IsExist();
+FX_BOOL CFX_Edit::IsSelected() const {
+ return m_SelState.IsExist();
}
-CPDF_Point CFX_Edit::VTToEdit(const CPDF_Point & point) const
-{
- CPDF_Rect rcContent = m_pVT->GetContentRect();
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+CPDF_Point CFX_Edit::VTToEdit(const CPDF_Point& point) const {
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- FX_FLOAT fPadding = 0.0f;
+ FX_FLOAT fPadding = 0.0f;
- switch (m_nAlignment)
- {
+ switch (m_nAlignment) {
case 0:
- fPadding = 0.0f;
- break;
+ fPadding = 0.0f;
+ break;
case 1:
- fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
- break;
+ fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
+ break;
case 2:
- fPadding = rcPlate.Height() - rcContent.Height();
- break;
- }
+ fPadding = rcPlate.Height() - rcContent.Height();
+ break;
+ }
- return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left),
- point.y - (m_ptScrollPos.y + fPadding - rcPlate.top));
+ return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left),
+ point.y - (m_ptScrollPos.y + fPadding - rcPlate.top));
}
-CPDF_Point CFX_Edit::EditToVT(const CPDF_Point & point) const
-{
- CPDF_Rect rcContent = m_pVT->GetContentRect();
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+CPDF_Point CFX_Edit::EditToVT(const CPDF_Point& point) const {
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- FX_FLOAT fPadding = 0.0f;
+ FX_FLOAT fPadding = 0.0f;
- switch (m_nAlignment)
- {
+ switch (m_nAlignment) {
case 0:
- fPadding = 0.0f;
- break;
+ fPadding = 0.0f;
+ break;
case 1:
- fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
- break;
+ fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
+ break;
case 2:
- fPadding = rcPlate.Height() - rcContent.Height();
- break;
- }
+ fPadding = rcPlate.Height() - rcContent.Height();
+ break;
+ }
- return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left),
- point.y + (m_ptScrollPos.y + fPadding - rcPlate.top));
+ return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left),
+ point.y + (m_ptScrollPos.y + fPadding - rcPlate.top));
}
-CPDF_Rect CFX_Edit::VTToEdit(const CPDF_Rect & rect) const
-{
- CPDF_Point ptLeftBottom = VTToEdit(CPDF_Point(rect.left,rect.bottom));
- CPDF_Point ptRightTop = VTToEdit(CPDF_Point(rect.right,rect.top));
+CPDF_Rect CFX_Edit::VTToEdit(const CPDF_Rect& rect) const {
+ CPDF_Point ptLeftBottom = VTToEdit(CPDF_Point(rect.left, rect.bottom));
+ CPDF_Point ptRightTop = VTToEdit(CPDF_Point(rect.right, rect.top));
- return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
+ return CPDF_Rect(ptLeftBottom.x, ptLeftBottom.y, ptRightTop.x, ptRightTop.y);
}
-CPDF_Rect CFX_Edit::EditToVT(const CPDF_Rect & rect) const
-{
- CPDF_Point ptLeftBottom = EditToVT(CPDF_Point(rect.left,rect.bottom));
- CPDF_Point ptRightTop = EditToVT(CPDF_Point(rect.right,rect.top));
+CPDF_Rect CFX_Edit::EditToVT(const CPDF_Rect& rect) const {
+ CPDF_Point ptLeftBottom = EditToVT(CPDF_Point(rect.left, rect.bottom));
+ CPDF_Point ptRightTop = EditToVT(CPDF_Point(rect.right, rect.top));
- return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
+ return CPDF_Rect(ptLeftBottom.x, ptLeftBottom.y, ptRightTop.x, ptRightTop.y);
}
-void CFX_Edit::SetScrollInfo()
-{
- if (m_bNotify && m_pNotify)
- {
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- CPDF_Rect rcContent = m_pVT->GetContentRect();
+void CFX_Edit::SetScrollInfo() {
+ if (m_bNotify && m_pNotify) {
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetScrollInfoX(rcPlate.left, rcPlate.right,
- rcContent.left, rcContent.right, rcPlate.Width() / 3, rcPlate.Width());
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetScrollInfoX(rcPlate.left, rcPlate.right, rcContent.left,
+ rcContent.right, rcPlate.Width() / 3,
+ rcPlate.Width());
- m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top,
- rcContent.bottom, rcContent.top, rcPlate.Height() / 3, rcPlate.Height());
- m_bNotifyFlag = FALSE;
- }
+ m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top,
+ rcContent.bottom, rcContent.top,
+ rcPlate.Height() / 3, rcPlate.Height());
+ m_bNotifyFlag = FALSE;
}
+ }
}
-void CFX_Edit::SetScrollPosX(FX_FLOAT fx)
-{
- if (!m_bEnableScroll) return;
-
- if (m_pVT->IsValid())
- {
- if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.x,fx))
- {
- m_ptScrollPos.x = fx;
- Refresh(RP_NOANALYSE);
-
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetScrollPosX(fx);
- m_bNotifyFlag = FALSE;
- }
- }
+void CFX_Edit::SetScrollPosX(FX_FLOAT fx) {
+ if (!m_bEnableScroll)
+ return;
+
+ if (m_pVT->IsValid()) {
+ if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.x, fx)) {
+ m_ptScrollPos.x = fx;
+ Refresh(RP_NOANALYSE);
+
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetScrollPosX(fx);
+ m_bNotifyFlag = FALSE;
}
+ }
}
+ }
}
-void CFX_Edit::SetScrollPosY(FX_FLOAT fy)
-{
- if (!m_bEnableScroll) return;
-
- if (m_pVT->IsValid())
- {
- if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y,fy))
- {
- m_ptScrollPos.y = fy;
- Refresh(RP_NOANALYSE);
-
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetScrollPosY(fy);
- m_bNotifyFlag = FALSE;
- }
- }
+void CFX_Edit::SetScrollPosY(FX_FLOAT fy) {
+ if (!m_bEnableScroll)
+ return;
+
+ if (m_pVT->IsValid()) {
+ if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y, fy)) {
+ m_ptScrollPos.y = fy;
+ Refresh(RP_NOANALYSE);
+
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetScrollPosY(fy);
+ m_bNotifyFlag = FALSE;
}
+ }
}
+ }
}
-void CFX_Edit::SetScrollPos(const CPDF_Point & point)
-{
- SetScrollPosX(point.x);
- SetScrollPosY(point.y);
- SetScrollLimit();
- SetCaretInfo();
+void CFX_Edit::SetScrollPos(const CPDF_Point& point) {
+ SetScrollPosX(point.x);
+ SetScrollPosY(point.y);
+ SetScrollLimit();
+ SetCaretInfo();
}
-CPDF_Point CFX_Edit::GetScrollPos() const
-{
- return m_ptScrollPos;
+CPDF_Point CFX_Edit::GetScrollPos() const {
+ return m_ptScrollPos;
}
-void CFX_Edit::SetScrollLimit()
-{
- if (m_pVT->IsValid())
- {
- CPDF_Rect rcContent = m_pVT->GetContentRect();
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
-
- if (rcPlate.Width() > rcContent.Width())
- {
- SetScrollPosX(rcPlate.left);
- }
- else
- {
- if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.x, rcContent.left))
- {
- SetScrollPosX(rcContent.left);
- }
- else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.x, rcContent.right - rcPlate.Width()))
- {
- SetScrollPosX(rcContent.right - rcPlate.Width());
- }
- }
+void CFX_Edit::SetScrollLimit() {
+ if (m_pVT->IsValid()) {
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- if (rcPlate.Height() > rcContent.Height())
- {
- SetScrollPosY(rcPlate.top);
- }
- else
- {
- if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.y, rcContent.bottom + rcPlate.Height()))
- {
- SetScrollPosY(rcContent.bottom + rcPlate.Height());
- }
- else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.y, rcContent.top))
- {
- SetScrollPosY(rcContent.top);
- }
- }
- }
-}
+ if (rcPlate.Width() > rcContent.Width()) {
+ SetScrollPosX(rcPlate.left);
+ } else {
+ if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.x, rcContent.left)) {
+ SetScrollPosX(rcContent.left);
+ } else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.x,
+ rcContent.right - rcPlate.Width())) {
+ SetScrollPosX(rcContent.right - rcPlate.Width());
+ }
+ }
+
+ if (rcPlate.Height() > rcContent.Height()) {
+ SetScrollPosY(rcPlate.top);
+ } else {
+ if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.y,
+ rcContent.bottom + rcPlate.Height())) {
+ SetScrollPosY(rcContent.bottom + rcPlate.Height());
+ } else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.y, rcContent.top)) {
+ SetScrollPosY(rcContent.top);
+ }
+ }
+ }
+}
+
+void CFX_Edit::ScrollToCaret() {
+ SetScrollLimit();
+
+ if (m_pVT->IsValid()) {
+ CPDF_Point ptHead(0, 0);
+ CPDF_Point ptFoot(0, 0);
+
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_wpCaret);
+
+ CPVT_Word word;
+ CPVT_Line line;
+ if (pIterator->GetWord(word)) {
+ ptHead.x = word.ptWord.x + word.fWidth;
+ ptHead.y = word.ptWord.y + word.fAscent;
+ ptFoot.x = word.ptWord.x + word.fWidth;
+ ptFoot.y = word.ptWord.y + word.fDescent;
+ } else if (pIterator->GetLine(line)) {
+ ptHead.x = line.ptLine.x;
+ ptHead.y = line.ptLine.y + line.fLineAscent;
+ ptFoot.x = line.ptLine.x;
+ ptFoot.y = line.ptLine.y + line.fLineDescent;
+ }
+ }
+
+ CPDF_Point ptHeadEdit = VTToEdit(ptHead);
+ CPDF_Point ptFootEdit = VTToEdit(ptFoot);
-void CFX_Edit::ScrollToCaret()
-{
- SetScrollLimit();
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- if (m_pVT->IsValid())
- {
- CPDF_Point ptHead(0,0);
- CPDF_Point ptFoot(0,0);
+ if (!FX_EDIT_IsFloatEqual(rcPlate.left, rcPlate.right)) {
+ if (FX_EDIT_IsFloatSmaller(ptHeadEdit.x, rcPlate.left) ||
+ FX_EDIT_IsFloatEqual(ptHeadEdit.x, rcPlate.left)) {
+ SetScrollPosX(ptHead.x);
+ } else if (FX_EDIT_IsFloatBigger(ptHeadEdit.x, rcPlate.right)) {
+ SetScrollPosX(ptHead.x - rcPlate.Width());
+ }
+ }
+
+ if (!FX_EDIT_IsFloatEqual(rcPlate.top, rcPlate.bottom)) {
+ if (FX_EDIT_IsFloatSmaller(ptFootEdit.y, rcPlate.bottom) ||
+ FX_EDIT_IsFloatEqual(ptFootEdit.y, rcPlate.bottom)) {
+ if (FX_EDIT_IsFloatSmaller(ptHeadEdit.y, rcPlate.top)) {
+ SetScrollPosY(ptFoot.y + rcPlate.Height());
+ }
+ } else if (FX_EDIT_IsFloatBigger(ptHeadEdit.y, rcPlate.top)) {
+ if (FX_EDIT_IsFloatBigger(ptFootEdit.y, rcPlate.bottom)) {
+ SetScrollPosY(ptHead.y);
+ }
+ }
+ }
+ }
+}
+
+void CFX_Edit::Refresh(REFRESH_PLAN_E ePlan,
+ const CPVT_WordRange* pRange1,
+ const CPVT_WordRange* pRange2) {
+ if (m_bEnableRefresh && m_pVT->IsValid()) {
+ m_Refresh.BeginRefresh();
+ RefreshPushLineRects(GetVisibleWordRange());
+
+ // if (!FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.x,m_ptScrollPos.x) ||
+ // !FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.y,m_ptScrollPos.y))
+ // {
+ m_Refresh.NoAnalyse();
+ m_ptRefreshScrollPos = m_ptScrollPos;
+ // }
+ // else
+ // {
+ // switch (ePlan)
+ // {
+ // case RP_ANALYSE:
+ // m_Refresh.Analyse(m_pVT->GetAlignment());
+ //
+ // if (pRange1) RefreshPushRandomRects(*pRange1);
+ // if (pRange2) RefreshPushRandomRects(*pRange2);
+ // break;
+ // case RP_NOANALYSE:
+ // m_Refresh.NoAnalyse();
+ // break;
+ // case RP_OPTIONAL:
+ // if (pRange1) RefreshPushRandomRects(*pRange1);
+ // if (pRange2) RefreshPushRandomRects(*pRange2);
+ // break;
+ // }
+ // }
+
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ if (const CFX_Edit_RectArray* pRects = m_Refresh.GetRefreshRects()) {
+ for (int32_t i = 0, sz = pRects->GetSize(); i < sz; i++)
+ m_pNotify->IOnInvalidateRect(pRects->GetAt(i));
+ }
+ m_bNotifyFlag = FALSE;
+ }
+ }
+
+ m_Refresh.EndRefresh();
+ }
+}
+
+void CFX_Edit::RefreshPushLineRects(const CPVT_WordRange& wr) {
+ if (m_pVT->IsValid()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordPlace wpBegin = wr.BeginPos;
+ m_pVT->UpdateWordPlace(wpBegin);
+ CPVT_WordPlace wpEnd = wr.EndPos;
+ m_pVT->UpdateWordPlace(wpEnd);
+ pIterator->SetAt(wpBegin);
+
+ CPVT_Line lineinfo;
+ do {
+ if (!pIterator->GetLine(lineinfo))
+ break;
+ if (lineinfo.lineplace.LineCmp(wpEnd) > 0)
+ break;
+
+ CPDF_Rect rcLine(lineinfo.ptLine.x,
+ lineinfo.ptLine.y + lineinfo.fLineDescent,
+ lineinfo.ptLine.x + lineinfo.fLineWidth,
+ lineinfo.ptLine.y + lineinfo.fLineAscent);
+
+ m_Refresh.Push(CPVT_WordRange(lineinfo.lineplace, lineinfo.lineEnd),
+ VTToEdit(rcLine));
+
+ } while (pIterator->NextLine());
+ }
+ }
+}
+
+void CFX_Edit::RefreshPushRandomRects(const CPVT_WordRange& wr) {
+ if (m_pVT->IsValid()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordRange wrTemp = wr;
+
+ m_pVT->UpdateWordPlace(wrTemp.BeginPos);
+ m_pVT->UpdateWordPlace(wrTemp.EndPos);
+ pIterator->SetAt(wrTemp.BeginPos);
+
+ CPVT_Word wordinfo;
+ CPVT_Line lineinfo;
+ CPVT_WordPlace place;
+
+ while (pIterator->NextWord()) {
+ place = pIterator->GetAt();
+ if (place.WordCmp(wrTemp.EndPos) > 0)
+ break;
+
+ pIterator->GetWord(wordinfo);
+ pIterator->GetLine(lineinfo);
+
+ if (place.LineCmp(wrTemp.BeginPos) == 0 ||
+ place.LineCmp(wrTemp.EndPos) == 0) {
+ CPDF_Rect rcWord(wordinfo.ptWord.x,
+ lineinfo.ptLine.y + lineinfo.fLineDescent,
+ wordinfo.ptWord.x + wordinfo.fWidth,
+ lineinfo.ptLine.y + lineinfo.fLineAscent);
+
+ m_Refresh.AddRefresh(VTToEdit(rcWord));
+ } else {
+ CPDF_Rect rcLine(lineinfo.ptLine.x,
+ lineinfo.ptLine.y + lineinfo.fLineDescent,
+ lineinfo.ptLine.x + lineinfo.fLineWidth,
+ lineinfo.ptLine.y + lineinfo.fLineAscent);
+
+ m_Refresh.AddRefresh(VTToEdit(rcLine));
+
+ pIterator->NextLine();
+ }
+ }
+ }
+ }
+}
+
+void CFX_Edit::RefreshWordRange(const CPVT_WordRange& wr) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordRange wrTemp = wr;
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_wpCaret);
+ m_pVT->UpdateWordPlace(wrTemp.BeginPos);
+ m_pVT->UpdateWordPlace(wrTemp.EndPos);
+ pIterator->SetAt(wrTemp.BeginPos);
- CPVT_Word word;
- CPVT_Line line;
- if (pIterator->GetWord(word))
- {
- ptHead.x = word.ptWord.x + word.fWidth;
- ptHead.y = word.ptWord.y + word.fAscent;
- ptFoot.x = word.ptWord.x + word.fWidth;
- ptFoot.y = word.ptWord.y + word.fDescent;
- }
- else if (pIterator->GetLine(line))
- {
- ptHead.x = line.ptLine.x;
- ptHead.y = line.ptLine.y + line.fLineAscent;
- ptFoot.x = line.ptLine.x;
- ptFoot.y = line.ptLine.y + line.fLineDescent;
- }
- }
+ CPVT_Word wordinfo;
+ CPVT_Line lineinfo;
+ CPVT_WordPlace place;
- CPDF_Point ptHeadEdit = VTToEdit(ptHead);
- CPDF_Point ptFootEdit = VTToEdit(ptFoot);
+ while (pIterator->NextWord()) {
+ place = pIterator->GetAt();
+ if (place.WordCmp(wrTemp.EndPos) > 0)
+ break;
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+ pIterator->GetWord(wordinfo);
+ pIterator->GetLine(lineinfo);
- if (!FX_EDIT_IsFloatEqual(rcPlate.left,rcPlate.right))
- {
- if (FX_EDIT_IsFloatSmaller(ptHeadEdit.x, rcPlate.left) ||
- FX_EDIT_IsFloatEqual(ptHeadEdit.x, rcPlate.left))
- {
- SetScrollPosX(ptHead.x);
- }
- else if (FX_EDIT_IsFloatBigger(ptHeadEdit.x, rcPlate.right))
- {
- SetScrollPosX(ptHead.x - rcPlate.Width());
- }
- }
+ if (place.LineCmp(wrTemp.BeginPos) == 0 ||
+ place.LineCmp(wrTemp.EndPos) == 0) {
+ CPDF_Rect rcWord(wordinfo.ptWord.x,
+ lineinfo.ptLine.y + lineinfo.fLineDescent,
+ wordinfo.ptWord.x + wordinfo.fWidth,
+ lineinfo.ptLine.y + lineinfo.fLineAscent);
- if (!FX_EDIT_IsFloatEqual(rcPlate.top,rcPlate.bottom))
- {
- if (FX_EDIT_IsFloatSmaller(ptFootEdit.y, rcPlate.bottom) ||
- FX_EDIT_IsFloatEqual(ptFootEdit.y, rcPlate.bottom))
- {
- if (FX_EDIT_IsFloatSmaller(ptHeadEdit.y, rcPlate.top))
- {
- SetScrollPosY(ptFoot.y + rcPlate.Height());
- }
- }
- else if (FX_EDIT_IsFloatBigger(ptHeadEdit.y, rcPlate.top))
- {
- if (FX_EDIT_IsFloatBigger(ptFootEdit.y, rcPlate.bottom))
- {
- SetScrollPosY(ptHead.y);
- }
- }
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ CPDF_Rect rcRefresh = VTToEdit(rcWord);
+ m_pNotify->IOnInvalidateRect(&rcRefresh);
+ m_bNotifyFlag = FALSE;
+ }
}
- }
-}
+ } else {
+ CPDF_Rect rcLine(lineinfo.ptLine.x,
+ lineinfo.ptLine.y + lineinfo.fLineDescent,
+ lineinfo.ptLine.x + lineinfo.fLineWidth,
+ lineinfo.ptLine.y + lineinfo.fLineAscent);
-void CFX_Edit::Refresh(REFRESH_PLAN_E ePlan,const CPVT_WordRange * pRange1,const CPVT_WordRange * pRange2)
-{
- if (m_bEnableRefresh && m_pVT->IsValid())
- {
- m_Refresh.BeginRefresh();
- RefreshPushLineRects(GetVisibleWordRange());
-
-// if (!FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.x,m_ptScrollPos.x) ||
-// !FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.y,m_ptScrollPos.y))
-// {
- m_Refresh.NoAnalyse();
- m_ptRefreshScrollPos = m_ptScrollPos;
-// }
-// else
-// {
-// switch (ePlan)
-// {
-// case RP_ANALYSE:
-// m_Refresh.Analyse(m_pVT->GetAlignment());
-//
-// if (pRange1) RefreshPushRandomRects(*pRange1);
-// if (pRange2) RefreshPushRandomRects(*pRange2);
-// break;
-// case RP_NOANALYSE:
-// m_Refresh.NoAnalyse();
-// break;
-// case RP_OPTIONAL:
-// if (pRange1) RefreshPushRandomRects(*pRange1);
-// if (pRange2) RefreshPushRandomRects(*pRange2);
-// break;
-// }
-// }
-
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- if (const CFX_Edit_RectArray * pRects = m_Refresh.GetRefreshRects())
- {
- for (int32_t i = 0, sz = pRects->GetSize(); i < sz; i++)
- m_pNotify->IOnInvalidateRect(pRects->GetAt(i));
- }
- m_bNotifyFlag = FALSE;
- }
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ CPDF_Rect rcRefresh = VTToEdit(rcLine);
+ m_pNotify->IOnInvalidateRect(&rcRefresh);
+ m_bNotifyFlag = FALSE;
+ }
}
- m_Refresh.EndRefresh();
+ pIterator->NextLine();
+ }
}
+ }
}
-void CFX_Edit::RefreshPushLineRects(const CPVT_WordRange & wr)
-{
- if (m_pVT->IsValid())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- CPVT_WordPlace wpBegin = wr.BeginPos;
- m_pVT->UpdateWordPlace(wpBegin);
- CPVT_WordPlace wpEnd = wr.EndPos;
- m_pVT->UpdateWordPlace(wpEnd);
- pIterator->SetAt(wpBegin);
-
- CPVT_Line lineinfo;
- do
- {
- if (!pIterator->GetLine(lineinfo))break;
- if (lineinfo.lineplace.LineCmp(wpEnd) > 0)break;
-
- CPDF_Rect rcLine(lineinfo.ptLine.x,
- lineinfo.ptLine.y + lineinfo.fLineDescent,
- lineinfo.ptLine.x + lineinfo.fLineWidth,
- lineinfo.ptLine.y + lineinfo.fLineAscent);
-
- m_Refresh.Push(CPVT_WordRange(lineinfo.lineplace,lineinfo.lineEnd),VTToEdit(rcLine));
-
- }while (pIterator->NextLine());
- }
- }
+void CFX_Edit::SetCaret(const CPVT_WordPlace& place) {
+ m_wpOldCaret = m_wpCaret;
+ m_wpCaret = place;
}
-void CFX_Edit::RefreshPushRandomRects(const CPVT_WordRange & wr)
-{
- if (m_pVT->IsValid())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- CPVT_WordRange wrTemp = wr;
+void CFX_Edit::SetCaretInfo() {
+ if (m_bNotify && m_pNotify) {
+ if (!m_bNotifyFlag) {
+ CPDF_Point ptHead(0.0f, 0.0f), ptFoot(0.0f, 0.0f);
- m_pVT->UpdateWordPlace(wrTemp.BeginPos);
- m_pVT->UpdateWordPlace(wrTemp.EndPos);
- pIterator->SetAt(wrTemp.BeginPos);
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_wpCaret);
+ CPVT_Word word;
+ CPVT_Line line;
+ if (pIterator->GetWord(word)) {
+ ptHead.x = word.ptWord.x + word.fWidth;
+ ptHead.y = word.ptWord.y + word.fAscent;
+ ptFoot.x = word.ptWord.x + word.fWidth;
+ ptFoot.y = word.ptWord.y + word.fDescent;
+ } else if (pIterator->GetLine(line)) {
+ ptHead.x = line.ptLine.x;
+ ptHead.y = line.ptLine.y + line.fLineAscent;
+ ptFoot.x = line.ptLine.x;
+ ptFoot.y = line.ptLine.y + line.fLineDescent;
+ }
+ }
- CPVT_Word wordinfo;
- CPVT_Line lineinfo;
- CPVT_WordPlace place;
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetCaret(!m_SelState.IsExist(), VTToEdit(ptHead),
+ VTToEdit(ptFoot), m_wpCaret);
+ m_bNotifyFlag = FALSE;
+ }
+ }
- while (pIterator->NextWord())
- {
- place = pIterator->GetAt();
- if (place.WordCmp(wrTemp.EndPos) > 0) break;
+ SetCaretChange();
+}
- pIterator->GetWord(wordinfo);
- pIterator->GetLine(lineinfo);
+void CFX_Edit::SetCaretChange() {
+ if (m_wpCaret == m_wpOldCaret)
+ return;
- if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp.EndPos) == 0)
- {
- CPDF_Rect rcWord(wordinfo.ptWord.x,
- lineinfo.ptLine.y + lineinfo.fLineDescent,
- wordinfo.ptWord.x + wordinfo.fWidth,
- lineinfo.ptLine.y + lineinfo.fLineAscent);
+ if (m_bNotify && m_pVT->IsRichText() && m_pNotify) {
+ CPVT_SecProps SecProps;
+ CPVT_WordProps WordProps;
- m_Refresh.AddRefresh(VTToEdit(rcWord));
- }
- else
- {
- CPDF_Rect rcLine(lineinfo.ptLine.x,
- lineinfo.ptLine.y + lineinfo.fLineDescent,
- lineinfo.ptLine.x + lineinfo.fLineWidth,
- lineinfo.ptLine.y + lineinfo.fLineAscent);
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_wpCaret);
+ CPVT_Word word;
+ CPVT_Section section;
- m_Refresh.AddRefresh(VTToEdit(rcLine));
+ if (pIterator->GetSection(section)) {
+ SecProps = section.SecProps;
+ WordProps = section.WordProps;
+ }
- pIterator->NextLine();
- }
- }
- }
+ if (pIterator->GetWord(word)) {
+ WordProps = word.WordProps;
+ }
}
-}
-
-void CFX_Edit::RefreshWordRange(const CPVT_WordRange& wr)
-{
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- CPVT_WordRange wrTemp = wr;
-
- m_pVT->UpdateWordPlace(wrTemp.BeginPos);
- m_pVT->UpdateWordPlace(wrTemp.EndPos);
- pIterator->SetAt(wrTemp.BeginPos);
-
- CPVT_Word wordinfo;
- CPVT_Line lineinfo;
- CPVT_WordPlace place;
-
- while (pIterator->NextWord())
- {
- place = pIterator->GetAt();
- if (place.WordCmp(wrTemp.EndPos) > 0) break;
-
- pIterator->GetWord(wordinfo);
- pIterator->GetLine(lineinfo);
-
- if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp.EndPos) == 0)
- {
- CPDF_Rect rcWord(wordinfo.ptWord.x,
- lineinfo.ptLine.y + lineinfo.fLineDescent,
- wordinfo.ptWord.x + wordinfo.fWidth,
- lineinfo.ptLine.y + lineinfo.fLineAscent);
-
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- CPDF_Rect rcRefresh = VTToEdit(rcWord);
- m_pNotify->IOnInvalidateRect(&rcRefresh);
- m_bNotifyFlag = FALSE;
- }
- }
- }
- else
- {
- CPDF_Rect rcLine(lineinfo.ptLine.x,
- lineinfo.ptLine.y + lineinfo.fLineDescent,
- lineinfo.ptLine.x + lineinfo.fLineWidth,
- lineinfo.ptLine.y + lineinfo.fLineAscent);
-
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- CPDF_Rect rcRefresh = VTToEdit(rcLine);
- m_pNotify->IOnInvalidateRect(&rcRefresh);
- m_bNotifyFlag = FALSE;
- }
- }
- pIterator->NextLine();
- }
- }
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnCaretChange(SecProps, WordProps);
+ m_bNotifyFlag = FALSE;
}
+ }
}
-void CFX_Edit::SetCaret(const CPVT_WordPlace & place)
-{
- m_wpOldCaret = m_wpCaret;
- m_wpCaret = place;
-}
-
-void CFX_Edit::SetCaretInfo()
-{
- if (m_bNotify && m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- CPDF_Point ptHead(0.0f,0.0f),ptFoot(0.0f,0.0f);
-
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_wpCaret);
- CPVT_Word word;
- CPVT_Line line;
- if (pIterator->GetWord(word))
- {
- ptHead.x = word.ptWord.x + word.fWidth;
- ptHead.y = word.ptWord.y + word.fAscent;
- ptFoot.x = word.ptWord.x + word.fWidth;
- ptFoot.y = word.ptWord.y + word.fDescent;
- }
- else if (pIterator->GetLine(line))
- {
- ptHead.x = line.ptLine.x;
- ptHead.y = line.ptLine.y + line.fLineAscent;
- ptFoot.x = line.ptLine.x;
- ptFoot.y = line.ptLine.y + line.fLineDescent;
- }
- }
-
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetCaret(!m_SelState.IsExist(),VTToEdit(ptHead),VTToEdit(ptFoot), m_wpCaret);
- m_bNotifyFlag = FALSE;
- }
- }
+void CFX_Edit::SetCaret(int32_t nPos) {
+ if (m_pVT->IsValid()) {
+ SelectNone();
+ SetCaret(m_pVT->WordIndexToWordPlace(nPos));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- SetCaretChange();
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
}
-void CFX_Edit::SetCaretChange()
-{
- if (m_wpCaret == m_wpOldCaret) return;
+void CFX_Edit::OnMouseDown(const CPDF_Point& point,
+ FX_BOOL bShift,
+ FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ SelectNone();
+ SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (m_bNotify && m_pVT->IsRichText() && m_pNotify)
- {
- CPVT_SecProps SecProps;
- CPVT_WordProps WordProps;
-
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_wpCaret);
- CPVT_Word word;
- CPVT_Section section;
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
+}
- if (pIterator->GetSection(section))
- {
- SecProps = section.SecProps;
- WordProps = section.WordProps;
- }
+void CFX_Edit::OnMouseMove(const CPDF_Point& point,
+ FX_BOOL bShift,
+ FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
- if (pIterator->GetWord(word))
- {
- WordProps = word.WordProps;
- }
- }
+ if (m_wpCaret != m_wpOldCaret) {
+ m_SelState.SetEndPos(m_wpCaret);
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnCaretChange(SecProps,WordProps);
- m_bNotifyFlag = FALSE;
- }
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretOrigin();
+ SetCaretInfo();
}
+ }
}
-void CFX_Edit::SetCaret(int32_t nPos)
-{
- if (m_pVT->IsValid())
- {
- SelectNone();
- SetCaret(m_pVT->WordIndexToWordPlace(nPos));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+void CFX_Edit::OnVK_UP(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ SetCaret(m_pVT->GetUpWordPlace(m_wpCaret, m_ptCaret));
+ if (bShift) {
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
+
+ if (m_wpOldCaret != m_wpCaret) {
ScrollToCaret();
- SetCaretOrigin();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
SetCaretInfo();
+ }
+ } else {
+ SelectNone();
+
+ ScrollToCaret();
+ SetCaretInfo();
}
+ }
}
-void CFX_Edit::OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- SelectNone();
- SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+void CFX_Edit::OnVK_DOWN(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ SetCaret(m_pVT->GetDownWordPlace(m_wpCaret, m_ptCaret));
+ if (bShift) {
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
+
+ if (m_wpOldCaret != m_wpCaret) {
ScrollToCaret();
- SetCaretOrigin();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
SetCaretInfo();
+ }
+ } else {
+ SelectNone();
+
+ ScrollToCaret();
+ SetCaretInfo();
}
+ }
}
-void CFX_Edit::OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
+void CFX_Edit::OnVK_LEFT(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ if (bShift) {
+ if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
+ m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
+ SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
- if (m_wpCaret != m_wpOldCaret)
- {
- m_SelState.SetEndPos(m_wpCaret);
+ SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
- Refresh(RP_OPTIONAL,&wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
- }
-}
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
-void CFX_Edit::OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- SetCaret(m_pVT->GetUpWordPlace(m_wpCaret,m_ptCaret));
-
- if (bShift)
- {
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret,m_wpCaret);
-
- if (m_wpOldCaret != m_wpCaret)
- {
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
- Refresh(RP_OPTIONAL, &wr);
- SetCaretInfo();
- }
- }
+ if (m_wpOldCaret != m_wpCaret) {
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretInfo();
+ }
+ } else {
+ if (m_SelState.IsExist()) {
+ if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos) < 0)
+ SetCaret(m_SelState.BeginPos);
else
- {
- SelectNone();
+ SetCaret(m_SelState.EndPos);
- ScrollToCaret();
- SetCaretInfo();
- }
- }
-}
+ SelectNone();
+ ScrollToCaret();
+ SetCaretInfo();
+ } else {
+ if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
+ m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
+ SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
-void CFX_Edit::OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- SetCaret(m_pVT->GetDownWordPlace(m_wpCaret,m_ptCaret));
-
- if (bShift)
- {
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret,m_wpCaret);
-
- if (m_wpOldCaret != m_wpCaret)
- {
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
- Refresh(RP_OPTIONAL, &wr);
- SetCaretInfo();
- }
- }
- else
- {
- SelectNone();
+ SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
- ScrollToCaret();
- SetCaretInfo();
- }
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
}
+ }
}
-void CFX_Edit::OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- if (bShift)
- {
- if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
- m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
- SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
-
- SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
-
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret, m_wpCaret);
-
- if (m_wpOldCaret != m_wpCaret)
- {
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
- Refresh(RP_OPTIONAL,&wr);
- SetCaretInfo();
- }
- }
- else
- {
- if (m_SelState.IsExist())
- {
- if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
- SetCaret(m_SelState.BeginPos);
- else
- SetCaret(m_SelState.EndPos);
-
- SelectNone();
- ScrollToCaret();
- SetCaretInfo();
- }
- else
- {
- if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
- m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
- SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
+void CFX_Edit::OnVK_RIGHT(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ if (bShift) {
+ SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
- SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
+ if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
+ m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
+ SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
- ScrollToCaret();
- SetCaretOrigin();
- SetCaretInfo();
- }
- }
- }
-}
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
-void CFX_Edit::OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- if (bShift)
- {
- SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
-
- if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
- m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
- SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
-
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret,m_wpCaret);
-
- if (m_wpOldCaret != m_wpCaret)
- {
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
- Refresh(RP_OPTIONAL,&wr);
- SetCaretInfo();
- }
- }
+ if (m_wpOldCaret != m_wpCaret) {
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretInfo();
+ }
+ } else {
+ if (m_SelState.IsExist()) {
+ if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos) > 0)
+ SetCaret(m_SelState.BeginPos);
else
- {
- if (m_SelState.IsExist())
- {
- if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0)
- SetCaret(m_SelState.BeginPos);
- else
- SetCaret(m_SelState.EndPos);
-
- SelectNone();
- ScrollToCaret();
- SetCaretInfo();
- }
- else
- {
- SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
+ SetCaret(m_SelState.EndPos);
- if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
- m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
- SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
+ SelectNone();
+ ScrollToCaret();
+ SetCaretInfo();
+ } else {
+ SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
- ScrollToCaret();
- SetCaretOrigin();
- SetCaretInfo();
- }
- }
+ if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
+ m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
+ SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
+
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
}
+ }
}
-void CFX_Edit::OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- if (bShift)
- {
- if (bCtrl)
- SetCaret(m_pVT->GetBeginWordPlace());
- else
- SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
-
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret,m_wpCaret);
-
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
- Refresh(RP_OPTIONAL, &wr);
- SetCaretInfo();
- }
+void CFX_Edit::OnVK_HOME(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ if (bShift) {
+ if (bCtrl)
+ SetCaret(m_pVT->GetBeginWordPlace());
+ else
+ SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
+
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
+
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretInfo();
+ } else {
+ if (m_SelState.IsExist()) {
+ if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos) < 0)
+ SetCaret(m_SelState.BeginPos);
else
- {
- if (m_SelState.IsExist())
- {
- if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
- SetCaret(m_SelState.BeginPos);
- else
- SetCaret(m_SelState.EndPos);
-
- SelectNone();
- ScrollToCaret();
- SetCaretInfo();
- }
- else
- {
- if (bCtrl)
- SetCaret(m_pVT->GetBeginWordPlace());
- else
- SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
-
- ScrollToCaret();
- SetCaretOrigin();
- SetCaretInfo();
- }
- }
- }
-}
+ SetCaret(m_SelState.EndPos);
-void CFX_Edit::OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (m_pVT->IsValid())
- {
- if (bShift)
- {
- if (bCtrl)
- SetCaret(m_pVT->GetEndWordPlace());
- else
- SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
-
- if (m_SelState.IsExist())
- m_SelState.SetEndPos(m_wpCaret);
- else
- m_SelState.Set(m_wpOldCaret, m_wpCaret);
-
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
- Refresh(RP_OPTIONAL, &wr);
- SetCaretInfo();
- }
+ SelectNone();
+ ScrollToCaret();
+ SetCaretInfo();
+ } else {
+ if (bCtrl)
+ SetCaret(m_pVT->GetBeginWordPlace());
else
- {
- if (m_SelState.IsExist())
- {
- if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0)
- SetCaret(m_SelState.BeginPos);
- else
- SetCaret(m_SelState.EndPos);
-
- SelectNone();
- ScrollToCaret();
- SetCaretInfo();
- }
- else
- {
- if (bCtrl)
- SetCaret(m_pVT->GetEndWordPlace());
- else
- SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
-
- ScrollToCaret();
- SetCaretOrigin();
- SetCaretInfo();
- }
- }
- }
-}
+ SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
-void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset,
- const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- Empty();
- DoInsertText(CPVT_WordPlace(0,0,-1), text, charset, pSecProps, pWordProps);
- if (bPaint) Paint();
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnSetText(m_wpCaret, m_wpOldCaret);
- //if (bAddUndo)
-}
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
+ }
+ }
+}
+
+void CFX_Edit::OnVK_END(FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (m_pVT->IsValid()) {
+ if (bShift) {
+ if (bCtrl)
+ SetCaret(m_pVT->GetEndWordPlace());
+ else
+ SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
+
+ if (m_SelState.IsExist())
+ m_SelState.SetEndPos(m_wpCaret);
+ else
+ m_SelState.Set(m_wpOldCaret, m_wpCaret);
+
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
+ Refresh(RP_OPTIONAL, &wr);
+ SetCaretInfo();
+ } else {
+ if (m_SelState.IsExist()) {
+ if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos) > 0)
+ SetCaret(m_SelState.BeginPos);
+ else
+ SetCaret(m_SelState.EndPos);
+
+ SelectNone();
+ ScrollToCaret();
+ SetCaretInfo();
+ } else {
+ if (bCtrl)
+ SetCaret(m_pVT->GetEndWordPlace());
+ else
+ SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
-FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (IsTextOverflow()) return FALSE;
+ ScrollToCaret();
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
+ }
+ }
+}
+
+void CFX_Edit::SetText(const FX_WCHAR* text,
+ int32_t charset,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps,
+ FX_BOOL bAddUndo,
+ FX_BOOL bPaint) {
+ Empty();
+ DoInsertText(CPVT_WordPlace(0, 0, -1), text, charset, pSecProps, pWordProps);
+ if (bPaint)
+ Paint();
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnSetText(m_wpCaret, m_wpOldCaret);
+ // if (bAddUndo)
+}
+
+FX_BOOL CFX_Edit::InsertWord(FX_WORD word,
+ int32_t charset,
+ const CPVT_WordProps* pWordProps,
+ FX_BOOL bAddUndo,
+ FX_BOOL bPaint) {
+ if (IsTextOverflow())
+ return FALSE;
- if (m_pVT->IsValid())
- {
- m_pVT->UpdateWordPlace(m_wpCaret);
+ if (m_pVT->IsValid()) {
+ m_pVT->UpdateWordPlace(m_wpCaret);
- SetCaret(m_pVT->InsertWord(m_wpCaret,word,GetCharSetFromUnicode(word, charset),pWordProps));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+ SetCaret(m_pVT->InsertWord(
+ m_wpCaret, word, GetCharSetFromUnicode(word, charset), pWordProps));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (m_wpCaret != m_wpOldCaret)
- {
- if (bAddUndo && m_bEnableUndo)
- {
- AddEditUndoItem(new CFXEU_InsertWord(this,m_wpOldCaret,m_wpCaret,word,charset,pWordProps));
- }
+ if (m_wpCaret != m_wpOldCaret) {
+ if (bAddUndo && m_bEnableUndo) {
+ AddEditUndoItem(new CFXEU_InsertWord(this, m_wpOldCaret, m_wpCaret,
+ word, charset, pWordProps));
+ }
- if (bPaint)
- PaintInsertText(m_wpOldCaret, m_wpCaret);
+ if (bPaint)
+ PaintInsertText(m_wpOldCaret, m_wpCaret);
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnInsertWord(m_wpCaret, m_wpOldCaret);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnInsertWord(m_wpCaret, m_wpOldCaret);
- return TRUE;
- }
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps,
- FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (IsTextOverflow()) return FALSE;
+FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps,
+ FX_BOOL bAddUndo,
+ FX_BOOL bPaint) {
+ if (IsTextOverflow())
+ return FALSE;
- if (m_pVT->IsValid())
- {
- m_pVT->UpdateWordPlace(m_wpCaret);
- SetCaret(m_pVT->InsertSection(m_wpCaret,pSecProps,pWordProps));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+ if (m_pVT->IsValid()) {
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ SetCaret(m_pVT->InsertSection(m_wpCaret, pSecProps, pWordProps));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (m_wpCaret != m_wpOldCaret)
- {
- if (bAddUndo && m_bEnableUndo)
- {
- AddEditUndoItem(new CFXEU_InsertReturn(this,m_wpOldCaret,m_wpCaret,pSecProps,pWordProps));
- }
+ if (m_wpCaret != m_wpOldCaret) {
+ if (bAddUndo && m_bEnableUndo) {
+ AddEditUndoItem(new CFXEU_InsertReturn(this, m_wpOldCaret, m_wpCaret,
+ pSecProps, pWordProps));
+ }
- if (bPaint)
- {
- RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpCaret));
- ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
- Refresh(RP_ANALYSE, &wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ if (bPaint) {
+ RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpCaret));
+ ScrollToCaret();
+ CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
+ Refresh(RP_ANALYSE, &wr);
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnInsertReturn(m_wpCaret, m_wpOldCaret);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnInsertReturn(m_wpCaret, m_wpOldCaret);
- return TRUE;
- }
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (m_pVT->IsValid())
- {
- if (m_wpCaret == m_pVT->GetBeginWordPlace()) return FALSE;
+FX_BOOL CFX_Edit::Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint) {
+ if (m_pVT->IsValid()) {
+ if (m_wpCaret == m_pVT->GetBeginWordPlace())
+ return FALSE;
- CPVT_Section section;
- CPVT_Word word;
+ CPVT_Section section;
+ CPVT_Word word;
- if (bAddUndo)
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_wpCaret);
- pIterator->GetSection(section);
- pIterator->GetWord(word);
- }
- }
+ if (bAddUndo) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_wpCaret);
+ pIterator->GetSection(section);
+ pIterator->GetWord(word);
+ }
+ }
- m_pVT->UpdateWordPlace(m_wpCaret);
- SetCaret(m_pVT->BackSpaceWord(m_wpCaret));
- m_SelState.Set(m_wpCaret,m_wpCaret);
-
- if (m_wpCaret != m_wpOldCaret)
- {
- if (bAddUndo && m_bEnableUndo)
- {
- if (m_wpCaret.SecCmp(m_wpOldCaret) != 0)
- AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset,
- section.SecProps,section.WordProps));
- else
- AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset,
- section.SecProps,word.WordProps));
- }
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ SetCaret(m_pVT->BackSpaceWord(m_wpCaret));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
+
+ if (m_wpCaret != m_wpOldCaret) {
+ if (bAddUndo && m_bEnableUndo) {
+ if (m_wpCaret.SecCmp(m_wpOldCaret) != 0)
+ AddEditUndoItem(new CFXEU_Backspace(
+ this, m_wpOldCaret, m_wpCaret, word.Word, word.nCharset,
+ section.SecProps, section.WordProps));
+ else
+ AddEditUndoItem(new CFXEU_Backspace(
+ this, m_wpOldCaret, m_wpCaret, word.Word, word.nCharset,
+ section.SecProps, word.WordProps));
+ }
- if (bPaint)
- {
- RearrangePart(CPVT_WordRange(m_wpCaret,m_wpOldCaret));
- ScrollToCaret();
+ if (bPaint) {
+ RearrangePart(CPVT_WordRange(m_wpCaret, m_wpOldCaret));
+ ScrollToCaret();
- CPVT_WordRange wr;
- if (m_wpCaret.SecCmp(m_wpOldCaret) !=0)
- wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),GetVisibleWordRange().EndPos);
- else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0)
- wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret));
- else
- wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret));
+ CPVT_WordRange wr;
+ if (m_wpCaret.SecCmp(m_wpOldCaret) != 0)
+ wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),
+ GetVisibleWordRange().EndPos);
+ else if (m_wpCaret.LineCmp(m_wpOldCaret) != 0)
+ wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),
+ m_pVT->GetSectionEndPlace(m_wpCaret));
+ else
+ wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),
+ m_pVT->GetSectionEndPlace(m_wpCaret));
- Refresh(RP_ANALYSE, &wr);
+ Refresh(RP_ANALYSE, &wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnBackSpace(m_wpCaret, m_wpOldCaret);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnBackSpace(m_wpCaret, m_wpOldCaret);
- return TRUE;
- }
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::Delete(FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (m_pVT->IsValid())
- {
- if (m_wpCaret == m_pVT->GetEndWordPlace()) return FALSE;
+FX_BOOL CFX_Edit::Delete(FX_BOOL bAddUndo, FX_BOOL bPaint) {
+ if (m_pVT->IsValid()) {
+ if (m_wpCaret == m_pVT->GetEndWordPlace())
+ return FALSE;
- CPVT_Section section;
- CPVT_Word word;
+ CPVT_Section section;
+ CPVT_Word word;
- if (bAddUndo)
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_pVT->GetNextWordPlace(m_wpCaret));
- pIterator->GetSection(section);
- pIterator->GetWord(word);
- }
- }
+ if (bAddUndo) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_pVT->GetNextWordPlace(m_wpCaret));
+ pIterator->GetSection(section);
+ pIterator->GetWord(word);
+ }
+ }
- m_pVT->UpdateWordPlace(m_wpCaret);
- FX_BOOL bSecEnd = (m_wpCaret == m_pVT->GetSectionEndPlace(m_wpCaret));
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ FX_BOOL bSecEnd = (m_wpCaret == m_pVT->GetSectionEndPlace(m_wpCaret));
- SetCaret(m_pVT->DeleteWord(m_wpCaret));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+ SetCaret(m_pVT->DeleteWord(m_wpCaret));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (bAddUndo && m_bEnableUndo)
- {
- if (bSecEnd)
- AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset,
- section.SecProps,section.WordProps,bSecEnd));
- else
- AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset,
- section.SecProps,word.WordProps,bSecEnd));
- }
+ if (bAddUndo && m_bEnableUndo) {
+ if (bSecEnd)
+ AddEditUndoItem(new CFXEU_Delete(
+ this, m_wpOldCaret, m_wpCaret, word.Word, word.nCharset,
+ section.SecProps, section.WordProps, bSecEnd));
+ else
+ AddEditUndoItem(new CFXEU_Delete(
+ this, m_wpOldCaret, m_wpCaret, word.Word, word.nCharset,
+ section.SecProps, word.WordProps, bSecEnd));
+ }
- if (bPaint)
- {
- RearrangePart(CPVT_WordRange(m_wpOldCaret,m_wpCaret));
- ScrollToCaret();
+ if (bPaint) {
+ RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpCaret));
+ ScrollToCaret();
- CPVT_WordRange wr;
- if (bSecEnd)
- wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),GetVisibleWordRange().EndPos);
- else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0)
- wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret));
- else
- wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),m_pVT->GetSectionEndPlace(m_wpCaret));
+ CPVT_WordRange wr;
+ if (bSecEnd)
+ wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),
+ GetVisibleWordRange().EndPos);
+ else if (m_wpCaret.LineCmp(m_wpOldCaret) != 0)
+ wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),
+ m_pVT->GetSectionEndPlace(m_wpCaret));
+ else
+ wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),
+ m_pVT->GetSectionEndPlace(m_wpCaret));
- Refresh(RP_ANALYSE, &wr);
+ Refresh(RP_ANALYSE, &wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnDelete(m_wpCaret, m_wpOldCaret);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnDelete(m_wpCaret, m_wpOldCaret);
- return TRUE;
- }
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::Empty()
-{
- if (m_pVT->IsValid())
- {
- m_pVT->DeleteWords(GetWholeWordRange());
- SetCaret(m_pVT->GetBeginWordPlace());
+FX_BOOL CFX_Edit::Empty() {
+ if (m_pVT->IsValid()) {
+ m_pVT->DeleteWords(GetWholeWordRange());
+ SetCaret(m_pVT->GetBeginWordPlace());
- return TRUE;
- }
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::Clear(FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (m_pVT->IsValid())
- {
- if (m_SelState.IsExist())
- {
- CPVT_WordRange range = m_SelState.ConvertToWordRange();
-
- if (bAddUndo && m_bEnableUndo)
- {
- if (m_pVT->IsRichText())
- {
- BeginGroupUndo(L"");
-
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(range.EndPos);
-
- CPVT_Word wordinfo;
- CPVT_Section secinfo;
- do
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (place.WordCmp(range.BeginPos) <= 0)break;
-
- CPVT_WordPlace oldplace = m_pVT->GetPrevWordPlace(place);
-
- if (oldplace.SecCmp(place) != 0)
- {
- if (pIterator->GetSection(secinfo))
- {
- AddEditUndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word,
- wordinfo.nCharset,secinfo.SecProps,secinfo.WordProps));
- }
- }
- else
- {
- if (pIterator->GetWord(wordinfo))
- {
- oldplace = m_pVT->AjustLineHeader(oldplace,TRUE);
- place = m_pVT->AjustLineHeader(place,TRUE);
-
- AddEditUndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word,
- wordinfo.nCharset,secinfo.SecProps,wordinfo.WordProps));
- }
- }
- }while (pIterator->PrevWord());
- }
- EndGroupUndo();
+FX_BOOL CFX_Edit::Clear(FX_BOOL bAddUndo, FX_BOOL bPaint) {
+ if (m_pVT->IsValid()) {
+ if (m_SelState.IsExist()) {
+ CPVT_WordRange range = m_SelState.ConvertToWordRange();
+
+ if (bAddUndo && m_bEnableUndo) {
+ if (m_pVT->IsRichText()) {
+ BeginGroupUndo(L"");
+
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(range.EndPos);
+
+ CPVT_Word wordinfo;
+ CPVT_Section secinfo;
+ do {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (place.WordCmp(range.BeginPos) <= 0)
+ break;
+
+ CPVT_WordPlace oldplace = m_pVT->GetPrevWordPlace(place);
+
+ if (oldplace.SecCmp(place) != 0) {
+ if (pIterator->GetSection(secinfo)) {
+ AddEditUndoItem(new CFXEU_ClearRich(
+ this, oldplace, place, range, wordinfo.Word,
+ wordinfo.nCharset, secinfo.SecProps, secinfo.WordProps));
}
- else
- {
- AddEditUndoItem(new CFXEU_Clear(this,range,GetSelText()));
+ } else {
+ if (pIterator->GetWord(wordinfo)) {
+ oldplace = m_pVT->AjustLineHeader(oldplace, TRUE);
+ place = m_pVT->AjustLineHeader(place, TRUE);
+
+ AddEditUndoItem(new CFXEU_ClearRich(
+ this, oldplace, place, range, wordinfo.Word,
+ wordinfo.nCharset, secinfo.SecProps, wordinfo.WordProps));
}
- }
+ }
+ } while (pIterator->PrevWord());
+ }
+ EndGroupUndo();
+ } else {
+ AddEditUndoItem(new CFXEU_Clear(this, range, GetSelText()));
+ }
+ }
- SelectNone();
- SetCaret(m_pVT->DeleteWords(range));
- m_SelState.Set(m_wpCaret,m_wpCaret);
+ SelectNone();
+ SetCaret(m_pVT->DeleteWords(range));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (bPaint)
- {
- RearrangePart(range);
- ScrollToCaret();
+ if (bPaint) {
+ RearrangePart(range);
+ ScrollToCaret();
- CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
- Refresh(RP_ANALYSE, &wr);
+ CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
+ Refresh(RP_ANALYSE, &wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnClear(m_wpCaret, m_wpOldCaret);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnClear(m_wpCaret, m_wpOldCaret);
- return TRUE;
- }
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset,
- const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
-{
- if (IsTextOverflow()) return FALSE;
+FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text,
+ int32_t charset,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps,
+ FX_BOOL bAddUndo,
+ FX_BOOL bPaint) {
+ if (IsTextOverflow())
+ return FALSE;
- m_pVT->UpdateWordPlace(m_wpCaret);
- SetCaret(DoInsertText(m_wpCaret, text, charset, pSecProps, pWordProps));
- m_SelState.Set(m_wpCaret,m_wpCaret);
-
- if (m_wpCaret != m_wpOldCaret)
- {
- if (bAddUndo && m_bEnableUndo)
- {
- AddEditUndoItem(new CFXEU_InsertText(this,m_wpOldCaret,m_wpCaret,text,charset,pSecProps,pWordProps));
- }
+ m_pVT->UpdateWordPlace(m_wpCaret);
+ SetCaret(DoInsertText(m_wpCaret, text, charset, pSecProps, pWordProps));
+ m_SelState.Set(m_wpCaret, m_wpCaret);
- if (bPaint)
- PaintInsertText(m_wpOldCaret, m_wpCaret);
+ if (m_wpCaret != m_wpOldCaret) {
+ if (bAddUndo && m_bEnableUndo) {
+ AddEditUndoItem(new CFXEU_InsertText(this, m_wpOldCaret, m_wpCaret, text,
+ charset, pSecProps, pWordProps));
+ }
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnInsertText(m_wpCaret, m_wpOldCaret);
+ if (bPaint)
+ PaintInsertText(m_wpOldCaret, m_wpCaret);
- return TRUE;
- }
- return FALSE;
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnInsertText(m_wpCaret, m_wpOldCaret);
+
+ return TRUE;
+ }
+ return FALSE;
}
-void CFX_Edit::PaintInsertText(const CPVT_WordPlace & wpOld, const CPVT_WordPlace & wpNew)
-{
- if (m_pVT->IsValid())
- {
- RearrangePart(CPVT_WordRange(wpOld,wpNew));
- ScrollToCaret();
+void CFX_Edit::PaintInsertText(const CPVT_WordPlace& wpOld,
+ const CPVT_WordPlace& wpNew) {
+ if (m_pVT->IsValid()) {
+ RearrangePart(CPVT_WordRange(wpOld, wpNew));
+ ScrollToCaret();
- CPVT_WordRange wr;
- if (m_wpCaret.LineCmp(wpOld) !=0)
- wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(wpOld),m_pVT->GetSectionEndPlace(wpNew));
- else
- wr = CPVT_WordRange(wpOld,m_pVT->GetSectionEndPlace(wpNew));
- Refresh(RP_ANALYSE, &wr);
- SetCaretOrigin();
- SetCaretInfo();
- }
+ CPVT_WordRange wr;
+ if (m_wpCaret.LineCmp(wpOld) != 0)
+ wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(wpOld),
+ m_pVT->GetSectionEndPlace(wpNew));
+ else
+ wr = CPVT_WordRange(wpOld, m_pVT->GetSectionEndPlace(wpNew));
+ Refresh(RP_ANALYSE, &wr);
+ SetCaretOrigin();
+ SetCaretInfo();
+ }
}
-FX_BOOL CFX_Edit::Redo()
-{
- if (m_bEnableUndo)
- {
- if (m_Undo.CanRedo())
- {
- m_Undo.Redo();
- return TRUE;
- }
+FX_BOOL CFX_Edit::Redo() {
+ if (m_bEnableUndo) {
+ if (m_Undo.CanRedo()) {
+ m_Undo.Redo();
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::Undo()
-{
- if (m_bEnableUndo)
- {
- if (m_Undo.CanUndo())
- {
- m_Undo.Undo();
- return TRUE;
- }
+FX_BOOL CFX_Edit::Undo() {
+ if (m_bEnableUndo) {
+ if (m_Undo.CanUndo()) {
+ m_Undo.Undo();
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-void CFX_Edit::SetCaretOrigin()
-{
- if (m_pVT->IsValid())
- {
- if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
- {
- pIterator->SetAt(m_wpCaret);
- CPVT_Word word;
- CPVT_Line line;
- if (pIterator->GetWord(word))
- {
- m_ptCaret.x = word.ptWord.x + word.fWidth;
- m_ptCaret.y = word.ptWord.y;
- }
- else if (pIterator->GetLine(line))
- {
- m_ptCaret.x = line.ptLine.x;
- m_ptCaret.y = line.ptLine.y;
- }
- }
+void CFX_Edit::SetCaretOrigin() {
+ if (m_pVT->IsValid()) {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ pIterator->SetAt(m_wpCaret);
+ CPVT_Word word;
+ CPVT_Line line;
+ if (pIterator->GetWord(word)) {
+ m_ptCaret.x = word.ptWord.x + word.fWidth;
+ m_ptCaret.y = word.ptWord.y;
+ } else if (pIterator->GetLine(line)) {
+ m_ptCaret.x = line.ptLine.x;
+ m_ptCaret.y = line.ptLine.y;
+ }
}
+ }
}
-int32_t CFX_Edit::WordPlaceToWordIndex(const CPVT_WordPlace & place) const
-{
- if (m_pVT->IsValid())
- return m_pVT->WordPlaceToWordIndex(place);
+int32_t CFX_Edit::WordPlaceToWordIndex(const CPVT_WordPlace& place) const {
+ if (m_pVT->IsValid())
+ return m_pVT->WordPlaceToWordIndex(place);
- return -1;
+ return -1;
}
-CPVT_WordPlace CFX_Edit::WordIndexToWordPlace(int32_t index) const
-{
- if (m_pVT->IsValid())
- return m_pVT->WordIndexToWordPlace(index);
+CPVT_WordPlace CFX_Edit::WordIndexToWordPlace(int32_t index) const {
+ if (m_pVT->IsValid())
+ return m_pVT->WordIndexToWordPlace(index);
- return CPVT_WordPlace();
+ return CPVT_WordPlace();
}
-FX_BOOL CFX_Edit::IsTextFull() const
-{
- int32_t nTotalWords = m_pVT->GetTotalWords();
- int32_t nLimitChar = m_pVT->GetLimitChar();
- int32_t nCharArray = m_pVT->GetCharArray();
+FX_BOOL CFX_Edit::IsTextFull() const {
+ int32_t nTotalWords = m_pVT->GetTotalWords();
+ int32_t nLimitChar = m_pVT->GetLimitChar();
+ int32_t nCharArray = m_pVT->GetCharArray();
- return IsTextOverflow() || (nLimitChar>0 && nTotalWords >= nLimitChar)
- || (nCharArray>0 && nTotalWords >= nCharArray);
+ return IsTextOverflow() || (nLimitChar > 0 && nTotalWords >= nLimitChar) ||
+ (nCharArray > 0 && nTotalWords >= nCharArray);
}
-FX_BOOL CFX_Edit::IsTextOverflow() const
-{
- if (!m_bEnableScroll && !m_bEnableOverflow)
- {
- CPDF_Rect rcPlate = m_pVT->GetPlateRect();
- CPDF_Rect rcContent = m_pVT->GetContentRect();
-
- if (m_pVT->IsMultiLine() && GetTotalLines() > 1)
- {
- if (FX_EDIT_IsFloatBigger(rcContent.Height(),rcPlate.Height())) return TRUE;
- }
+FX_BOOL CFX_Edit::IsTextOverflow() const {
+ if (!m_bEnableScroll && !m_bEnableOverflow) {
+ CPDF_Rect rcPlate = m_pVT->GetPlateRect();
+ CPDF_Rect rcContent = m_pVT->GetContentRect();
- if (FX_EDIT_IsFloatBigger(rcContent.Width(),rcPlate.Width())) return TRUE;
+ if (m_pVT->IsMultiLine() && GetTotalLines() > 1) {
+ if (FX_EDIT_IsFloatBigger(rcContent.Height(), rcPlate.Height()))
+ return TRUE;
}
- return FALSE;
+ if (FX_EDIT_IsFloatBigger(rcContent.Width(), rcPlate.Width()))
+ return TRUE;
+ }
+
+ return FALSE;
}
-CPVT_WordPlace CFX_Edit::GetLineBeginPlace(const CPVT_WordPlace & place) const
-{
- return m_pVT->GetLineBeginPlace(place);
+CPVT_WordPlace CFX_Edit::GetLineBeginPlace(const CPVT_WordPlace& place) const {
+ return m_pVT->GetLineBeginPlace(place);
}
-CPVT_WordPlace CFX_Edit::GetLineEndPlace(const CPVT_WordPlace & place) const
-{
- return m_pVT->GetLineEndPlace(place);
+CPVT_WordPlace CFX_Edit::GetLineEndPlace(const CPVT_WordPlace& place) const {
+ return m_pVT->GetLineEndPlace(place);
}
-CPVT_WordPlace CFX_Edit::GetSectionBeginPlace(const CPVT_WordPlace & place) const
-{
- return m_pVT->GetSectionBeginPlace(place);
+CPVT_WordPlace CFX_Edit::GetSectionBeginPlace(
+ const CPVT_WordPlace& place) const {
+ return m_pVT->GetSectionBeginPlace(place);
}
-CPVT_WordPlace CFX_Edit::GetSectionEndPlace(const CPVT_WordPlace & place) const
-{
- return m_pVT->GetSectionEndPlace(place);
+CPVT_WordPlace CFX_Edit::GetSectionEndPlace(const CPVT_WordPlace& place) const {
+ return m_pVT->GetSectionEndPlace(place);
}
-FX_BOOL CFX_Edit::CanUndo() const
-{
- if (m_bEnableUndo)
- {
- return m_Undo.CanUndo();
- }
+FX_BOOL CFX_Edit::CanUndo() const {
+ if (m_bEnableUndo) {
+ return m_Undo.CanUndo();
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::CanRedo() const
-{
- if (m_bEnableUndo)
- {
- return m_Undo.CanRedo();
- }
+FX_BOOL CFX_Edit::CanRedo() const {
+ if (m_bEnableUndo) {
+ return m_Undo.CanRedo();
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CFX_Edit::IsModified() const
-{
- if (m_bEnableUndo)
- {
- return m_Undo.IsModified();
- }
+FX_BOOL CFX_Edit::IsModified() const {
+ if (m_bEnableUndo) {
+ return m_Undo.IsModified();
+ }
- return FALSE;
+ return FALSE;
}
-void CFX_Edit::EnableRefresh(FX_BOOL bRefresh)
-{
- m_bEnableRefresh = bRefresh;
+void CFX_Edit::EnableRefresh(FX_BOOL bRefresh) {
+ m_bEnableRefresh = bRefresh;
}
-void CFX_Edit::EnableUndo(FX_BOOL bUndo)
-{
- m_bEnableUndo = bUndo;
+void CFX_Edit::EnableUndo(FX_BOOL bUndo) {
+ m_bEnableUndo = bUndo;
}
-void CFX_Edit::EnableNotify(FX_BOOL bNotify)
-{
- m_bNotify = bNotify;
+void CFX_Edit::EnableNotify(FX_BOOL bNotify) {
+ m_bNotify = bNotify;
}
-void CFX_Edit::EnableOprNotify(FX_BOOL bNotify)
-{
- m_bOprNotify = bNotify;
+void CFX_Edit::EnableOprNotify(FX_BOOL bNotify) {
+ m_bOprNotify = bNotify;
}
-FX_FLOAT CFX_Edit::GetLineTop(const CPVT_WordPlace& place) const
-{
- if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator())
- {
- CPVT_WordPlace wpOld = pIterator->GetAt();
+FX_FLOAT CFX_Edit::GetLineTop(const CPVT_WordPlace& place) const {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordPlace wpOld = pIterator->GetAt();
- pIterator->SetAt(place);
- CPVT_Line line;
- pIterator->GetLine(line);
+ pIterator->SetAt(place);
+ CPVT_Line line;
+ pIterator->GetLine(line);
- pIterator->SetAt(wpOld);
+ pIterator->SetAt(wpOld);
- return line.ptLine.y + line.fLineAscent;
- }
+ return line.ptLine.y + line.fLineAscent;
+ }
- return 0.0f;
+ return 0.0f;
}
-FX_FLOAT CFX_Edit::GetLineBottom(const CPVT_WordPlace& place) const
-{
- if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator())
- {
- CPVT_WordPlace wpOld = pIterator->GetAt();
+FX_FLOAT CFX_Edit::GetLineBottom(const CPVT_WordPlace& place) const {
+ if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) {
+ CPVT_WordPlace wpOld = pIterator->GetAt();
- pIterator->SetAt(place);
- CPVT_Line line;
- pIterator->GetLine(line);
+ pIterator->SetAt(place);
+ CPVT_Line line;
+ pIterator->GetLine(line);
- pIterator->SetAt(wpOld);
+ pIterator->SetAt(wpOld);
- return line.ptLine.y + line.fLineDescent;
- }
+ return line.ptLine.y + line.fLineDescent;
+ }
- return 0.0f;
+ return 0.0f;
}
-CPVT_WordPlace CFX_Edit::DoInsertText(const CPVT_WordPlace& place, const FX_WCHAR* text, int32_t charset,
- const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps)
-{
- CPVT_WordPlace wp = place;
+CPVT_WordPlace CFX_Edit::DoInsertText(const CPVT_WordPlace& place,
+ const FX_WCHAR* text,
+ int32_t charset,
+ const CPVT_SecProps* pSecProps,
+ const CPVT_WordProps* pWordProps) {
+ CPVT_WordPlace wp = place;
- if (m_pVT->IsValid())
- {
- CFX_WideString sText = text;
+ if (m_pVT->IsValid()) {
+ CFX_WideString sText = text;
- for (int32_t i = 0, sz = sText.GetLength(); i < sz; i++)
- {
- FX_WORD word = sText[i];
- switch (word)
- {
- case 0x0D:
- wp = m_pVT->InsertSection(wp,pSecProps,pWordProps);
- if (sText[i+1] == 0x0A)
- i++;
- break;
- case 0x0A:
- wp = m_pVT->InsertSection(wp,pSecProps,pWordProps);
- if (sText[i+1] == 0x0D)
- i++;
- break;
- case 0x09:
- word = 0x20;
- default:
- wp = m_pVT->InsertWord(wp,word,GetCharSetFromUnicode(word, charset),pWordProps);
- break;
- }
- }
+ for (int32_t i = 0, sz = sText.GetLength(); i < sz; i++) {
+ FX_WORD word = sText[i];
+ switch (word) {
+ case 0x0D:
+ wp = m_pVT->InsertSection(wp, pSecProps, pWordProps);
+ if (sText[i + 1] == 0x0A)
+ i++;
+ break;
+ case 0x0A:
+ wp = m_pVT->InsertSection(wp, pSecProps, pWordProps);
+ if (sText[i + 1] == 0x0D)
+ i++;
+ break;
+ case 0x09:
+ word = 0x20;
+ default:
+ wp = m_pVT->InsertWord(wp, word, GetCharSetFromUnicode(word, charset),
+ pWordProps);
+ break;
+ }
}
+ }
- return wp;
+ return wp;
}
-int32_t CFX_Edit::GetCharSetFromUnicode(FX_WORD word, int32_t nOldCharset)
-{
- if (IFX_Edit_FontMap* pFontMap = GetFontMap())
- return pFontMap->CharSetFromUnicode(word, nOldCharset);
- return nOldCharset;
+int32_t CFX_Edit::GetCharSetFromUnicode(FX_WORD word, int32_t nOldCharset) {
+ if (IFX_Edit_FontMap* pFontMap = GetFontMap())
+ return pFontMap->CharSetFromUnicode(word, nOldCharset);
+ return nOldCharset;
}
-void CFX_Edit::BeginGroupUndo(const CFX_WideString& sTitle)
-{
- ASSERT(m_pGroupUndoItem == NULL);
+void CFX_Edit::BeginGroupUndo(const CFX_WideString& sTitle) {
+ ASSERT(m_pGroupUndoItem == NULL);
- m_pGroupUndoItem = new CFX_Edit_GroupUndoItem(sTitle);
+ m_pGroupUndoItem = new CFX_Edit_GroupUndoItem(sTitle);
}
-void CFX_Edit::EndGroupUndo()
-{
- ASSERT(m_pGroupUndoItem != NULL);
-
- m_pGroupUndoItem->UpdateItems();
- m_Undo.AddItem(m_pGroupUndoItem);
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnAddUndo(m_pGroupUndoItem);
- m_pGroupUndoItem = NULL;
-}
+void CFX_Edit::EndGroupUndo() {
+ ASSERT(m_pGroupUndoItem != NULL);
-void CFX_Edit::AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem)
-{
- if (m_pGroupUndoItem)
- m_pGroupUndoItem->AddUndoItem(pEditUndoItem);
- else
- {
- m_Undo.AddItem(pEditUndoItem);
- if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnAddUndo(pEditUndoItem);
- }
+ m_pGroupUndoItem->UpdateItems();
+ m_Undo.AddItem(m_pGroupUndoItem);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnAddUndo(m_pGroupUndoItem);
+ m_pGroupUndoItem = NULL;
}
-void CFX_Edit::AddUndoItem(IFX_Edit_UndoItem* pUndoItem)
-{
- m_Undo.AddItem(pUndoItem);
+void CFX_Edit::AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem) {
+ if (m_pGroupUndoItem)
+ m_pGroupUndoItem->AddUndoItem(pEditUndoItem);
+ else {
+ m_Undo.AddItem(pEditUndoItem);
if (m_bOprNotify && m_pOprNotify)
- m_pOprNotify->OnAddUndo(pUndoItem);
+ m_pOprNotify->OnAddUndo(pEditUndoItem);
+ }
}
+void CFX_Edit::AddUndoItem(IFX_Edit_UndoItem* pUndoItem) {
+ m_Undo.AddItem(pUndoItem);
+ if (m_bOprNotify && m_pOprNotify)
+ m_pOprNotify->OnAddUndo(pUndoItem);
+}
diff --git a/fpdfsdk/src/fxedit/fxet_list.cpp b/fpdfsdk/src/fxedit/fxet_list.cpp
index d94cc16c86..70dc8d5262 100644
--- a/fpdfsdk/src/fxedit/fxet_list.cpp
+++ b/fpdfsdk/src/fxedit/fxet_list.cpp
@@ -8,1004 +8,829 @@
#include "../../include/fxedit/fxet_edit.h"
#include "../../include/fxedit/fxet_list.h"
-/* ------------------------------- CFX_ListItem ---------------------------------- */
+/* ------------------------------- CFX_ListItem
+ * ---------------------------------- */
-CFX_ListItem::CFX_ListItem() : m_pEdit(NULL),
- m_bSelected(FALSE),
- m_bCaret(FALSE),
- m_rcListItem(0.0f,0.0f,0.0f,0.0f)
-{
- m_pEdit = IFX_Edit::NewEdit();
- ASSERT(m_pEdit != NULL);
+CFX_ListItem::CFX_ListItem()
+ : m_pEdit(NULL),
+ m_bSelected(FALSE),
+ m_bCaret(FALSE),
+ m_rcListItem(0.0f, 0.0f, 0.0f, 0.0f) {
+ m_pEdit = IFX_Edit::NewEdit();
+ ASSERT(m_pEdit != NULL);
- m_pEdit->SetAlignmentV(1);
- m_pEdit->Initialize();
+ m_pEdit->SetAlignmentV(1);
+ m_pEdit->Initialize();
}
-CFX_ListItem::~CFX_ListItem()
-{
- IFX_Edit::DelEdit(m_pEdit);
+CFX_ListItem::~CFX_ListItem() {
+ IFX_Edit::DelEdit(m_pEdit);
}
-void CFX_ListItem::SetFontMap(IFX_Edit_FontMap * pFontMap)
-{
- if (m_pEdit)
- m_pEdit->SetFontMap(pFontMap);
+void CFX_ListItem::SetFontMap(IFX_Edit_FontMap* pFontMap) {
+ if (m_pEdit)
+ m_pEdit->SetFontMap(pFontMap);
}
-IFX_Edit* CFX_ListItem::GetEdit() const
-{
- return m_pEdit;
+IFX_Edit* CFX_ListItem::GetEdit() const {
+ return m_pEdit;
}
-IFX_Edit_Iterator* CFX_ListItem::GetIterator() const
-{
- if (m_pEdit)
- return m_pEdit->GetIterator();
+IFX_Edit_Iterator* CFX_ListItem::GetIterator() const {
+ if (m_pEdit)
+ return m_pEdit->GetIterator();
- return NULL;
+ return NULL;
}
-void CFX_ListItem::SetRect(const CLST_Rect & rect)
-{
- m_rcListItem = rect;
+void CFX_ListItem::SetRect(const CLST_Rect& rect) {
+ m_rcListItem = rect;
}
-CLST_Rect CFX_ListItem::GetRect() const
-{
- return m_rcListItem;
+CLST_Rect CFX_ListItem::GetRect() const {
+ return m_rcListItem;
}
-FX_BOOL CFX_ListItem::IsSelected() const
-{
- return m_bSelected;
+FX_BOOL CFX_ListItem::IsSelected() const {
+ return m_bSelected;
}
-void CFX_ListItem::SetSelect(FX_BOOL bSelected)
-{
- m_bSelected = bSelected;
+void CFX_ListItem::SetSelect(FX_BOOL bSelected) {
+ m_bSelected = bSelected;
}
-FX_BOOL CFX_ListItem::IsCaret() const
-{
- return m_bCaret;
+FX_BOOL CFX_ListItem::IsCaret() const {
+ return m_bCaret;
}
-void CFX_ListItem::SetCaret(FX_BOOL bCaret)
-{
- m_bCaret = bCaret;
+void CFX_ListItem::SetCaret(FX_BOOL bCaret) {
+ m_bCaret = bCaret;
}
-void CFX_ListItem::SetText(const FX_WCHAR* text)
-{
- if (m_pEdit)
- m_pEdit->SetText(text);
+void CFX_ListItem::SetText(const FX_WCHAR* text) {
+ if (m_pEdit)
+ m_pEdit->SetText(text);
}
-void CFX_ListItem::SetFontSize(FX_FLOAT fFontSize)
-{
- if (m_pEdit)
- m_pEdit->SetFontSize(fFontSize);
+void CFX_ListItem::SetFontSize(FX_FLOAT fFontSize) {
+ if (m_pEdit)
+ m_pEdit->SetFontSize(fFontSize);
}
-FX_FLOAT CFX_ListItem::GetItemHeight() const
-{
- if (m_pEdit)
- return m_pEdit->GetContentRect().Height();
+FX_FLOAT CFX_ListItem::GetItemHeight() const {
+ if (m_pEdit)
+ return m_pEdit->GetContentRect().Height();
- return 0.0f;
+ return 0.0f;
}
-FX_WORD CFX_ListItem::GetFirstChar() const
-{
- CPVT_Word word;
+FX_WORD CFX_ListItem::GetFirstChar() const {
+ CPVT_Word word;
- if (IFX_Edit_Iterator* pIterator = GetIterator())
- {
- pIterator->SetAt(1);
- pIterator->GetWord(word);
- }
+ if (IFX_Edit_Iterator* pIterator = GetIterator()) {
+ pIterator->SetAt(1);
+ pIterator->GetWord(word);
+ }
- return word.Word;
+ return word.Word;
}
-CFX_WideString CFX_ListItem::GetText() const
-{
- if (m_pEdit)
- return m_pEdit->GetText();
+CFX_WideString CFX_ListItem::GetText() const {
+ if (m_pEdit)
+ return m_pEdit->GetText();
- return L"";
+ return L"";
}
-/* ------------------------------------ CFX_List --------------------------------- */
+/* ------------------------------------ CFX_List
+ * --------------------------------- */
-CFX_List::CFX_List() : m_fFontSize(0.0f), m_pFontMap(NULL), m_bMultiple(FALSE)
-{
+CFX_List::CFX_List()
+ : m_fFontSize(0.0f), m_pFontMap(NULL), m_bMultiple(FALSE) {}
+
+CFX_List::~CFX_List() {
+ Empty();
}
-CFX_List::~CFX_List()
-{
- Empty();
+void CFX_List::Empty() {
+ for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++)
+ delete m_aListItems.GetAt(i);
+
+ m_aListItems.RemoveAll();
}
-void CFX_List::Empty()
-{
- for (int32_t i=0,sz=m_aListItems.GetSize(); i<sz; i++)
- delete m_aListItems.GetAt(i);
+void CFX_List::SetFontMap(IFX_Edit_FontMap* pFontMap) {
+ m_pFontMap = pFontMap;
+}
- m_aListItems.RemoveAll();
+void CFX_List::SetFontSize(FX_FLOAT fFontSize) {
+ m_fFontSize = fFontSize;
}
-void CFX_List::SetFontMap(IFX_Edit_FontMap * pFontMap)
-{
- m_pFontMap = pFontMap;
+void CFX_List::AddItem(const FX_WCHAR* str) {
+ if (CFX_ListItem* pListItem = new CFX_ListItem()) {
+ pListItem->SetFontMap(m_pFontMap);
+ pListItem->SetFontSize(m_fFontSize);
+ pListItem->SetText(str);
+ m_aListItems.Add(pListItem);
+ }
}
-void CFX_List::SetFontSize(FX_FLOAT fFontSize)
-{
- m_fFontSize = fFontSize;
+void CFX_List::ReArrange(int32_t nItemIndex) {
+ FX_FLOAT fPosY = 0.0f;
+
+ if (CFX_ListItem* pPrevItem = m_aListItems.GetAt(nItemIndex - 1))
+ fPosY = pPrevItem->GetRect().bottom;
+
+ for (int32_t i = nItemIndex, sz = m_aListItems.GetSize(); i < sz; i++) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) {
+ FX_FLOAT fListItemHeight = pListItem->GetItemHeight();
+ pListItem->SetRect(CLST_Rect(0.0f, fPosY, 0.0f, fPosY + fListItemHeight));
+ fPosY += fListItemHeight;
+ }
+ }
+
+ SetContentRect(CLST_Rect(0.0f, 0.0f, 0.0f, fPosY));
}
-void CFX_List::AddItem(const FX_WCHAR* str)
-{
- if (CFX_ListItem * pListItem = new CFX_ListItem())
- {
- pListItem->SetFontMap(m_pFontMap);
- pListItem->SetFontSize(m_fFontSize);
- pListItem->SetText(str);
- m_aListItems.Add(pListItem);
- }
+IFX_Edit* CFX_List::GetItemEdit(int32_t nIndex) const {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) {
+ return pListItem->GetEdit();
+ }
+
+ return NULL;
}
-void CFX_List::ReArrange(int32_t nItemIndex)
-{
- FX_FLOAT fPosY = 0.0f;
+int32_t CFX_List::GetCount() const {
+ return m_aListItems.GetSize();
+}
- if (CFX_ListItem * pPrevItem = m_aListItems.GetAt(nItemIndex - 1))
- fPosY = pPrevItem->GetRect().bottom;
+CPDF_Rect CFX_List::GetPlateRect() const {
+ return CFX_ListContainer::GetPlateRect();
+}
- for (int32_t i=nItemIndex,sz=m_aListItems.GetSize(); i<sz; i++)
- {
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(i))
- {
- FX_FLOAT fListItemHeight = pListItem->GetItemHeight();
- pListItem->SetRect(CLST_Rect(0.0f,fPosY,0.0f,fPosY + fListItemHeight));
- fPosY += fListItemHeight;
- }
- }
+CPDF_Rect CFX_List::GetContentRect() const {
+ return InnerToOuter(CFX_ListContainer::GetContentRect());
+}
- SetContentRect(CLST_Rect(0.0f,0.0f,0.0f,fPosY));
+FX_FLOAT CFX_List::GetFontSize() const {
+ return m_fFontSize;
}
-IFX_Edit * CFX_List::GetItemEdit(int32_t nIndex) const
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nIndex))
- {
- return pListItem->GetEdit();
- }
+int32_t CFX_List::GetItemIndex(const CPDF_Point& point) const {
+ CPDF_Point pt = OuterToInner(point);
+
+ FX_BOOL bFirst = TRUE;
+ FX_BOOL bLast = TRUE;
- return NULL;
+ for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) {
+ CLST_Rect rcListItem = pListItem->GetRect();
+
+ if (FX_EDIT_IsFloatBigger(pt.y, rcListItem.top)) {
+ bFirst = FALSE;
+ }
+
+ if (FX_EDIT_IsFloatSmaller(pt.y, rcListItem.bottom)) {
+ bLast = FALSE;
+ }
+
+ if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom) {
+ return i;
+ }
+ }
+ }
+
+ if (bFirst)
+ return 0;
+ if (bLast)
+ return m_aListItems.GetSize() - 1;
+
+ return -1;
}
-int32_t CFX_List::GetCount() const
-{
- return m_aListItems.GetSize();
+FX_FLOAT CFX_List::GetFirstHeight() const {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(0)) {
+ return pListItem->GetItemHeight();
+ }
+
+ return 1.0f;
}
-CPDF_Rect CFX_List::GetPlateRect() const
-{
- return CFX_ListContainer::GetPlateRect();
+int32_t CFX_List::GetFirstSelected() const {
+ for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) {
+ if (pListItem->IsSelected())
+ return i;
+ }
+ }
+ return -1;
}
-CPDF_Rect CFX_List::GetContentRect() const
-{
- return InnerToOuter(CFX_ListContainer::GetContentRect());
+int32_t CFX_List::GetLastSelected() const {
+ for (int32_t i = m_aListItems.GetSize() - 1; i >= 0; i--) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) {
+ if (pListItem->IsSelected())
+ return i;
+ }
+ }
+ return -1;
}
-FX_FLOAT CFX_List::GetFontSize() const
-{
- return m_fFontSize;
+FX_WCHAR CFX_List::Toupper(FX_WCHAR c) const {
+ if ((c >= 'a') && (c <= 'z'))
+ c = c - ('a' - 'A');
+ return c;
}
-int32_t CFX_List::GetItemIndex(const CPDF_Point & point) const
-{
- CPDF_Point pt = OuterToInner(point);
+int32_t CFX_List::FindNext(int32_t nIndex, FX_WCHAR nChar) const {
+ int32_t nCircleIndex = nIndex;
- FX_BOOL bFirst = TRUE;
- FX_BOOL bLast = TRUE;
+ for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) {
+ nCircleIndex++;
+ if (nCircleIndex >= sz)
+ nCircleIndex = 0;
- for (int32_t i=0,sz=m_aListItems.GetSize(); i<sz; i++)
- {
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(i))
- {
- CLST_Rect rcListItem = pListItem->GetRect();
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nCircleIndex)) {
+ if (Toupper(pListItem->GetFirstChar()) == Toupper(nChar))
+ return nCircleIndex;
+ }
+ }
- if (FX_EDIT_IsFloatBigger(pt.y, rcListItem.top))
- {
- bFirst = FALSE;
- }
+ return nCircleIndex;
+}
- if (FX_EDIT_IsFloatSmaller(pt.y, rcListItem.bottom))
- {
- bLast = FALSE;
- }
+CPDF_Rect CFX_List::GetItemRect(int32_t nIndex) const {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) {
+ CPDF_Rect rcItem = pListItem->GetRect();
+ rcItem.left = 0.0f;
+ rcItem.right = GetPlateRect().Width();
+ return InnerToOuter(rcItem);
+ }
- if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom)
- {
- return i;
- }
- }
- }
+ return CPDF_Rect();
+}
- if (bFirst) return 0;
- if (bLast) return m_aListItems.GetSize()-1;
+FX_BOOL CFX_List::IsItemSelected(int32_t nIndex) const {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) {
+ return pListItem->IsSelected();
+ }
+
+ return FALSE;
+}
- return -1;
+void CFX_List::SetItemSelect(int32_t nItemIndex, FX_BOOL bSelected) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nItemIndex)) {
+ pListItem->SetSelect(bSelected);
+ }
}
-FX_FLOAT CFX_List::GetFirstHeight() const
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(0))
- {
- return pListItem->GetItemHeight();
- }
+void CFX_List::SetItemCaret(int32_t nItemIndex, FX_BOOL bCaret) {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nItemIndex)) {
+ pListItem->SetCaret(bCaret);
+ }
+}
- return 1.0f;
+void CFX_List::SetMultipleSel(FX_BOOL bMultiple) {
+ m_bMultiple = bMultiple;
}
-int32_t CFX_List::GetFirstSelected() const
-{
- for (int32_t i=0,sz=m_aListItems.GetSize(); i<sz; i++)
- {
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(i))
- {
- if (pListItem->IsSelected())
- return i;
- }
- }
- return -1;
+FX_BOOL CFX_List::IsMultipleSel() const {
+ return m_bMultiple;
}
-int32_t CFX_List::GetLastSelected() const
-{
- for (int32_t i=m_aListItems.GetSize()-1; i>=0; i--)
- {
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(i))
- {
- if (pListItem->IsSelected())
- return i;
- }
- }
- return -1;
+FX_BOOL CFX_List::IsValid(int32_t nItemIndex) const {
+ return nItemIndex >= 0 && nItemIndex < m_aListItems.GetSize();
}
-FX_WCHAR CFX_List::Toupper(FX_WCHAR c) const
-{
- if ( (c >= 'a') && (c <= 'z') )
- c = c - ('a' - 'A');
- return c;
+CFX_WideString CFX_List::GetItemText(int32_t nIndex) const {
+ if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) {
+ return pListItem->GetText();
+ }
+
+ return L"";
}
-int32_t CFX_List::FindNext(int32_t nIndex,FX_WCHAR nChar) const
-{
- int32_t nCircleIndex = nIndex;
+/* ------------------------------------ CPLST_Select
+ * ---------------------------------- */
- for (int32_t i=0,sz=m_aListItems.GetSize(); i<sz; i++)
- {
- nCircleIndex ++;
- if (nCircleIndex >= sz) nCircleIndex = 0;
+CPLST_Select::CPLST_Select() {}
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nCircleIndex))
- {
- if (Toupper(pListItem->GetFirstChar()) == Toupper(nChar))
- return nCircleIndex;
- }
- }
+CPLST_Select::~CPLST_Select() {
+ for (int32_t i = 0, sz = m_aItems.GetSize(); i < sz; i++)
+ delete m_aItems.GetAt(i);
- return nCircleIndex;
+ m_aItems.RemoveAll();
}
-CPDF_Rect CFX_List::GetItemRect(int32_t nIndex) const
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nIndex))
- {
- CPDF_Rect rcItem = pListItem->GetRect();
- rcItem.left = 0.0f;
- rcItem.right = GetPlateRect().Width();
- return InnerToOuter(rcItem);
- }
+void CPLST_Select::Add(int32_t nItemIndex) {
+ int32_t nIndex = Find(nItemIndex);
- return CPDF_Rect();
+ if (nIndex < 0)
+ m_aItems.Add(new CPLST_Select_Item(nItemIndex, 1));
+ else {
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(nIndex)) {
+ pItem->nState = 1;
+ }
+ }
}
-FX_BOOL CFX_List::IsItemSelected(int32_t nIndex) const
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nIndex))
- {
- return pListItem->IsSelected();
- }
+void CPLST_Select::Add(int32_t nBeginIndex, int32_t nEndIndex) {
+ if (nBeginIndex > nEndIndex) {
+ int32_t nTemp = nEndIndex;
+ nEndIndex = nBeginIndex;
+ nBeginIndex = nTemp;
+ }
- return FALSE;
+ for (int32_t i = nBeginIndex; i <= nEndIndex; i++)
+ Add(i);
}
-void CFX_List::SetItemSelect(int32_t nItemIndex, FX_BOOL bSelected)
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nItemIndex))
- {
- pListItem->SetSelect(bSelected);
- }
+void CPLST_Select::Sub(int32_t nItemIndex) {
+ for (int32_t i = m_aItems.GetSize() - 1; i >= 0; i--) {
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(i))
+ if (pItem->nItemIndex == nItemIndex)
+ pItem->nState = -1;
+ }
}
-void CFX_List::SetItemCaret(int32_t nItemIndex, FX_BOOL bCaret)
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nItemIndex))
- {
- pListItem->SetCaret(bCaret);
- }
+void CPLST_Select::Sub(int32_t nBeginIndex, int32_t nEndIndex) {
+ if (nBeginIndex > nEndIndex) {
+ int32_t nTemp = nEndIndex;
+ nEndIndex = nBeginIndex;
+ nBeginIndex = nTemp;
+ }
+
+ for (int32_t i = nBeginIndex; i <= nEndIndex; i++)
+ Sub(i);
}
-void CFX_List::SetMultipleSel(FX_BOOL bMultiple)
-{
- m_bMultiple = bMultiple;
+int32_t CPLST_Select::Find(int32_t nItemIndex) const {
+ for (int32_t i = 0, sz = m_aItems.GetSize(); i < sz; i++) {
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(i)) {
+ if (pItem->nItemIndex == nItemIndex)
+ return i;
+ }
+ }
+
+ return -1;
}
-FX_BOOL CFX_List::IsMultipleSel() const
-{
- return m_bMultiple;
+FX_BOOL CPLST_Select::IsExist(int32_t nItemIndex) const {
+ return Find(nItemIndex) >= 0;
}
-FX_BOOL CFX_List::IsValid(int32_t nItemIndex) const
-{
- return nItemIndex >= 0 && nItemIndex < m_aListItems.GetSize();
+int32_t CPLST_Select::GetCount() const {
+ return m_aItems.GetSize();
}
-CFX_WideString CFX_List::GetItemText(int32_t nIndex) const
-{
- if (CFX_ListItem * pListItem = m_aListItems.GetAt(nIndex))
- {
- return pListItem->GetText();
- }
+int32_t CPLST_Select::GetItemIndex(int32_t nIndex) const {
+ if (nIndex >= 0 && nIndex < m_aItems.GetSize())
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(nIndex))
+ return pItem->nItemIndex;
- return L"";
+ return -1;
}
-/* ------------------------------------ CPLST_Select ---------------------------------- */
+int32_t CPLST_Select::GetState(int32_t nIndex) const {
+ if (nIndex >= 0 && nIndex < m_aItems.GetSize())
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(nIndex))
+ return pItem->nState;
-CPLST_Select::CPLST_Select()
-{
+ return 0;
}
-CPLST_Select::~CPLST_Select()
-{
- for (int32_t i=0,sz=m_aItems.GetSize(); i<sz; i++)
- delete m_aItems.GetAt(i);
+void CPLST_Select::DeselectAll() {
+ for (int32_t i = 0, sz = m_aItems.GetSize(); i < sz; i++) {
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(i)) {
+ pItem->nState = -1;
+ }
+ }
+}
- m_aItems.RemoveAll();
+void CPLST_Select::Done() {
+ for (int32_t i = m_aItems.GetSize() - 1; i >= 0; i--) {
+ if (CPLST_Select_Item* pItem = m_aItems.GetAt(i)) {
+ if (pItem->nState == -1) {
+ delete pItem;
+ m_aItems.RemoveAt(i);
+ } else {
+ pItem->nState = 0;
+ }
+ }
+ }
}
-void CPLST_Select::Add(int32_t nItemIndex)
-{
- int32_t nIndex = Find(nItemIndex);
+/* ------------------------------------ CFX_ListCtrl
+ * --------------------------------- */
+
+CFX_ListCtrl::CFX_ListCtrl()
+ : m_pNotify(NULL),
+ m_bNotifyFlag(FALSE),
+ m_ptScrollPos(0.0f, 0.0f),
+ m_nSelItem(-1),
+ m_nFootIndex(-1),
+ m_bCtrlSel(FALSE),
+ m_nCaretIndex(-1) {}
- if (nIndex < 0)
- m_aItems.Add(new CPLST_Select_Item(nItemIndex,1));
- else
- {
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(nIndex))
- {
- pItem->nState = 1;
- }
- }
+CFX_ListCtrl::~CFX_ListCtrl() {}
+
+void CFX_ListCtrl::SetNotify(IFX_List_Notify* pNotify) {
+ m_pNotify = pNotify;
}
-void CPLST_Select::Add(int32_t nBeginIndex, int32_t nEndIndex)
-{
- if (nBeginIndex > nEndIndex)
- {
- int32_t nTemp = nEndIndex;
- nEndIndex = nBeginIndex;
- nBeginIndex = nTemp;
- }
+CPDF_Point CFX_ListCtrl::InToOut(const CPDF_Point& point) const {
+ CPDF_Rect rcPlate = GetPlateRect();
- for (int32_t i=nBeginIndex; i<=nEndIndex; i++) Add(i);
+ return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left),
+ point.y - (m_ptScrollPos.y - rcPlate.top));
}
-void CPLST_Select::Sub(int32_t nItemIndex)
-{
- for (int32_t i=m_aItems.GetSize()-1; i>=0; i--)
- {
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(i))
- if (pItem->nItemIndex == nItemIndex)
- pItem->nState = -1;
- }
+CPDF_Point CFX_ListCtrl::OutToIn(const CPDF_Point& point) const {
+ CPDF_Rect rcPlate = GetPlateRect();
+
+ return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left),
+ point.y + (m_ptScrollPos.y - rcPlate.top));
}
-void CPLST_Select::Sub(int32_t nBeginIndex, int32_t nEndIndex)
-{
- if (nBeginIndex > nEndIndex)
- {
- int32_t nTemp = nEndIndex;
- nEndIndex = nBeginIndex;
- nBeginIndex = nTemp;
- }
+CPDF_Rect CFX_ListCtrl::InToOut(const CPDF_Rect& rect) const {
+ CPDF_Point ptLeftBottom = InToOut(CPDF_Point(rect.left, rect.bottom));
+ CPDF_Point ptRightTop = InToOut(CPDF_Point(rect.right, rect.top));
- for (int32_t i=nBeginIndex; i<=nEndIndex; i++) Sub(i);
+ return CPDF_Rect(ptLeftBottom.x, ptLeftBottom.y, ptRightTop.x, ptRightTop.y);
}
-int32_t CPLST_Select::Find(int32_t nItemIndex) const
-{
- for (int32_t i=0,sz=m_aItems.GetSize(); i<sz; i++)
- {
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(i))
- {
- if (pItem->nItemIndex == nItemIndex)
- return i;
- }
- }
+CPDF_Rect CFX_ListCtrl::OutToIn(const CPDF_Rect& rect) const {
+ CPDF_Point ptLeftBottom = OutToIn(CPDF_Point(rect.left, rect.bottom));
+ CPDF_Point ptRightTop = OutToIn(CPDF_Point(rect.right, rect.top));
- return -1;
+ return CPDF_Rect(ptLeftBottom.x, ptLeftBottom.y, ptRightTop.x, ptRightTop.y);
}
-FX_BOOL CPLST_Select::IsExist(int32_t nItemIndex) const
-{
- return Find(nItemIndex) >= 0;
+void CFX_ListCtrl::OnMouseDown(const CPDF_Point& point,
+ FX_BOOL bShift,
+ FX_BOOL bCtrl) {
+ int32_t nHitIndex = GetItemIndex(point);
+
+ if (IsMultipleSel()) {
+ if (bCtrl) {
+ if (IsItemSelected(nHitIndex)) {
+ m_aSelItems.Sub(nHitIndex);
+ SelectItems();
+ m_bCtrlSel = FALSE;
+ } else {
+ m_aSelItems.Add(nHitIndex);
+ SelectItems();
+ m_bCtrlSel = TRUE;
+ }
+
+ m_nFootIndex = nHitIndex;
+ } else if (bShift) {
+ m_aSelItems.DeselectAll();
+ m_aSelItems.Add(m_nFootIndex, nHitIndex);
+ SelectItems();
+ } else {
+ m_aSelItems.DeselectAll();
+ m_aSelItems.Add(nHitIndex);
+ SelectItems();
+
+ m_nFootIndex = nHitIndex;
+ }
+
+ SetCaret(nHitIndex);
+ } else {
+ SetSingleSelect(nHitIndex);
+ }
+
+ if (!IsItemVisible(nHitIndex))
+ ScrollToListItem(nHitIndex);
}
-int32_t CPLST_Select::GetCount() const
-{
- return m_aItems.GetSize();
+void CFX_ListCtrl::OnMouseMove(const CPDF_Point& point,
+ FX_BOOL bShift,
+ FX_BOOL bCtrl) {
+ int32_t nHitIndex = GetItemIndex(point);
+
+ if (IsMultipleSel()) {
+ if (bCtrl) {
+ if (m_bCtrlSel)
+ m_aSelItems.Add(m_nFootIndex, nHitIndex);
+ else
+ m_aSelItems.Sub(m_nFootIndex, nHitIndex);
+
+ SelectItems();
+ } else {
+ m_aSelItems.DeselectAll();
+ m_aSelItems.Add(m_nFootIndex, nHitIndex);
+ SelectItems();
+ }
+
+ SetCaret(nHitIndex);
+ } else {
+ SetSingleSelect(nHitIndex);
+ }
+
+ if (!IsItemVisible(nHitIndex))
+ ScrollToListItem(nHitIndex);
}
-int32_t CPLST_Select::GetItemIndex(int32_t nIndex) const
-{
- if (nIndex >= 0 && nIndex < m_aItems.GetSize())
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(nIndex))
- return pItem->nItemIndex;
+void CFX_ListCtrl::OnVK(int32_t nItemIndex, FX_BOOL bShift, FX_BOOL bCtrl) {
+ if (IsMultipleSel()) {
+ if (nItemIndex >= 0 && nItemIndex < GetCount()) {
+ if (bCtrl) {
+ } else if (bShift) {
+ m_aSelItems.DeselectAll();
+ m_aSelItems.Add(m_nFootIndex, nItemIndex);
+ SelectItems();
+ } else {
+ m_aSelItems.DeselectAll();
+ m_aSelItems.Add(nItemIndex);
+ SelectItems();
+ m_nFootIndex = nItemIndex;
+ }
+
+ SetCaret(nItemIndex);
+ }
+ } else {
+ SetSingleSelect(nItemIndex);
+ }
- return -1;
+ if (!IsItemVisible(nItemIndex))
+ ScrollToListItem(nItemIndex);
}
-int32_t CPLST_Select::GetState(int32_t nIndex) const
-{
- if (nIndex >= 0 && nIndex < m_aItems.GetSize())
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(nIndex))
- return pItem->nState;
+void CFX_ListCtrl::OnVK_UP(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(IsMultipleSel() ? GetCaret() - 1 : GetSelect() - 1, bShift, bCtrl);
+}
- return 0;
+void CFX_ListCtrl::OnVK_DOWN(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(IsMultipleSel() ? GetCaret() + 1 : GetSelect() + 1, bShift, bCtrl);
}
-void CPLST_Select::DeselectAll()
-{
- for (int32_t i=0,sz=m_aItems.GetSize(); i<sz; i++)
- {
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(i))
- {
- pItem->nState = -1;
- }
- }
-}
-
-void CPLST_Select::Done()
-{
- for (int32_t i=m_aItems.GetSize()-1; i>=0; i--)
- {
- if (CPLST_Select_Item * pItem = m_aItems.GetAt(i))
- {
- if (pItem->nState == -1)
- {
- delete pItem;
- m_aItems.RemoveAt(i);
- }
- else
- {
- pItem->nState = 0;
- }
- }
- }
-}
-
-/* ------------------------------------ CFX_ListCtrl --------------------------------- */
+void CFX_ListCtrl::OnVK_LEFT(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(0, bShift, bCtrl);
+}
-CFX_ListCtrl::CFX_ListCtrl() : m_pNotify(NULL),
- m_bNotifyFlag(FALSE),
- m_ptScrollPos(0.0f,0.0f),
- m_nSelItem(-1),
- m_nFootIndex(-1),
- m_bCtrlSel(FALSE),
- m_nCaretIndex(-1)
-{
-}
-
-CFX_ListCtrl::~CFX_ListCtrl()
-{
+void CFX_ListCtrl::OnVK_RIGHT(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(GetCount() - 1, bShift, bCtrl);
}
-
-void CFX_ListCtrl::SetNotify(IFX_List_Notify * pNotify)
-{
- m_pNotify = pNotify;
-}
-
-CPDF_Point CFX_ListCtrl::InToOut(const CPDF_Point & point) const
-{
- CPDF_Rect rcPlate = GetPlateRect();
-
- return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left),
- point.y - (m_ptScrollPos.y - rcPlate.top));
-}
-
-CPDF_Point CFX_ListCtrl::OutToIn(const CPDF_Point & point) const
-{
- CPDF_Rect rcPlate = GetPlateRect();
-
- return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left),
- point.y + (m_ptScrollPos.y - rcPlate.top));
-}
-
-CPDF_Rect CFX_ListCtrl::InToOut(const CPDF_Rect & rect) const
-{
- CPDF_Point ptLeftBottom = InToOut(CPDF_Point(rect.left,rect.bottom));
- CPDF_Point ptRightTop = InToOut(CPDF_Point(rect.right,rect.top));
-
- return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
-}
-
-CPDF_Rect CFX_ListCtrl::OutToIn(const CPDF_Rect & rect) const
-{
- CPDF_Point ptLeftBottom = OutToIn(CPDF_Point(rect.left,rect.bottom));
- CPDF_Point ptRightTop = OutToIn(CPDF_Point(rect.right,rect.top));
-
- return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
-}
-
-void CFX_ListCtrl::OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- int32_t nHitIndex = GetItemIndex(point);
-
- if (IsMultipleSel())
- {
- if (bCtrl)
- {
- if (IsItemSelected(nHitIndex))
- {
- m_aSelItems.Sub(nHitIndex);
- SelectItems();
- m_bCtrlSel = FALSE;
- }
- else
- {
- m_aSelItems.Add(nHitIndex);
- SelectItems();
- m_bCtrlSel = TRUE;
- }
-
- m_nFootIndex = nHitIndex;
- }
- else if (bShift)
- {
- m_aSelItems.DeselectAll();
- m_aSelItems.Add(m_nFootIndex,nHitIndex);
- SelectItems();
- }
- else
- {
- m_aSelItems.DeselectAll();
- m_aSelItems.Add(nHitIndex);
- SelectItems();
-
- m_nFootIndex = nHitIndex;
- }
-
- SetCaret(nHitIndex);
- }
- else
- {
- SetSingleSelect(nHitIndex);
- }
-
- if (!IsItemVisible(nHitIndex))
- ScrollToListItem(nHitIndex);
-}
-
-void CFX_ListCtrl::OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- int32_t nHitIndex = GetItemIndex(point);
-
- if (IsMultipleSel())
- {
- if (bCtrl)
- {
- if (m_bCtrlSel)
- m_aSelItems.Add(m_nFootIndex,nHitIndex);
- else
- m_aSelItems.Sub(m_nFootIndex,nHitIndex);
-
- SelectItems();
- }
- else
- {
- m_aSelItems.DeselectAll();
- m_aSelItems.Add(m_nFootIndex,nHitIndex);
- SelectItems();
- }
-
- SetCaret(nHitIndex);
- }
- else
- {
- SetSingleSelect(nHitIndex);
- }
-
- if (!IsItemVisible(nHitIndex))
- ScrollToListItem(nHitIndex);
-}
-
-void CFX_ListCtrl::OnVK(int32_t nItemIndex,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- if (IsMultipleSel())
- {
- if (nItemIndex >= 0 && nItemIndex < GetCount())
- {
- if (bCtrl)
- {
- }
- else if (bShift)
- {
- m_aSelItems.DeselectAll();
- m_aSelItems.Add(m_nFootIndex,nItemIndex);
- SelectItems();
- }
- else
- {
- m_aSelItems.DeselectAll();
- m_aSelItems.Add(nItemIndex);
- SelectItems();
- m_nFootIndex = nItemIndex;
- }
-
- SetCaret(nItemIndex);
- }
- }
- else
- {
- SetSingleSelect(nItemIndex);
- }
-
- if (!IsItemVisible(nItemIndex))
- ScrollToListItem(nItemIndex);
-}
-
-void CFX_ListCtrl::OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(IsMultipleSel() ? GetCaret()-1 : GetSelect()-1, bShift, bCtrl);
-}
-
-void CFX_ListCtrl::OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(IsMultipleSel() ? GetCaret()+1 : GetSelect()+1, bShift, bCtrl);
-}
-
-void CFX_ListCtrl::OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(0, bShift, bCtrl);
-}
-
-void CFX_ListCtrl::OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(GetCount()-1, bShift, bCtrl);
-}
-
-void CFX_ListCtrl::OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(0, bShift, bCtrl);
-}
-
-void CFX_ListCtrl::OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl)
-{
- OnVK(GetCount()-1, bShift, bCtrl);
-}
-
-FX_BOOL CFX_ListCtrl::OnChar(FX_WORD nChar,FX_BOOL bShift,FX_BOOL bCtrl)
-{
- int32_t nIndex = GetLastSelected();
- int32_t nFindIndex = FindNext(nIndex,nChar);
-
- if (nFindIndex != nIndex)
- {
- OnVK(nFindIndex, bShift, bCtrl);
- return TRUE;
- }
- return FALSE;
+
+void CFX_ListCtrl::OnVK_HOME(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(0, bShift, bCtrl);
+}
+
+void CFX_ListCtrl::OnVK_END(FX_BOOL bShift, FX_BOOL bCtrl) {
+ OnVK(GetCount() - 1, bShift, bCtrl);
+}
+
+FX_BOOL CFX_ListCtrl::OnChar(FX_WORD nChar, FX_BOOL bShift, FX_BOOL bCtrl) {
+ int32_t nIndex = GetLastSelected();
+ int32_t nFindIndex = FindNext(nIndex, nChar);
+
+ if (nFindIndex != nIndex) {
+ OnVK(nFindIndex, bShift, bCtrl);
+ return TRUE;
+ }
+ return FALSE;
}
/* -------- inner methods ------- */
-void CFX_ListCtrl::SetPlateRect(const CPDF_Rect & rect)
-{
- CFX_ListContainer::SetPlateRect(rect);
- m_ptScrollPos.x = rect.left;
- SetScrollPos(CPDF_Point(rect.left,rect.top));
- ReArrange(0);
- InvalidateItem(-1);
-}
-
-CPDF_Rect CFX_ListCtrl::GetItemRect(int32_t nIndex) const
-{
- return InToOut(CFX_List::GetItemRect(nIndex));
-}
-
-void CFX_ListCtrl::AddString(const FX_WCHAR* string)
-{
- AddItem(string);
- ReArrange(GetCount() - 1);
-}
-
-void CFX_ListCtrl::SetMultipleSelect(int32_t nItemIndex, FX_BOOL bSelected)
-{
- if (!IsValid(nItemIndex)) return;
-
- if (bSelected != IsItemSelected(nItemIndex))
- {
- if (bSelected)
- {
- SetItemSelect(nItemIndex,TRUE);
- InvalidateItem(nItemIndex);
- }
- else
- {
- SetItemSelect(nItemIndex,FALSE);
- InvalidateItem(nItemIndex);
- }
- }
-}
-
-void CFX_ListCtrl::SetSingleSelect(int32_t nItemIndex)
-{
- if (!IsValid(nItemIndex)) return;
-
- if (m_nSelItem != nItemIndex)
- {
- if (m_nSelItem >= 0)
- {
- SetItemSelect(m_nSelItem,FALSE);
- InvalidateItem(m_nSelItem);
- }
-
- SetItemSelect(nItemIndex,TRUE);
- InvalidateItem(nItemIndex);
- m_nSelItem = nItemIndex;
- }
-}
-
-void CFX_ListCtrl::SetCaret(int32_t nItemIndex)
-{
- if (!IsValid(nItemIndex)) return;
-
- if (IsMultipleSel())
- {
- int32_t nOldIndex = m_nCaretIndex;
-
- if (nOldIndex != nItemIndex)
- {
- m_nCaretIndex = nItemIndex;
-
- SetItemCaret(nOldIndex, FALSE);
- SetItemCaret(nItemIndex,TRUE);
-
- InvalidateItem(nOldIndex);
- InvalidateItem(nItemIndex);
- }
- }
-}
-
-void CFX_ListCtrl::InvalidateItem(int32_t nItemIndex)
-{
- if (m_pNotify)
- {
- if (nItemIndex == -1)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- CPDF_Rect rcRefresh = GetPlateRect();
- m_pNotify->IOnInvalidateRect(&rcRefresh);
- m_bNotifyFlag = FALSE;
- }
- }
- else
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- CPDF_Rect rcRefresh = GetItemRect(nItemIndex);
- rcRefresh.left -= 1.0f;
- rcRefresh.right += 1.0f;
- rcRefresh.bottom -= 1.0f;
- rcRefresh.top += 1.0f;
-
- m_pNotify->IOnInvalidateRect(&rcRefresh);
- m_bNotifyFlag = FALSE;
- }
- }
- }
-}
-
-void CFX_ListCtrl::SelectItems()
-{
- for (int32_t i=0,sz=m_aSelItems.GetCount(); i<sz; i++)
- {
- int32_t nItemIndex = m_aSelItems.GetItemIndex(i);
- int32_t nState = m_aSelItems.GetState(i);
-
- switch(nState)
- {
- case 1:
- SetMultipleSelect(nItemIndex, TRUE);
- break;
- case -1:
- SetMultipleSelect(nItemIndex, FALSE);
- break;
- }
- }
-
- m_aSelItems.Done();
-}
-
-void CFX_ListCtrl::Select(int32_t nItemIndex)
-{
- if (!IsValid(nItemIndex)) return;
-
- if (IsMultipleSel())
- {
- m_aSelItems.Add(nItemIndex);
- SelectItems();
- }
- else
- SetSingleSelect(nItemIndex);
-}
-
-FX_BOOL CFX_ListCtrl::IsItemVisible(int32_t nItemIndex) const
-{
- CPDF_Rect rcPlate = GetPlateRect();
- CPDF_Rect rcItem = GetItemRect(nItemIndex);
-
- return rcItem.bottom >= rcPlate.bottom && rcItem.top <= rcPlate.top;
-}
-
-void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex)
-{
- if (!IsValid(nItemIndex)) return;
-
- CPDF_Rect rcPlate = GetPlateRect();
- CPDF_Rect rcItem = CFX_List::GetItemRect(nItemIndex);
- CPDF_Rect rcItemCtrl = GetItemRect(nItemIndex);
-
- if (FX_EDIT_IsFloatSmaller(rcItemCtrl.bottom, rcPlate.bottom))
- {
- if (FX_EDIT_IsFloatSmaller(rcItemCtrl.top, rcPlate.top))
- {
- SetScrollPosY(rcItem.bottom + rcPlate.Height());
- }
- }
- else if (FX_EDIT_IsFloatBigger(rcItemCtrl.top, rcPlate.top))
- {
- if (FX_EDIT_IsFloatBigger(rcItemCtrl.bottom, rcPlate.bottom))
- {
- SetScrollPosY(rcItem.top);
- }
- }
-}
-
-void CFX_ListCtrl::SetScrollInfo()
-{
- if (m_pNotify)
- {
- CPDF_Rect rcPlate = GetPlateRect();
- CPDF_Rect rcContent = CFX_List::GetContentRect();
-
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top,
- rcContent.bottom, rcContent.top, GetFirstHeight(), rcPlate.Height());
- m_bNotifyFlag = FALSE;
- }
- }
-}
-
-void CFX_ListCtrl::SetScrollPos(const CPDF_Point & point)
-{
- SetScrollPosY(point.y);
-}
-
-void CFX_ListCtrl::SetScrollPosY(FX_FLOAT fy)
-{
- if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y,fy))
- {
- CPDF_Rect rcPlate = GetPlateRect();
- CPDF_Rect rcContent = CFX_List::GetContentRect();
-
- if (rcPlate.Height() > rcContent.Height())
- {
- fy = rcPlate.top;
- }
- else
- {
- if (FX_EDIT_IsFloatSmaller(fy - rcPlate.Height(), rcContent.bottom))
- {
- fy = rcContent.bottom + rcPlate.Height();
- }
- else if (FX_EDIT_IsFloatBigger(fy, rcContent.top))
- {
- fy = rcContent.top;
- }
- }
-
- m_ptScrollPos.y = fy;
- InvalidateItem(-1);
+void CFX_ListCtrl::SetPlateRect(const CPDF_Rect& rect) {
+ CFX_ListContainer::SetPlateRect(rect);
+ m_ptScrollPos.x = rect.left;
+ SetScrollPos(CPDF_Point(rect.left, rect.top));
+ ReArrange(0);
+ InvalidateItem(-1);
+}
+
+CPDF_Rect CFX_ListCtrl::GetItemRect(int32_t nIndex) const {
+ return InToOut(CFX_List::GetItemRect(nIndex));
+}
+
+void CFX_ListCtrl::AddString(const FX_WCHAR* string) {
+ AddItem(string);
+ ReArrange(GetCount() - 1);
+}
+
+void CFX_ListCtrl::SetMultipleSelect(int32_t nItemIndex, FX_BOOL bSelected) {
+ if (!IsValid(nItemIndex))
+ return;
- if (m_pNotify)
- {
- if (!m_bNotifyFlag)
- {
- m_bNotifyFlag = TRUE;
- m_pNotify->IOnSetScrollPosY(fy);
- m_bNotifyFlag = FALSE;
- }
- }
- }
-}
-
-CPDF_Rect CFX_ListCtrl::GetContentRect() const
-{
- return InToOut(CFX_List::GetContentRect());
+ if (bSelected != IsItemSelected(nItemIndex)) {
+ if (bSelected) {
+ SetItemSelect(nItemIndex, TRUE);
+ InvalidateItem(nItemIndex);
+ } else {
+ SetItemSelect(nItemIndex, FALSE);
+ InvalidateItem(nItemIndex);
+ }
+ }
}
-void CFX_ListCtrl::ReArrange(int32_t nItemIndex)
-{
- CFX_List::ReArrange(nItemIndex);
- SetScrollInfo();
-}
-
-void CFX_ListCtrl::SetTopItem(int32_t nIndex)
-{
- if (IsValid(nIndex))
- {
- GetPlateRect();
- CPDF_Rect rcItem = CFX_List::GetItemRect(nIndex);
- SetScrollPosY(rcItem.top);
- }
-}
-
-int32_t CFX_ListCtrl::GetTopItem() const
-{
- int32_t nItemIndex = GetItemIndex(GetBTPoint());
-
- if (!IsItemVisible(nItemIndex) && IsItemVisible(nItemIndex + 1))
- nItemIndex += 1;
-
- return nItemIndex;
-}
-
-void CFX_ListCtrl::Empty()
-{
- CFX_List::Empty();
- InvalidateItem(-1);
+void CFX_ListCtrl::SetSingleSelect(int32_t nItemIndex) {
+ if (!IsValid(nItemIndex))
+ return;
+
+ if (m_nSelItem != nItemIndex) {
+ if (m_nSelItem >= 0) {
+ SetItemSelect(m_nSelItem, FALSE);
+ InvalidateItem(m_nSelItem);
+ }
+
+ SetItemSelect(nItemIndex, TRUE);
+ InvalidateItem(nItemIndex);
+ m_nSelItem = nItemIndex;
+ }
}
-void CFX_ListCtrl::Cancel()
-{
- m_aSelItems.DeselectAll();
+void CFX_ListCtrl::SetCaret(int32_t nItemIndex) {
+ if (!IsValid(nItemIndex))
+ return;
+
+ if (IsMultipleSel()) {
+ int32_t nOldIndex = m_nCaretIndex;
+
+ if (nOldIndex != nItemIndex) {
+ m_nCaretIndex = nItemIndex;
+
+ SetItemCaret(nOldIndex, FALSE);
+ SetItemCaret(nItemIndex, TRUE);
+
+ InvalidateItem(nOldIndex);
+ InvalidateItem(nItemIndex);
+ }
+ }
}
-int32_t CFX_ListCtrl::GetItemIndex(const CPDF_Point & point) const
-{
- return CFX_List::GetItemIndex(OutToIn(point));
+void CFX_ListCtrl::InvalidateItem(int32_t nItemIndex) {
+ if (m_pNotify) {
+ if (nItemIndex == -1) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ CPDF_Rect rcRefresh = GetPlateRect();
+ m_pNotify->IOnInvalidateRect(&rcRefresh);
+ m_bNotifyFlag = FALSE;
+ }
+ } else {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ CPDF_Rect rcRefresh = GetItemRect(nItemIndex);
+ rcRefresh.left -= 1.0f;
+ rcRefresh.right += 1.0f;
+ rcRefresh.bottom -= 1.0f;
+ rcRefresh.top += 1.0f;
+
+ m_pNotify->IOnInvalidateRect(&rcRefresh);
+ m_bNotifyFlag = FALSE;
+ }
+ }
+ }
+}
+
+void CFX_ListCtrl::SelectItems() {
+ for (int32_t i = 0, sz = m_aSelItems.GetCount(); i < sz; i++) {
+ int32_t nItemIndex = m_aSelItems.GetItemIndex(i);
+ int32_t nState = m_aSelItems.GetState(i);
+
+ switch (nState) {
+ case 1:
+ SetMultipleSelect(nItemIndex, TRUE);
+ break;
+ case -1:
+ SetMultipleSelect(nItemIndex, FALSE);
+ break;
+ }
+ }
+
+ m_aSelItems.Done();
+}
+
+void CFX_ListCtrl::Select(int32_t nItemIndex) {
+ if (!IsValid(nItemIndex))
+ return;
+
+ if (IsMultipleSel()) {
+ m_aSelItems.Add(nItemIndex);
+ SelectItems();
+ } else
+ SetSingleSelect(nItemIndex);
}
-CFX_WideString CFX_ListCtrl::GetText() const
-{
- if (IsMultipleSel())
- return GetItemText(m_nCaretIndex);
- return GetItemText(m_nSelItem);
+FX_BOOL CFX_ListCtrl::IsItemVisible(int32_t nItemIndex) const {
+ CPDF_Rect rcPlate = GetPlateRect();
+ CPDF_Rect rcItem = GetItemRect(nItemIndex);
+
+ return rcItem.bottom >= rcPlate.bottom && rcItem.top <= rcPlate.top;
}
+void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex) {
+ if (!IsValid(nItemIndex))
+ return;
+
+ CPDF_Rect rcPlate = GetPlateRect();
+ CPDF_Rect rcItem = CFX_List::GetItemRect(nItemIndex);
+ CPDF_Rect rcItemCtrl = GetItemRect(nItemIndex);
+
+ if (FX_EDIT_IsFloatSmaller(rcItemCtrl.bottom, rcPlate.bottom)) {
+ if (FX_EDIT_IsFloatSmaller(rcItemCtrl.top, rcPlate.top)) {
+ SetScrollPosY(rcItem.bottom + rcPlate.Height());
+ }
+ } else if (FX_EDIT_IsFloatBigger(rcItemCtrl.top, rcPlate.top)) {
+ if (FX_EDIT_IsFloatBigger(rcItemCtrl.bottom, rcPlate.bottom)) {
+ SetScrollPosY(rcItem.top);
+ }
+ }
+}
+
+void CFX_ListCtrl::SetScrollInfo() {
+ if (m_pNotify) {
+ CPDF_Rect rcPlate = GetPlateRect();
+ CPDF_Rect rcContent = CFX_List::GetContentRect();
+
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top,
+ rcContent.bottom, rcContent.top,
+ GetFirstHeight(), rcPlate.Height());
+ m_bNotifyFlag = FALSE;
+ }
+ }
+}
+
+void CFX_ListCtrl::SetScrollPos(const CPDF_Point& point) {
+ SetScrollPosY(point.y);
+}
+
+void CFX_ListCtrl::SetScrollPosY(FX_FLOAT fy) {
+ if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y, fy)) {
+ CPDF_Rect rcPlate = GetPlateRect();
+ CPDF_Rect rcContent = CFX_List::GetContentRect();
+
+ if (rcPlate.Height() > rcContent.Height()) {
+ fy = rcPlate.top;
+ } else {
+ if (FX_EDIT_IsFloatSmaller(fy - rcPlate.Height(), rcContent.bottom)) {
+ fy = rcContent.bottom + rcPlate.Height();
+ } else if (FX_EDIT_IsFloatBigger(fy, rcContent.top)) {
+ fy = rcContent.top;
+ }
+ }
+
+ m_ptScrollPos.y = fy;
+ InvalidateItem(-1);
+
+ if (m_pNotify) {
+ if (!m_bNotifyFlag) {
+ m_bNotifyFlag = TRUE;
+ m_pNotify->IOnSetScrollPosY(fy);
+ m_bNotifyFlag = FALSE;
+ }
+ }
+ }
+}
+
+CPDF_Rect CFX_ListCtrl::GetContentRect() const {
+ return InToOut(CFX_List::GetContentRect());
+}
+
+void CFX_ListCtrl::ReArrange(int32_t nItemIndex) {
+ CFX_List::ReArrange(nItemIndex);
+ SetScrollInfo();
+}
+
+void CFX_ListCtrl::SetTopItem(int32_t nIndex) {
+ if (IsValid(nIndex)) {
+ GetPlateRect();
+ CPDF_Rect rcItem = CFX_List::GetItemRect(nIndex);
+ SetScrollPosY(rcItem.top);
+ }
+}
+
+int32_t CFX_ListCtrl::GetTopItem() const {
+ int32_t nItemIndex = GetItemIndex(GetBTPoint());
+
+ if (!IsItemVisible(nItemIndex) && IsItemVisible(nItemIndex + 1))
+ nItemIndex += 1;
+
+ return nItemIndex;
+}
+
+void CFX_ListCtrl::Empty() {
+ CFX_List::Empty();
+ InvalidateItem(-1);
+}
+
+void CFX_ListCtrl::Cancel() {
+ m_aSelItems.DeselectAll();
+}
+
+int32_t CFX_ListCtrl::GetItemIndex(const CPDF_Point& point) const {
+ return CFX_List::GetItemIndex(OutToIn(point));
+}
+
+CFX_WideString CFX_ListCtrl::GetText() const {
+ if (IsMultipleSel())
+ return GetItemText(m_nCaretIndex);
+ return GetItemText(m_nSelItem);
+}
diff --git a/fpdfsdk/src/fxedit/fxet_module.cpp b/fpdfsdk/src/fxedit/fxet_module.cpp
index d1421641bc..5c0086ae21 100644
--- a/fpdfsdk/src/fxedit/fxet_module.cpp
+++ b/fpdfsdk/src/fxedit/fxet_module.cpp
@@ -10,37 +10,30 @@
/* ---------------------- IFX_Edit ---------------------- */
-IFX_Edit* IFX_Edit::NewEdit()
-{
- if (IPDF_VariableText * pVT = IPDF_VariableText::NewVariableText())
- {
- return new CFX_Edit(pVT);
- }
-
- return NULL;
+IFX_Edit* IFX_Edit::NewEdit() {
+ if (IPDF_VariableText* pVT = IPDF_VariableText::NewVariableText()) {
+ return new CFX_Edit(pVT);
+ }
+
+ return NULL;
}
-void IFX_Edit::DelEdit(IFX_Edit* pEdit)
-{
- ASSERT(pEdit != NULL);
+void IFX_Edit::DelEdit(IFX_Edit* pEdit) {
+ ASSERT(pEdit != NULL);
- IPDF_VariableText::DelVariableText(pEdit->GetVariableText());
+ IPDF_VariableText::DelVariableText(pEdit->GetVariableText());
- delete (CFX_Edit*)pEdit;
+ delete (CFX_Edit*)pEdit;
}
-
/* ---------------------- IFX_List ---------------------- */
-IFX_List* IFX_List::NewList()
-{
- return new CFX_ListCtrl();
+IFX_List* IFX_List::NewList() {
+ return new CFX_ListCtrl();
}
-void IFX_List::DelList(IFX_List* pList)
-{
- ASSERT(pList != NULL);
+void IFX_List::DelList(IFX_List* pList) {
+ ASSERT(pList != NULL);
- delete (CFX_ListCtrl*)pList;
+ delete (CFX_ListCtrl*)pList;
}
-
diff --git a/fpdfsdk/src/fxedit/fxet_pageobjs.cpp b/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
index 1c0269b682..1fb669bb57 100644
--- a/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
+++ b/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
@@ -8,634 +8,665 @@
#include "../../include/fxedit/fx_edit.h"
#include "../../include/fxedit/fxet_edit.h"
-#define FX_EDIT_UNDERLINEHALFWIDTH 0.5f
-#define FX_EDIT_CROSSOUTHALFWIDTH 0.5f
-
-extern CFX_ByteString GetPDFWordString(IFX_Edit_FontMap * pFontMap, int32_t nFontIndex, FX_WORD Word, FX_WORD SubWord);
-
-CPDF_Rect GetUnderLineRect(const CPVT_Word& word)
-{
- return CPDF_Rect(word.ptWord.x, word.ptWord.y + word.fDescent * 0.5f,
- word.ptWord.x + word.fWidth, word.ptWord.y + word.fDescent * 0.25f);
+#define FX_EDIT_UNDERLINEHALFWIDTH 0.5f
+#define FX_EDIT_CROSSOUTHALFWIDTH 0.5f
+
+extern CFX_ByteString GetPDFWordString(IFX_Edit_FontMap* pFontMap,
+ int32_t nFontIndex,
+ FX_WORD Word,
+ FX_WORD SubWord);
+
+CPDF_Rect GetUnderLineRect(const CPVT_Word& word) {
+ return CPDF_Rect(word.ptWord.x, word.ptWord.y + word.fDescent * 0.5f,
+ word.ptWord.x + word.fWidth,
+ word.ptWord.y + word.fDescent * 0.25f);
}
-CPDF_Rect GetCrossoutRect(const CPVT_Word& word)
-{
- return CPDF_Rect(word.ptWord.x, word.ptWord.y + (word.fAscent + word.fDescent) * 0.5f + word.fDescent * 0.25f,
- word.ptWord.x + word.fWidth, word.ptWord.y + (word.fAscent + word.fDescent) * 0.5f);
+CPDF_Rect GetCrossoutRect(const CPVT_Word& word) {
+ return CPDF_Rect(word.ptWord.x,
+ word.ptWord.y + (word.fAscent + word.fDescent) * 0.5f +
+ word.fDescent * 0.25f,
+ word.ptWord.x + word.fWidth,
+ word.ptWord.y + (word.fAscent + word.fDescent) * 0.5f);
}
-static void DrawTextString(CFX_RenderDevice* pDevice, const CPDF_Point& pt, CPDF_Font* pFont, FX_FLOAT fFontSize, CPDF_Matrix* pUser2Device,
- const CFX_ByteString& str, FX_ARGB crTextFill, FX_ARGB crTextStroke, int32_t nHorzScale)
-{
- FX_FLOAT x = pt.x, y = pt.y;
- pUser2Device->Transform(x, y);
-
- if (pFont)
- {
- if (nHorzScale != 100)
- {
- CPDF_Matrix mt(nHorzScale/100.0f,0,0,1,0,0);
- mt.Concat(*pUser2Device);
-
- CPDF_RenderOptions ro;
- ro.m_Flags = RENDER_CLEARTYPE;
- ro.m_ColorMode = RENDER_COLOR_NORMAL;
-
- if (crTextStroke != 0)
- {
- CPDF_Point pt1(0,0), pt2(1,0);
- pUser2Device->Transform(pt1.x, pt1.y);
- pUser2Device->Transform(pt2.x, pt2.y);
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = (FX_FLOAT)FXSYS_fabs((pt2.x + pt2.y) - (pt1.x + pt1.y));
-
- CPDF_TextRenderer::DrawTextString(pDevice,x, y, pFont, fFontSize, &mt, str, crTextFill, crTextStroke, &gsd, &ro);
- }
- else
- CPDF_TextRenderer::DrawTextString(pDevice,x, y, pFont, fFontSize, &mt, str, crTextFill, 0, NULL, &ro);
- }
- else
- {
- CPDF_RenderOptions ro;
- ro.m_Flags = RENDER_CLEARTYPE;
- ro.m_ColorMode = RENDER_COLOR_NORMAL;
-
- if (crTextStroke != 0)
- {
- CPDF_Point pt1(0,0), pt2(1,0);
- pUser2Device->Transform(pt1.x, pt1.y);
- pUser2Device->Transform(pt2.x, pt2.y);
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = (FX_FLOAT)FXSYS_fabs((pt2.x + pt2.y) - (pt1.x + pt1.y));
-
- CPDF_TextRenderer::DrawTextString(pDevice,x, y, pFont, fFontSize, pUser2Device, str, crTextFill, crTextStroke, &gsd, &ro);
- }
- else
- CPDF_TextRenderer::DrawTextString(pDevice,x, y, pFont, fFontSize, pUser2Device, str, crTextFill, 0, NULL, &ro);
- }
- }
+static void DrawTextString(CFX_RenderDevice* pDevice,
+ const CPDF_Point& pt,
+ CPDF_Font* pFont,
+ FX_FLOAT fFontSize,
+ CPDF_Matrix* pUser2Device,
+ const CFX_ByteString& str,
+ FX_ARGB crTextFill,
+ FX_ARGB crTextStroke,
+ int32_t nHorzScale) {
+ FX_FLOAT x = pt.x, y = pt.y;
+ pUser2Device->Transform(x, y);
+
+ if (pFont) {
+ if (nHorzScale != 100) {
+ CPDF_Matrix mt(nHorzScale / 100.0f, 0, 0, 1, 0, 0);
+ mt.Concat(*pUser2Device);
+
+ CPDF_RenderOptions ro;
+ ro.m_Flags = RENDER_CLEARTYPE;
+ ro.m_ColorMode = RENDER_COLOR_NORMAL;
+
+ if (crTextStroke != 0) {
+ CPDF_Point pt1(0, 0), pt2(1, 0);
+ pUser2Device->Transform(pt1.x, pt1.y);
+ pUser2Device->Transform(pt2.x, pt2.y);
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth =
+ (FX_FLOAT)FXSYS_fabs((pt2.x + pt2.y) - (pt1.x + pt1.y));
+
+ CPDF_TextRenderer::DrawTextString(pDevice, x, y, pFont, fFontSize, &mt,
+ str, crTextFill, crTextStroke, &gsd,
+ &ro);
+ } else
+ CPDF_TextRenderer::DrawTextString(pDevice, x, y, pFont, fFontSize, &mt,
+ str, crTextFill, 0, NULL, &ro);
+ } else {
+ CPDF_RenderOptions ro;
+ ro.m_Flags = RENDER_CLEARTYPE;
+ ro.m_ColorMode = RENDER_COLOR_NORMAL;
+
+ if (crTextStroke != 0) {
+ CPDF_Point pt1(0, 0), pt2(1, 0);
+ pUser2Device->Transform(pt1.x, pt1.y);
+ pUser2Device->Transform(pt2.x, pt2.y);
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth =
+ (FX_FLOAT)FXSYS_fabs((pt2.x + pt2.y) - (pt1.x + pt1.y));
+
+ CPDF_TextRenderer::DrawTextString(pDevice, x, y, pFont, fFontSize,
+ pUser2Device, str, crTextFill,
+ crTextStroke, &gsd, &ro);
+ } else
+ CPDF_TextRenderer::DrawTextString(pDevice, x, y, pFont, fFontSize,
+ pUser2Device, str, crTextFill, 0,
+ NULL, &ro);
+ }
+ }
}
-void IFX_Edit::DrawUnderline(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edit* pEdit, FX_COLORREF color,
- const CPDF_Rect& rcClip, const CPDF_Point& ptOffset, const CPVT_WordRange* pRange)
-{
- pDevice->SaveState();
-
- if (!rcClip.IsEmpty())
- {
- CPDF_Rect rcTemp = rcClip;
- pUser2Device->TransformRect(rcTemp);
- FX_RECT rcDevClip;
- rcDevClip.left = (int32_t)rcTemp.left;
- rcDevClip.right = (int32_t)rcTemp.right;
- rcDevClip.top = (int32_t)rcTemp.top;
- rcDevClip.bottom = (int32_t)rcTemp.bottom;
- pDevice->SetClip_Rect(&rcDevClip);
- }
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- CFX_PathData pathUnderline;
- CPDF_Rect rcUnderline = GetUnderLineRect(word);
- rcUnderline.left += ptOffset.x;
- rcUnderline.right += ptOffset.x;
- rcUnderline.top += ptOffset.y;
- rcUnderline.bottom += ptOffset.y;
- pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom, rcUnderline.right, rcUnderline.top);
-
- pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, color, 0, FXFILL_WINDING);
- }
- }
- }
- }
-
- pDevice->RestoreState();
+void IFX_Edit::DrawUnderline(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ IFX_Edit* pEdit,
+ FX_COLORREF color,
+ const CPDF_Rect& rcClip,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange) {
+ pDevice->SaveState();
+
+ if (!rcClip.IsEmpty()) {
+ CPDF_Rect rcTemp = rcClip;
+ pUser2Device->TransformRect(rcTemp);
+ FX_RECT rcDevClip;
+ rcDevClip.left = (int32_t)rcTemp.left;
+ rcDevClip.right = (int32_t)rcTemp.right;
+ rcDevClip.top = (int32_t)rcTemp.top;
+ rcDevClip.bottom = (int32_t)rcTemp.bottom;
+ pDevice->SetClip_Rect(&rcDevClip);
+ }
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ CFX_PathData pathUnderline;
+ CPDF_Rect rcUnderline = GetUnderLineRect(word);
+ rcUnderline.left += ptOffset.x;
+ rcUnderline.right += ptOffset.x;
+ rcUnderline.top += ptOffset.y;
+ rcUnderline.bottom += ptOffset.y;
+ pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
+ rcUnderline.right, rcUnderline.top);
+
+ pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, color, 0,
+ FXFILL_WINDING);
+ }
+ }
+ }
+ }
+
+ pDevice->RestoreState();
}
-void IFX_Edit::DrawEdit(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edit* pEdit, FX_COLORREF crTextFill, FX_COLORREF crTextStroke,
- const CPDF_Rect& rcClip, const CPDF_Point& ptOffset, const CPVT_WordRange* pRange, IFX_SystemHandler* pSystemHandler, void* pFFLData)
-{
-
- FX_BOOL bContinuous = pEdit->GetCharArray() == 0;
- if (pEdit->GetCharSpace() > 0.0f)
- bContinuous = FALSE;
-
- FX_WORD SubWord = pEdit->GetPasswordChar();
- FX_FLOAT fFontSize = pEdit->GetFontSize();
- CPVT_WordRange wrSelect = pEdit->GetSelectWordRange();
- int32_t nHorzScale = pEdit->GetHorzScale();
-
- FX_COLORREF crCurFill = crTextFill;
- FX_COLORREF crOldFill = crCurFill;
-
- FX_BOOL bSelect = FALSE;
- const FX_COLORREF crWhite = ArgbEncode(255,255,255,255);
- const FX_COLORREF crSelBK = ArgbEncode(255,0,51,113);
-
- CFX_ByteTextBuf sTextBuf;
- int32_t nFontIndex = -1;
- CPDF_Point ptBT(0.0f,0.0f);
-
- pDevice->SaveState();
-
- if (!rcClip.IsEmpty())
- {
- CPDF_Rect rcTemp = rcClip;
- pUser2Device->TransformRect(rcTemp);
- FX_RECT rcDevClip;
- rcDevClip.left = (int32_t)rcTemp.left;
- rcDevClip.right = (int32_t)rcTemp.right;
- rcDevClip.top = (int32_t)rcTemp.top;
- rcDevClip.bottom = (int32_t)rcTemp.bottom;
- pDevice->SetClip_Rect(&rcDevClip);
- }
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- if (wrSelect.IsExist())
- {
- bSelect = place.WordCmp(wrSelect.BeginPos) > 0 && place.WordCmp(wrSelect.EndPos) <= 0;
- if (bSelect)
- {
- crCurFill = crWhite;
- }
- else
- {
- crCurFill = crTextFill;
- }
- }
- if(pSystemHandler && pSystemHandler->IsSelectionImplemented())
- {
- crCurFill = crTextFill;
- crOldFill = crCurFill;
- }
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
-
- if (bSelect)
- {
-
- CPVT_Line line;
- pIterator->GetLine(line);
-
- if(pSystemHandler && pSystemHandler->IsSelectionImplemented())
- {
- CPDF_Rect rc(word.ptWord.x,line.ptLine.y + line.fLineDescent,
- word.ptWord.x+word.fWidth,line.ptLine.y + line.fLineAscent);
- rc.Intersect(rcClip);
- //CFX_Edit* pEt = (CFX_Edit*)pEdit;
- //CPDF_Rect rcEdit = pEt->VTToEdit(rc);
- pSystemHandler->OutputSelectedRect(pFFLData,rc);
- }
- else
- {
- CFX_PathData pathSelBK;
- pathSelBK.AppendRect(word.ptWord.x,line.ptLine.y + line.fLineDescent,
- word.ptWord.x+word.fWidth,line.ptLine.y + line.fLineAscent);
-
- pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0, FXFILL_WINDING);
- }
- }
-
- if (bContinuous)
- {
- if (place.LineCmp(oldplace) != 0 || word.nFontIndex != nFontIndex ||
- crOldFill != crCurFill)
- {
- if (sTextBuf.GetLength() > 0)
- {
- DrawTextString(pDevice, CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), pFontMap->GetPDFFont(nFontIndex),
- fFontSize, pUser2Device, sTextBuf.GetByteString(), crOldFill, crTextStroke, nHorzScale);
-
- sTextBuf.Clear();
- }
- nFontIndex = word.nFontIndex;
- ptBT = word.ptWord;
- crOldFill = crCurFill;
- }
-
- sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord);
- }
- else
- {
- DrawTextString(pDevice,CPDF_Point(word.ptWord.x+ptOffset.x, word.ptWord.y+ptOffset.y), pFontMap->GetPDFFont(word.nFontIndex),
- fFontSize, pUser2Device, GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord), crCurFill, crTextStroke, nHorzScale);
-
- }
- oldplace = place;
-
-
- }
- }
-
- if (sTextBuf.GetLength() > 0)
- {
- DrawTextString(pDevice, CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), pFontMap->GetPDFFont(nFontIndex),
- fFontSize, pUser2Device, sTextBuf.GetByteString(), crOldFill, crTextStroke, nHorzScale);
- }
- }
- }
-
- pDevice->RestoreState();
+void IFX_Edit::DrawEdit(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ IFX_Edit* pEdit,
+ FX_COLORREF crTextFill,
+ FX_COLORREF crTextStroke,
+ const CPDF_Rect& rcClip,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ IFX_SystemHandler* pSystemHandler,
+ void* pFFLData) {
+ FX_BOOL bContinuous = pEdit->GetCharArray() == 0;
+ if (pEdit->GetCharSpace() > 0.0f)
+ bContinuous = FALSE;
+
+ FX_WORD SubWord = pEdit->GetPasswordChar();
+ FX_FLOAT fFontSize = pEdit->GetFontSize();
+ CPVT_WordRange wrSelect = pEdit->GetSelectWordRange();
+ int32_t nHorzScale = pEdit->GetHorzScale();
+
+ FX_COLORREF crCurFill = crTextFill;
+ FX_COLORREF crOldFill = crCurFill;
+
+ FX_BOOL bSelect = FALSE;
+ const FX_COLORREF crWhite = ArgbEncode(255, 255, 255, 255);
+ const FX_COLORREF crSelBK = ArgbEncode(255, 0, 51, 113);
+
+ CFX_ByteTextBuf sTextBuf;
+ int32_t nFontIndex = -1;
+ CPDF_Point ptBT(0.0f, 0.0f);
+
+ pDevice->SaveState();
+
+ if (!rcClip.IsEmpty()) {
+ CPDF_Rect rcTemp = rcClip;
+ pUser2Device->TransformRect(rcTemp);
+ FX_RECT rcDevClip;
+ rcDevClip.left = (int32_t)rcTemp.left;
+ rcDevClip.right = (int32_t)rcTemp.right;
+ rcDevClip.top = (int32_t)rcTemp.top;
+ rcDevClip.bottom = (int32_t)rcTemp.bottom;
+ pDevice->SetClip_Rect(&rcDevClip);
+ }
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ if (wrSelect.IsExist()) {
+ bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
+ place.WordCmp(wrSelect.EndPos) <= 0;
+ if (bSelect) {
+ crCurFill = crWhite;
+ } else {
+ crCurFill = crTextFill;
+ }
+ }
+ if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
+ crCurFill = crTextFill;
+ crOldFill = crCurFill;
+ }
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ if (bSelect) {
+ CPVT_Line line;
+ pIterator->GetLine(line);
+
+ if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
+ CPDF_Rect rc(word.ptWord.x, line.ptLine.y + line.fLineDescent,
+ word.ptWord.x + word.fWidth,
+ line.ptLine.y + line.fLineAscent);
+ rc.Intersect(rcClip);
+ // CFX_Edit* pEt = (CFX_Edit*)pEdit;
+ // CPDF_Rect rcEdit = pEt->VTToEdit(rc);
+ pSystemHandler->OutputSelectedRect(pFFLData, rc);
+ } else {
+ CFX_PathData pathSelBK;
+ pathSelBK.AppendRect(word.ptWord.x,
+ line.ptLine.y + line.fLineDescent,
+ word.ptWord.x + word.fWidth,
+ line.ptLine.y + line.fLineAscent);
+
+ pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
+ FXFILL_WINDING);
+ }
+ }
+
+ if (bContinuous) {
+ if (place.LineCmp(oldplace) != 0 || word.nFontIndex != nFontIndex ||
+ crOldFill != crCurFill) {
+ if (sTextBuf.GetLength() > 0) {
+ DrawTextString(pDevice, CPDF_Point(ptBT.x + ptOffset.x,
+ ptBT.y + ptOffset.y),
+ pFontMap->GetPDFFont(nFontIndex), fFontSize,
+ pUser2Device, sTextBuf.GetByteString(),
+ crOldFill, crTextStroke, nHorzScale);
+
+ sTextBuf.Clear();
+ }
+ nFontIndex = word.nFontIndex;
+ ptBT = word.ptWord;
+ crOldFill = crCurFill;
+ }
+
+ sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word,
+ SubWord);
+ } else {
+ DrawTextString(
+ pDevice, CPDF_Point(word.ptWord.x + ptOffset.x,
+ word.ptWord.y + ptOffset.y),
+ pFontMap->GetPDFFont(word.nFontIndex), fFontSize, pUser2Device,
+ GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord),
+ crCurFill, crTextStroke, nHorzScale);
+ }
+ oldplace = place;
+ }
+ }
+
+ if (sTextBuf.GetLength() > 0) {
+ DrawTextString(
+ pDevice, CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ pFontMap->GetPDFFont(nFontIndex), fFontSize, pUser2Device,
+ sTextBuf.GetByteString(), crOldFill, crTextStroke, nHorzScale);
+ }
+ }
+ }
+
+ pDevice->RestoreState();
}
-void IFX_Edit::DrawRichEdit(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edit* pEdit,
- const CPDF_Rect& rcClip, const CPDF_Point& ptOffset, const CPVT_WordRange* pRange)
-{
- //FX_FLOAT fFontSize = pEdit->GetFontSize();
- CPVT_WordRange wrSelect = pEdit->GetSelectWordRange();
-
- FX_COLORREF crCurText = ArgbEncode(255, 0,0,0);
- FX_COLORREF crOld = crCurText;
- FX_BOOL bSelect = FALSE;
- const FX_COLORREF crWhite = ArgbEncode(255,255,255,255);
- const FX_COLORREF crSelBK = ArgbEncode(255,0,51,113);
-
- CFX_ByteTextBuf sTextBuf;
- CPVT_WordProps wp;
- CPDF_Point ptBT(0.0f,0.0f);
-
- pDevice->SaveState();
-
- if (!rcClip.IsEmpty())
- {
- CPDF_Rect rcTemp = rcClip;
- pUser2Device->TransformRect(rcTemp);
- FX_RECT rcDevClip;
- rcDevClip.left = (int32_t)rcTemp.left;
- rcDevClip.right = (int32_t)rcTemp.right;
- rcDevClip.top = (int32_t)rcTemp.top;
- rcDevClip.bottom = (int32_t)rcTemp.bottom;
- pDevice->SetClip_Rect(&rcDevClip);
- }
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- word.WordProps.fFontSize = word.fFontSize;
-
- crCurText = ArgbEncode(255,word.WordProps.dwWordColor);
-
- if (wrSelect.IsExist())
- {
- bSelect = place.WordCmp(wrSelect.BeginPos) > 0 && place.WordCmp(wrSelect.EndPos) <= 0;
- if (bSelect)
- {
- crCurText = crWhite;
- }
- }
-
- if (bSelect)
- {
- CPVT_Line line;
- pIterator->GetLine(line);
-
- CFX_PathData pathSelBK;
- pathSelBK.AppendRect(word.ptWord.x + ptOffset.x,
- line.ptLine.y + line.fLineDescent + ptOffset.y,
- word.ptWord.x+word.fWidth + ptOffset.x,
- line.ptLine.y + line.fLineAscent + ptOffset.y);
-
- pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0, FXFILL_WINDING);
- }
-
- if (place.LineCmp(oldplace) != 0 || word.WordProps.fCharSpace > 0.0f || word.WordProps.nHorzScale != 100 ||
- FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
- crOld != crCurText)
- {
- if (sTextBuf.GetLength() > 0)
- {
- DrawTextString(pDevice, CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), pFontMap->GetPDFFont(wp.nFontIndex),
- wp.fFontSize, pUser2Device, sTextBuf.GetByteString(), crOld, 0, wp.nHorzScale);
-
- sTextBuf.Clear();
- }
- wp = word.WordProps;
- ptBT = word.ptWord;
- crOld = crCurText;
- }
-
- sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex, word.Word, 0);
-
- if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE)
- {
- CFX_PathData pathUnderline;
- CPDF_Rect rcUnderline = GetUnderLineRect(word);
- pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom, rcUnderline.right, rcUnderline.top);
-
- pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, crCurText, 0, FXFILL_WINDING);
- }
-
- if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT)
- {
- CFX_PathData pathCrossout;
- CPDF_Rect rcCrossout = GetCrossoutRect(word);
- pathCrossout.AppendRect(rcCrossout.left, rcCrossout.bottom, rcCrossout.right, rcCrossout.top);
-
- pDevice->DrawPath(&pathCrossout, pUser2Device, NULL, crCurText, 0, FXFILL_WINDING);
- }
-
- oldplace = place;
- }
- }
-
- if (sTextBuf.GetLength() > 0)
- {
- DrawTextString(pDevice, CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), pFontMap->GetPDFFont(wp.nFontIndex),
- wp.fFontSize, pUser2Device, sTextBuf.GetByteString(), crOld, 0, wp.nHorzScale);
- }
- }
- }
-
- pDevice->RestoreState();
+void IFX_Edit::DrawRichEdit(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ IFX_Edit* pEdit,
+ const CPDF_Rect& rcClip,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange) {
+ // FX_FLOAT fFontSize = pEdit->GetFontSize();
+ CPVT_WordRange wrSelect = pEdit->GetSelectWordRange();
+
+ FX_COLORREF crCurText = ArgbEncode(255, 0, 0, 0);
+ FX_COLORREF crOld = crCurText;
+ FX_BOOL bSelect = FALSE;
+ const FX_COLORREF crWhite = ArgbEncode(255, 255, 255, 255);
+ const FX_COLORREF crSelBK = ArgbEncode(255, 0, 51, 113);
+
+ CFX_ByteTextBuf sTextBuf;
+ CPVT_WordProps wp;
+ CPDF_Point ptBT(0.0f, 0.0f);
+
+ pDevice->SaveState();
+
+ if (!rcClip.IsEmpty()) {
+ CPDF_Rect rcTemp = rcClip;
+ pUser2Device->TransformRect(rcTemp);
+ FX_RECT rcDevClip;
+ rcDevClip.left = (int32_t)rcTemp.left;
+ rcDevClip.right = (int32_t)rcTemp.right;
+ rcDevClip.top = (int32_t)rcTemp.top;
+ rcDevClip.bottom = (int32_t)rcTemp.bottom;
+ pDevice->SetClip_Rect(&rcDevClip);
+ }
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ word.WordProps.fFontSize = word.fFontSize;
+
+ crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
+
+ if (wrSelect.IsExist()) {
+ bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
+ place.WordCmp(wrSelect.EndPos) <= 0;
+ if (bSelect) {
+ crCurText = crWhite;
+ }
+ }
+
+ if (bSelect) {
+ CPVT_Line line;
+ pIterator->GetLine(line);
+
+ CFX_PathData pathSelBK;
+ pathSelBK.AppendRect(word.ptWord.x + ptOffset.x,
+ line.ptLine.y + line.fLineDescent + ptOffset.y,
+ word.ptWord.x + word.fWidth + ptOffset.x,
+ line.ptLine.y + line.fLineAscent + ptOffset.y);
+
+ pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
+ FXFILL_WINDING);
+ }
+
+ if (place.LineCmp(oldplace) != 0 ||
+ word.WordProps.fCharSpace > 0.0f ||
+ word.WordProps.nHorzScale != 100 ||
+ FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
+ crOld != crCurText) {
+ if (sTextBuf.GetLength() > 0) {
+ DrawTextString(
+ pDevice, CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize,
+ pUser2Device, sTextBuf.GetByteString(), crOld, 0,
+ wp.nHorzScale);
+
+ sTextBuf.Clear();
+ }
+ wp = word.WordProps;
+ ptBT = word.ptWord;
+ crOld = crCurText;
+ }
+
+ sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
+ word.Word, 0);
+
+ if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) {
+ CFX_PathData pathUnderline;
+ CPDF_Rect rcUnderline = GetUnderLineRect(word);
+ pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
+ rcUnderline.right, rcUnderline.top);
+
+ pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, crCurText, 0,
+ FXFILL_WINDING);
+ }
+
+ if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
+ CFX_PathData pathCrossout;
+ CPDF_Rect rcCrossout = GetCrossoutRect(word);
+ pathCrossout.AppendRect(rcCrossout.left, rcCrossout.bottom,
+ rcCrossout.right, rcCrossout.top);
+
+ pDevice->DrawPath(&pathCrossout, pUser2Device, NULL, crCurText, 0,
+ FXFILL_WINDING);
+ }
+
+ oldplace = place;
+ }
+ }
+
+ if (sTextBuf.GetLength() > 0) {
+ DrawTextString(
+ pDevice, CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, pUser2Device,
+ sTextBuf.GetByteString(), crOld, 0, wp.nHorzScale);
+ }
+ }
+ }
+
+ pDevice->RestoreState();
}
-static void AddRectToPageObjects(CPDF_PageObjects* pPageObjs, FX_COLORREF crFill, const CPDF_Rect& rcFill)
-{
- CPDF_PathObject* pPathObj = new CPDF_PathObject;
- CPDF_PathData* pPathData = pPathObj->m_Path.GetModify();
- pPathData->AppendRect(rcFill.left,rcFill.bottom,rcFill.right,rcFill.top);
+static void AddRectToPageObjects(CPDF_PageObjects* pPageObjs,
+ FX_COLORREF crFill,
+ const CPDF_Rect& rcFill) {
+ CPDF_PathObject* pPathObj = new CPDF_PathObject;
+ CPDF_PathData* pPathData = pPathObj->m_Path.GetModify();
+ pPathData->AppendRect(rcFill.left, rcFill.bottom, rcFill.right, rcFill.top);
- FX_FLOAT rgb[3];
- rgb[0] = FXARGB_R(crFill) / 255.0f ;
- rgb[1] = FXARGB_G(crFill) / 255.0f;
- rgb[2] = FXARGB_B(crFill) / 255.0f;
- pPathObj->m_ColorState.SetFillColor(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), rgb, 3);
+ FX_FLOAT rgb[3];
+ rgb[0] = FXARGB_R(crFill) / 255.0f;
+ rgb[1] = FXARGB_G(crFill) / 255.0f;
+ rgb[2] = FXARGB_B(crFill) / 255.0f;
+ pPathObj->m_ColorState.SetFillColor(
+ CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), rgb, 3);
- pPathObj->m_FillType = FXFILL_ALTERNATE;
- pPathObj->m_bStroke = FALSE;
+ pPathObj->m_FillType = FXFILL_ALTERNATE;
+ pPathObj->m_bStroke = FALSE;
- pPageObjs->InsertObject(pPageObjs->GetLastObjectPosition(),pPathObj);
+ pPageObjs->InsertObject(pPageObjs->GetLastObjectPosition(), pPathObj);
}
-static CPDF_TextObject* AddTextObjToPageObjects(CPDF_PageObjects* pPageObjs, FX_COLORREF crText,
- CPDF_Font* pFont, FX_FLOAT fFontSize, FX_FLOAT fCharSpace, int32_t nHorzScale,
- const CPDF_Point& point, const CFX_ByteString& text)
-{
- CPDF_TextObject* pTxtObj = new CPDF_TextObject;
-
- CPDF_TextStateData* pTextStateData = pTxtObj->m_TextState.GetModify();
- pTextStateData->m_pFont = pFont;
- pTextStateData->m_FontSize = fFontSize;
- pTextStateData->m_CharSpace = fCharSpace;
- pTextStateData->m_WordSpace = 0;
- pTextStateData->m_TextMode = 0;
- pTextStateData->m_Matrix[0] = nHorzScale / 100.0f;
- pTextStateData->m_Matrix[1] = 0;
- pTextStateData->m_Matrix[2] = 0;
- pTextStateData->m_Matrix[3] = 1;
-
- FX_FLOAT rgb[3];
- rgb[0] = FXARGB_R(crText) / 255.0f ;
- rgb[1] = FXARGB_G(crText) / 255.0f;
- rgb[2] = FXARGB_B(crText) / 255.0f;
- pTxtObj->m_ColorState.SetFillColor(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB),rgb, 3);
- pTxtObj->m_ColorState.SetStrokeColor(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB),rgb, 3);
-
- pTxtObj->SetPosition(point.x,point.y);
- pTxtObj->SetText(text);
-
- pPageObjs->InsertObject(pPageObjs->GetLastObjectPosition(),pTxtObj);
-
- return pTxtObj;
+static CPDF_TextObject* AddTextObjToPageObjects(CPDF_PageObjects* pPageObjs,
+ FX_COLORREF crText,
+ CPDF_Font* pFont,
+ FX_FLOAT fFontSize,
+ FX_FLOAT fCharSpace,
+ int32_t nHorzScale,
+ const CPDF_Point& point,
+ const CFX_ByteString& text) {
+ CPDF_TextObject* pTxtObj = new CPDF_TextObject;
+
+ CPDF_TextStateData* pTextStateData = pTxtObj->m_TextState.GetModify();
+ pTextStateData->m_pFont = pFont;
+ pTextStateData->m_FontSize = fFontSize;
+ pTextStateData->m_CharSpace = fCharSpace;
+ pTextStateData->m_WordSpace = 0;
+ pTextStateData->m_TextMode = 0;
+ pTextStateData->m_Matrix[0] = nHorzScale / 100.0f;
+ pTextStateData->m_Matrix[1] = 0;
+ pTextStateData->m_Matrix[2] = 0;
+ pTextStateData->m_Matrix[3] = 1;
+
+ FX_FLOAT rgb[3];
+ rgb[0] = FXARGB_R(crText) / 255.0f;
+ rgb[1] = FXARGB_G(crText) / 255.0f;
+ rgb[2] = FXARGB_B(crText) / 255.0f;
+ pTxtObj->m_ColorState.SetFillColor(
+ CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), rgb, 3);
+ pTxtObj->m_ColorState.SetStrokeColor(
+ CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), rgb, 3);
+
+ pTxtObj->SetPosition(point.x, point.y);
+ pTxtObj->SetText(text);
+
+ pPageObjs->InsertObject(pPageObjs->GetLastObjectPosition(), pTxtObj);
+
+ return pTxtObj;
}
-void IFX_Edit::GeneratePageObjects(CPDF_PageObjects* pPageObjects, IFX_Edit* pEdit,
- const CPDF_Point& ptOffset, const CPVT_WordRange* pRange, FX_COLORREF crText, CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray)
-{
- FX_FLOAT fFontSize = pEdit->GetFontSize();
-
- int32_t nOldFontIndex = -1;
-
- CFX_ByteTextBuf sTextBuf;
- CPDF_Point ptBT(0.0f,0.0f);
-
- ObjArray.RemoveAll();
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- if (place.LineCmp(oldplace) != 0 || nOldFontIndex != word.nFontIndex)
- {
- if (sTextBuf.GetLength() > 0)
- {
- ObjArray.Add(AddTextObjToPageObjects(pPageObjects, crText, pFontMap->GetPDFFont(nOldFontIndex), fFontSize, 0.0f, 100,
- CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), sTextBuf.GetByteString()));
-
- sTextBuf.Clear();
- }
-
- ptBT = word.ptWord;
- nOldFontIndex = word.nFontIndex;
- }
-
- sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, 0);
- oldplace = place;
- }
- }
-
- if (sTextBuf.GetLength() > 0)
- {
- ObjArray.Add(AddTextObjToPageObjects(pPageObjects, crText, pFontMap->GetPDFFont(nOldFontIndex), fFontSize, 0.0f, 100,
- CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), sTextBuf.GetByteString()));
- }
- }
- }
+void IFX_Edit::GeneratePageObjects(
+ CPDF_PageObjects* pPageObjects,
+ IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ FX_COLORREF crText,
+ CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) {
+ FX_FLOAT fFontSize = pEdit->GetFontSize();
+
+ int32_t nOldFontIndex = -1;
+
+ CFX_ByteTextBuf sTextBuf;
+ CPDF_Point ptBT(0.0f, 0.0f);
+
+ ObjArray.RemoveAll();
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ if (place.LineCmp(oldplace) != 0 ||
+ nOldFontIndex != word.nFontIndex) {
+ if (sTextBuf.GetLength() > 0) {
+ ObjArray.Add(AddTextObjToPageObjects(
+ pPageObjects, crText, pFontMap->GetPDFFont(nOldFontIndex),
+ fFontSize, 0.0f, 100,
+ CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ sTextBuf.GetByteString()));
+
+ sTextBuf.Clear();
+ }
+
+ ptBT = word.ptWord;
+ nOldFontIndex = word.nFontIndex;
+ }
+
+ sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, 0);
+ oldplace = place;
+ }
+ }
+
+ if (sTextBuf.GetLength() > 0) {
+ ObjArray.Add(AddTextObjToPageObjects(
+ pPageObjects, crText, pFontMap->GetPDFFont(nOldFontIndex),
+ fFontSize, 0.0f, 100,
+ CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ sTextBuf.GetByteString()));
+ }
+ }
+ }
}
-void IFX_Edit::GenerateRichPageObjects(CPDF_PageObjects* pPageObjects, IFX_Edit* pEdit,
- const CPDF_Point& ptOffset, const CPVT_WordRange* pRange, CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray)
-{
-
-
- FX_COLORREF crCurText = ArgbEncode(255, 0, 0, 0);
- FX_COLORREF crOld = crCurText;
-
-
- CFX_ByteTextBuf sTextBuf;
- CPVT_WordProps wp;
- CPDF_Point ptBT(0.0f,0.0f);
-
- ObjArray.RemoveAll();
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- word.WordProps.fFontSize = word.fFontSize;
-
- crCurText = ArgbEncode(255,word.WordProps.dwWordColor);
-
- if (place.LineCmp(oldplace) != 0 || word.WordProps.fCharSpace > 0.0f || word.WordProps.nHorzScale != 100 ||
- FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
- crOld != crCurText)
- {
- if (sTextBuf.GetLength() > 0)
- {
- ObjArray.Add(AddTextObjToPageObjects(pPageObjects, crOld, pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
- CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), sTextBuf.GetByteString()));
-
- sTextBuf.Clear();
- }
-
- wp = word.WordProps;
- ptBT = word.ptWord;
- crOld = crCurText;
-
- }
-
- sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex, word.Word, 0);
-
- if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE)
- {/*
- AddLineToPageObjects(pPageObjects, crCurText,
- CPDF_Point(word.ptWord.x, word.ptWord.y + word.fDescent * 0.4f),
- CPDF_Point(word.ptWord.x + word.fWidth, word.ptWord.y + word.fDescent * 0.4f));
+void IFX_Edit::GenerateRichPageObjects(
+ CPDF_PageObjects* pPageObjects,
+ IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) {
+ FX_COLORREF crCurText = ArgbEncode(255, 0, 0, 0);
+ FX_COLORREF crOld = crCurText;
+
+ CFX_ByteTextBuf sTextBuf;
+ CPVT_WordProps wp;
+ CPDF_Point ptBT(0.0f, 0.0f);
+
+ ObjArray.RemoveAll();
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (IFX_Edit_FontMap* pFontMap = pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ word.WordProps.fFontSize = word.fFontSize;
+
+ crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
+
+ if (place.LineCmp(oldplace) != 0 ||
+ word.WordProps.fCharSpace > 0.0f ||
+ word.WordProps.nHorzScale != 100 ||
+ FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
+ crOld != crCurText) {
+ if (sTextBuf.GetLength() > 0) {
+ ObjArray.Add(AddTextObjToPageObjects(
+ pPageObjects, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
+ wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
+ CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ sTextBuf.GetByteString()));
+
+ sTextBuf.Clear();
+ }
+
+ wp = word.WordProps;
+ ptBT = word.ptWord;
+ crOld = crCurText;
+ }
+
+ sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
+ word.Word, 0);
+
+ if (word.WordProps.nWordStyle &
+ PVTWORD_STYLE_UNDERLINE) { /*
+ AddLineToPageObjects(pPageObjects,
+ crCurText,
+ CPDF_Point(word.ptWord.x,
+ word.ptWord.y + word.fDescent *
+ 0.4f),
+ CPDF_Point(word.ptWord.x
+ + word.fWidth, word.ptWord.y +
+ word.fDescent * 0.4f));
*/
- CPDF_Rect rcUnderline = GetUnderLineRect(word);
- rcUnderline.left += ptOffset.x;
- rcUnderline.right += ptOffset.x;
- rcUnderline.top += ptOffset.y;
- rcUnderline.bottom += ptOffset.y;
-
- AddRectToPageObjects(pPageObjects, crCurText, rcUnderline);
- }
-
- if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT)
- {
- CPDF_Rect rcCrossout = GetCrossoutRect(word);
- rcCrossout.left += ptOffset.x;
- rcCrossout.right += ptOffset.x;
- rcCrossout.top += ptOffset.y;
- rcCrossout.bottom += ptOffset.y;
-
- AddRectToPageObjects(pPageObjects, crCurText, rcCrossout);
- }
-
- oldplace = place;
- }
- }
-
- if (sTextBuf.GetLength() > 0)
- {
- ObjArray.Add(AddTextObjToPageObjects(pPageObjects, crOld, pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
- CPDF_Point(ptBT.x+ptOffset.x, ptBT.y+ptOffset.y), sTextBuf.GetByteString()));
- }
- }
- }
+ CPDF_Rect rcUnderline = GetUnderLineRect(word);
+ rcUnderline.left += ptOffset.x;
+ rcUnderline.right += ptOffset.x;
+ rcUnderline.top += ptOffset.y;
+ rcUnderline.bottom += ptOffset.y;
+
+ AddRectToPageObjects(pPageObjects, crCurText, rcUnderline);
+ }
+
+ if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
+ CPDF_Rect rcCrossout = GetCrossoutRect(word);
+ rcCrossout.left += ptOffset.x;
+ rcCrossout.right += ptOffset.x;
+ rcCrossout.top += ptOffset.y;
+ rcCrossout.bottom += ptOffset.y;
+
+ AddRectToPageObjects(pPageObjects, crCurText, rcCrossout);
+ }
+
+ oldplace = place;
+ }
+ }
+
+ if (sTextBuf.GetLength() > 0) {
+ ObjArray.Add(AddTextObjToPageObjects(
+ pPageObjects, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
+ wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
+ CPDF_Point(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
+ sTextBuf.GetByteString()));
+ }
+ }
+ }
}
-void IFX_Edit::GenerateUnderlineObjects(CPDF_PageObjects* pPageObjects, IFX_Edit* pEdit,
- const CPDF_Point& ptOffset, const CPVT_WordRange* pRange, FX_COLORREF color)
-{
-
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- CPDF_Rect rcUnderline = GetUnderLineRect(word);
- rcUnderline.left += ptOffset.x;
- rcUnderline.right += ptOffset.x;
- rcUnderline.top += ptOffset.y;
- rcUnderline.bottom += ptOffset.y;
- AddRectToPageObjects(pPageObjects, color, rcUnderline);
- }
- }
- }
- }
+void IFX_Edit::GenerateUnderlineObjects(CPDF_PageObjects* pPageObjects,
+ IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ FX_COLORREF color) {
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ CPDF_Rect rcUnderline = GetUnderLineRect(word);
+ rcUnderline.left += ptOffset.x;
+ rcUnderline.right += ptOffset.x;
+ rcUnderline.top += ptOffset.y;
+ rcUnderline.bottom += ptOffset.y;
+ AddRectToPageObjects(pPageObjects, color, rcUnderline);
+ }
+ }
+ }
+ }
}
-
diff --git a/fpdfsdk/src/javascript/Consts.cpp b/fpdfsdk/src/javascript/Consts.cpp
index 9edb6f443b..5ff5528e29 100644
--- a/fpdfsdk/src/javascript/Consts.cpp
+++ b/fpdfsdk/src/javascript/Consts.cpp
@@ -14,234 +14,251 @@
/* ------------------------------ border ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Border)
- JS_STATIC_CONST_ENTRY_STRING(s, solid)
- JS_STATIC_CONST_ENTRY_STRING(b, beveled)
- JS_STATIC_CONST_ENTRY_STRING(d, dashed)
- JS_STATIC_CONST_ENTRY_STRING(i, inset)
- JS_STATIC_CONST_ENTRY_STRING(u, underline)
+JS_STATIC_CONST_ENTRY_STRING(s, solid)
+JS_STATIC_CONST_ENTRY_STRING(b, beveled)
+JS_STATIC_CONST_ENTRY_STRING(d, dashed)
+JS_STATIC_CONST_ENTRY_STRING(i, inset)
+JS_STATIC_CONST_ENTRY_STRING(u, underline)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Border,border)
+IMPLEMENT_JS_CLASS_CONST(CJS_Border, border)
/* ------------------------------ display ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Display)
- JS_STATIC_CONST_ENTRY_NUMBER(visible, 0)
- JS_STATIC_CONST_ENTRY_NUMBER(hidden, 1)
- JS_STATIC_CONST_ENTRY_NUMBER(noPrint, 2)
- JS_STATIC_CONST_ENTRY_NUMBER(noView, 3)
+JS_STATIC_CONST_ENTRY_NUMBER(visible, 0)
+JS_STATIC_CONST_ENTRY_NUMBER(hidden, 1)
+JS_STATIC_CONST_ENTRY_NUMBER(noPrint, 2)
+JS_STATIC_CONST_ENTRY_NUMBER(noView, 3)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Display,display)
+IMPLEMENT_JS_CLASS_CONST(CJS_Display, display)
/* ------------------------------ font ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Font)
- JS_STATIC_CONST_ENTRY_STRING(Times, Times-Roman)
- JS_STATIC_CONST_ENTRY_STRING(TimesB, Times-Bold)
- JS_STATIC_CONST_ENTRY_STRING(TimesI, Times-Italic)
- JS_STATIC_CONST_ENTRY_STRING(TimesBI, Times-BoldItalic)
- JS_STATIC_CONST_ENTRY_STRING(Helv, Helvetica)
- JS_STATIC_CONST_ENTRY_STRING(HelvB, Helvetica-Bold)
- JS_STATIC_CONST_ENTRY_STRING(HelvI, Helvetica-Oblique)
- JS_STATIC_CONST_ENTRY_STRING(HelvBI, Helvetica-BoldOblique)
- JS_STATIC_CONST_ENTRY_STRING(Cour, Courier)
- JS_STATIC_CONST_ENTRY_STRING(CourB, Courier-Bold)
- JS_STATIC_CONST_ENTRY_STRING(CourI, Courier-Oblique)
- JS_STATIC_CONST_ENTRY_STRING(CourBI, Courier-BoldOblique)
- JS_STATIC_CONST_ENTRY_STRING(Symbol, Symbol)
- JS_STATIC_CONST_ENTRY_STRING(ZapfD, ZapfDingbats)
+JS_STATIC_CONST_ENTRY_STRING(Times, Times - Roman)
+JS_STATIC_CONST_ENTRY_STRING(TimesB, Times - Bold)
+JS_STATIC_CONST_ENTRY_STRING(TimesI, Times - Italic)
+JS_STATIC_CONST_ENTRY_STRING(TimesBI, Times - BoldItalic)
+JS_STATIC_CONST_ENTRY_STRING(Helv, Helvetica)
+JS_STATIC_CONST_ENTRY_STRING(HelvB, Helvetica - Bold)
+JS_STATIC_CONST_ENTRY_STRING(HelvI, Helvetica - Oblique)
+JS_STATIC_CONST_ENTRY_STRING(HelvBI, Helvetica - BoldOblique)
+JS_STATIC_CONST_ENTRY_STRING(Cour, Courier)
+JS_STATIC_CONST_ENTRY_STRING(CourB, Courier - Bold)
+JS_STATIC_CONST_ENTRY_STRING(CourI, Courier - Oblique)
+JS_STATIC_CONST_ENTRY_STRING(CourBI, Courier - BoldOblique)
+JS_STATIC_CONST_ENTRY_STRING(Symbol, Symbol)
+JS_STATIC_CONST_ENTRY_STRING(ZapfD, ZapfDingbats)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Font,font)
+IMPLEMENT_JS_CLASS_CONST(CJS_Font, font)
/* ------------------------------ highlight ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Highlight)
- JS_STATIC_CONST_ENTRY_STRING(n, none)
- JS_STATIC_CONST_ENTRY_STRING(i, invert)
- JS_STATIC_CONST_ENTRY_STRING(p, push)
- JS_STATIC_CONST_ENTRY_STRING(o, outline)
+JS_STATIC_CONST_ENTRY_STRING(n, none)
+JS_STATIC_CONST_ENTRY_STRING(i, invert)
+JS_STATIC_CONST_ENTRY_STRING(p, push)
+JS_STATIC_CONST_ENTRY_STRING(o, outline)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Highlight,highlight)
+IMPLEMENT_JS_CLASS_CONST(CJS_Highlight, highlight)
/* ------------------------------ position ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Position)
- JS_STATIC_CONST_ENTRY_NUMBER(textOnly, 0)
- JS_STATIC_CONST_ENTRY_NUMBER(iconOnly, 1)
- JS_STATIC_CONST_ENTRY_NUMBER(iconTextV, 2)
- JS_STATIC_CONST_ENTRY_NUMBER(textIconV, 3)
- JS_STATIC_CONST_ENTRY_NUMBER(iconTextH, 4)
- JS_STATIC_CONST_ENTRY_NUMBER(textIconH, 5)
- JS_STATIC_CONST_ENTRY_NUMBER(overlay, 6)
+JS_STATIC_CONST_ENTRY_NUMBER(textOnly, 0)
+JS_STATIC_CONST_ENTRY_NUMBER(iconOnly, 1)
+JS_STATIC_CONST_ENTRY_NUMBER(iconTextV, 2)
+JS_STATIC_CONST_ENTRY_NUMBER(textIconV, 3)
+JS_STATIC_CONST_ENTRY_NUMBER(iconTextH, 4)
+JS_STATIC_CONST_ENTRY_NUMBER(textIconH, 5)
+JS_STATIC_CONST_ENTRY_NUMBER(overlay, 6)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Position,position)
+IMPLEMENT_JS_CLASS_CONST(CJS_Position, position)
/* ------------------------------ scaleHow ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_ScaleHow)
- JS_STATIC_CONST_ENTRY_NUMBER(proportional, 0)
- JS_STATIC_CONST_ENTRY_NUMBER(anamorphic, 1)
+JS_STATIC_CONST_ENTRY_NUMBER(proportional, 0)
+JS_STATIC_CONST_ENTRY_NUMBER(anamorphic, 1)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_ScaleHow,scaleHow)
+IMPLEMENT_JS_CLASS_CONST(CJS_ScaleHow, scaleHow)
/* ------------------------------ scaleWhen ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_ScaleWhen)
- JS_STATIC_CONST_ENTRY_NUMBER(always, 0)
- JS_STATIC_CONST_ENTRY_NUMBER(never, 1)
- JS_STATIC_CONST_ENTRY_NUMBER(tooBig, 2)
- JS_STATIC_CONST_ENTRY_NUMBER(tooSmall, 3)
+JS_STATIC_CONST_ENTRY_NUMBER(always, 0)
+JS_STATIC_CONST_ENTRY_NUMBER(never, 1)
+JS_STATIC_CONST_ENTRY_NUMBER(tooBig, 2)
+JS_STATIC_CONST_ENTRY_NUMBER(tooSmall, 3)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_ScaleWhen,scaleWhen)
+IMPLEMENT_JS_CLASS_CONST(CJS_ScaleWhen, scaleWhen)
/* ------------------------------ style ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Style)
- JS_STATIC_CONST_ENTRY_STRING(ch, check)
- JS_STATIC_CONST_ENTRY_STRING(cr, cross)
- JS_STATIC_CONST_ENTRY_STRING(di, diamond)
- JS_STATIC_CONST_ENTRY_STRING(ci, circle)
- JS_STATIC_CONST_ENTRY_STRING(st, star)
- JS_STATIC_CONST_ENTRY_STRING(sq, square)
+JS_STATIC_CONST_ENTRY_STRING(ch, check)
+JS_STATIC_CONST_ENTRY_STRING(cr, cross)
+JS_STATIC_CONST_ENTRY_STRING(di, diamond)
+JS_STATIC_CONST_ENTRY_STRING(ci, circle)
+JS_STATIC_CONST_ENTRY_STRING(st, star)
+JS_STATIC_CONST_ENTRY_STRING(sq, square)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Style,style)
-
+IMPLEMENT_JS_CLASS_CONST(CJS_Style, style)
/* ------------------------------ zoomtype ------------------------------ */
BEGIN_JS_STATIC_CONST(CJS_Zoomtype)
- JS_STATIC_CONST_ENTRY_STRING(none, NoVary)
- JS_STATIC_CONST_ENTRY_STRING(fitP, FitPage)
- JS_STATIC_CONST_ENTRY_STRING(fitW, FitWidth)
- JS_STATIC_CONST_ENTRY_STRING(fitH, FitHeight)
- JS_STATIC_CONST_ENTRY_STRING(fitV, FitVisibleWidth)
- JS_STATIC_CONST_ENTRY_STRING(pref, Preferred)
- JS_STATIC_CONST_ENTRY_STRING(refW, ReflowWidth)
+JS_STATIC_CONST_ENTRY_STRING(none, NoVary)
+JS_STATIC_CONST_ENTRY_STRING(fitP, FitPage)
+JS_STATIC_CONST_ENTRY_STRING(fitW, FitWidth)
+JS_STATIC_CONST_ENTRY_STRING(fitH, FitHeight)
+JS_STATIC_CONST_ENTRY_STRING(fitV, FitVisibleWidth)
+JS_STATIC_CONST_ENTRY_STRING(pref, Preferred)
+JS_STATIC_CONST_ENTRY_STRING(refW, ReflowWidth)
END_JS_STATIC_CONST()
-IMPLEMENT_JS_CLASS_CONST(CJS_Zoomtype,zoomtype)
-
-/* ------------------------------ CJS_GlobalConsts ------------------------------ */
-
-int CJS_GlobalConsts::Init(IJS_Runtime* pRuntime)
-{
- DEFINE_GLOBAL_CONST(pRuntime, IDS_GREATER_THAN , Invalid value: must be greater than or equal to %s.);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_GT_AND_LT,Invalid value: must be greater than or equal to %s and less than or equal to %s.);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_LESS_THAN,Invalid value: must be less than or equal to %s.);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_MONTH,** Invalid **);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_DATE,Invalid date/time: please ensure that the date/time exists. Field);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_VALUE,The value entered does not match the format of the field);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_AM,am);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_PM,pm);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_MONTH_INFO,January[1]February[2]March[3]April[4]May[5]June[6]July[7]August[8]September[9]October[10]November[11]December[12]Sept[9]Jan[1]Feb[2]Mar[3]Apr[4]Jun[6]Jul[7]Aug[8]Sep[9]Oct[10]Nov[11]Dec[12]);
- DEFINE_GLOBAL_CONST(pRuntime, IDS_STARTUP_CONSOLE_MSG, ** ^_^ **);
-
- return 0;
+IMPLEMENT_JS_CLASS_CONST(CJS_Zoomtype, zoomtype)
+
+/* ------------------------------ CJS_GlobalConsts
+ * ------------------------------ */
+
+int CJS_GlobalConsts::Init(IJS_Runtime* pRuntime) {
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_GREATER_THAN, Invalid value
+ : must be greater than or equal to % s.);
+ DEFINE_GLOBAL_CONST(
+ pRuntime, IDS_GT_AND_LT, Invalid value
+ : must be greater than or equal to % s and less than or equal to % s.);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_LESS_THAN, Invalid value
+ : must be less than or equal to % s.);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_MONTH, **Invalid**);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_DATE, Invalid date / time
+ : please ensure that the date / time exists.Field);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_INVALID_VALUE,
+ The value entered does not match the format of the field);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_AM, am);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_PM, pm);
+ DEFINE_GLOBAL_CONST(
+ pRuntime, IDS_MONTH_INFO,
+ January[1] February[2] March[3] April[4] May[5] June[6] July[7] August
+ [8] September[9] October[10] November[11] December[12] Sept[9] Jan
+ [1] Feb[2] Mar[3] Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov
+ [11] Dec[12]);
+ DEFINE_GLOBAL_CONST(pRuntime, IDS_STARTUP_CONSOLE_MSG, ** ^ _ ^ **);
+
+ return 0;
}
-/* ------------------------------ CJS_GlobalArrays ------------------------------ */
-
-int CJS_GlobalArrays::Init(IJS_Runtime* pRuntime)
-{
- {
- const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_DOT_SEP";
- const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*\\.?\\d*"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_DOT_SEP";
- const FX_WCHAR* ArrayContent[] = { L"[+-]?\\d+(\\.\\d+)?", /* -1.0 or -1 */
- L"[+-]?\\.\\d+", /* -.1 */
- L"[+-]?\\d+\\." /* -1. */
- };
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_COMMA_SEP";
- const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*,?\\d*"};
-
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_COMMA_SEP";
- const FX_WCHAR* ArrayContent[] = { L"[+-]?\\d+([.,]\\d+)?", /* -1,0 or -1 */
- L"[+-]?[.,]\\d+", /* -,1 */
- L"[+-]?\\d+[.,]" /* -1, */
- };
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_ZIP_ENTRY";
- const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_ZIP_COMMIT";
- const FX_WCHAR* ArrayContent[] = {L"\\d{5}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_ZIP4_ENTRY";
- const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}(\\.|[- ])?\\d{0,4}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_ZIP4_COMMIT";
- const FX_WCHAR* ArrayContent[] = {L"\\d{5}(\\.|[- ])?\\d{4}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_PHONE_ENTRY";
- const FX_WCHAR* ArrayContent[] = {
- L"\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 555-1234 or 408 555-1234 */
- L"\\(\\d{0,3}", /* (408 */
- L"\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408) 555-1234 */
- /* (allow the addition of parens as an afterthought) */
- L"\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408 555-1234 */
- L"\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 408) 555-1234 */
- L"011(\\.|[- \\d])*" /* international */
- };
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_PHONE_COMMIT";
- const FX_WCHAR* ArrayContent[] = {
- L"\\d{3}(\\.|[- ])?\\d{4}", /* 555-1234 */
- L"\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* 408 555-1234 */
- L"\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* (408) 555-1234 */
- L"011(\\.|[- \\d])*" /* international */
- };
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_SSN_ENTRY";
- const FX_WCHAR* ArrayContent[] = {L"\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- {
- const FX_WCHAR* ArrayName = L"RE_SSN_COMMIT";
- const FX_WCHAR* ArrayContent[] = {L"\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}"};
- DEFINE_GLOBAL_ARRAY(pRuntime);
- }
-
- return 0;
+/* ------------------------------ CJS_GlobalArrays
+ * ------------------------------ */
+
+int CJS_GlobalArrays::Init(IJS_Runtime* pRuntime) {
+ {
+ const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_DOT_SEP";
+ const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*\\.?\\d*"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_DOT_SEP";
+ const FX_WCHAR* ArrayContent[] = {
+ L"[+-]?\\d+(\\.\\d+)?", /* -1.0 or -1 */
+ L"[+-]?\\.\\d+", /* -.1 */
+ L"[+-]?\\d+\\." /* -1. */
+ };
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_NUMBER_ENTRY_COMMA_SEP";
+ const FX_WCHAR* ArrayContent[] = {L"[+-]?\\d*,?\\d*"};
+
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_NUMBER_COMMIT_COMMA_SEP";
+ const FX_WCHAR* ArrayContent[] = {
+ L"[+-]?\\d+([.,]\\d+)?", /* -1,0 or -1 */
+ L"[+-]?[.,]\\d+", /* -,1 */
+ L"[+-]?\\d+[.,]" /* -1, */
+ };
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_ZIP_ENTRY";
+ const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_ZIP_COMMIT";
+ const FX_WCHAR* ArrayContent[] = {L"\\d{5}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_ZIP4_ENTRY";
+ const FX_WCHAR* ArrayContent[] = {L"\\d{0,5}(\\.|[- ])?\\d{0,4}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_ZIP4_COMMIT";
+ const FX_WCHAR* ArrayContent[] = {L"\\d{5}(\\.|[- ])?\\d{4}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_PHONE_ENTRY";
+ const FX_WCHAR* ArrayContent[] = {
+ L"\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 555-1234 or 408
+ 555-1234 */
+ L"\\(\\d{0,3}", /* (408 */
+ L"\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408)
+ 555-1234 */
+ /* (allow the addition of parens as an afterthought) */
+ L"\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408 555-1234
+ */
+ L"\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 408) 555-1234
+ */
+ L"011(\\.|[- \\d])*" /* international */
+ };
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_PHONE_COMMIT";
+ const FX_WCHAR* ArrayContent[] = {
+ L"\\d{3}(\\.|[- ])?\\d{4}", /* 555-1234 */
+ L"\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* 408 555-1234 */
+ L"\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* (408) 555-1234 */
+ L"011(\\.|[- \\d])*" /* international */
+ };
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_SSN_ENTRY";
+ const FX_WCHAR* ArrayContent[] = {
+ L"\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ {
+ const FX_WCHAR* ArrayName = L"RE_SSN_COMMIT";
+ const FX_WCHAR* ArrayContent[] = {
+ L"\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}"};
+ DEFINE_GLOBAL_ARRAY(pRuntime);
+ }
+
+ return 0;
}
-
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 59816f091f..7ce8449f3c 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -20,15 +20,14 @@
#include "../../../third_party/base/numerics/safe_math.h"
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- return pRuntime->GetIsolate();
+ return pRuntime->GetIsolate();
}
BEGIN_JS_STATIC_CONST(CJS_PrintParamsObj)
@@ -43,1699 +42,1709 @@ END_JS_STATIC_METHOD()
IMPLEMENT_JS_CLASS(CJS_PrintParamsObj, PrintParamsObj)
PrintParamsObj::PrintParamsObj(CJS_Object* pJSObject)
-: CJS_EmbedObj(pJSObject)
-{
- bUI = TRUE;
- nStart = 0;
- nEnd = 0;
- bSilent = FALSE;
- bShrinkToFit = FALSE;
- bPrintAsImage = FALSE;
- bReverse = FALSE;
- bAnnotations = TRUE;
+ : CJS_EmbedObj(pJSObject) {
+ bUI = TRUE;
+ nStart = 0;
+ nEnd = 0;
+ bSilent = FALSE;
+ bShrinkToFit = FALSE;
+ bPrintAsImage = FALSE;
+ bReverse = FALSE;
+ bAnnotations = TRUE;
}
/* ---------------------- Document ---------------------- */
-#define MINWIDTH 5.0f
+#define MINWIDTH 5.0f
#define MINHEIGHT 5.0f
BEGIN_JS_STATIC_CONST(CJS_Document)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_Document)
- JS_STATIC_PROP_ENTRY(ADBE)
- JS_STATIC_PROP_ENTRY(author)
- JS_STATIC_PROP_ENTRY(baseURL)
- JS_STATIC_PROP_ENTRY(bookmarkRoot)
- JS_STATIC_PROP_ENTRY(calculate)
- JS_STATIC_PROP_ENTRY(Collab)
- JS_STATIC_PROP_ENTRY(creationDate)
- JS_STATIC_PROP_ENTRY(creator)
- JS_STATIC_PROP_ENTRY(delay)
- JS_STATIC_PROP_ENTRY(dirty)
- JS_STATIC_PROP_ENTRY(documentFileName)
- JS_STATIC_PROP_ENTRY(external)
- JS_STATIC_PROP_ENTRY(filesize)
- JS_STATIC_PROP_ENTRY(icons)
- JS_STATIC_PROP_ENTRY(info)
- JS_STATIC_PROP_ENTRY(keywords)
- JS_STATIC_PROP_ENTRY(layout)
- JS_STATIC_PROP_ENTRY(media)
- JS_STATIC_PROP_ENTRY(modDate)
- JS_STATIC_PROP_ENTRY(mouseX)
- JS_STATIC_PROP_ENTRY(mouseY)
- JS_STATIC_PROP_ENTRY(numFields)
- JS_STATIC_PROP_ENTRY(numPages)
- JS_STATIC_PROP_ENTRY(pageNum)
- JS_STATIC_PROP_ENTRY(pageWindowRect)
- JS_STATIC_PROP_ENTRY(path)
- JS_STATIC_PROP_ENTRY(producer)
- JS_STATIC_PROP_ENTRY(subject)
- JS_STATIC_PROP_ENTRY(title)
- JS_STATIC_PROP_ENTRY(zoom)
- JS_STATIC_PROP_ENTRY(zoomType)
+JS_STATIC_PROP_ENTRY(ADBE)
+JS_STATIC_PROP_ENTRY(author)
+JS_STATIC_PROP_ENTRY(baseURL)
+JS_STATIC_PROP_ENTRY(bookmarkRoot)
+JS_STATIC_PROP_ENTRY(calculate)
+JS_STATIC_PROP_ENTRY(Collab)
+JS_STATIC_PROP_ENTRY(creationDate)
+JS_STATIC_PROP_ENTRY(creator)
+JS_STATIC_PROP_ENTRY(delay)
+JS_STATIC_PROP_ENTRY(dirty)
+JS_STATIC_PROP_ENTRY(documentFileName)
+JS_STATIC_PROP_ENTRY(external)
+JS_STATIC_PROP_ENTRY(filesize)
+JS_STATIC_PROP_ENTRY(icons)
+JS_STATIC_PROP_ENTRY(info)
+JS_STATIC_PROP_ENTRY(keywords)
+JS_STATIC_PROP_ENTRY(layout)
+JS_STATIC_PROP_ENTRY(media)
+JS_STATIC_PROP_ENTRY(modDate)
+JS_STATIC_PROP_ENTRY(mouseX)
+JS_STATIC_PROP_ENTRY(mouseY)
+JS_STATIC_PROP_ENTRY(numFields)
+JS_STATIC_PROP_ENTRY(numPages)
+JS_STATIC_PROP_ENTRY(pageNum)
+JS_STATIC_PROP_ENTRY(pageWindowRect)
+JS_STATIC_PROP_ENTRY(path)
+JS_STATIC_PROP_ENTRY(producer)
+JS_STATIC_PROP_ENTRY(subject)
+JS_STATIC_PROP_ENTRY(title)
+JS_STATIC_PROP_ENTRY(zoom)
+JS_STATIC_PROP_ENTRY(zoomType)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Document)
- JS_STATIC_METHOD_ENTRY(addAnnot)
- JS_STATIC_METHOD_ENTRY(addField)
- JS_STATIC_METHOD_ENTRY(addLink)
- JS_STATIC_METHOD_ENTRY(addIcon)
- JS_STATIC_METHOD_ENTRY(calculateNow)
- JS_STATIC_METHOD_ENTRY(closeDoc)
- JS_STATIC_METHOD_ENTRY(createDataObject)
- JS_STATIC_METHOD_ENTRY(deletePages)
- JS_STATIC_METHOD_ENTRY(exportAsText)
- JS_STATIC_METHOD_ENTRY(exportAsFDF)
- JS_STATIC_METHOD_ENTRY(exportAsXFDF)
- JS_STATIC_METHOD_ENTRY(extractPages)
- JS_STATIC_METHOD_ENTRY(getAnnot)
- JS_STATIC_METHOD_ENTRY(getAnnots)
- JS_STATIC_METHOD_ENTRY(getAnnot3D)
- JS_STATIC_METHOD_ENTRY(getAnnots3D)
- JS_STATIC_METHOD_ENTRY(getField)
- JS_STATIC_METHOD_ENTRY(getIcon)
- JS_STATIC_METHOD_ENTRY(getLinks)
- JS_STATIC_METHOD_ENTRY(getNthFieldName)
- JS_STATIC_METHOD_ENTRY(getOCGs)
- JS_STATIC_METHOD_ENTRY(getPageBox)
- JS_STATIC_METHOD_ENTRY(getPageNthWord)
- JS_STATIC_METHOD_ENTRY(getPageNthWordQuads)
- JS_STATIC_METHOD_ENTRY(getPageNumWords)
- JS_STATIC_METHOD_ENTRY(getPrintParams)
- JS_STATIC_METHOD_ENTRY(getURL)
- JS_STATIC_METHOD_ENTRY(importAnFDF)
- JS_STATIC_METHOD_ENTRY(importAnXFDF)
- JS_STATIC_METHOD_ENTRY(importTextData)
- JS_STATIC_METHOD_ENTRY(insertPages)
- JS_STATIC_METHOD_ENTRY(mailForm)
- JS_STATIC_METHOD_ENTRY(print)
- JS_STATIC_METHOD_ENTRY(removeField)
- JS_STATIC_METHOD_ENTRY(replacePages)
- JS_STATIC_METHOD_ENTRY(resetForm)
- JS_STATIC_METHOD_ENTRY(removeIcon)
- JS_STATIC_METHOD_ENTRY(saveAs)
- JS_STATIC_METHOD_ENTRY(submitForm)
- JS_STATIC_METHOD_ENTRY(mailDoc)
+JS_STATIC_METHOD_ENTRY(addAnnot)
+JS_STATIC_METHOD_ENTRY(addField)
+JS_STATIC_METHOD_ENTRY(addLink)
+JS_STATIC_METHOD_ENTRY(addIcon)
+JS_STATIC_METHOD_ENTRY(calculateNow)
+JS_STATIC_METHOD_ENTRY(closeDoc)
+JS_STATIC_METHOD_ENTRY(createDataObject)
+JS_STATIC_METHOD_ENTRY(deletePages)
+JS_STATIC_METHOD_ENTRY(exportAsText)
+JS_STATIC_METHOD_ENTRY(exportAsFDF)
+JS_STATIC_METHOD_ENTRY(exportAsXFDF)
+JS_STATIC_METHOD_ENTRY(extractPages)
+JS_STATIC_METHOD_ENTRY(getAnnot)
+JS_STATIC_METHOD_ENTRY(getAnnots)
+JS_STATIC_METHOD_ENTRY(getAnnot3D)
+JS_STATIC_METHOD_ENTRY(getAnnots3D)
+JS_STATIC_METHOD_ENTRY(getField)
+JS_STATIC_METHOD_ENTRY(getIcon)
+JS_STATIC_METHOD_ENTRY(getLinks)
+JS_STATIC_METHOD_ENTRY(getNthFieldName)
+JS_STATIC_METHOD_ENTRY(getOCGs)
+JS_STATIC_METHOD_ENTRY(getPageBox)
+JS_STATIC_METHOD_ENTRY(getPageNthWord)
+JS_STATIC_METHOD_ENTRY(getPageNthWordQuads)
+JS_STATIC_METHOD_ENTRY(getPageNumWords)
+JS_STATIC_METHOD_ENTRY(getPrintParams)
+JS_STATIC_METHOD_ENTRY(getURL)
+JS_STATIC_METHOD_ENTRY(importAnFDF)
+JS_STATIC_METHOD_ENTRY(importAnXFDF)
+JS_STATIC_METHOD_ENTRY(importTextData)
+JS_STATIC_METHOD_ENTRY(insertPages)
+JS_STATIC_METHOD_ENTRY(mailForm)
+JS_STATIC_METHOD_ENTRY(print)
+JS_STATIC_METHOD_ENTRY(removeField)
+JS_STATIC_METHOD_ENTRY(replacePages)
+JS_STATIC_METHOD_ENTRY(resetForm)
+JS_STATIC_METHOD_ENTRY(removeIcon)
+JS_STATIC_METHOD_ENTRY(saveAs)
+JS_STATIC_METHOD_ENTRY(submitForm)
+JS_STATIC_METHOD_ENTRY(mailDoc)
END_JS_STATIC_METHOD()
IMPLEMENT_JS_CLASS(CJS_Document, Document)
-FX_BOOL CJS_Document::InitInstance(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
+FX_BOOL CJS_Document::InitInstance(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- Document* pDoc = (Document*)GetEmbedObject();
- ASSERT(pDoc != NULL);
+ Document* pDoc = (Document*)GetEmbedObject();
+ ASSERT(pDoc != NULL);
- pDoc->AttachDoc(pContext->GetReaderDocument());
- pDoc->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
- return TRUE;
+ pDoc->AttachDoc(pContext->GetReaderDocument());
+ pDoc->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
+ return TRUE;
};
-/* --------------------------------- Document --------------------------------- */
-
-Document::Document(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject),
- m_isolate(NULL),
- m_pIconTree(NULL),
- m_pDocument(NULL),
- m_cwBaseURL(L""),
- m_bDelay(FALSE)
-{
-}
-
-Document::~Document()
-{
- if (m_pIconTree)
- {
- m_pIconTree->DeleteIconTree();
- delete m_pIconTree;
- m_pIconTree = NULL;
- }
- for (int i=0; i<m_DelayData.GetSize(); i++)
- {
- if (CJS_DelayData* pData = m_DelayData.GetAt(i))
- {
- delete pData;
- pData = NULL;
- m_DelayData.SetAt(i, NULL);
-
- }
- }
-
- m_DelayData.RemoveAll();
- m_DelayAnnotData.RemoveAll();
-}
-
-//the total number of fileds in document.
-FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
- CPDFSDK_InterForm *pInterForm = m_pDocument->GetInterForm();
- CPDF_InterForm *pPDFForm = pInterForm->GetInterForm();
- vp << (int)pPDFForm->CountFields();
- return TRUE;
+/* --------------------------------- Document ---------------------------------
+ */
+
+Document::Document(CJS_Object* pJSObject)
+ : CJS_EmbedObj(pJSObject),
+ m_isolate(NULL),
+ m_pIconTree(NULL),
+ m_pDocument(NULL),
+ m_cwBaseURL(L""),
+ m_bDelay(FALSE) {}
+
+Document::~Document() {
+ if (m_pIconTree) {
+ m_pIconTree->DeleteIconTree();
+ delete m_pIconTree;
+ m_pIconTree = NULL;
+ }
+ for (int i = 0; i < m_DelayData.GetSize(); i++) {
+ if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
+ delete pData;
+ pData = NULL;
+ m_DelayData.SetAt(i, NULL);
+ }
+ }
+
+ m_DelayData.RemoveAll();
+ m_DelayAnnotData.RemoveAll();
+}
+
+// the total number of fileds in document.
+FX_BOOL Document::numFields(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
+ CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+ CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ vp << (int)pPDFForm->CountFields();
+ return TRUE;
}
-FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::dirty(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsGetting())
- {
- if (m_pDocument->GetChangeMark())
- vp << true;
- else
- vp << false;
- }
+ if (vp.IsGetting()) {
+ if (m_pDocument->GetChangeMark())
+ vp << true;
else
- {
- bool bChanged = false;
+ vp << false;
+ } else {
+ bool bChanged = false;
- vp >> bChanged;
+ vp >> bChanged;
- if (bChanged)
- m_pDocument->SetChangeMark();
- else
- m_pDocument->ClearChangeMark();
- }
+ if (bChanged)
+ m_pDocument->SetChangeMark();
+ else
+ m_pDocument->ClearChangeMark();
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Document::ADBE(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::ADBE(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsGetting())
- {
- vp.SetNull();
- }
- else
- {
- }
+ if (vp.IsGetting()) {
+ vp.SetNull();
+ } else {
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Document::pageNum(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::pageNum(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsGetting())
- {
- if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView())
- {
- vp << pPageView->GetPageIndex();
- }
+ if (vp.IsGetting()) {
+ if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) {
+ vp << pPageView->GetPageIndex();
}
- else
- {
- int iPageCount = m_pDocument->GetPageCount();
- int iPageNum = 0;
- vp >> iPageNum;
-
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- if (iPageNum >= 0 && iPageNum < iPageCount)
- {
- pEnv->JS_docgotoPage(iPageNum);
- }
- else if (iPageNum >= iPageCount)
- {
- pEnv->JS_docgotoPage(iPageCount-1);
- }
- else if (iPageNum < 0)
- {
- pEnv->JS_docgotoPage(0);
- }
+ } else {
+ int iPageCount = m_pDocument->GetPageCount();
+ int iPageNum = 0;
+ vp >> iPageNum;
+
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ if (iPageNum >= 0 && iPageNum < iPageCount) {
+ pEnv->JS_docgotoPage(iPageNum);
+ } else if (iPageNum >= iPageCount) {
+ pEnv->JS_docgotoPage(iPageCount - 1);
+ } else if (iPageNum < 0) {
+ pEnv->JS_docgotoPage(0);
}
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Document::ParserParams(JSObject* pObj,CJS_AnnotObj& annotobj)
-{
- // Not supported.
- return TRUE;
+FX_BOOL Document::ParserParams(JSObject* pObj, CJS_AnnotObj& annotobj) {
+ // Not supported.
+ return TRUE;
}
-FX_BOOL Document::addAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Not supported.
- return TRUE;
+FX_BOOL Document::addAnnot(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Not supported.
+ return TRUE;
}
-FX_BOOL Document::addField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Not supported.
- return TRUE;
+FX_BOOL Document::addField(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Not supported.
+ return TRUE;
}
-FX_BOOL Document::exportAsText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::exportAsText(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-FX_BOOL Document::exportAsFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::exportAsFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-//Maps a field object in PDF document to a JavaScript variable
-//comment:
-//note: the paremter cName, this is clue how to treat if the cName is not a valiable filed name in this document
+// Maps a field object in PDF document to a JavaScript variable
+// comment:
+// note: the paremter cName, this is clue how to treat if the cName is not a
+// valiable filed name in this document
-FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- if (params.size() < 1) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+FX_BOOL Document::getField(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() < 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- CFX_WideString wideName = params[0].ToCFXWideString();
+ CFX_WideString wideName = params[0].ToCFXWideString();
- CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
- if (pPDFForm->CountFields(wideName) <= 0)
- {
- vRet.SetNull();
- return TRUE;
- }
+ CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+ CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ if (pPDFForm->CountFields(wideName) <= 0) {
+ vRet.SetNull();
+ return TRUE;
+ }
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field"));
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ JSFXObject pFieldObj = JS_NewFxDynamicObj(
+ *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field"));
- v8::Isolate* isolate = GetIsolate(cc);
- CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj);
- Field* pField = (Field *)pJSField->GetEmbedObject();
- pField->AttachField(this, wideName);
+ v8::Isolate* isolate = GetIsolate(cc);
+ CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(isolate, pFieldObj);
+ Field* pField = (Field*)pJSField->GetEmbedObject();
+ pField->AttachField(this, wideName);
- vRet = pJSField;
- return TRUE;
+ vRet = pJSField;
+ return TRUE;
}
-//Gets the name of the nth field in the document
-FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- if (params.size() != 1) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+// Gets the name of the nth field in the document
+FX_BOOL Document::getNthFieldName(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- int nIndex = params[0].ToInt();
- if (nIndex < 0) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
- return FALSE;
- }
+ int nIndex = params[0].ToInt();
+ if (nIndex < 0) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
+ return FALSE;
+ }
- CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
- CPDF_FormField* pField = pPDFForm->GetField(nIndex);
- if (!pField)
- return FALSE;
+ CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+ CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ CPDF_FormField* pField = pPDFForm->GetField(nIndex);
+ if (!pField)
+ return FALSE;
- vRet = pField->GetFullName().c_str();
- return TRUE;
+ vRet = pField->GetFullName().c_str();
+ return TRUE;
}
-FX_BOOL Document::importAnFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::importAnFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-FX_BOOL Document::importAnXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::importAnXFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-FX_BOOL Document::importTextData(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- // Unsafe, not supported.
- return TRUE;
+FX_BOOL Document::importTextData(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ // Unsafe, not supported.
+ return TRUE;
}
-//exports the form data and mails the resulting fdf file as an attachment to all recipients.
-//comment: need reader supports
-//note:
-//int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string cbcc,string cSubject,string cms);
-
-FX_BOOL Document::mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+// exports the form data and mails the resulting fdf file as an attachment to
+// all recipients.
+// comment: need reader supports
+// note:
+// int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string
+// cbcc,string cSubject,string cms);
- if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
+FX_BOOL Document::mailForm(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- int iLength = params.size();
+ if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
+ return FALSE;
- FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE;
- CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L"";
- CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L"";
- CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L"";
- CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L"";
- CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L"";
+ int iLength = params.size();
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE;
+ CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L"";
+ CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L"";
+ CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L"";
+ CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L"";
+ CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L"";
- CFX_ByteTextBuf textBuf;
- if (!pInterForm->ExportFormToFDFTextBuf(textBuf))
- return FALSE;
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CPDFDoc_Environment* pEnv = pContext->GetReaderApp();
- ASSERT(pEnv != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CFX_ByteTextBuf textBuf;
+ if (!pInterForm->ExportFormToFDFTextBuf(textBuf))
+ return FALSE;
- pRuntime->BeginBlock();
- pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
- pRuntime->EndBlock();
- return TRUE;
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CPDFDoc_Environment* pEnv = pContext->GetReaderApp();
+ ASSERT(pEnv != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->BeginBlock();
+ pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI,
+ cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(),
+ cMsg.c_str());
+ pRuntime->EndBlock();
+ return TRUE;
}
-FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- FX_BOOL bUI = TRUE;
- int nStart = 0;
- int nEnd = 0;
- FX_BOOL bSilent = FALSE;
- FX_BOOL bShrinkToFit = FALSE;
- FX_BOOL bPrintAsImage = FALSE;
- FX_BOOL bReverse = FALSE;
- FX_BOOL bAnnotations = FALSE;
-
- int nlength = params.size();
- if(nlength ==9)
- {
- if (params[8].GetType() == VT_fxobject)
- {
- JSFXObject pObj = params[8].ToV8Object();
- {
- if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"PrintParamsObj"))
- {
- if (CJS_Object* pJSObj = params[8].ToCJSObject())
- {
- if (PrintParamsObj* pprintparamsObj = (PrintParamsObj*)pJSObj->GetEmbedObject())
- {
- bUI = pprintparamsObj->bUI;
- nStart = pprintparamsObj->nStart;
- nEnd = pprintparamsObj->nEnd;
- bSilent = pprintparamsObj->bSilent;
- bShrinkToFit = pprintparamsObj->bShrinkToFit;
- bPrintAsImage = pprintparamsObj->bPrintAsImage;
- bReverse = pprintparamsObj->bReverse;
- bAnnotations = pprintparamsObj->bAnnotations;
- }
- }
- }
+FX_BOOL Document::print(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ FX_BOOL bUI = TRUE;
+ int nStart = 0;
+ int nEnd = 0;
+ FX_BOOL bSilent = FALSE;
+ FX_BOOL bShrinkToFit = FALSE;
+ FX_BOOL bPrintAsImage = FALSE;
+ FX_BOOL bReverse = FALSE;
+ FX_BOOL bAnnotations = FALSE;
+
+ int nlength = params.size();
+ if (nlength == 9) {
+ if (params[8].GetType() == VT_fxobject) {
+ JSFXObject pObj = params[8].ToV8Object();
+ {
+ if (JS_GetObjDefnID(pObj) ==
+ JS_GetObjDefnID(*pRuntime, L"PrintParamsObj")) {
+ if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
+ if (PrintParamsObj* pprintparamsObj =
+ (PrintParamsObj*)pJSObj->GetEmbedObject()) {
+ bUI = pprintparamsObj->bUI;
+ nStart = pprintparamsObj->nStart;
+ nEnd = pprintparamsObj->nEnd;
+ bSilent = pprintparamsObj->bSilent;
+ bShrinkToFit = pprintparamsObj->bShrinkToFit;
+ bPrintAsImage = pprintparamsObj->bPrintAsImage;
+ bReverse = pprintparamsObj->bReverse;
+ bAnnotations = pprintparamsObj->bAnnotations;
}
+ }
}
- }
- else
- {
- if(nlength >= 1)
- bUI = params[0].ToBool();
- if(nlength >= 2)
- nStart = params[1].ToInt();
- if(nlength >= 3)
- nEnd = params[2].ToInt();
- if(nlength >= 4)
- bSilent = params[3].ToBool();
- if(nlength >= 5)
- bShrinkToFit = params[4].ToBool();
- if(nlength >= 6)
- bPrintAsImage = params[5].ToBool();
- if(nlength >= 7)
- bReverse = params[6].ToBool();
- if(nlength >= 8)
- bAnnotations = params[7].ToBool();
- }
-
- ASSERT(m_pDocument != NULL);
-
- if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv())
- {
- pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, bReverse, bAnnotations);
- return TRUE;
- }
- return FALSE;
+ }
+ }
+ } else {
+ if (nlength >= 1)
+ bUI = params[0].ToBool();
+ if (nlength >= 2)
+ nStart = params[1].ToInt();
+ if (nlength >= 3)
+ nEnd = params[2].ToInt();
+ if (nlength >= 4)
+ bSilent = params[3].ToBool();
+ if (nlength >= 5)
+ bShrinkToFit = params[4].ToBool();
+ if (nlength >= 6)
+ bPrintAsImage = params[5].ToBool();
+ if (nlength >= 7)
+ bReverse = params[6].ToBool();
+ if (nlength >= 8)
+ bAnnotations = params[7].ToBool();
+ }
+
+ ASSERT(m_pDocument != NULL);
+
+ if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) {
+ pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage,
+ bReverse, bAnnotations);
+ return TRUE;
+ }
+ return FALSE;
}
-//removes the specified field from the document.
-//comment:
-//note: if the filed name is not retional, adobe is dumb for it.
+// removes the specified field from the document.
+// comment:
+// note: if the filed name is not retional, adobe is dumb for it.
-FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::removeField(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
- m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE;
+ if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
+ m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM)))
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- if (params.size() != 1) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- CFX_WideString sFieldName = params[0].ToCFXWideString();
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CFX_WideString sFieldName = params[0].ToCFXWideString();
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_PtrArray widgets;
- pInterForm->GetWidgets(sFieldName, widgets);
+ CFX_PtrArray widgets;
+ pInterForm->GetWidgets(sFieldName, widgets);
- int nSize = widgets.GetSize();
+ int nSize = widgets.GetSize();
- if (nSize > 0)
- {
- for (int i=0; i<nSize; i++)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i];
- ASSERT(pWidget != NULL);
+ if (nSize > 0) {
+ for (int i = 0; i < nSize; i++) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i];
+ ASSERT(pWidget != NULL);
- CPDF_Rect rcAnnot = pWidget->GetRect();
- rcAnnot.left -= 1;
- rcAnnot.bottom -= 1;
- rcAnnot.right += 1;
- rcAnnot.top += 1;
+ CPDF_Rect rcAnnot = pWidget->GetRect();
+ rcAnnot.left -= 1;
+ rcAnnot.bottom -= 1;
+ rcAnnot.right += 1;
+ rcAnnot.top += 1;
- CFX_RectArray aRefresh;
- aRefresh.Add(rcAnnot);
+ CFX_RectArray aRefresh;
+ aRefresh.Add(rcAnnot);
- CPDF_Page* pPage = pWidget->GetPDFPage();
- ASSERT(pPage != NULL);
+ CPDF_Page* pPage = pWidget->GetPDFPage();
+ ASSERT(pPage != NULL);
- CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage);
- pPageView->DeleteAnnot(pWidget);
+ CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage);
+ pPageView->DeleteAnnot(pWidget);
- pPageView->UpdateRects(aRefresh);
- }
- m_pDocument->SetChangeMark();
+ pPageView->UpdateRects(aRefresh);
}
+ m_pDocument->SetChangeMark();
+ }
- return TRUE;
+ return TRUE;
}
-//reset filed values within a document.
-//comment:
-//note: if the fields names r not rational, aodbe is dumb for it.
+// reset filed values within a document.
+// comment:
+// note: if the fields names r not rational, aodbe is dumb for it.
-FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::resetForm(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
+ if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
- m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE;
+ m_pDocument->GetPermissions(FPDFPERM_FILL_FORM)))
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
- ASSERT(pPDFForm != NULL);
-
- v8::Isolate* isolate = GetIsolate(cc);
- CJS_Array aName(isolate);
-
- if (params.size() > 0)
- {
- switch (params[0].GetType())
- {
- default:
- aName.Attach(params[0].ToV8Array());
- break;
- case VT_string:
- aName.SetElement(0,params[0]);
- break;
- }
+ CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ ASSERT(pPDFForm != NULL);
- CFX_PtrArray aFields;
+ v8::Isolate* isolate = GetIsolate(cc);
+ CJS_Array aName(isolate);
- for (int i=0,isz=aName.GetLength(); i<isz; i++)
- {
- CJS_Value valElement(isolate);
- aName.GetElement(i,valElement);
- CFX_WideString swVal = valElement.ToCFXWideString();
+ if (params.size() > 0) {
+ switch (params[0].GetType()) {
+ default:
+ aName.Attach(params[0].ToV8Array());
+ break;
+ case VT_string:
+ aName.SetElement(0, params[0]);
+ break;
+ }
- for (int j=0,jsz=pPDFForm->CountFields(swVal); j<jsz; j++)
- {
- aFields.Add((void*)pPDFForm->GetField(j,swVal));
- }
- }
+ CFX_PtrArray aFields;
- if (aFields.GetSize() > 0)
- {
- pPDFForm->ResetForm(aFields, TRUE, TRUE);
- m_pDocument->SetChangeMark();
+ for (int i = 0, isz = aName.GetLength(); i < isz; i++) {
+ CJS_Value valElement(isolate);
+ aName.GetElement(i, valElement);
+ CFX_WideString swVal = valElement.ToCFXWideString();
- }
+ for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; j++) {
+ aFields.Add((void*)pPDFForm->GetField(j, swVal));
+ }
}
- else
- {
- pPDFForm->ResetForm(TRUE);
- m_pDocument->SetChangeMark();
+ if (aFields.GetSize() > 0) {
+ pPDFForm->ResetForm(aFields, TRUE, TRUE);
+ m_pDocument->SetChangeMark();
}
+ } else {
+ pPDFForm->ResetForm(TRUE);
+ m_pDocument->SetChangeMark();
+ }
- return TRUE;
+ return TRUE;
}
-
-FX_BOOL Document::saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::saveAs(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-
-FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
- CJS_Context* pContext = (CJS_Context*)cc;
- int nSize = params.size();
- if (nSize < 1) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
+FX_BOOL Document::submitForm(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ int nSize = params.size();
+ if (nSize < 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ CFX_WideString strURL;
+ FX_BOOL bFDF = TRUE;
+ FX_BOOL bEmpty = FALSE;
+ v8::Isolate* isolate = GetIsolate(cc);
+ CJS_Array aFields(isolate);
+
+ CJS_Value v = params[0];
+ if (v.GetType() == VT_string) {
+ strURL = params[0].ToCFXWideString();
+ if (nSize > 1)
+ bFDF = params[1].ToBool();
+ if (nSize > 2)
+ bEmpty = params[2].ToBool();
+ if (nSize > 3)
+ aFields.Attach(params[3].ToV8Array());
+ } else if (v.GetType() == VT_object) {
+ JSObject pObj = params[0].ToV8Object();
+ v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"cURL");
+ if (!pValue.IsEmpty())
+ strURL =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ pValue = JS_GetObjectElement(isolate, pObj, L"bFDF");
+ bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
+ pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty");
+ bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
+ pValue = JS_GetObjectElement(isolate, pObj, L"aFields");
+ aFields.Attach(
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToV8Array());
+ }
+
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
+ FX_BOOL bAll = (aFields.GetLength() == 0);
+ if (bAll && bEmpty) {
+ if (pPDFInterForm->CheckRequiredFields()) {
+ pRuntime->BeginBlock();
+ pInterForm->SubmitForm(strURL, FALSE);
+ pRuntime->EndBlock();
}
+ return TRUE;
+ }
- CFX_WideString strURL;
- FX_BOOL bFDF = TRUE;
- FX_BOOL bEmpty = FALSE;
- v8::Isolate* isolate = GetIsolate(cc);
- CJS_Array aFields(isolate);
-
- CJS_Value v = params[0];
- if (v.GetType() == VT_string)
- {
- strURL = params[0].ToCFXWideString();
- if (nSize > 1)
- bFDF = params[1].ToBool();
- if (nSize > 2)
- bEmpty = params[2].ToBool();
- if (nSize > 3)
- aFields.Attach(params[3].ToV8Array());
- }
- else if (v.GetType() == VT_object)
- {
- JSObject pObj = params[0].ToV8Object();
- v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"cURL");
- if (!pValue.IsEmpty())
- strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- pValue = JS_GetObjectElement(isolate, pObj, L"bFDF");
- bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
- pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty");
- bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
- pValue = JS_GetObjectElement(isolate, pObj,L"aFields");
- aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToV8Array());
- }
+ CFX_PtrArray fieldObjects;
+ for (int i = 0, sz = aFields.GetLength(); i < sz; i++) {
+ CJS_Value valName(isolate);
+ aFields.GetElement(i, valName);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
- FX_BOOL bAll = (aFields.GetLength() == 0);
- if (bAll && bEmpty)
- {
- if (pPDFInterForm->CheckRequiredFields())
- {
- pRuntime->BeginBlock();
- pInterForm->SubmitForm(strURL, FALSE);
- pRuntime->EndBlock();
- }
- return TRUE;
- }
+ CFX_WideString sName = valName.ToCFXWideString();
+ CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) {
+ CPDF_FormField* pField = pPDFForm->GetField(j, sName);
+ if (!bEmpty && pField->GetValue().IsEmpty())
+ continue;
- CFX_PtrArray fieldObjects;
- for (int i=0,sz=aFields.GetLength(); i<sz; i++)
- {
- CJS_Value valName(isolate);
- aFields.GetElement(i, valName);
-
- CFX_WideString sName = valName.ToCFXWideString();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
- for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j)
- {
- CPDF_FormField* pField = pPDFForm->GetField(j, sName);
- if (!bEmpty && pField->GetValue().IsEmpty())
- continue;
-
- fieldObjects.Add(pField);
- }
+ fieldObjects.Add(pField);
}
+ }
- if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE))
- {
- pRuntime->BeginBlock();
- pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF);
- pRuntime->EndBlock();
- }
- return TRUE;
+ if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE)) {
+ pRuntime->BeginBlock();
+ pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF);
+ pRuntime->EndBlock();
+ }
+ return TRUE;
}
//////////////////////////////////////////////////////////////////////////////////////////////
-void Document::AttachDoc(CPDFSDK_Document *pDoc)
-{
- m_pDocument = pDoc;
+void Document::AttachDoc(CPDFSDK_Document* pDoc) {
+ m_pDocument = pDoc;
}
-CPDFSDK_Document * Document::GetReaderDoc()
-{
- return m_pDocument;
+CPDFSDK_Document* Document::GetReaderDoc() {
+ return m_pDocument;
}
-FX_BOOL Document::ExtractFileName(CPDFSDK_Document *pDoc,CFX_ByteString &strFileName)
-{
- return FALSE;
+FX_BOOL Document::ExtractFileName(CPDFSDK_Document* pDoc,
+ CFX_ByteString& strFileName) {
+ return FALSE;
}
-FX_BOOL Document::ExtractFolderName(CPDFSDK_Document *pDoc,CFX_ByteString &strFolderName)
-{
- return FALSE;
+FX_BOOL Document::ExtractFolderName(CPDFSDK_Document* pDoc,
+ CFX_ByteString& strFolderName) {
+ return FALSE;
}
-FX_BOOL Document::bookmarkRoot(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::bookmarkRoot(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- FX_BOOL bUI = TRUE;
- CFX_WideString cTo = L"";
- CFX_WideString cCc = L"";
- CFX_WideString cBcc = L"";
- CFX_WideString cSubject = L"";
- CFX_WideString cMsg = L"";
-
- if (params.size() >= 1)
- bUI = params[0].ToBool();
- if (params.size() >= 2)
- cTo = params[1].ToCFXWideString();
- if (params.size() >= 3)
- cCc = params[2].ToCFXWideString();
- if (params.size() >= 4)
- cBcc = params[3].ToCFXWideString();
- if (params.size() >= 5)
- cSubject = params[4].ToCFXWideString();
- if (params.size() >= 6)
- cMsg = params[5].ToCFXWideString();
-
- v8::Isolate* isolate = GetIsolate(cc);
-
- if(params.size() >= 1 && params[0].GetType() == VT_object)
- {
- JSObject pObj = params[0].ToV8Object();
-
- v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"bUI");
- bUI = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToInt();
-
- pValue = JS_GetObjectElement(isolate,pObj, L"cTo");
- cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj, L"cCc");
- cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj, L"cBcc");
- cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
+FX_BOOL Document::mailDoc(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ FX_BOOL bUI = TRUE;
+ CFX_WideString cTo = L"";
+ CFX_WideString cCc = L"";
+ CFX_WideString cBcc = L"";
+ CFX_WideString cSubject = L"";
+ CFX_WideString cMsg = L"";
+
+ if (params.size() >= 1)
+ bUI = params[0].ToBool();
+ if (params.size() >= 2)
+ cTo = params[1].ToCFXWideString();
+ if (params.size() >= 3)
+ cCc = params[2].ToCFXWideString();
+ if (params.size() >= 4)
+ cBcc = params[3].ToCFXWideString();
+ if (params.size() >= 5)
+ cSubject = params[4].ToCFXWideString();
+ if (params.size() >= 6)
+ cMsg = params[5].ToCFXWideString();
+
+ v8::Isolate* isolate = GetIsolate(cc);
+
+ if (params.size() >= 1 && params[0].GetType() == VT_object) {
+ JSObject pObj = params[0].ToV8Object();
+
+ v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"bUI");
+ bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToInt();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cTo");
+ cTo = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cCc");
+ cCc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cBcc");
+ cBcc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cSubject");
+ cSubject =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cMsg");
+ cMsg = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ }
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ pRuntime->BeginBlock();
+ CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
+ pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(),
+ cBcc.c_str(), cMsg.c_str());
+ pRuntime->EndBlock();
- pValue = JS_GetObjectElement(isolate,pObj, L"cSubject");
- cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj, L"cMsg");
- cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- }
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- pRuntime->BeginBlock();
- CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
- pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
- pRuntime->EndBlock();
-
- return TRUE;
+ return TRUE;
}
-FX_BOOL Document::author(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::author(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)return FALSE;
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Author");
- return TRUE;
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE;
-
- CFX_WideString csAuthor;
- vp >> csAuthor;
- pDictionary->SetAtString("Author", PDF_EncodeText(csAuthor));
- m_pDocument->SetChangeMark();
- return TRUE;
- }
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Author");
+ return TRUE;
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csAuthor;
+ vp >> csAuthor;
+ pDictionary->SetAtString("Author", PDF_EncodeText(csAuthor));
+ m_pDocument->SetChangeMark();
+ return TRUE;
+ }
}
-FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::info(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- CFX_WideString cwAuthor = pDictionary->GetUnicodeText("Author");
- CFX_WideString cwTitle = pDictionary->GetUnicodeText("Title");
- CFX_WideString cwSubject = pDictionary->GetUnicodeText("Subject");
- CFX_WideString cwKeywords = pDictionary->GetUnicodeText("Keywords");
- CFX_WideString cwCreator = pDictionary->GetUnicodeText("Creator");
- CFX_WideString cwProducer = pDictionary->GetUnicodeText("Producer");
- CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationDate");
- CFX_WideString cwModDate = pDictionary->GetUnicodeText("ModDate");
- CFX_WideString cwTrapped = pDictionary->GetUnicodeText("Trapped");
-
- v8::Isolate* isolate = GetIsolate(cc);
- if (vp.IsGetting())
- {
- CJS_Context* pContext = (CJS_Context *)cc;
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1);
- JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str());
- JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str());
- JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str());
- JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str());
- JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str());
- JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str());
- JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate.c_str());
- JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str());
- JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str());
-
- // It's to be compatible to non-standard info dictionary.
- FX_POSITION pos = pDictionary->GetStartPos();
- while(pos)
- {
- CFX_ByteString bsKey;
- CPDF_Object* pValueObj = pDictionary->GetNextElement(pos, bsKey);
- CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength());
- if((pValueObj->GetType()==PDFOBJ_STRING) || (pValueObj->GetType()==PDFOBJ_NAME) )
- JS_PutObjectString(isolate, pObj, wsKey.c_str(), pValueObj->GetUnicodeText().c_str());
- if(pValueObj->GetType()==PDFOBJ_NUMBER)
- JS_PutObjectNumber(isolate,pObj, wsKey.c_str(), (float)pValueObj->GetNumber());
- if(pValueObj->GetType()==PDFOBJ_BOOLEAN)
- JS_PutObjectBoolean(isolate,pObj, wsKey.c_str(), (bool)pValueObj->GetInteger());
- }
- vp << pObj;
- }
- return TRUE;
+ CFX_WideString cwAuthor = pDictionary->GetUnicodeText("Author");
+ CFX_WideString cwTitle = pDictionary->GetUnicodeText("Title");
+ CFX_WideString cwSubject = pDictionary->GetUnicodeText("Subject");
+ CFX_WideString cwKeywords = pDictionary->GetUnicodeText("Keywords");
+ CFX_WideString cwCreator = pDictionary->GetUnicodeText("Creator");
+ CFX_WideString cwProducer = pDictionary->GetUnicodeText("Producer");
+ CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationDate");
+ CFX_WideString cwModDate = pDictionary->GetUnicodeText("ModDate");
+ CFX_WideString cwTrapped = pDictionary->GetUnicodeText("Trapped");
+
+ v8::Isolate* isolate = GetIsolate(cc);
+ if (vp.IsGetting()) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1);
+ JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str());
+ JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str());
+ JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str());
+ JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str());
+ JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str());
+ JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str());
+ JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate.c_str());
+ JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str());
+ JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str());
+
+ // It's to be compatible to non-standard info dictionary.
+ FX_POSITION pos = pDictionary->GetStartPos();
+ while (pos) {
+ CFX_ByteString bsKey;
+ CPDF_Object* pValueObj = pDictionary->GetNextElement(pos, bsKey);
+ CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength());
+ if ((pValueObj->GetType() == PDFOBJ_STRING) ||
+ (pValueObj->GetType() == PDFOBJ_NAME))
+ JS_PutObjectString(isolate, pObj, wsKey.c_str(),
+ pValueObj->GetUnicodeText().c_str());
+ if (pValueObj->GetType() == PDFOBJ_NUMBER)
+ JS_PutObjectNumber(isolate, pObj, wsKey.c_str(),
+ (float)pValueObj->GetNumber());
+ if (pValueObj->GetType() == PDFOBJ_BOOLEAN)
+ JS_PutObjectBoolean(isolate, pObj, wsKey.c_str(),
+ (bool)pValueObj->GetInteger());
+ }
+ vp << pObj;
+ }
+ return TRUE;
}
-FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::creationDate(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("CreationDate");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString csCreationDate;
- vp >> csCreationDate;
- pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreationDate));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("CreationDate");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csCreationDate;
+ vp >> csCreationDate;
+ pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreationDate));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::creator(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Creator");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString csCreator;
- vp >> csCreator;
- pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Creator");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csCreator;
+ vp >> csCreator;
+ pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << m_bDelay;
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- vp >> m_bDelay;
- if (m_bDelay)
- {
- for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++)
- delete m_DelayData.GetAt(i);
-
- m_DelayData.RemoveAll();
- }
- else
- {
- CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess;
- for (int i=0,sz=m_DelayData.GetSize(); i < sz; i++)
- {
- if (CJS_DelayData* pData = m_DelayData.GetAt(i))
- {
- DelayDataToProcess.Add(pData);
- m_DelayData.SetAt(i, NULL);
- }
- }
- m_DelayData.RemoveAll();
- for (int i=0,sz=DelayDataToProcess.GetSize(); i < sz; i++)
- {
- CJS_DelayData* pData = DelayDataToProcess.GetAt(i);
- Field::DoDelay(m_pDocument, pData);
- DelayDataToProcess.SetAt(i,NULL);
- delete pData;
- }
+FX_BOOL Document::delay(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << m_bDelay;
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ vp >> m_bDelay;
+ if (m_bDelay) {
+ for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++)
+ delete m_DelayData.GetAt(i);
+
+ m_DelayData.RemoveAll();
+ } else {
+ CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess;
+ for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) {
+ if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
+ DelayDataToProcess.Add(pData);
+ m_DelayData.SetAt(i, NULL);
}
+ }
+ m_DelayData.RemoveAll();
+ for (int i = 0, sz = DelayDataToProcess.GetSize(); i < sz; i++) {
+ CJS_DelayData* pData = DelayDataToProcess.GetAt(i);
+ Field::DoDelay(m_pDocument, pData);
+ DelayDataToProcess.SetAt(i, NULL);
+ delete pData;
+ }
}
- return TRUE;
+ }
+ return TRUE;
}
-FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::keywords(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Keywords");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString csKeywords;
- vp >> csKeywords;
- pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Keywords");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csKeywords;
+ vp >> csKeywords;
+ pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::modDate(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("ModDate");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString csmodDate;
- vp >> csmodDate;
- pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("ModDate");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csmodDate;
+ vp >> csmodDate;
+ pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::producer(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Producer");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString csproducer;
- vp >> csproducer;
- pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Producer");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString csproducer;
+ vp >> csproducer;
+ pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+FX_BOOL Document::subject(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Subject");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString cssubject;
- vp >> cssubject;
- pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Subject");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString cssubject;
+ vp >> cssubject;
+ pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL)
- return FALSE;
+FX_BOOL Document::title(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL)
+ return FALSE;
- CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
- if (!pDictionary)
- return FALSE;
+ CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
+ if (!pDictionary)
+ return FALSE;
- if (vp.IsGetting())
- {
- vp << pDictionary->GetUnicodeText("Title");
- }
- else
- {
- if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
- return FALSE;
-
- CFX_WideString cstitle;
- vp >> cstitle;
- pDictionary->SetAtString("Title", PDF_EncodeText(cstitle));
- m_pDocument->SetChangeMark();
- }
- return TRUE;
+ if (vp.IsGetting()) {
+ vp << pDictionary->GetUnicodeText("Title");
+ } else {
+ if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
+ return FALSE;
+
+ CFX_WideString cstitle;
+ vp >> cstitle;
+ pDictionary->SetAtString("Title", PDF_EncodeText(cstitle));
+ m_pDocument->SetChangeMark();
+ }
+ return TRUE;
}
-FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
- vp << m_pDocument->GetPageCount();
- return TRUE;
+FX_BOOL Document::numPages(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
+ vp << m_pDocument->GetPageCount();
+ return TRUE;
}
-FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- //In Chrome case,should always return true.
- if (vp.IsGetting()) {
- vp << true;
- }
- return TRUE;
+FX_BOOL Document::external(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ // In Chrome case,should always return true.
+ if (vp.IsGetting()) {
+ vp << true;
+ }
+ return TRUE;
}
-FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
- vp << 0;
- return TRUE;
+FX_BOOL Document::filesize(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
+ vp << 0;
+ return TRUE;
}
-FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::mouseX(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::mouseY(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << m_cwBaseURL;
- }
- else
- {
- vp >> m_cwBaseURL;
- }
- return TRUE;
+FX_BOOL Document::baseURL(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << m_cwBaseURL;
+ } else {
+ vp >> m_cwBaseURL;
+ }
+ return TRUE;
}
-FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::calculate(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (vp.IsGetting())
- {
- if (pInterForm->IsCalculateEnabled())
- vp << true;
- else
- vp << false;
- }
+ if (vp.IsGetting()) {
+ if (pInterForm->IsCalculateEnabled())
+ vp << true;
else
- {
- bool bCalculate;
- vp >> bCalculate;
-
- pInterForm->EnableCalculate(bCalculate);
- }
+ vp << false;
+ } else {
+ bool bCalculate;
+ vp >> bCalculate;
- return TRUE;
-}
+ pInterForm->EnableCalculate(bCalculate);
+ }
-FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
- CFX_WideString wsFilePath = m_pDocument->GetPath();
- int32_t i = wsFilePath.GetLength() - 1;
- for ( ; i >= 0; i-- )
- {
- if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' )
- break;
- }
- if ( i >= 0 && i < wsFilePath.GetLength() - 1 )
- {
- vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 );
- }else{
- vp << L"";
- }
- return TRUE;
+ return TRUE;
}
-CFX_WideString Document::ReversalStr(CFX_WideString cbFrom)
-{
- size_t iLength = cbFrom.GetLength();
- pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
- iSize *= (iLength + 1);
- wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
- wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
-
- for (size_t i = 0; i < iLength; i++)
- {
- pResult[i] = *(pFrom + iLength - i - 1);
- }
- pResult[iLength] = L'\0';
-
- cbFrom.ReleaseBuffer();
- CFX_WideString cbRet = CFX_WideString(pResult);
- free(pResult);
- pResult = NULL;
- return cbRet;
-}
-
-CFX_WideString Document::CutString(CFX_WideString cbFrom)
-{
- size_t iLength = cbFrom.GetLength();
- pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
- iSize *= (iLength + 1);
- wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
- wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
-
- for (int i = 0; i < iLength; i++)
- {
- if (pFrom[i] == L'\\' || pFrom[i] == L'/')
- {
- pResult[i] = L'\0';
- break;
- }
- pResult[i] = pFrom[i];
- }
- pResult[iLength] = L'\0';
-
- cbFrom.ReleaseBuffer();
- CFX_WideString cbRet = CFX_WideString(pResult);
- free(pResult);
- pResult = NULL;
- return cbRet;
+FX_BOOL Document::documentFileName(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
+ CFX_WideString wsFilePath = m_pDocument->GetPath();
+ int32_t i = wsFilePath.GetLength() - 1;
+ for (; i >= 0; i--) {
+ if (wsFilePath.GetAt(i) == L'\\' || wsFilePath.GetAt(i) == L'/')
+ break;
+ }
+ if (i >= 0 && i < wsFilePath.GetLength() - 1) {
+ vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1);
+ } else {
+ vp << L"";
+ }
+ return TRUE;
}
-FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
- vp << app::SysPathToPDFPath(m_pDocument->GetPath());
- return TRUE;
+CFX_WideString Document::ReversalStr(CFX_WideString cbFrom) {
+ size_t iLength = cbFrom.GetLength();
+ pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
+ iSize *= (iLength + 1);
+ wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
+ wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
+
+ for (size_t i = 0; i < iLength; i++) {
+ pResult[i] = *(pFrom + iLength - i - 1);
+ }
+ pResult[iLength] = L'\0';
+
+ cbFrom.ReleaseBuffer();
+ CFX_WideString cbRet = CFX_WideString(pResult);
+ free(pResult);
+ pResult = NULL;
+ return cbRet;
+}
+
+CFX_WideString Document::CutString(CFX_WideString cbFrom) {
+ size_t iLength = cbFrom.GetLength();
+ pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
+ iSize *= (iLength + 1);
+ wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
+ wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
+
+ for (int i = 0; i < iLength; i++) {
+ if (pFrom[i] == L'\\' || pFrom[i] == L'/') {
+ pResult[i] = L'\0';
+ break;
+ }
+ pResult[i] = pFrom[i];
+ }
+ pResult[iLength] = L'\0';
+
+ cbFrom.ReleaseBuffer();
+ CFX_WideString cbRet = CFX_WideString(pResult);
+ free(pResult);
+ pResult = NULL;
+ return cbRet;
+}
+
+FX_BOOL Document::path(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
+ vp << app::SysPathToPDFPath(m_pDocument->GetPath());
+ return TRUE;
}
-FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::pageWindowRect(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::layout(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::addLink(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
- return TRUE;
+FX_BOOL Document::closeDoc(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+ return TRUE;
}
-FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::getPageBox(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::getAnnot(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- vRet.SetNull();
- return TRUE;
+FX_BOOL Document::getAnnots(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ vRet.SetNull();
+ return TRUE;
}
-FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- vRet.SetNull();
- return TRUE;
+FX_BOOL Document::getAnnot3D(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ vRet.SetNull();
+ return TRUE;
}
-FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- vRet = VT_undefined;
- return TRUE;
+FX_BOOL Document::getAnnots3D(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ vRet = VT_undefined;
+ return TRUE;
}
-FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::getOCGs(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::getLinks(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect)
-{
- return (rect.left <= LinkRect.left &&
- rect.top <= LinkRect.top &&
- rect.right >= LinkRect.right &&
- rect.bottom >= LinkRect.bottom);
+bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) {
+ return (rect.left <= LinkRect.left && rect.top <= LinkRect.top &&
+ rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom);
}
-void IconTree::InsertIconElement(IconElement* pNewIcon)
-{
- if (!pNewIcon)return;
+void IconTree::InsertIconElement(IconElement* pNewIcon) {
+ if (!pNewIcon)
+ return;
- if (m_pHead == NULL && m_pEnd == NULL)
- {
- m_pHead = m_pEnd = pNewIcon;
- m_iLength++;
- }
- else
- {
- m_pEnd->NextIcon = pNewIcon;
- m_pEnd = pNewIcon;
- m_iLength++;
- }
+ if (m_pHead == NULL && m_pEnd == NULL) {
+ m_pHead = m_pEnd = pNewIcon;
+ m_iLength++;
+ } else {
+ m_pEnd->NextIcon = pNewIcon;
+ m_pEnd = pNewIcon;
+ m_iLength++;
+ }
}
-void IconTree::DeleteIconTree()
-{
- if (!m_pHead || !m_pEnd)return;
+void IconTree::DeleteIconTree() {
+ if (!m_pHead || !m_pEnd)
+ return;
- IconElement* pTemp = NULL;
- while(m_pEnd != m_pHead)
- {
- pTemp = m_pHead;
- m_pHead = m_pHead->NextIcon;
- delete pTemp;
- }
+ IconElement* pTemp = NULL;
+ while (m_pEnd != m_pHead) {
+ pTemp = m_pHead;
+ m_pHead = m_pHead->NextIcon;
+ delete pTemp;
+ }
- delete m_pEnd;
- m_pHead = NULL;
- m_pEnd = NULL;
+ delete m_pEnd;
+ m_pHead = NULL;
+ m_pEnd = NULL;
}
-int IconTree::GetLength()
-{
- return m_iLength;
+int IconTree::GetLength() {
+ return m_iLength;
}
-IconElement* IconTree::operator [](int iIndex)
-{
- if (iIndex >= 0 && iIndex <= m_iLength)
- {
- IconElement* pTemp = m_pHead;
- for (int i = 0; i < iIndex; i++)
- {
- pTemp = pTemp->NextIcon;
- }
- return pTemp;
+IconElement* IconTree::operator[](int iIndex) {
+ if (iIndex >= 0 && iIndex <= m_iLength) {
+ IconElement* pTemp = m_pHead;
+ for (int i = 0; i < iIndex; i++) {
+ pTemp = pTemp->NextIcon;
}
- return NULL;
+ return pTemp;
+ }
+ return NULL;
}
-FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- if (params.size() != 2) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+FX_BOOL Document::addIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() != 2) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- CFX_WideString swIconName = params[0].ToCFXWideString();
- JSFXObject pJSIcon = params[1].ToV8Object();
+ CFX_WideString swIconName = params[0].ToCFXWideString();
+ JSFXObject pJSIcon = params[1].ToV8Object();
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
- return FALSE;
- }
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
+ return FALSE;
+ }
- CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject();
- if (!pEmbedObj) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
- return FALSE;
- }
+ CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject();
+ if (!pEmbedObj) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
+ return FALSE;
+ }
- Icon* pIcon = (Icon*)pEmbedObj;
- if (!m_pIconTree)
- m_pIconTree = new IconTree();
+ Icon* pIcon = (Icon*)pEmbedObj;
+ if (!m_pIconTree)
+ m_pIconTree = new IconTree();
- IconElement* pNewIcon = new IconElement();
- pNewIcon->IconName = swIconName;
- pNewIcon->NextIcon = NULL;
- pNewIcon->IconStream = pIcon;
- m_pIconTree->InsertIconElement(pNewIcon);
- return TRUE;
+ IconElement* pNewIcon = new IconElement();
+ pNewIcon->IconName = swIconName;
+ pNewIcon->NextIcon = NULL;
+ pNewIcon->IconStream = pIcon;
+ m_pIconTree->InsertIconElement(pNewIcon);
+ return TRUE;
}
-FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting()) {
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
- return FALSE;
- }
+FX_BOOL Document::icons(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
+ return FALSE;
+ }
- if (!m_pIconTree)
- {
- vp.SetNull();
- return TRUE;
- }
+ if (!m_pIconTree) {
+ vp.SetNull();
+ return TRUE;
+ }
- CJS_Array Icons(m_isolate);
- IconElement* pIconElement = NULL;
- int iIconTreeLength = m_pIconTree->GetLength();
+ CJS_Array Icons(m_isolate);
+ IconElement* pIconElement = NULL;
+ int iIconTreeLength = m_pIconTree->GetLength();
- CJS_Context* pContext = (CJS_Context *)cc;
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ CJS_Context* pContext = (CJS_Context*)cc;
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- for (int i = 0; i < iIconTreeLength; i++)
- {
- pIconElement = (*m_pIconTree)[i];
+ for (int i = 0; i < iIconTreeLength; i++) {
+ pIconElement = (*m_pIconTree)[i];
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
- if (pObj.IsEmpty()) return FALSE;
+ JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext,
+ JS_GetObjDefnID(*pRuntime, L"Icon"));
+ if (pObj.IsEmpty())
+ return FALSE;
- CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
- if (!pJS_Icon) return FALSE;
+ CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
+ if (!pJS_Icon)
+ return FALSE;
- Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
- if (!pIcon)return FALSE;
+ Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
+ if (!pIcon)
+ return FALSE;
- pIcon->SetStream(pIconElement->IconStream->GetStream());
- pIcon->SetIconName(pIconElement->IconName);
- Icons.SetElement(i, CJS_Value(m_isolate,pJS_Icon));
- }
+ pIcon->SetStream(pIconElement->IconStream->GetStream());
+ pIcon->SetIconName(pIconElement->IconName);
+ Icons.SetElement(i, CJS_Value(m_isolate, pJS_Icon));
+ }
- vp << Icons;
- return TRUE;
+ vp << Icons;
+ return TRUE;
}
-FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- if (params.size() != 1) {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+FX_BOOL Document::getIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- if(!m_pIconTree)
- return FALSE;
- CFX_WideString swIconName = params[0].ToCFXWideString();
- int iIconCounts = m_pIconTree->GetLength();
+ if (!m_pIconTree)
+ return FALSE;
+ CFX_WideString swIconName = params[0].ToCFXWideString();
+ int iIconCounts = m_pIconTree->GetLength();
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- for (int i = 0; i < iIconCounts; i++)
- {
- if ((*m_pIconTree)[i]->IconName == swIconName)
- {
- Icon* pRetIcon = (*m_pIconTree)[i]->IconStream;
+ for (int i = 0; i < iIconCounts; i++) {
+ if ((*m_pIconTree)[i]->IconName == swIconName) {
+ Icon* pRetIcon = (*m_pIconTree)[i]->IconStream;
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
- if (pObj.IsEmpty()) return FALSE;
+ JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext,
+ JS_GetObjDefnID(*pRuntime, L"Icon"));
+ if (pObj.IsEmpty())
+ return FALSE;
- CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
- if (!pJS_Icon) return FALSE;
+ CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
+ if (!pJS_Icon)
+ return FALSE;
- Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
- if (!pIcon)return FALSE;
+ Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
+ if (!pIcon)
+ return FALSE;
- pIcon->SetIconName(swIconName);
- pIcon->SetStream(pRetIcon->GetStream());
- vRet = pJS_Icon;
- return TRUE;
- }
+ pIcon->SetIconName(swIconName);
+ pIcon->SetStream(pRetIcon->GetStream());
+ vRet = pJS_Icon;
+ return TRUE;
}
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::removeIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, no supported.
return TRUE;
}
-FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::createDataObject(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not implemented.
return TRUE;
}
-FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::media(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::calculateNow(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
+ if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
- m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE;
+ m_pDocument->GetPermissions(FPDFPERM_FILL_FORM)))
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
- pInterForm->OnCalculate();
- return TRUE;
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
+ pInterForm->OnCalculate();
+ return TRUE;
}
-FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::Collab(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::getPageNthWord(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
-
- int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
- int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0;
- bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true;
+ if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
+ return FALSE;
- CPDF_Document* pDocument = m_pDocument->GetDocument();
- if (!pDocument) return FALSE;
+ int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
+ int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0;
+ bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true;
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
- return FALSE;
- }
+ CPDF_Document* pDocument = m_pDocument->GetDocument();
+ if (!pDocument)
+ return FALSE;
- CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
- if (!pPageDict) return FALSE;
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
+ return FALSE;
+ }
- CPDF_Page page;
- page.Load(pDocument, pPageDict);
- page.StartParse();
- page.ParseContent();
+ CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
+ if (!pPageDict)
+ return FALSE;
- FX_POSITION pos = page.GetFirstObjectPosition();
+ CPDF_Page page;
+ page.Load(pDocument, pPageDict);
+ page.StartParse();
+ page.ParseContent();
- int nWords = 0;
+ FX_POSITION pos = page.GetFirstObjectPosition();
- CFX_WideString swRet;
+ int nWords = 0;
- while (pos)
- {
- if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
- {
- if (pPageObj->m_Type == PDFPAGE_TEXT)
- {
- int nObjWords = CountWords((CPDF_TextObject*)pPageObj);
+ CFX_WideString swRet;
- if (nWords + nObjWords >= nWordNo)
- {
- swRet = GetObjWordStr((CPDF_TextObject*)pPageObj, nWordNo - nWords);
- break;
- }
+ while (pos) {
+ if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) {
+ if (pPageObj->m_Type == PDFPAGE_TEXT) {
+ int nObjWords = CountWords((CPDF_TextObject*)pPageObj);
- nWords += nObjWords;
- }
+ if (nWords + nObjWords >= nWordNo) {
+ swRet = GetObjWordStr((CPDF_TextObject*)pPageObj, nWordNo - nWords);
+ break;
}
- }
- if (bStrip)
- {
- swRet.TrimLeft();
- swRet.TrimRight();
+ nWords += nObjWords;
+ }
}
+ }
- vRet = swRet.c_str();
- return TRUE;
-}
+ if (bStrip) {
+ swRet.TrimLeft();
+ swRet.TrimRight();
+ }
-FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+ vRet = swRet.c_str();
+ return TRUE;
+}
- if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
+FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+ if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
return FALSE;
+
+ return FALSE;
}
-FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Document::getPageNumWords(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
+ if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
+ return FALSE;
- int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
+ int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
- CPDF_Document* pDocument = m_pDocument->GetDocument();
- ASSERT(pDocument != NULL);
+ CPDF_Document* pDocument = m_pDocument->GetDocument();
+ ASSERT(pDocument != NULL);
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
- return FALSE;
- }
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
+ return FALSE;
+ }
- CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
- if (!pPageDict) return FALSE;
+ CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
+ if (!pPageDict)
+ return FALSE;
- CPDF_Page page;
- page.Load(pDocument, pPageDict);
- page.StartParse();
- page.ParseContent();
+ CPDF_Page page;
+ page.Load(pDocument, pPageDict);
+ page.StartParse();
+ page.ParseContent();
- FX_POSITION pos = page.GetFirstObjectPosition();
+ FX_POSITION pos = page.GetFirstObjectPosition();
- int nWords = 0;
+ int nWords = 0;
- while (pos)
- {
- if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
- {
- if (pPageObj->m_Type == PDFPAGE_TEXT)
- {
- CPDF_TextObject* pTextObj = (CPDF_TextObject*)pPageObj;
- nWords += CountWords(pTextObj);
- }
- }
+ while (pos) {
+ if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) {
+ if (pPageObj->m_Type == PDFPAGE_TEXT) {
+ CPDF_TextObject* pTextObj = (CPDF_TextObject*)pPageObj;
+ nWords += CountWords(pTextObj);
+ }
}
+ }
- vRet = nWords;
+ vRet = nWords;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"PrintParamsObj"));
+FX_BOOL Document::getPrintParams(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ JSFXObject pRetObj = JS_NewFxDynamicObj(
+ *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"PrintParamsObj"));
- // Not implemented yet.
+ // Not implemented yet.
- vRet = pRetObj;
- return TRUE;
+ vRet = pRetObj;
+ return TRUE;
}
-#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
+#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
-int Document::CountWords(CPDF_TextObject* pTextObj)
-{
- if (!pTextObj) return 0;
+int Document::CountWords(CPDF_TextObject* pTextObj) {
+ if (!pTextObj)
+ return 0;
- int nWords = 0;
+ int nWords = 0;
- CPDF_Font* pFont = pTextObj->GetFont();
- if (!pFont) return 0;
+ CPDF_Font* pFont = pTextObj->GetFont();
+ if (!pFont)
+ return 0;
- FX_BOOL bIsLatin = FALSE;
+ FX_BOOL bIsLatin = FALSE;
- for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
- {
- FX_DWORD charcode = -1;
- FX_FLOAT kerning;
+ for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) {
+ FX_DWORD charcode = -1;
+ FX_FLOAT kerning;
- pTextObj->GetCharInfo(i, charcode, kerning);
- CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
+ pTextObj->GetCharInfo(i, charcode, kerning);
+ CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
- FX_WORD unicode = 0;
- if (swUnicode.GetLength() > 0)
- unicode = swUnicode[0];
+ FX_WORD unicode = 0;
+ if (swUnicode.GetLength() > 0)
+ unicode = swUnicode[0];
- if (ISLATINWORD(unicode) && bIsLatin)
- continue;
+ if (ISLATINWORD(unicode) && bIsLatin)
+ continue;
- bIsLatin = ISLATINWORD(unicode);
- if (unicode != 0x20)
- nWords++;
- }
+ bIsLatin = ISLATINWORD(unicode);
+ if (unicode != 0x20)
+ nWords++;
+ }
- return nWords;
+ return nWords;
}
-CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex)
-{
- ASSERT(pTextObj != NULL);
-
- CFX_WideString swRet;
+CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj,
+ int nWordIndex) {
+ ASSERT(pTextObj != NULL);
- CPDF_Font* pFont = pTextObj->GetFont();
- if (!pFont) return L"";
+ CFX_WideString swRet;
- int nWords = 0;
- FX_BOOL bIsLatin = FALSE;
+ CPDF_Font* pFont = pTextObj->GetFont();
+ if (!pFont)
+ return L"";
- for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
- {
- FX_DWORD charcode = -1;
- FX_FLOAT kerning;
+ int nWords = 0;
+ FX_BOOL bIsLatin = FALSE;
- pTextObj->GetCharInfo(i, charcode, kerning);
- CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
+ for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) {
+ FX_DWORD charcode = -1;
+ FX_FLOAT kerning;
- FX_WORD unicode = 0;
- if (swUnicode.GetLength() > 0)
- unicode = swUnicode[0];
+ pTextObj->GetCharInfo(i, charcode, kerning);
+ CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
- if (ISLATINWORD(unicode) && bIsLatin)
- {
- }
- else
- {
- bIsLatin = ISLATINWORD(unicode);
- if (unicode != 0x20)
- nWords++;
- }
+ FX_WORD unicode = 0;
+ if (swUnicode.GetLength() > 0)
+ unicode = swUnicode[0];
- if (nWords-1 == nWordIndex)
- swRet += unicode;
+ if (ISLATINWORD(unicode) && bIsLatin) {
+ } else {
+ bIsLatin = ISLATINWORD(unicode);
+ if (unicode != 0x20)
+ nWords++;
}
- return swRet;
-}
+ if (nWords - 1 == nWordIndex)
+ swRet += unicode;
+ }
-FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
+ return swRet;
+}
- return TRUE;
+FX_BOOL Document::zoom(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
/**
@@ -1748,94 +1757,97 @@ FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr
(refW, ReflowWidth)
*/
-FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Document::zoomType(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::deletePages(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, no supported.
return TRUE;
}
-FX_BOOL Document::extractPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::extractPages(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-FX_BOOL Document::insertPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::insertPages(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-FX_BOOL Document::replacePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::replacePages(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Document::getURL(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-void Document::AddDelayData(CJS_DelayData* pData)
-{
- m_DelayData.Add(pData);
+void Document::AddDelayData(CJS_DelayData* pData) {
+ m_DelayData.Add(pData);
}
-void Document::DoFieldDelay(const CFX_WideString& sFieldName, int nControlIndex)
-{
- CFX_DWordArray DelArray;
- CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex;
+void Document::DoFieldDelay(const CFX_WideString& sFieldName,
+ int nControlIndex) {
+ CFX_DWordArray DelArray;
+ CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex;
- for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++)
- {
- if (CJS_DelayData* pData = m_DelayData.GetAt(i))
- {
- if (pData->sFieldName == sFieldName && pData->nControlIndex == nControlIndex)
- {
- DelayDataForFieldAndControlIndex.Add(pData);
- m_DelayData.SetAt(i, NULL);
- DelArray.Add(i);
- }
- }
+ for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) {
+ if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
+ if (pData->sFieldName == sFieldName &&
+ pData->nControlIndex == nControlIndex) {
+ DelayDataForFieldAndControlIndex.Add(pData);
+ m_DelayData.SetAt(i, NULL);
+ DelArray.Add(i);
+ }
}
+ }
- for (int j=DelArray.GetSize()-1; j>=0; j--)
- {
- m_DelayData.RemoveAt(DelArray[j]);
- }
+ for (int j = DelArray.GetSize() - 1; j >= 0; j--) {
+ m_DelayData.RemoveAt(DelArray[j]);
+ }
- for (int i=0,sz=DelayDataForFieldAndControlIndex.GetSize(); i < sz; i++)
- {
- CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i);
- Field::DoDelay(m_pDocument, pData);
- DelayDataForFieldAndControlIndex.SetAt(i,NULL);
- delete pData;
- }
+ for (int i = 0, sz = DelayDataForFieldAndControlIndex.GetSize(); i < sz;
+ i++) {
+ CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i);
+ Field::DoDelay(m_pDocument, pData);
+ DelayDataForFieldAndControlIndex.SetAt(i, NULL);
+ delete pData;
+ }
}
-void Document::AddDelayAnnotData(CJS_AnnotObj *pData)
-{
- m_DelayAnnotData.Add(pData);
+void Document::AddDelayAnnotData(CJS_AnnotObj* pData) {
+ m_DelayAnnotData.Add(pData);
}
-void Document::DoAnnotDelay()
-{
- CFX_DWordArray DelArray;
+void Document::DoAnnotDelay() {
+ CFX_DWordArray DelArray;
- for (int j=DelArray.GetSize()-1; j>=0; j--)
- {
- m_DelayData.RemoveAt(DelArray[j]);
- }
+ for (int j = DelArray.GetSize() - 1; j >= 0; j--) {
+ m_DelayData.RemoveAt(DelArray[j]);
+ }
}
-CJS_Document* Document::GetCJSDoc() const
-{
- return static_cast<CJS_Document*>(m_pJSObject);
+CJS_Document* Document::GetCJSDoc() const {
+ return static_cast<CJS_Document*>(m_pJSObject);
}
diff --git a/fpdfsdk/src/javascript/Field.cpp b/fpdfsdk/src/javascript/Field.cpp
index 614843426e..c44636872b 100644
--- a/fpdfsdk/src/javascript/Field.cpp
+++ b/fpdfsdk/src/javascript/Field.cpp
@@ -18,3448 +18,3335 @@
#include "../../include/javascript/PublicMethods.h"
#include "../../include/javascript/Icon.h"
-
/* ---------------------- Field ---------------------- */
BEGIN_JS_STATIC_CONST(CJS_Field)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_Field)
- JS_STATIC_PROP_ENTRY(alignment)
- JS_STATIC_PROP_ENTRY(borderStyle)
- JS_STATIC_PROP_ENTRY(buttonAlignX)
- JS_STATIC_PROP_ENTRY(buttonAlignY)
- JS_STATIC_PROP_ENTRY(buttonFitBounds)
- JS_STATIC_PROP_ENTRY(buttonPosition)
- JS_STATIC_PROP_ENTRY(buttonScaleHow)
- JS_STATIC_PROP_ENTRY(buttonScaleWhen)
- JS_STATIC_PROP_ENTRY(calcOrderIndex)
- JS_STATIC_PROP_ENTRY(charLimit)
- JS_STATIC_PROP_ENTRY(comb)
- JS_STATIC_PROP_ENTRY(commitOnSelChange)
- JS_STATIC_PROP_ENTRY(currentValueIndices)
- JS_STATIC_PROP_ENTRY(defaultStyle)
- JS_STATIC_PROP_ENTRY(defaultValue)
- JS_STATIC_PROP_ENTRY(doNotScroll)
- JS_STATIC_PROP_ENTRY(doNotSpellCheck)
- JS_STATIC_PROP_ENTRY(delay)
- JS_STATIC_PROP_ENTRY(display)
- JS_STATIC_PROP_ENTRY(doc)
- JS_STATIC_PROP_ENTRY(editable)
- JS_STATIC_PROP_ENTRY(exportValues)
- JS_STATIC_PROP_ENTRY(hidden)
- JS_STATIC_PROP_ENTRY(fileSelect)
- JS_STATIC_PROP_ENTRY(fillColor)
- JS_STATIC_PROP_ENTRY(lineWidth)
- JS_STATIC_PROP_ENTRY(highlight)
- JS_STATIC_PROP_ENTRY(multiline)
- JS_STATIC_PROP_ENTRY(multipleSelection)
- JS_STATIC_PROP_ENTRY(name)
- JS_STATIC_PROP_ENTRY(numItems)
- JS_STATIC_PROP_ENTRY(page)
- JS_STATIC_PROP_ENTRY(password)
- JS_STATIC_PROP_ENTRY(print)
- JS_STATIC_PROP_ENTRY(radiosInUnison)
- JS_STATIC_PROP_ENTRY(readonly)
- JS_STATIC_PROP_ENTRY(rect)
- JS_STATIC_PROP_ENTRY(required)
- JS_STATIC_PROP_ENTRY(richText)
- JS_STATIC_PROP_ENTRY(richValue)
- JS_STATIC_PROP_ENTRY(rotation)
- JS_STATIC_PROP_ENTRY(strokeColor)
- JS_STATIC_PROP_ENTRY(style)
- JS_STATIC_PROP_ENTRY(submitName)
- JS_STATIC_PROP_ENTRY(textColor)
- JS_STATIC_PROP_ENTRY(textFont)
- JS_STATIC_PROP_ENTRY(textSize)
- JS_STATIC_PROP_ENTRY(type)
- JS_STATIC_PROP_ENTRY(userName)
- JS_STATIC_PROP_ENTRY(value)
- JS_STATIC_PROP_ENTRY(valueAsString)
- JS_STATIC_PROP_ENTRY(source)
+JS_STATIC_PROP_ENTRY(alignment)
+JS_STATIC_PROP_ENTRY(borderStyle)
+JS_STATIC_PROP_ENTRY(buttonAlignX)
+JS_STATIC_PROP_ENTRY(buttonAlignY)
+JS_STATIC_PROP_ENTRY(buttonFitBounds)
+JS_STATIC_PROP_ENTRY(buttonPosition)
+JS_STATIC_PROP_ENTRY(buttonScaleHow)
+JS_STATIC_PROP_ENTRY(buttonScaleWhen)
+JS_STATIC_PROP_ENTRY(calcOrderIndex)
+JS_STATIC_PROP_ENTRY(charLimit)
+JS_STATIC_PROP_ENTRY(comb)
+JS_STATIC_PROP_ENTRY(commitOnSelChange)
+JS_STATIC_PROP_ENTRY(currentValueIndices)
+JS_STATIC_PROP_ENTRY(defaultStyle)
+JS_STATIC_PROP_ENTRY(defaultValue)
+JS_STATIC_PROP_ENTRY(doNotScroll)
+JS_STATIC_PROP_ENTRY(doNotSpellCheck)
+JS_STATIC_PROP_ENTRY(delay)
+JS_STATIC_PROP_ENTRY(display)
+JS_STATIC_PROP_ENTRY(doc)
+JS_STATIC_PROP_ENTRY(editable)
+JS_STATIC_PROP_ENTRY(exportValues)
+JS_STATIC_PROP_ENTRY(hidden)
+JS_STATIC_PROP_ENTRY(fileSelect)
+JS_STATIC_PROP_ENTRY(fillColor)
+JS_STATIC_PROP_ENTRY(lineWidth)
+JS_STATIC_PROP_ENTRY(highlight)
+JS_STATIC_PROP_ENTRY(multiline)
+JS_STATIC_PROP_ENTRY(multipleSelection)
+JS_STATIC_PROP_ENTRY(name)
+JS_STATIC_PROP_ENTRY(numItems)
+JS_STATIC_PROP_ENTRY(page)
+JS_STATIC_PROP_ENTRY(password)
+JS_STATIC_PROP_ENTRY(print)
+JS_STATIC_PROP_ENTRY(radiosInUnison)
+JS_STATIC_PROP_ENTRY(readonly)
+JS_STATIC_PROP_ENTRY(rect)
+JS_STATIC_PROP_ENTRY(required)
+JS_STATIC_PROP_ENTRY(richText)
+JS_STATIC_PROP_ENTRY(richValue)
+JS_STATIC_PROP_ENTRY(rotation)
+JS_STATIC_PROP_ENTRY(strokeColor)
+JS_STATIC_PROP_ENTRY(style)
+JS_STATIC_PROP_ENTRY(submitName)
+JS_STATIC_PROP_ENTRY(textColor)
+JS_STATIC_PROP_ENTRY(textFont)
+JS_STATIC_PROP_ENTRY(textSize)
+JS_STATIC_PROP_ENTRY(type)
+JS_STATIC_PROP_ENTRY(userName)
+JS_STATIC_PROP_ENTRY(value)
+JS_STATIC_PROP_ENTRY(valueAsString)
+JS_STATIC_PROP_ENTRY(source)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Field)
- JS_STATIC_METHOD_ENTRY(browseForFileToSubmit)
- JS_STATIC_METHOD_ENTRY(buttonGetCaption)
- JS_STATIC_METHOD_ENTRY(buttonGetIcon)
- JS_STATIC_METHOD_ENTRY(buttonImportIcon)
- JS_STATIC_METHOD_ENTRY(buttonSetCaption)
- JS_STATIC_METHOD_ENTRY(buttonSetIcon)
- JS_STATIC_METHOD_ENTRY(checkThisBox)
- JS_STATIC_METHOD_ENTRY(clearItems)
- JS_STATIC_METHOD_ENTRY(defaultIsChecked)
- JS_STATIC_METHOD_ENTRY(deleteItemAt)
- JS_STATIC_METHOD_ENTRY(getArray )
- JS_STATIC_METHOD_ENTRY(getItemAt)
- JS_STATIC_METHOD_ENTRY(getLock)
- JS_STATIC_METHOD_ENTRY(insertItemAt)
- JS_STATIC_METHOD_ENTRY(isBoxChecked)
- JS_STATIC_METHOD_ENTRY(isDefaultChecked)
- JS_STATIC_METHOD_ENTRY(setAction)
- JS_STATIC_METHOD_ENTRY(setFocus)
- JS_STATIC_METHOD_ENTRY(setItems)
- JS_STATIC_METHOD_ENTRY(setLock)
- JS_STATIC_METHOD_ENTRY(signatureGetModifications)
- JS_STATIC_METHOD_ENTRY(signatureGetSeedValue)
- JS_STATIC_METHOD_ENTRY(signatureInfo)
- JS_STATIC_METHOD_ENTRY(signatureSetSeedValue)
- JS_STATIC_METHOD_ENTRY(signatureSign)
- JS_STATIC_METHOD_ENTRY(signatureValidate)
+JS_STATIC_METHOD_ENTRY(browseForFileToSubmit)
+JS_STATIC_METHOD_ENTRY(buttonGetCaption)
+JS_STATIC_METHOD_ENTRY(buttonGetIcon)
+JS_STATIC_METHOD_ENTRY(buttonImportIcon)
+JS_STATIC_METHOD_ENTRY(buttonSetCaption)
+JS_STATIC_METHOD_ENTRY(buttonSetIcon)
+JS_STATIC_METHOD_ENTRY(checkThisBox)
+JS_STATIC_METHOD_ENTRY(clearItems)
+JS_STATIC_METHOD_ENTRY(defaultIsChecked)
+JS_STATIC_METHOD_ENTRY(deleteItemAt)
+JS_STATIC_METHOD_ENTRY(getArray)
+JS_STATIC_METHOD_ENTRY(getItemAt)
+JS_STATIC_METHOD_ENTRY(getLock)
+JS_STATIC_METHOD_ENTRY(insertItemAt)
+JS_STATIC_METHOD_ENTRY(isBoxChecked)
+JS_STATIC_METHOD_ENTRY(isDefaultChecked)
+JS_STATIC_METHOD_ENTRY(setAction)
+JS_STATIC_METHOD_ENTRY(setFocus)
+JS_STATIC_METHOD_ENTRY(setItems)
+JS_STATIC_METHOD_ENTRY(setLock)
+JS_STATIC_METHOD_ENTRY(signatureGetModifications)
+JS_STATIC_METHOD_ENTRY(signatureGetSeedValue)
+JS_STATIC_METHOD_ENTRY(signatureInfo)
+JS_STATIC_METHOD_ENTRY(signatureSetSeedValue)
+JS_STATIC_METHOD_ENTRY(signatureSign)
+JS_STATIC_METHOD_ENTRY(signatureValidate)
END_JS_STATIC_METHOD()
IMPLEMENT_JS_CLASS(CJS_Field, Field)
-FX_BOOL CJS_Field::InitInstance(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
+FX_BOOL CJS_Field::InitInstance(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- Field* pField = (Field*)GetEmbedObject();
- ASSERT(pField != NULL);
+ Field* pField = (Field*)GetEmbedObject();
+ ASSERT(pField != NULL);
- pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
+ pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
- return TRUE;
+ return TRUE;
};
-Field::Field(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject),
- m_pJSDoc(NULL),
- m_pDocument(NULL),
- m_nFormControlIndex(-1),
- m_bCanSet(FALSE),
- m_bDelay(FALSE),
- m_isolate(NULL)
-{
-}
+Field::Field(CJS_Object* pJSObject)
+ : CJS_EmbedObj(pJSObject),
+ m_pJSDoc(NULL),
+ m_pDocument(NULL),
+ m_nFormControlIndex(-1),
+ m_bCanSet(FALSE),
+ m_bDelay(FALSE),
+ m_isolate(NULL) {}
-Field::~Field()
-{
-}
+Field::~Field() {}
-//note: iControlNo = -1, means not a widget.
-void Field::ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo)
-{
- int iStart = strFieldNameParsed.find_last_of(L'.');
- if (iStart == -1)
- {
- strFieldName = strFieldNameParsed;
- iControlNo = -1;
- return;
+// note: iControlNo = -1, means not a widget.
+void Field::ParseFieldName(const std::wstring& strFieldNameParsed,
+ std::wstring& strFieldName,
+ int& iControlNo) {
+ int iStart = strFieldNameParsed.find_last_of(L'.');
+ if (iStart == -1) {
+ strFieldName = strFieldNameParsed;
+ iControlNo = -1;
+ return;
+ }
+ std::wstring suffixal = strFieldNameParsed.substr(iStart + 1);
+ iControlNo = FXSYS_wtoi(suffixal.c_str());
+ if (iControlNo == 0) {
+ int iStart;
+ while ((iStart = suffixal.find_last_of(L" ")) != -1) {
+ suffixal.erase(iStart, 1);
}
- std::wstring suffixal = strFieldNameParsed.substr(iStart+1);
- iControlNo = FXSYS_wtoi(suffixal.c_str());
- if (iControlNo == 0)
- {
- int iStart;
- while((iStart = suffixal.find_last_of(L" ")) != -1)
- {
- suffixal.erase(iStart,1);
- }
-
- if (suffixal.compare(L"0") != 0)
- {
- strFieldName = strFieldNameParsed;
- iControlNo = -1;
- return;
- }
+ if (suffixal.compare(L"0") != 0) {
+ strFieldName = strFieldNameParsed;
+ iControlNo = -1;
+ return;
}
- strFieldName = strFieldNameParsed.substr(0,iStart);
+ }
+ strFieldName = strFieldNameParsed.substr(0, iStart);
}
-FX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldName)
-{
- ASSERT(pDocument != NULL);
- m_pJSDoc = pDocument;
+FX_BOOL Field::AttachField(Document* pDocument,
+ const CFX_WideString& csFieldName) {
+ ASSERT(pDocument != NULL);
+ m_pJSDoc = pDocument;
- m_pDocument = pDocument->GetReaderDoc();
- ASSERT(m_pDocument != NULL);
+ m_pDocument = pDocument->GetReaderDoc();
+ ASSERT(m_pDocument != NULL);
- m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
- m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
- m_pDocument->GetPermissions(FPDFPERM_MODIFY);
+ m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
+ m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
+ m_pDocument->GetPermissions(FPDFPERM_MODIFY);
- CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
- ASSERT(pRDInterForm != NULL);
+ CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
+ ASSERT(pRDInterForm != NULL);
- CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_WideString swFieldNameTemp = csFieldName;
- swFieldNameTemp.Replace(L"..", L".");
+ CFX_WideString swFieldNameTemp = csFieldName;
+ swFieldNameTemp.Replace(L"..", L".");
- if (pInterForm->CountFields(swFieldNameTemp) <= 0)
- {
- std::wstring strFieldName;
- int iControlNo = -1;
- ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
- if (iControlNo == -1) return FALSE;
+ if (pInterForm->CountFields(swFieldNameTemp) <= 0) {
+ std::wstring strFieldName;
+ int iControlNo = -1;
+ ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
+ if (iControlNo == -1)
+ return FALSE;
- m_FieldName = strFieldName.c_str();
- m_nFormControlIndex = iControlNo;
- return TRUE;
- }
+ m_FieldName = strFieldName.c_str();
+ m_nFormControlIndex = iControlNo;
+ return TRUE;
+ }
- m_FieldName = swFieldNameTemp;
- m_nFormControlIndex = -1;
+ m_FieldName = swFieldNameTemp;
+ m_nFormControlIndex = -1;
- return TRUE;
+ return TRUE;
}
-void Field::GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
-{
- ASSERT(pDocument != NULL);
+void Field::GetFormFields(CPDFSDK_Document* pDocument,
+ const CFX_WideString& csFieldName,
+ CFX_PtrArray& FieldArray) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
- ASSERT(pReaderInterForm != NULL);
+ CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
+ ASSERT(pReaderInterForm != NULL);
- CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
+ ASSERT(pInterForm != NULL);
- ASSERT(FieldArray.GetSize() == 0);
+ ASSERT(FieldArray.GetSize() == 0);
- for (int i=0,sz=pInterForm->CountFields(csFieldName); i<sz; i++)
- {
- if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
- FieldArray.Add((void*)pFormField);
- }
+ for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; i++) {
+ if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
+ FieldArray.Add((void*)pFormField);
+ }
}
-void Field::GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
-{
- ASSERT(m_pDocument != NULL);
+void Field::GetFormFields(const CFX_WideString& csFieldName,
+ CFX_PtrArray& FieldArray) {
+ ASSERT(m_pDocument != NULL);
- Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
+ Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
}
-void Field::UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
- FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
-{
- ASSERT(pDocument != NULL);
- ASSERT(pFormField != NULL);
+void Field::UpdateFormField(CPDFSDK_Document* pDocument,
+ CPDF_FormField* pFormField,
+ FX_BOOL bChangeMark,
+ FX_BOOL bResetAP,
+ FX_BOOL bRefresh) {
+ ASSERT(pDocument != NULL);
+ ASSERT(pFormField != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_PtrArray widgets;
- pInterForm->GetWidgets(pFormField, widgets);
+ CFX_PtrArray widgets;
+ pInterForm->GetWidgets(pFormField, widgets);
- if (bResetAP)
- {
- int nFieldType = pFormField->GetFieldType();
- if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
- {
- for (int i=0,sz=widgets.GetSize(); i<sz; i++)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
- ASSERT(pWidget != NULL);
-
- FX_BOOL bFormated = FALSE;
- CFX_WideString sValue = pWidget->OnFormat(bFormated);
- if (bFormated)
- pWidget->ResetAppearance(sValue.c_str(), FALSE);
- else
- pWidget->ResetAppearance(NULL, FALSE);
- }
- }
+ if (bResetAP) {
+ int nFieldType = pFormField->GetFieldType();
+ if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) {
+ for (int i = 0, sz = widgets.GetSize(); i < sz; i++) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
+ ASSERT(pWidget != NULL);
+
+ FX_BOOL bFormated = FALSE;
+ CFX_WideString sValue = pWidget->OnFormat(bFormated);
+ if (bFormated)
+ pWidget->ResetAppearance(sValue.c_str(), FALSE);
else
- {
- for (int i=0,sz=widgets.GetSize(); i<sz; i++)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
- ASSERT(pWidget != NULL);
+ pWidget->ResetAppearance(NULL, FALSE);
+ }
+ } else {
+ for (int i = 0, sz = widgets.GetSize(); i < sz; i++) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
+ ASSERT(pWidget != NULL);
- pWidget->ResetAppearance(NULL, FALSE);
- }
- }
+ pWidget->ResetAppearance(NULL, FALSE);
+ }
}
+ }
- if (bRefresh)
- {
- for (int i=0,sz=widgets.GetSize(); i<sz; i++)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
- ASSERT(pWidget != NULL);
-
- CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
- CPDFSDK_Document* pDoc = pInterForm->GetDocument();
-// CReader_Page* pPage = pWidget->GetPage();
- ASSERT(pDoc != NULL);
- pDoc->UpdateAllViews(NULL, pWidget);
- }
+ if (bRefresh) {
+ for (int i = 0, sz = widgets.GetSize(); i < sz; i++) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
+ ASSERT(pWidget != NULL);
+
+ CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
+ CPDFSDK_Document* pDoc = pInterForm->GetDocument();
+ // CReader_Page* pPage = pWidget->GetPage();
+ ASSERT(pDoc != NULL);
+ pDoc->UpdateAllViews(NULL, pWidget);
}
+ }
- if (bChangeMark)
- pDocument->SetChangeMark();
+ if (bChangeMark)
+ pDocument->SetChangeMark();
}
-void Field::UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl,
- FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
-{
- ASSERT(pDocument != NULL);
- ASSERT(pFormControl != NULL);
-
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+void Field::UpdateFormControl(CPDFSDK_Document* pDocument,
+ CPDF_FormControl* pFormControl,
+ FX_BOOL bChangeMark,
+ FX_BOOL bResetAP,
+ FX_BOOL bRefresh) {
+ ASSERT(pDocument != NULL);
+ ASSERT(pFormControl != NULL);
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (pWidget)
- {
- if (bResetAP)
- {
- int nFieldType = pWidget->GetFieldType();
- if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
- {
- FX_BOOL bFormated = FALSE;
- CFX_WideString sValue = pWidget->OnFormat(bFormated);
- if (bFormated)
- pWidget->ResetAppearance(sValue.c_str(), FALSE);
- else
- pWidget->ResetAppearance(NULL, FALSE);
- }
- else
- {
- pWidget->ResetAppearance(NULL, FALSE);
- }
- }
+ CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
- if (bRefresh)
- {
- CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
- CPDFSDK_Document* pDoc = pInterForm->GetDocument();
- ASSERT(pDoc != NULL);
- pDoc->UpdateAllViews(NULL, pWidget);
- }
+ if (pWidget) {
+ if (bResetAP) {
+ int nFieldType = pWidget->GetFieldType();
+ if (nFieldType == FIELDTYPE_COMBOBOX ||
+ nFieldType == FIELDTYPE_TEXTFIELD) {
+ FX_BOOL bFormated = FALSE;
+ CFX_WideString sValue = pWidget->OnFormat(bFormated);
+ if (bFormated)
+ pWidget->ResetAppearance(sValue.c_str(), FALSE);
+ else
+ pWidget->ResetAppearance(NULL, FALSE);
+ } else {
+ pWidget->ResetAppearance(NULL, FALSE);
+ }
+ }
+ if (bRefresh) {
+ CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
+ CPDFSDK_Document* pDoc = pInterForm->GetDocument();
+ ASSERT(pDoc != NULL);
+ pDoc->UpdateAllViews(NULL, pWidget);
}
+ }
- if (bChangeMark)
- pDocument->SetChangeMark();
+ if (bChangeMark)
+ pDocument->SetChangeMark();
}
-CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl)
-{
- ASSERT(pDocument != NULL);
- ASSERT(pFormControl != NULL);
+CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument,
+ CPDF_FormControl* pFormControl) {
+ ASSERT(pDocument != NULL);
+ ASSERT(pFormControl != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- return pInterForm->GetWidget(pFormControl);
+ return pInterForm->GetWidget(pFormControl);
}
-FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel)
-{
- ASSERT(pFormField != NULL);
+FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField,
+ CFX_WideString csOptLabel) {
+ ASSERT(pFormField != NULL);
- for (int i=0,sz = pFormField->CountOptions(); i < sz; i++)
- {
- if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
- return TRUE;
- }
+ for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) {
+ if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField)
-{
- if (!pFormField->CountControls() || m_nFormControlIndex >= pFormField->CountControls())
- return NULL;
+CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField) {
+ if (!pFormField->CountControls() ||
+ m_nFormControlIndex >= pFormField->CountControls())
+ return NULL;
- if (m_nFormControlIndex < 0)
- return pFormField->GetControl(0);
+ if (m_nFormControlIndex < 0)
+ return pFormField->GetControl(0);
- return pFormField->GetControl(m_nFormControlIndex);
+ return pFormField->GetControl(m_nFormControlIndex);
}
-/* ---------------------------------------- property ---------------------------------------- */
+/* ---------------------------------------- property
+ * ---------------------------------------- */
-FX_BOOL Field::alignment(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::alignment(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_ByteString alignStr;
- vp >> alignStr;
+ CFX_ByteString alignStr;
+ vp >> alignStr;
- if (m_bDelay)
- {
- AddDelay_String(FP_ALIGNMENT, alignStr);
- }
- else
- {
- Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, alignStr);
- }
+ if (m_bDelay) {
+ AddDelay_String(FP_ALIGNMENT, alignStr);
+ } else {
+ Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex,
+ alignStr);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- switch (pFormControl->GetControlAlignment())
- {
- case 1:
- vp << L"center";
- break;
- case 0:
- vp << L"left";
- break;
- case 2:
- vp << L"right";
- break;
- default:
- vp << L"";
- }
+ switch (pFormControl->GetControlAlignment()) {
+ case 1:
+ vp << L"center";
+ break;
+ case 0:
+ vp << L"left";
+ break;
+ case 2:
+ vp << L"right";
+ break;
+ default:
+ vp << L"";
}
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
- const CFX_ByteString& string)
-{
- //Not supported.
+void Field::SetAlignment(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_ByteString& string) {
+ // Not supported.
}
-FX_BOOL Field::borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::borderStyle(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_ByteString strType = "";
- vp >> strType;
+ CFX_ByteString strType = "";
+ vp >> strType;
- if (m_bDelay)
- {
- AddDelay_String(FP_BORDERSTYLE, strType);
- }
- else
- {
- Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, strType);
- }
+ if (m_bDelay) {
+ AddDelay_String(FP_BORDERSTYLE, strType);
+ } else {
+ Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex,
+ strType);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- if (!pFormField) return FALSE;
-
- CPDFSDK_Widget* pWidget = GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
- if (!pWidget) return FALSE;
-
- int nBorderstyle = pWidget->GetBorderStyle();
-
- switch (nBorderstyle)
- {
- case BBS_SOLID:
- vp << L"solid";
- break;
- case BBS_DASH:
- vp << L"dashed";
- break;
- case BBS_BEVELED:
- vp << L"beveled";
- break;
- case BBS_INSET:
- vp << L"inset";
- break;
- case BBS_UNDERLINE:
- vp << L"underline";
- break;
- default:
- vp << L"";
- break;
- }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
+
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ if (!pFormField)
+ return FALSE;
+
+ CPDFSDK_Widget* pWidget =
+ GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
+ if (!pWidget)
+ return FALSE;
+
+ int nBorderstyle = pWidget->GetBorderStyle();
+
+ switch (nBorderstyle) {
+ case BBS_SOLID:
+ vp << L"solid";
+ break;
+ case BBS_DASH:
+ vp << L"dashed";
+ break;
+ case BBS_BEVELED:
+ vp << L"beveled";
+ break;
+ case BBS_INSET:
+ vp << L"inset";
+ break;
+ case BBS_UNDERLINE:
+ vp << L"underline";
+ break;
+ default:
+ vp << L"";
+ break;
}
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
- const CFX_ByteString& string)
-{
- ASSERT(pDocument != NULL);
+void Field::SetBorderStyle(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_ByteString& string) {
+ ASSERT(pDocument != NULL);
- int nBorderStyle = 0;
+ int nBorderStyle = 0;
- if (string == "solid")
- nBorderStyle = BBS_SOLID;
- else if (string == "beveled")
- nBorderStyle = BBS_BEVELED;
- else if (string == "dashed")
- nBorderStyle = BBS_DASH;
- else if (string == "inset")
- nBorderStyle = BBS_INSET;
- else if (string == "underline")
- nBorderStyle = BBS_UNDERLINE;
- else return;
+ if (string == "solid")
+ nBorderStyle = BBS_SOLID;
+ else if (string == "beveled")
+ nBorderStyle = BBS_BEVELED;
+ else if (string == "dashed")
+ nBorderStyle = BBS_DASH;
+ else if (string == "inset")
+ nBorderStyle = BBS_INSET;
+ else if (string == "underline")
+ nBorderStyle = BBS_UNDERLINE;
+ else
+ return;
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (nControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
- {
- if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormField->GetControl(j)))
- {
- if (pWidget->GetBorderStyle() != nBorderStyle)
- {
- pWidget->SetBorderStyle(nBorderStyle);
- bSet = TRUE;
- }
- }
- }
- if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
- }
- else
- {
- if(nControlIndex >= pFormField->CountControls()) return;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl))
- {
- if (pWidget->GetBorderStyle() != nBorderStyle)
- {
- pWidget->SetBorderStyle(nBorderStyle);
- UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
- }
- }
- }
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
+
+ if (nControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) {
+ if (CPDFSDK_Widget* pWidget =
+ GetWidget(pDocument, pFormField->GetControl(j))) {
+ if (pWidget->GetBorderStyle() != nBorderStyle) {
+ pWidget->SetBorderStyle(nBorderStyle);
+ bSet = TRUE;
+ }
+ }
+ }
+ if (bSet)
+ UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+ } else {
+ if (nControlIndex >= pFormField->CountControls())
+ return;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(nControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl)) {
+ if (pWidget->GetBorderStyle() != nBorderStyle) {
+ pWidget->SetBorderStyle(nBorderStyle);
+ UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
+ }
}
+ }
}
+ }
}
-FX_BOOL Field::buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonAlignX(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_BUTTONALIGNX, nVP);
- }
- else
- {
- Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_BUTTONALIGNX, nVP);
+ } else {
+ Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDF_IconFit IconFit = pFormControl->GetIconFit();
+ CPDF_IconFit IconFit = pFormControl->GetIconFit();
- FX_FLOAT fLeft,fBottom;
- IconFit.GetIconPosition(fLeft,fBottom);
+ FX_FLOAT fLeft, fBottom;
+ IconFit.GetIconPosition(fLeft, fBottom);
- vp << (int32_t)fLeft;
- }
+ vp << (int32_t)fLeft;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetButtonAlignX(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonAlignY(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_BUTTONALIGNY, nVP);
- }
- else
- {
- Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_BUTTONALIGNY, nVP);
+ } else {
+ Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDF_IconFit IconFit = pFormControl->GetIconFit();
+ CPDF_IconFit IconFit = pFormControl->GetIconFit();
- FX_FLOAT fLeft,fBottom;
- IconFit.GetIconPosition(fLeft,fBottom);
+ FX_FLOAT fLeft, fBottom;
+ IconFit.GetIconPosition(fLeft, fBottom);
- vp << (int32_t)fBottom;
- }
+ vp << (int32_t)fBottom;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetButtonAlignY(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonFitBounds(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
- }
- else
- {
- Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
+ } else {
+ Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex,
+ bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDF_IconFit IconFit = pFormControl->GetIconFit();
- vp << IconFit.GetFittingBounds();
- }
+ CPDF_IconFit IconFit = pFormControl->GetIconFit();
+ vp << IconFit.GetFittingBounds();
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonPosition(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_BUTTONPOSITION, nVP);
- }
- else
- {
- Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_BUTTONPOSITION, nVP);
+ } else {
+ Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- vp << pFormControl->GetTextPosition();
- }
- return TRUE;
+ vp << pFormControl->GetTextPosition();
+ }
+ return TRUE;
}
-void Field::SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetButtonPosition(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonScaleHow(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
- }
- else
- {
- Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
+ } else {
+ Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDF_IconFit IconFit = pFormControl->GetIconFit();
- if (IconFit.IsProportionalScale())
- vp << (int32_t)0;
- else
- vp << (int32_t)1;
- }
+ CPDF_IconFit IconFit = pFormControl->GetIconFit();
+ if (IconFit.IsProportionalScale())
+ vp << (int32_t)0;
+ else
+ vp << (int32_t)1;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonScaleWhen(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
- }
- else
- {
- Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
+ } else {
+ Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*) FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
-
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl) return FALSE;
-
- CPDF_IconFit IconFit = pFormControl->GetIconFit();
- int ScaleM = IconFit.GetScaleMethod();
- switch (ScaleM)
- {
- case CPDF_IconFit::Always :
- vp << (int32_t) CPDF_IconFit::Always;
- break;
- case CPDF_IconFit::Bigger :
- vp << (int32_t) CPDF_IconFit::Bigger;
- break;
- case CPDF_IconFit::Never :
- vp << (int32_t) CPDF_IconFit::Never;
- break;
- case CPDF_IconFit::Smaller :
- vp << (int32_t) CPDF_IconFit::Smaller;
- break;
- }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
+
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
+
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
+
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
+
+ CPDF_IconFit IconFit = pFormControl->GetIconFit();
+ int ScaleM = IconFit.GetScaleMethod();
+ switch (ScaleM) {
+ case CPDF_IconFit::Always:
+ vp << (int32_t)CPDF_IconFit::Always;
+ break;
+ case CPDF_IconFit::Bigger:
+ vp << (int32_t)CPDF_IconFit::Bigger;
+ break;
+ case CPDF_IconFit::Never:
+ vp << (int32_t)CPDF_IconFit::Never;
+ break;
+ case CPDF_IconFit::Smaller:
+ vp << (int32_t)CPDF_IconFit::Smaller;
+ break;
}
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::calcOrderIndex(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_CALCORDERINDEX, nVP);
- }
- else
- {
- Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_CALCORDERINDEX, nVP);
+ } else {
+ Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex,
+ nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
- ASSERT(pRDInterForm != NULL);
+ CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
+ ASSERT(pRDInterForm != NULL);
- CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
+ ASSERT(pInterForm != NULL);
- vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
- }
+ vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::charLimit(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::charLimit(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_CHARLIMIT, nVP);
- }
- else
- {
- Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_CHARLIMIT, nVP);
+ } else {
+ Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- vp << (int32_t)pFormField->GetMaxLen();
- }
- return TRUE;
+ vp << (int32_t)pFormField->GetMaxLen();
+ }
+ return TRUE;
}
-void Field::SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetCharLimit(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::comb(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::comb(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_COMB, bVP);
- }
- else
- {
- Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_COMB, bVP);
+ } else {
+ Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetComb(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::commitOnSelChange(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
- }
- else
- {
- Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
+ } else {
+ Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex,
+ bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::currentValueIndices(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_DWordArray array;
+ CFX_DWordArray array;
- if (vp.GetType() == VT_number)
- {
- int iSelecting = 0;
- vp >> iSelecting;
- array.Add(iSelecting);
- }
- else if (vp.IsArrayObject())
- {
- CJS_Array SelArray(m_isolate);
- CJS_Value SelValue(m_isolate);
- int iSelecting;
- vp >> SelArray;
- for (int i=0,sz=SelArray.GetLength(); i<sz; i++)
- {
- SelArray.GetElement(i,SelValue);
- iSelecting = SelValue.ToInt();
- array.Add(iSelecting);
- }
- }
-
- if (m_bDelay)
- {
- AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
- }
- else
- {
- Field::SetCurrentValueIndices(m_pDocument, m_FieldName, m_nFormControlIndex, array);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
- return FALSE;
-
- if (pFormField->CountSelectedItems() == 1)
- vp << pFormField->GetSelectedIndex(0);
- else if (pFormField->CountSelectedItems() > 1)
- {
- CJS_Array SelArray(m_isolate);
- for (int i=0,sz=pFormField->CountSelectedItems(); i<sz; i++)
- {
- SelArray.SetElement(i, CJS_Value(m_isolate,pFormField->GetSelectedIndex(i)));
- }
- vp << SelArray;
- }
- else
- vp << -1;
+ if (vp.GetType() == VT_number) {
+ int iSelecting = 0;
+ vp >> iSelecting;
+ array.Add(iSelecting);
+ } else if (vp.IsArrayObject()) {
+ CJS_Array SelArray(m_isolate);
+ CJS_Value SelValue(m_isolate);
+ int iSelecting;
+ vp >> SelArray;
+ for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) {
+ SelArray.GetElement(i, SelValue);
+ iSelecting = SelValue.ToInt();
+ array.Add(iSelecting);
+ }
}
- return TRUE;
-}
+ if (m_bDelay) {
+ AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
+ } else {
+ Field::SetCurrentValueIndices(m_pDocument, m_FieldName,
+ m_nFormControlIndex, array);
+ }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
-void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
- const CFX_DWordArray& array)
-{
- ASSERT(pDocument != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
+ return FALSE;
+
+ if (pFormField->CountSelectedItems() == 1)
+ vp << pFormField->GetSelectedIndex(0);
+ else if (pFormField->CountSelectedItems() > 1) {
+ CJS_Array SelArray(m_isolate);
+ for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) {
+ SelArray.SetElement(
+ i, CJS_Value(m_isolate, pFormField->GetSelectedIndex(i)));
+ }
+ vp << SelArray;
+ } else
+ vp << -1;
+ }
+
+ return TRUE;
+}
+
+void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_DWordArray& array) {
+ ASSERT(pDocument != NULL);
+
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
+
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- int nFieldType = pFormField->GetFieldType();
- if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX)
- {
- FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
- pFormField->ClearSelection(TRUE);
-
- for (int i=0,sz=array.GetSize(); i<sz; i++)
- {
- if (i>0 && !(dwFieldFlags & (1<<21)))
- {
- break;
- }
-
- int iSelecting = (int32_t)array.GetAt(i);
- if (iSelecting < pFormField->CountOptions() && !pFormField->IsItemSelected(iSelecting))
- pFormField->SetItemSelection(iSelecting, TRUE);
+ int nFieldType = pFormField->GetFieldType();
+ if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) {
+ FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
+ pFormField->ClearSelection(TRUE);
- }
- UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+ for (int i = 0, sz = array.GetSize(); i < sz; i++) {
+ if (i > 0 && !(dwFieldFlags & (1 << 21))) {
+ break;
}
+
+ int iSelecting = (int32_t)array.GetAt(i);
+ if (iSelecting < pFormField->CountOptions() &&
+ !pFormField->IsItemSelected(iSelecting))
+ pFormField->SetItemSelection(iSelecting, TRUE);
+ }
+ UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
}
+ }
}
-FX_BOOL Field::defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
- return FALSE;
+FX_BOOL Field::defaultStyle(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
+ return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- ;
- }
- else
- {
- ;
- }
- return TRUE;
+ ;
+ } else {
+ ;
+ }
+ return TRUE;
}
-void Field::SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
-{
- //Not supported.
+void Field::SetDefaultStyle(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex) {
+ // Not supported.
}
-FX_BOOL Field::defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::defaultValue(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_WideString WideStr;
- vp >> WideStr;
+ CFX_WideString WideStr;
+ vp >> WideStr;
- if (m_bDelay)
- {
- AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
- }
- else
- {
- Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, WideStr);
- }
+ if (m_bDelay) {
+ AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
+ } else {
+ Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex,
+ WideStr);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
- pFormField->GetFieldType() == FIELDTYPE_SIGNATURE)
- return FALSE;
+ if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
+ pFormField->GetFieldType() == FIELDTYPE_SIGNATURE)
+ return FALSE;
- vp << pFormField->GetDefaultValue();
- }
- return TRUE;
+ vp << pFormField->GetDefaultValue();
+ }
+ return TRUE;
}
-void Field::SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
- const CFX_WideString& string)
-{
- //Not supported.
+void Field::SetDefaultValue(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_WideString& string) {
+ // Not supported.
}
-FX_BOOL Field::doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::doNotScroll(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_DONOTSCROLL, bVP);
- }
- else
- {
- Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_DONOTSCROLL, bVP);
+ } else {
+ Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetDoNotScroll(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::doNotSpellCheck(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ bool bVP;
+ vp >> bVP;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
- pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
+ pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetDelay(FX_BOOL bDelay)
-{
- m_bDelay = bDelay;
+void Field::SetDelay(FX_BOOL bDelay) {
+ m_bDelay = bDelay;
- if (!m_bDelay)
- {
- if (m_pJSDoc)
- m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex);
- }
+ if (!m_bDelay) {
+ if (m_pJSDoc)
+ m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex);
+ }
}
-FX_BOOL Field::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+FX_BOOL Field::delay(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- SetDelay(bVP);
- }
- else
- {
- vp << m_bDelay;
- }
- return TRUE;
+ SetDelay(bVP);
+ } else {
+ vp << m_bDelay;
+ }
+ return TRUE;
}
-FX_BOOL Field::display(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::display(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_DISPLAY, nVP);
- }
- else
- {
- Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
-
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
- if (!pWidget)return FALSE;
-
- FX_DWORD dwFlag = pWidget->GetFlags();
-
- if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag)
- {
- vp << (int32_t)1;
- }
- else
- {
- if (ANNOTFLAG_PRINT & dwFlag)
- {
- if (ANNOTFLAG_NOVIEW & dwFlag)
- {
- vp << (int32_t)3;
- }
- else
- {
- vp << (int32_t)0;
- }
- }
- else
- {
- vp << (int32_t)2;
- }
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_DISPLAY, nVP);
+ } else {
+ Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
}
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- return TRUE;
-}
-
-void Field::SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- ASSERT(pDocument != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
ASSERT(pInterForm != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(GetSmartFieldControl(pFormField));
+ if (!pWidget)
+ return FALSE;
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (nControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
- {
- CPDF_FormControl* pFormControl = pFormField->GetControl(j);
- ASSERT(pFormControl != NULL);
-
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- FX_DWORD dwFlag = pWidget->GetFlags();
- switch (number)
- {
- case 0:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- dwFlag |= ANNOTFLAG_PRINT;
- break;
- case 1:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
- break;
- case 2:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_PRINT);
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- break;
- case 3:
- dwFlag |= ANNOTFLAG_NOVIEW;
- dwFlag |= ANNOTFLAG_PRINT;
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- break;
- }
-
- if (dwFlag != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlag);
- bSet = TRUE;
- }
- }
- }
+ FX_DWORD dwFlag = pWidget->GetFlags();
- if (bSet) UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
- }
- else
- {
- if(nControlIndex >= pFormField->CountControls()) return;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
-
- FX_DWORD dwFlag = pWidget->GetFlags();
- switch (number)
- {
- case 0:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- dwFlag |= ANNOTFLAG_PRINT;
- break;
- case 1:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
- break;
- case 2:
- dwFlag &= (~ANNOTFLAG_INVISIBLE);
- dwFlag &= (~ANNOTFLAG_PRINT);
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- dwFlag &= (~ANNOTFLAG_NOVIEW);
- break;
- case 3:
- dwFlag |= ANNOTFLAG_NOVIEW;
- dwFlag |= ANNOTFLAG_PRINT;
- dwFlag &= (~ANNOTFLAG_HIDDEN);
- break;
- }
- if (dwFlag != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlag);
- UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
- }
- }
- }
+ if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) {
+ vp << (int32_t)1;
+ } else {
+ if (ANNOTFLAG_PRINT & dwFlag) {
+ if (ANNOTFLAG_NOVIEW & dwFlag) {
+ vp << (int32_t)3;
+ } else {
+ vp << (int32_t)0;
}
+ } else {
+ vp << (int32_t)2;
+ }
}
-}
+ }
-FX_BOOL Field::doc(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting()) {
- return FALSE;
- }
- vp << m_pJSDoc->GetCJSDoc();
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::editable(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
-
- bool bVP;
- vp >> bVP;
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+void Field::SetDisplay(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ ASSERT(pDocument != NULL);
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
- return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
- vp << true;
- else
- vp << false;
- }
-
- return TRUE;
-}
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
-FX_BOOL Field::exportValues(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+ if (nControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) {
+ CPDF_FormControl* pFormControl = pFormField->GetControl(j);
+ ASSERT(pFormControl != NULL);
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ FX_DWORD dwFlag = pWidget->GetFlags();
+ switch (number) {
+ case 0:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ dwFlag |= ANNOTFLAG_PRINT;
+ break;
+ case 1:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
+ break;
+ case 2:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_PRINT);
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ break;
+ case 3:
+ dwFlag |= ANNOTFLAG_NOVIEW;
+ dwFlag |= ANNOTFLAG_PRINT;
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ break;
+ }
+
+ if (dwFlag != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlag);
+ bSet = TRUE;
+ }
+ }
+ }
+
+ if (bSet)
+ UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+ } else {
+ if (nControlIndex >= pFormField->CountControls())
+ return;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(nControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ FX_DWORD dwFlag = pWidget->GetFlags();
+ switch (number) {
+ case 0:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ dwFlag |= ANNOTFLAG_PRINT;
+ break;
+ case 1:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
+ break;
+ case 2:
+ dwFlag &= (~ANNOTFLAG_INVISIBLE);
+ dwFlag &= (~ANNOTFLAG_PRINT);
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ dwFlag &= (~ANNOTFLAG_NOVIEW);
+ break;
+ case 3:
+ dwFlag |= ANNOTFLAG_NOVIEW;
+ dwFlag |= ANNOTFLAG_PRINT;
+ dwFlag &= (~ANNOTFLAG_HIDDEN);
+ break;
+ }
+ if (dwFlag != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlag);
+ UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
+ }
+ }
+ }
+ }
+ }
+}
+
+FX_BOOL Field::doc(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting()) {
+ return FALSE;
+ }
+ vp << m_pJSDoc->GetCJSDoc();
+ return TRUE;
+}
+
+FX_BOOL Field::editable(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ bool bVP;
+ vp >> bVP;
+ } else {
CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
+ GetFormFields(m_FieldName, FieldArray);
if (FieldArray.GetSize() <= 0)
- return FALSE;
+ return FALSE;
CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
- pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
- return FALSE;
+ ASSERT(pFormField != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
+ return FALSE;
- if (!vp.IsArrayObject())
- return FALSE;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
+ vp << true;
else
- {
- CJS_Array ExportValusArray(m_isolate);
- if (m_nFormControlIndex < 0)
- {
- for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
- {
- CPDF_FormControl* pFormControl = pFormField->GetControl(i);
- ExportValusArray.SetElement(i, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
- }
- }
- else
- {
- if (m_nFormControlIndex >= pFormField->CountControls())
- return FALSE;
+ vp << false;
+ }
- CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
- if (!pFormControl)
- return FALSE;
-
- ExportValusArray.SetElement(0, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
- }
- vp << ExportValusArray;
- }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::exportValues(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0)
- return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
+ return FALSE;
+
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ if (!vp.IsArrayObject())
+ return FALSE;
+ } else {
+ CJS_Array ExportValusArray(m_isolate);
+ if (m_nFormControlIndex < 0) {
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ CPDF_FormControl* pFormControl = pFormField->GetControl(i);
+ ExportValusArray.SetElement(
+ i, CJS_Value(m_isolate, pFormControl->GetExportValue().c_str()));
+ }
+ } else {
+ if (m_nFormControlIndex >= pFormField->CountControls())
return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet)
- return FALSE;
+ CPDF_FormControl* pFormControl =
+ pFormField->GetControl(m_nFormControlIndex);
+ if (!pFormControl)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ ExportValusArray.SetElement(
+ 0, CJS_Value(m_isolate, pFormControl->GetExportValue().c_str()));
}
- else
- {
- if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
- vp << true;
- else
- vp << false;
- }
- return TRUE;
+ vp << ExportValusArray;
+ }
+ return TRUE;
}
-FX_BOOL Field::fillColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- CJS_Array crArray(m_isolate);
-
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0)
- return FALSE;
+FX_BOOL Field::fileSelect(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet)
- return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (!vp.IsArrayObject())
- return FALSE;
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- vp >> crArray;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CPWL_Color color;
- color::ConvertArrayToPWLColor(crArray, color);
- if (m_bDelay)
- {
- AddDelay_Color(FP_FILLCOLOR, color);
- }
- else
- {
- Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
- }
- }
+ bool bVP;
+ vp >> bVP;
+ } else {
+ if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
+ vp << true;
else
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)
- return FALSE;
-
- int iColorType;
- pFormControl->GetBackgroundColor(iColorType);
-
- CPWL_Color color;
- if (iColorType == COLORTYPE_TRANSPARENT)
- {
- color = CPWL_Color(COLORTYPE_TRANSPARENT);
- }
- else if (iColorType == COLORTYPE_GRAY)
- {
- color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBackgroundColor(0));
- }
- else if (iColorType == COLORTYPE_RGB)
- {
- color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
- pFormControl->GetOriginalBackgroundColor(1),
- pFormControl->GetOriginalBackgroundColor(2));
- }
- else if (iColorType == COLORTYPE_CMYK)
- {
- color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBackgroundColor(0),
- pFormControl->GetOriginalBackgroundColor(1),
- pFormControl->GetOriginalBackgroundColor(2),
- pFormControl->GetOriginalBackgroundColor(3));
- }
- else
- return FALSE;
-
- color::ConvertPWLColorToArray(color, crArray);
- vp << crArray;
- }
-
- return TRUE;
+ vp << false;
+ }
+ return TRUE;
}
-void Field::SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
-{
- //Not supported.
-}
+FX_BOOL Field::fillColor(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
-FX_BOOL Field::hidden(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ CJS_Array crArray(m_isolate);
- bool bVP;
- vp >> bVP;
-
- if (m_bDelay)
- {
- AddDelay_Bool(FP_HIDDEN, bVP);
- }
- else
- {
- Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
- if (!pWidget) return FALSE;
+ if (!vp.IsArrayObject())
+ return FALSE;
- FX_DWORD dwFlags = pWidget->GetFlags();
+ vp >> crArray;
- if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
- {
- vp << true;
- }
- else
- vp << false;
+ CPWL_Color color;
+ color::ConvertArrayToPWLColor(crArray, color);
+ if (m_bDelay) {
+ AddDelay_Color(FP_FILLCOLOR, color);
+ } else {
+ Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
}
+ } else {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- return TRUE;
-}
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
+
+ int iColorType;
+ pFormControl->GetBackgroundColor(iColorType);
+
+ CPWL_Color color;
+ if (iColorType == COLORTYPE_TRANSPARENT) {
+ color = CPWL_Color(COLORTYPE_TRANSPARENT);
+ } else if (iColorType == COLORTYPE_GRAY) {
+ color = CPWL_Color(COLORTYPE_GRAY,
+ pFormControl->GetOriginalBackgroundColor(0));
+ } else if (iColorType == COLORTYPE_RGB) {
+ color =
+ CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
+ pFormControl->GetOriginalBackgroundColor(1),
+ pFormControl->GetOriginalBackgroundColor(2));
+ } else if (iColorType == COLORTYPE_CMYK) {
+ color = CPWL_Color(COLORTYPE_CMYK,
+ pFormControl->GetOriginalBackgroundColor(0),
+ pFormControl->GetOriginalBackgroundColor(1),
+ pFormControl->GetOriginalBackgroundColor(2),
+ pFormControl->GetOriginalBackgroundColor(3));
+ } else
+ return FALSE;
+
+ color::ConvertPWLColorToArray(color, crArray);
+ vp << crArray;
+ }
+
+ return TRUE;
+}
+
+void Field::SetFillColor(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CPWL_Color& color) {
+ // Not supported.
+}
+
+FX_BOOL Field::hidden(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ bool bVP;
+ vp >> bVP;
+
+ if (m_bDelay) {
+ AddDelay_Bool(FP_HIDDEN, bVP);
+ } else {
+ Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
+ }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
-void Field::SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- ASSERT(pDocument != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
ASSERT(pInterForm != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(GetSmartFieldControl(pFormField));
+ if (!pWidget)
+ return FALSE;
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (nControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
- {
- FX_DWORD dwFlags = pWidget->GetFlags();
-
- if (b)
- {
- dwFlags &= (~ANNOTFLAG_INVISIBLE);
- dwFlags &= (~ANNOTFLAG_NOVIEW);
- dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
- }
- else
- {
- dwFlags &= (~ANNOTFLAG_INVISIBLE);
- dwFlags &= (~ANNOTFLAG_HIDDEN);
- dwFlags &= (~ANNOTFLAG_NOVIEW);
- dwFlags |= ANNOTFLAG_PRINT;
- }
-
- if (dwFlags != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlags);
- bSet = TRUE;
- }
- }
- }
+ FX_DWORD dwFlags = pWidget->GetFlags();
- if (bSet)
- UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
- }
- else
- {
- if(nControlIndex >= pFormField->CountControls()) return;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- FX_DWORD dwFlags = pWidget->GetFlags();
-
- if (b)
- {
- dwFlags &= (~ANNOTFLAG_INVISIBLE);
- dwFlags &= (~ANNOTFLAG_NOVIEW);
- dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
- }
- else
- {
- dwFlags &= (~ANNOTFLAG_INVISIBLE);
- dwFlags &= (~ANNOTFLAG_HIDDEN);
- dwFlags &= (~ANNOTFLAG_NOVIEW);
- dwFlags |= ANNOTFLAG_PRINT;
- }
-
- if (dwFlags != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlags);
- UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
- }
- }
- }
- }
- }
+ if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) {
+ vp << true;
+ } else
+ vp << false;
+ }
+
+ return TRUE;
}
-FX_BOOL Field::highlight(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+void Field::SetHidden(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ ASSERT(pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_ByteString strMode;
- vp >> strMode;
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- if (m_bDelay)
- {
- AddDelay_String(FP_HIGHLIGHT, strMode);
- }
- else
- {
- Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, strMode);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ if (nControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) {
+ if (CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(pFormField->GetControl(j))) {
+ FX_DWORD dwFlags = pWidget->GetFlags();
+
+ if (b) {
+ dwFlags &= (~ANNOTFLAG_INVISIBLE);
+ dwFlags &= (~ANNOTFLAG_NOVIEW);
+ dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
+ } else {
+ dwFlags &= (~ANNOTFLAG_INVISIBLE);
+ dwFlags &= (~ANNOTFLAG_HIDDEN);
+ dwFlags &= (~ANNOTFLAG_NOVIEW);
+ dwFlags |= ANNOTFLAG_PRINT;
+ }
+
+ if (dwFlags != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlags);
+ bSet = TRUE;
+ }
+ }
+ }
+
+ if (bSet)
+ UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+ } else {
+ if (nControlIndex >= pFormField->CountControls())
+ return;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(nControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ FX_DWORD dwFlags = pWidget->GetFlags();
+
+ if (b) {
+ dwFlags &= (~ANNOTFLAG_INVISIBLE);
+ dwFlags &= (~ANNOTFLAG_NOVIEW);
+ dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
+ } else {
+ dwFlags &= (~ANNOTFLAG_INVISIBLE);
+ dwFlags &= (~ANNOTFLAG_HIDDEN);
+ dwFlags &= (~ANNOTFLAG_NOVIEW);
+ dwFlags |= ANNOTFLAG_PRINT;
+ }
+
+ if (dwFlags != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlags);
+ UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
+ }
+ }
+ }
+ }
+ }
+}
+
+FX_BOOL Field::highlight(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ CFX_ByteString strMode;
+ vp >> strMode;
+
+ if (m_bDelay) {
+ AddDelay_String(FP_HIGHLIGHT, strMode);
+ } else {
+ Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex,
+ strMode);
+ }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl) return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- int eHM = pFormControl->GetHighlightingMode();
- switch (eHM)
- {
- case CPDF_FormControl::None:
- vp << L"none";
- break;
- case CPDF_FormControl::Push:
- vp << L"push";
- break;
- case CPDF_FormControl::Invert:
- vp << L"invert";
- break;
- case CPDF_FormControl::Outline:
- vp << L"outline";
- break;
- case CPDF_FormControl::Toggle:
- vp << L"toggle";
- break;
- }
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
+
+ int eHM = pFormControl->GetHighlightingMode();
+ switch (eHM) {
+ case CPDF_FormControl::None:
+ vp << L"none";
+ break;
+ case CPDF_FormControl::Push:
+ vp << L"push";
+ break;
+ case CPDF_FormControl::Invert:
+ vp << L"invert";
+ break;
+ case CPDF_FormControl::Outline:
+ vp << L"outline";
+ break;
+ case CPDF_FormControl::Toggle:
+ vp << L"toggle";
+ break;
}
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
-{
- //Not supported.
+void Field::SetHighlight(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_ByteString& string) {
+ // Not supported.
}
-FX_BOOL Field::lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::lineWidth(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int iWidth;
- vp >> iWidth;
+ int iWidth;
+ vp >> iWidth;
- if (m_bDelay)
- {
- AddDelay_Int(FP_LINEWIDTH, iWidth);
- }
- else
- {
- Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, iWidth);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_LINEWIDTH, iWidth);
+ } else {
+ Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex,
+ iWidth);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl) return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if(!pFormField->CountControls()) return FALSE;
+ if (!pFormField->CountControls())
+ return FALSE;
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
- if (!pWidget) return FALSE;
+ CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
+ if (!pWidget)
+ return FALSE;
- vp << (int32_t)pWidget->GetBorderWidth();
- }
+ vp << (int32_t)pWidget->GetBorderWidth();
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- ASSERT(pDocument != NULL);
+void Field::SetLineWidth(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ ASSERT(pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (nControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int j=0,jsz=pFormField->CountControls(); j<jsz; j++)
- {
- CPDF_FormControl* pFormControl = pFormField->GetControl(j);
- ASSERT(pFormControl != NULL);
-
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- if (number != pWidget->GetBorderWidth())
- {
- pWidget->SetBorderWidth(number);
- bSet = TRUE;
- }
- }
- }
- if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
- }
- else
- {
- if(nControlIndex >= pFormField->CountControls()) return;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- if (number != pWidget->GetBorderWidth())
- {
- pWidget->SetBorderWidth(number);
- UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
- }
- }
- }
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
+
+ if (nControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) {
+ CPDF_FormControl* pFormControl = pFormField->GetControl(j);
+ ASSERT(pFormControl != NULL);
+
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ if (number != pWidget->GetBorderWidth()) {
+ pWidget->SetBorderWidth(number);
+ bSet = TRUE;
+ }
+ }
+ }
+ if (bSet)
+ UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+ } else {
+ if (nControlIndex >= pFormField->CountControls())
+ return;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(nControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ if (number != pWidget->GetBorderWidth()) {
+ pWidget->SetBorderWidth(number);
+ UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
+ }
}
+ }
}
+ }
}
-FX_BOOL Field::multiline(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::multiline(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_MULTILINE, bVP);
- }
- else
- {
- Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_MULTILINE, bVP);
+ } else {
+ Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetMultiline(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::multipleSelection(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
- }
- else
- {
- Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
+ } else {
+ Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex,
+ bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetMultipleSelection(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::name(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting()) return FALSE;
+FX_BOOL Field::name(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- vp << m_FieldName;
+ vp << m_FieldName;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::numItems(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+FX_BOOL Field::numItems(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
- pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
+ return FALSE;
- if (!vp.IsGetting()) return FALSE;
+ if (!vp.IsGetting())
+ return FALSE;
- vp << (int32_t)pFormField->CountOptions();
+ vp << (int32_t)pFormField->CountOptions();
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::page(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting()) return FALSE;
-
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+FX_BOOL Field::page(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- if (!pFormField) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- ASSERT(m_pDocument != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ if (!pFormField)
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray widgetArray;
- pInterForm->GetWidgets(pFormField, widgetArray);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- if (widgetArray.GetSize() > 0)
- {
- CJS_Array PageArray(m_isolate);
+ CFX_PtrArray widgetArray;
+ pInterForm->GetWidgets(pFormField, widgetArray);
- for (int i=0,sz=widgetArray.GetSize(); i<sz; i++)
- {
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i);
- ASSERT(pWidget != NULL);
+ if (widgetArray.GetSize() > 0) {
+ CJS_Array PageArray(m_isolate);
- CPDFSDK_PageView* pPageView = pWidget->GetPageView();
- if(!pPageView)
- return FALSE;
+ for (int i = 0, sz = widgetArray.GetSize(); i < sz; i++) {
+ CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i);
+ ASSERT(pWidget != NULL);
- PageArray.SetElement(i, CJS_Value(m_isolate,(int32_t)pPageView->GetPageIndex()));
- }
+ CPDFSDK_PageView* pPageView = pWidget->GetPageView();
+ if (!pPageView)
+ return FALSE;
- vp << PageArray;
- }
- else
- {
- vp << (int32_t) -1;
+ PageArray.SetElement(
+ i, CJS_Value(m_isolate, (int32_t)pPageView->GetPageIndex()));
}
- return TRUE;
+ vp << PageArray;
+ } else {
+ vp << (int32_t)-1;
+ }
+
+ return TRUE;
}
-FX_BOOL Field::password(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::password(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_PASSWORD, bVP);
- }
- else
- {
- Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_PASSWORD, bVP);
+ } else {
+ Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetPassword(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::print(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::print(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
-
- bool bVP;
- vp >> bVP;
-
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (m_nFormControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
- {
- FX_DWORD dwFlags = pWidget->GetFlags();
- if (bVP)
- dwFlags |= ANNOTFLAG_PRINT;
- else
- dwFlags &= ~ANNOTFLAG_PRINT;
-
- if (dwFlags != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlags);
- bSet = TRUE;
- }
- }
- }
-
- if (bSet)
- UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE);
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ bool bVP;
+ vp >> bVP;
+
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
+
+ if (m_nFormControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int j = 0, jsz = pFormField->CountControls(); j < jsz; j++) {
+ if (CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(pFormField->GetControl(j))) {
+ FX_DWORD dwFlags = pWidget->GetFlags();
+ if (bVP)
+ dwFlags |= ANNOTFLAG_PRINT;
+ else
+ dwFlags &= ~ANNOTFLAG_PRINT;
+
+ if (dwFlags != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlags);
+ bSet = TRUE;
}
+ }
+ }
+
+ if (bSet)
+ UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE);
+ } else {
+ if (m_nFormControlIndex >= pFormField->CountControls())
+ return FALSE;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(m_nFormControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ FX_DWORD dwFlags = pWidget->GetFlags();
+ if (bVP)
+ dwFlags |= ANNOTFLAG_PRINT;
else
- {
- if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- FX_DWORD dwFlags = pWidget->GetFlags();
- if (bVP)
- dwFlags |= ANNOTFLAG_PRINT;
- else
- dwFlags &= ~ANNOTFLAG_PRINT;
-
- if (dwFlags != pWidget->GetFlags())
- {
- pWidget->SetFlags(dwFlags);
- UpdateFormControl(m_pDocument, pFormField->GetControl(m_nFormControlIndex), TRUE, FALSE, TRUE);
- }
- }
- }
+ dwFlags &= ~ANNOTFLAG_PRINT;
+
+ if (dwFlags != pWidget->GetFlags()) {
+ pWidget->SetFlags(dwFlags);
+ UpdateFormControl(m_pDocument,
+ pFormField->GetControl(m_nFormControlIndex),
+ TRUE, FALSE, TRUE);
}
+ }
}
+ }
}
- else
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ } else {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
- if (!pWidget) return FALSE;
+ CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(GetSmartFieldControl(pFormField));
+ if (!pWidget)
+ return FALSE;
- if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
- vp << true;
- else
- vp << false;
- }
+ if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::radiosInUnison(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- }
- else
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ } else {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::readonly(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::readonly(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- }
+ } else {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
+
+ if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
+ vp << true;
else
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ vp << false;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL Field::rect(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+ if (!vp.IsArrayObject())
+ return FALSE;
+
+ CJS_Array rcArray(m_isolate);
+ vp >> rcArray;
+ CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate),
+ Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
+ rcArray.GetElement(0, Upper_Leftx);
+ rcArray.GetElement(1, Upper_Lefty);
+ rcArray.GetElement(2, Lower_Rightx);
+ rcArray.GetElement(3, Lower_Righty);
+
+ FX_FLOAT pArray[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+ pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt();
+ pArray[1] = (FX_FLOAT)Lower_Righty.ToInt();
+ pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt();
+ pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt();
+
+ CPDF_Rect crRect(pArray);
+
+ if (m_bDelay) {
+ AddDelay_Rect(FP_RECT, crRect);
+ } else {
+ Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
+ }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
- vp << true;
- else
- vp << false;
- }
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- return TRUE;
-}
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
-FX_BOOL Field::rect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+ CPDFSDK_Widget* pWidget =
+ pInterForm->GetWidget(GetSmartFieldControl(pFormField));
+ if (!pWidget)
+ return FALSE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
- if (!vp.IsArrayObject())return FALSE;
-
- CJS_Array rcArray(m_isolate);
- vp >> rcArray;
- CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate), Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
- rcArray.GetElement(0, Upper_Leftx);
- rcArray.GetElement(1, Upper_Lefty);
- rcArray.GetElement(2, Lower_Rightx);
- rcArray.GetElement(3, Lower_Righty);
-
- FX_FLOAT pArray[4] = {0.0f,0.0f,0.0f,0.0f};
- pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt();
- pArray[1] = (FX_FLOAT)Lower_Righty.ToInt();
- pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt();
- pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt();
-
- CPDF_Rect crRect(pArray);
-
- if (m_bDelay)
- {
- AddDelay_Rect(FP_RECT, crRect);
- }
- else
- {
- Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_FloatRect crRect = pWidget->GetRect();
+ CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate),
+ Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
+ Upper_Leftx = (int32_t)crRect.left;
+ Upper_Lefty = (int32_t)crRect.top;
+ Lower_Rightx = (int32_t)crRect.right;
+ Lower_Righty = (int32_t)crRect.bottom;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CJS_Array rcArray(m_isolate);
+ rcArray.SetElement(0, Upper_Leftx);
+ rcArray.SetElement(1, Upper_Lefty);
+ rcArray.SetElement(2, Lower_Rightx);
+ rcArray.SetElement(3, Lower_Righty);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ vp << rcArray;
+ }
- CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
- if (!pWidget) return FALSE;
+ return TRUE;
+}
- CFX_FloatRect crRect = pWidget->GetRect();
- CJS_Value Upper_Leftx(m_isolate),Upper_Lefty(m_isolate),Lower_Rightx(m_isolate),Lower_Righty(m_isolate);
- Upper_Leftx = (int32_t)crRect.left;
- Upper_Lefty = (int32_t)crRect.top;
- Lower_Rightx = (int32_t)crRect.right;
- Lower_Righty = (int32_t)crRect.bottom;
+void Field::SetRect(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CPDF_Rect& rect) {
+ ASSERT(pDocument != NULL);
- CJS_Array rcArray(m_isolate);
- rcArray.SetElement(0,Upper_Leftx);
- rcArray.SetElement(1,Upper_Lefty);
- rcArray.SetElement(2,Lower_Rightx);
- rcArray.SetElement(3,Lower_Righty);
+ CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- vp << rcArray;
- }
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- return TRUE;
-}
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
-void Field::SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect)
-{
- ASSERT(pDocument != NULL);
+ if (nControlIndex < 0) {
+ FX_BOOL bSet = FALSE;
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ CPDF_FormControl* pFormControl = pFormField->GetControl(i);
+ ASSERT(pFormControl != NULL);
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ CPDF_Rect crRect = rect;
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CPDF_Page* pPDFPage = pWidget->GetPDFPage();
+ ASSERT(pPDFPage != NULL);
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
-
- if (nControlIndex < 0)
- {
- FX_BOOL bSet = FALSE;
- for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
- {
- CPDF_FormControl* pFormControl = pFormField->GetControl(i);
- ASSERT(pFormControl != NULL);
-
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- CPDF_Rect crRect = rect;
-
- CPDF_Page* pPDFPage = pWidget->GetPDFPage();
- ASSERT(pPDFPage != NULL);
-
-// CPDF_Page* pPDFPage = pPage->GetPage();
-// ASSERT(pPDFPage != NULL);
-
- crRect.Intersect(pPDFPage->GetPageBBox());
-
- if (!crRect.IsEmpty())
- {
- CPDF_Rect rcOld = pWidget->GetRect();
- if (crRect.left != rcOld.left ||
- crRect.right != rcOld.right ||
- crRect.top != rcOld.top ||
- crRect.bottom != rcOld.bottom)
- {
- pWidget->SetRect(crRect);
- bSet = TRUE;
- }
- }
- }
- }
+ // CPDF_Page* pPDFPage = pPage->GetPage();
+ // ASSERT(pPDFPage != NULL);
- if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+ crRect.Intersect(pPDFPage->GetPageBBox());
+
+ if (!crRect.IsEmpty()) {
+ CPDF_Rect rcOld = pWidget->GetRect();
+ if (crRect.left != rcOld.left || crRect.right != rcOld.right ||
+ crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) {
+ pWidget->SetRect(crRect);
+ bSet = TRUE;
+ }
+ }
}
- else
- {
- if(nControlIndex >= pFormField->CountControls()) return;
- if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
- {
- if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
- {
- CPDF_Rect crRect = rect;
-
- CPDF_Page* pPDFPage = pWidget->GetPDFPage();
- ASSERT(pPDFPage != NULL);
-
-// CPDF_Page* pPDFPage = pPage->GetPage();
-// ASSERT(pPDFPage != NULL);
-
- crRect.Intersect(pPDFPage->GetPageBBox());
-
- if (!crRect.IsEmpty())
- {
- CPDF_Rect rcOld = pWidget->GetRect();
- if (crRect.left != rcOld.left ||
- crRect.right != rcOld.right ||
- crRect.top != rcOld.top ||
- crRect.bottom != rcOld.bottom)
- {
- pWidget->SetRect(crRect);
- UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
- }
- }
- }
+ }
+
+ if (bSet)
+ UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+ } else {
+ if (nControlIndex >= pFormField->CountControls())
+ return;
+ if (CPDF_FormControl* pFormControl =
+ pFormField->GetControl(nControlIndex)) {
+ if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) {
+ CPDF_Rect crRect = rect;
+
+ CPDF_Page* pPDFPage = pWidget->GetPDFPage();
+ ASSERT(pPDFPage != NULL);
+
+ // CPDF_Page* pPDFPage = pPage->GetPage();
+ // ASSERT(pPDFPage != NULL);
+
+ crRect.Intersect(pPDFPage->GetPageBBox());
+
+ if (!crRect.IsEmpty()) {
+ CPDF_Rect rcOld = pWidget->GetRect();
+ if (crRect.left != rcOld.left || crRect.right != rcOld.right ||
+ crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) {
+ pWidget->SetRect(crRect);
+ UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
}
+ }
}
+ }
}
+ }
}
-FX_BOOL Field::required(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::required(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- }
- else
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ } else {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::richText(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::richText(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- bool bVP;
- vp >> bVP;
+ bool bVP;
+ vp >> bVP;
- if (m_bDelay)
- {
- AddDelay_Bool(FP_RICHTEXT, bVP);
- }
- else
- {
- Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
- }
+ if (m_bDelay) {
+ AddDelay_Bool(FP_RICHTEXT, bVP);
+ } else {
+ Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
+ return FALSE;
- if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
- vp << true;
- else
- vp << false;
- }
+ if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
+ vp << true;
+ else
+ vp << false;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
-{
- //Not supported.
+void Field::SetRichText(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ bool b) {
+ // Not supported.
}
-FX_BOOL Field::richValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
- ;
- }
- else
- {
- ;
- }
- return TRUE;
+FX_BOOL Field::richValue(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+ ;
+ } else {
+ ;
+ }
+ return TRUE;
}
-void Field::SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
-{
- //Not supported.
+void Field::SetRichValue(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex) {
+ // Not supported.
}
-FX_BOOL Field::rotation(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::rotation(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_ROTATION, nVP);
- }
- else
- {
- Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_ROTATION, nVP);
+ } else {
+ Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- vp << (int32_t)pFormControl->GetRotation();
- }
+ vp << (int32_t)pFormControl->GetRotation();
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetRotation(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::strokeColor(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- if (!vp.IsArrayObject())return FALSE;
+ if (!vp.IsArrayObject())
+ return FALSE;
- CJS_Array crArray(m_isolate);
- vp >> crArray;
+ CJS_Array crArray(m_isolate);
+ vp >> crArray;
- CPWL_Color color;
- color::ConvertArrayToPWLColor(crArray, color);
+ CPWL_Color color;
+ color::ConvertArrayToPWLColor(crArray, color);
- if (m_bDelay)
- {
- AddDelay_Color(FP_STROKECOLOR, color);
- }
- else
- {
- Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
- }
+ if (m_bDelay) {
+ AddDelay_Color(FP_STROKECOLOR, color);
+ } else {
+ Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex,
+ color);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
-
- int iColorType;
- pFormControl->GetBorderColor(iColorType);
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPWL_Color color;
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (iColorType == COLORTYPE_TRANSPARENT)
- {
- color = CPWL_Color(COLORTYPE_TRANSPARENT);
- }
- else if (iColorType == COLORTYPE_GRAY)
- {
- color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
- }
- else if (iColorType == COLORTYPE_RGB)
- {
- color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
- pFormControl->GetOriginalBorderColor(1),
- pFormControl->GetOriginalBorderColor(2));
- }
- else if (iColorType == COLORTYPE_CMYK)
- {
- color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
- pFormControl->GetOriginalBorderColor(1),
- pFormControl->GetOriginalBorderColor(2),
- pFormControl->GetOriginalBorderColor(3));
- }
- else
- return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
+
+ int iColorType;
+ pFormControl->GetBorderColor(iColorType);
+
+ CPWL_Color color;
+
+ if (iColorType == COLORTYPE_TRANSPARENT) {
+ color = CPWL_Color(COLORTYPE_TRANSPARENT);
+ } else if (iColorType == COLORTYPE_GRAY) {
+ color =
+ CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
+ } else if (iColorType == COLORTYPE_RGB) {
+ color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
+ pFormControl->GetOriginalBorderColor(1),
+ pFormControl->GetOriginalBorderColor(2));
+ } else if (iColorType == COLORTYPE_CMYK) {
+ color =
+ CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
+ pFormControl->GetOriginalBorderColor(1),
+ pFormControl->GetOriginalBorderColor(2),
+ pFormControl->GetOriginalBorderColor(3));
+ } else
+ return FALSE;
- CJS_Array crArray(m_isolate);
- color::ConvertPWLColorToArray(color, crArray);
- vp << crArray;
- }
+ CJS_Array crArray(m_isolate);
+ color::ConvertPWLColorToArray(color, crArray);
+ vp << crArray;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
-{
- //Not supported.
+void Field::SetStrokeColor(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CPWL_Color& color) {
+ // Not supported.
}
-FX_BOOL Field::style(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::style(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_ByteString csBCaption;
- vp >> csBCaption;
+ CFX_ByteString csBCaption;
+ vp >> csBCaption;
- if (m_bDelay)
- {
- AddDelay_String(FP_STYLE, csBCaption);
- }
- else
- {
- Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, csBCaption);
- }
+ if (m_bDelay) {
+ AddDelay_String(FP_STYLE, csBCaption);
+ } else {
+ Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex,
+ csBCaption);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
- if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
- pFormField->GetFieldType() != FIELDTYPE_CHECKBOX)
- return FALSE;
-
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl) return FALSE;
-
- CFX_WideString csWCaption = pFormControl->GetNormalCaption();
- CFX_ByteString csBCaption;
-
- switch (csWCaption[0])
- {
- case L'l':
- csBCaption = "circle";
- break;
- case L'8':
- csBCaption = "cross";
- break;
- case L'u':
- csBCaption = "diamond";
- break;
- case L'n':
- csBCaption = "square";
- break;
- case L'H':
- csBCaption = "star";
- break;
- default: //L'4'
- csBCaption = "check";
- break;
- }
- vp << csBCaption;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
+
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
+
+ if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
+ pFormField->GetFieldType() != FIELDTYPE_CHECKBOX)
+ return FALSE;
+
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
+
+ CFX_WideString csWCaption = pFormControl->GetNormalCaption();
+ CFX_ByteString csBCaption;
+
+ switch (csWCaption[0]) {
+ case L'l':
+ csBCaption = "circle";
+ break;
+ case L'8':
+ csBCaption = "cross";
+ break;
+ case L'u':
+ csBCaption = "diamond";
+ break;
+ case L'n':
+ csBCaption = "square";
+ break;
+ case L'H':
+ csBCaption = "star";
+ break;
+ default: // L'4'
+ csBCaption = "check";
+ break;
}
+ vp << csBCaption;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
- const CFX_ByteString& string)
-{
- //Not supported.
+void Field::SetStyle(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_ByteString& string) {
+ // Not supported.
}
-FX_BOOL Field::submitName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::submitName(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Field::textColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::textColor(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CJS_Array crArray(m_isolate);
- if (!vp.IsArrayObject())return FALSE;
- vp >> crArray;
+ CJS_Array crArray(m_isolate);
+ if (!vp.IsArrayObject())
+ return FALSE;
+ vp >> crArray;
- CPWL_Color color;
- color::ConvertArrayToPWLColor(crArray, color);
+ CPWL_Color color;
+ color::ConvertArrayToPWLColor(crArray, color);
- if (m_bDelay)
- {
- AddDelay_Color(FP_TEXTCOLOR, color);
- }
- else
- {
- Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
- }
+ if (m_bDelay) {
+ AddDelay_Color(FP_TEXTCOLOR, color);
+ } else {
+ Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- int iColorType;
- FX_ARGB color;
- CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
- FieldAppearance.GetColor(color, iColorType);
- int32_t a,r,g,b;
- ArgbDecode(color, a, r, g, b);
+ int iColorType;
+ FX_ARGB color;
+ CPDF_DefaultAppearance FieldAppearance =
+ pFormControl->GetDefaultAppearance();
+ FieldAppearance.GetColor(color, iColorType);
+ int32_t a, r, g, b;
+ ArgbDecode(color, a, r, g, b);
- CPWL_Color crRet = CPWL_Color(COLORTYPE_RGB, r / 255.0f,
- g / 255.0f,
- b / 255.0f);
+ CPWL_Color crRet =
+ CPWL_Color(COLORTYPE_RGB, r / 255.0f, g / 255.0f, b / 255.0f);
- if (iColorType == COLORTYPE_TRANSPARENT)
- crRet = CPWL_Color(COLORTYPE_TRANSPARENT);
+ if (iColorType == COLORTYPE_TRANSPARENT)
+ crRet = CPWL_Color(COLORTYPE_TRANSPARENT);
- CJS_Array crArray(m_isolate);
- color::ConvertPWLColorToArray(crRet, crArray);
- vp << crArray;
- }
+ CJS_Array crArray(m_isolate);
+ color::ConvertPWLColorToArray(crRet, crArray);
+ vp << crArray;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
-{
- //Not supported.
+void Field::SetTextColor(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CPWL_Color& color) {
+ // Not supported.
}
-FX_BOOL Field::textFont(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::textFont(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- CFX_ByteString csFontName;
- vp >> csFontName;
- if (csFontName.IsEmpty()) return FALSE;
+ CFX_ByteString csFontName;
+ vp >> csFontName;
+ if (csFontName.IsEmpty())
+ return FALSE;
- if (m_bDelay)
- {
- AddDelay_String(FP_TEXTFONT, csFontName);
- }
- else
- {
- Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, csFontName);
- }
+ if (m_bDelay) {
+ AddDelay_String(FP_TEXTFONT, csFontName);
+ } else {
+ Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex,
+ csFontName);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- int nFieldType = pFormField->GetFieldType();
+ int nFieldType = pFormField->GetFieldType();
- if (nFieldType == FIELDTYPE_PUSHBUTTON ||
- nFieldType == FIELDTYPE_COMBOBOX ||
- nFieldType == FIELDTYPE_LISTBOX ||
- nFieldType == FIELDTYPE_TEXTFIELD)
- {
- CPDF_Font * pFont = pFormControl->GetDefaultControlFont();
- if (!pFont) return FALSE;
+ if (nFieldType == FIELDTYPE_PUSHBUTTON ||
+ nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX ||
+ nFieldType == FIELDTYPE_TEXTFIELD) {
+ CPDF_Font* pFont = pFormControl->GetDefaultControlFont();
+ if (!pFont)
+ return FALSE;
- vp << pFont->GetBaseFont();
- }
- else
- return FALSE;
- }
+ vp << pFont->GetBaseFont();
+ } else
+ return FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
-{
- //Not supported.
+void Field::SetTextFont(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_ByteString& string) {
+ // Not supported.
}
-FX_BOOL Field::textSize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::textSize(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- int nVP;
- vp >> nVP;
+ int nVP;
+ vp >> nVP;
- if (m_bDelay)
- {
- AddDelay_Int(FP_TEXTSIZE, nVP);
- }
- else
- {
- Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
- }
+ if (m_bDelay) {
+ AddDelay_Int(FP_TEXTSIZE, nVP);
+ } else {
+ Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
}
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
+ CPDF_DefaultAppearance FieldAppearance =
+ pFormControl->GetDefaultAppearance();
- CFX_ByteString csFontNameTag;
- FX_FLOAT fFontSize;
- FieldAppearance.GetFont(csFontNameTag,fFontSize);
+ CFX_ByteString csFontNameTag;
+ FX_FLOAT fFontSize;
+ FieldAppearance.GetFont(csFontNameTag, fFontSize);
- vp << (int)fFontSize;
- }
+ vp << (int)fFontSize;
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
-{
- //Not supported.
+void Field::SetTextSize(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ int number) {
+ // Not supported.
}
-FX_BOOL Field::type(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::type(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ if (!vp.IsGetting())
+ return FALSE;
- if (!vp.IsGetting()) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
+
+ switch (pFormField->GetFieldType()) {
+ case FIELDTYPE_UNKNOWN:
+ vp << L"unknown";
+ break;
+ case FIELDTYPE_PUSHBUTTON:
+ vp << L"button";
+ break;
+ case FIELDTYPE_CHECKBOX:
+ vp << L"checkbox";
+ break;
+ case FIELDTYPE_RADIOBUTTON:
+ vp << L"radiobutton";
+ break;
+ case FIELDTYPE_COMBOBOX:
+ vp << L"combobox";
+ break;
+ case FIELDTYPE_LISTBOX:
+ vp << L"listbox";
+ break;
+ case FIELDTYPE_TEXTFIELD:
+ vp << L"text";
+ break;
+ case FIELDTYPE_SIGNATURE:
+ vp << L"signature";
+ break;
+ default:
+ vp << L"unknown";
+ break;
+ }
+
+ return TRUE;
+}
+
+FX_BOOL Field::userName(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
+
+ CFX_WideString swName;
+ vp >> swName;
+
+ if (m_bDelay) {
+ AddDelay_WideString(FP_USERNAME, swName);
+ } else {
+ Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
+ }
+ } else {
CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
ASSERT(pFormField != NULL);
- switch (pFormField->GetFieldType())
- {
- case FIELDTYPE_UNKNOWN:
- vp << L"unknown";
- break;
- case FIELDTYPE_PUSHBUTTON:
- vp << L"button";
- break;
- case FIELDTYPE_CHECKBOX:
- vp << L"checkbox";
- break;
- case FIELDTYPE_RADIOBUTTON:
- vp << L"radiobutton";
- break;
- case FIELDTYPE_COMBOBOX:
- vp << L"combobox";
- break;
- case FIELDTYPE_LISTBOX:
- vp << L"listbox";
- break;
- case FIELDTYPE_TEXTFIELD:
- vp << L"text";
- break;
- case FIELDTYPE_SIGNATURE:
- vp << L"signature";
- break;
- default :
- vp << L"unknown";
- break;
- }
+ vp << (CFX_WideString)pFormField->GetAlternateName();
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::userName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+void Field::SetUserName(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CFX_WideString& string) {
+ // Not supported.
+}
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
+FX_BOOL Field::value(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_WideString swName;
- vp >> swName;
+ if (vp.IsSetting()) {
+ if (!m_bCanSet)
+ return FALSE;
- if (m_bDelay)
- {
- AddDelay_WideString(FP_USERNAME, swName);
- }
- else
- {
- Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CJS_WideStringArray strArray;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ if (vp.IsArrayObject()) {
+ CJS_Array ValueArray(m_isolate);
+ vp.ConvertToArray(ValueArray);
+ for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) {
+ CJS_Value ElementValue(m_isolate);
+ ValueArray.GetElement(i, ElementValue);
+ strArray.Add(ElementValue.ToCFXWideString());
+ }
+ } else {
+ CFX_WideString swValue;
+ vp >> swValue;
- vp << (CFX_WideString)pFormField->GetAlternateName();
+ strArray.Add(swValue);
}
- return TRUE;
-}
-
-void Field::SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string)
-{
- //Not supported.
-}
-
-FX_BOOL Field::value(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- if (vp.IsSetting())
- {
- if (!m_bCanSet) return FALSE;
-
- CJS_WideStringArray strArray;
-
- if (vp.IsArrayObject())
- {
- CJS_Array ValueArray(m_isolate);
- vp.ConvertToArray(ValueArray);
- for (int i = 0,sz = ValueArray.GetLength(); i < sz; i++)
- {
- CJS_Value ElementValue(m_isolate);
- ValueArray.GetElement(i, ElementValue);
- strArray.Add(ElementValue.ToCFXWideString());
- }
- }
- else
- {
- CFX_WideString swValue;
- vp >> swValue;
+ if (m_bDelay) {
+ AddDelay_WideStringArray(FP_VALUE, strArray);
+ } else {
+ Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
+ }
+ } else {
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- strArray.Add(swValue);
- }
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (m_bDelay)
- {
- AddDelay_WideStringArray(FP_VALUE, strArray);
- }
- else
- {
- Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
- }
- }
- else
- {
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
-
-
-
- switch (pFormField->GetFieldType())
- {
- case FIELDTYPE_PUSHBUTTON:
- return FALSE;
- case FIELDTYPE_COMBOBOX:
- case FIELDTYPE_TEXTFIELD:
- {
- CFX_WideString swValue = pFormField->GetValue();
-
- double dRet;
- FX_BOOL bDot;
- if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
- {
- if (bDot)
- vp << dRet;
- else
- vp << dRet;
- }
- else
- vp << swValue;
- }
- break;
- case FIELDTYPE_LISTBOX:
- {
- if (pFormField->CountSelectedItems() > 1)
- {
- CJS_Array ValueArray(m_isolate);
- CJS_Value ElementValue(m_isolate);
- int iIndex;
- for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++)
- {
- iIndex = pFormField->GetSelectedIndex(i);
- ElementValue = pFormField->GetOptionValue(iIndex).c_str();
- if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0)
- ElementValue = pFormField->GetOptionLabel(iIndex).c_str();
- ValueArray.SetElement(i, ElementValue);
- }
- vp << ValueArray;
- }
- else
- {
- CFX_WideString swValue = pFormField->GetValue();
-
- double dRet;
- FX_BOOL bDot;
- if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
- {
- if (bDot)
- vp << dRet;
- else
- vp << dRet;
- }
- else
- vp << swValue;
- }
- }
- break;
- case FIELDTYPE_CHECKBOX:
- case FIELDTYPE_RADIOBUTTON:
- {
- FX_BOOL bFind = FALSE;
- for (int i = 0 , sz = pFormField->CountControls(); i < sz; i++)
- {
- if (pFormField->GetControl(i)->IsChecked())
- {
- CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue();
- double dRet;
- FX_BOOL bDot;
- if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
- {
- if (bDot)
- vp << dRet;
- else
- vp << dRet;
- }
- else
- vp << swValue;
-
- bFind = TRUE;
- break;
- }
- else
- continue;
- }
- if (!bFind)
- vp << L"Off";
- }
- break;
- default:
- vp << pFormField->GetValue();
+ switch (pFormField->GetFieldType()) {
+ case FIELDTYPE_PUSHBUTTON:
+ return FALSE;
+ case FIELDTYPE_COMBOBOX:
+ case FIELDTYPE_TEXTFIELD: {
+ CFX_WideString swValue = pFormField->GetValue();
+
+ double dRet;
+ FX_BOOL bDot;
+ if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
+ bDot)) {
+ if (bDot)
+ vp << dRet;
+ else
+ vp << dRet;
+ } else
+ vp << swValue;
+ } break;
+ case FIELDTYPE_LISTBOX: {
+ if (pFormField->CountSelectedItems() > 1) {
+ CJS_Array ValueArray(m_isolate);
+ CJS_Value ElementValue(m_isolate);
+ int iIndex;
+ for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) {
+ iIndex = pFormField->GetSelectedIndex(i);
+ ElementValue = pFormField->GetOptionValue(iIndex).c_str();
+ if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0)
+ ElementValue = pFormField->GetOptionLabel(iIndex).c_str();
+ ValueArray.SetElement(i, ElementValue);
+ }
+ vp << ValueArray;
+ } else {
+ CFX_WideString swValue = pFormField->GetValue();
+
+ double dRet;
+ FX_BOOL bDot;
+ if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
+ bDot)) {
+ if (bDot)
+ vp << dRet;
+ else
+ vp << dRet;
+ } else
+ vp << swValue;
+ }
+ } break;
+ case FIELDTYPE_CHECKBOX:
+ case FIELDTYPE_RADIOBUTTON: {
+ FX_BOOL bFind = FALSE;
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ if (pFormField->GetControl(i)->IsChecked()) {
+ CFX_WideString swValue =
+ pFormField->GetControl(i)->GetExportValue();
+ double dRet;
+ FX_BOOL bDot;
+ if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet,
+ bDot)) {
+ if (bDot)
+ vp << dRet;
+ else
+ vp << dRet;
+ } else
+ vp << swValue;
+
+ bFind = TRUE;
break;
+ } else
+ continue;
}
+ if (!bFind)
+ vp << L"Off";
+ } break;
+ default:
+ vp << pFormField->GetValue();
+ break;
}
+ }
- return TRUE;
+ return TRUE;
}
-void Field::SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName,
- int nControlIndex, const CJS_WideStringArray& strArray)
-{
- ASSERT(pDocument != NULL);
+void Field::SetValue(CPDFSDK_Document* pDocument,
+ const CFX_WideString& swFieldName,
+ int nControlIndex,
+ const CJS_WideStringArray& strArray) {
+ ASSERT(pDocument != NULL);
- if (strArray.GetSize() < 1) return;
+ if (strArray.GetSize() < 1)
+ return;
- CFX_PtrArray FieldArray;
- GetFormFields(pDocument, swFieldName, FieldArray);
+ CFX_PtrArray FieldArray;
+ GetFormFields(pDocument, swFieldName, FieldArray);
- for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
+ for (int i = 0, isz = FieldArray.GetSize(); i < isz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFullName().Compare(swFieldName) != 0)
- continue;
+ if (pFormField->GetFullName().Compare(swFieldName) != 0)
+ continue;
- switch (pFormField->GetFieldType())
- {
- case FIELDTYPE_TEXTFIELD:
- case FIELDTYPE_COMBOBOX:
- if (pFormField->GetValue() != strArray.GetAt(0))
- {
- CFX_WideString WideString = strArray.GetAt(0);
- pFormField->SetValue(strArray.GetAt(0), TRUE);
- UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
- }
- break;
- case FIELDTYPE_CHECKBOX: //mantis: 0004493
- case FIELDTYPE_RADIOBUTTON:
- {
- if (pFormField->GetValue() != strArray.GetAt(0))
- {
- pFormField->SetValue(strArray.GetAt(0), TRUE);
- UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
- }
- }
- break;
- case FIELDTYPE_LISTBOX:
- {
- FX_BOOL bModified = FALSE;
-
- for (int i=0,sz=strArray.GetSize(); i<sz; i++)
- {
- int iIndex = pFormField->FindOption(strArray.GetAt(i));
-
- if (!pFormField->IsItemSelected(iIndex))
- {
- bModified = TRUE;
- break;
- }
- }
-
- if (bModified)
- {
- pFormField->ClearSelection(TRUE);
- for (int i=0,sz=strArray.GetSize(); i<sz; i++)
- {
- int iIndex = pFormField->FindOption(strArray.GetAt(i));
- pFormField->SetItemSelection(iIndex, TRUE, TRUE);
- }
-
- UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
- }
- }
- break;
- default:
+ switch (pFormField->GetFieldType()) {
+ case FIELDTYPE_TEXTFIELD:
+ case FIELDTYPE_COMBOBOX:
+ if (pFormField->GetValue() != strArray.GetAt(0)) {
+ CFX_WideString WideString = strArray.GetAt(0);
+ pFormField->SetValue(strArray.GetAt(0), TRUE);
+ UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+ }
+ break;
+ case FIELDTYPE_CHECKBOX: // mantis: 0004493
+ case FIELDTYPE_RADIOBUTTON: {
+ if (pFormField->GetValue() != strArray.GetAt(0)) {
+ pFormField->SetValue(strArray.GetAt(0), TRUE);
+ UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+ }
+ } break;
+ case FIELDTYPE_LISTBOX: {
+ FX_BOOL bModified = FALSE;
+
+ for (int i = 0, sz = strArray.GetSize(); i < sz; i++) {
+ int iIndex = pFormField->FindOption(strArray.GetAt(i));
+
+ if (!pFormField->IsItemSelected(iIndex)) {
+ bModified = TRUE;
break;
+ }
+ }
+
+ if (bModified) {
+ pFormField->ClearSelection(TRUE);
+ for (int i = 0, sz = strArray.GetSize(); i < sz; i++) {
+ int iIndex = pFormField->FindOption(strArray.GetAt(i));
+ pFormField->SetItemSelection(iIndex, TRUE, TRUE);
+ }
+
+ UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
}
+ } break;
+ default:
+ break;
}
+ }
}
-FX_BOOL Field::valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::valueAsString(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!vp.IsGetting()) return FALSE;
+ if (!vp.IsGetting())
+ return FALSE;
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
- {
- if(!pFormField->CountControls()) return FALSE;
+ if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) {
+ if (!pFormField->CountControls())
+ return FALSE;
- if (pFormField->GetControl(0)->IsChecked())
- vp << L"Yes";
- else
- vp << L"Off";
- }
- else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON))
- {
- for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
- {
- if (pFormField->GetControl(i)->IsChecked())
- {
- vp << pFormField->GetControl(i)->GetExportValue().c_str();
- break;
- }
- else
- vp << L"Off";
- }
- }
- else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && (pFormField->CountSelectedItems() > 1))
- {
- vp << L"";
- }
+ if (pFormField->GetControl(0)->IsChecked())
+ vp << L"Yes";
else
- vp << pFormField->GetValue().c_str();
+ vp << L"Off";
+ } else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON &&
+ !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)) {
+ for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
+ if (pFormField->GetControl(i)->IsChecked()) {
+ vp << pFormField->GetControl(i)->GetExportValue().c_str();
+ break;
+ } else
+ vp << L"Off";
+ }
+ } else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX &&
+ (pFormField->CountSelectedItems() > 1)) {
+ vp << L"";
+ } else
+ vp << pFormField->GetValue().c_str();
- return TRUE;
+ return TRUE;
}
-/* --------------------------------- methods --------------------------------- */
+/* --------------------------------- methods ---------------------------------
+ */
-FX_BOOL Field::browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::browseForFileToSubmit(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName, FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
- ASSERT(pApp != NULL);
+ CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
+ ASSERT(pApp != NULL);
- if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
- (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD))
- {
- CFX_WideString wsFileName = pApp->JS_fieldBrowse();
- if(!wsFileName.IsEmpty())
- {
- pFormField->SetValue(wsFileName);
- UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
- }
+ if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
+ (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD)) {
+ CFX_WideString wsFileName = pApp->JS_fieldBrowse();
+ if (!wsFileName.IsEmpty()) {
+ pFormField->SetValue(wsFileName);
+ UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
}
- else
- return FALSE;
+ } else
+ return FALSE;
- return TRUE;
+ return TRUE;
}
+FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
-FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- int nface = 0;
- int iSize = params.size();
- if (iSize >= 1)
- nface = params[0].ToInt();
+ int nface = 0;
+ int iSize = params.size();
+ if (iSize >= 1)
+ nface = params[0].ToInt();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- if (nface == 0)
- vRet = pFormControl->GetNormalCaption().c_str();
- else if (nface == 1)
- vRet = pFormControl->GetDownCaption().c_str();
- else if (nface == 2)
- vRet = pFormControl->GetRolloverCaption().c_str();
- else
- return FALSE;
+ if (nface == 0)
+ vRet = pFormControl->GetNormalCaption().c_str();
+ else if (nface == 1)
+ vRet = pFormControl->GetDownCaption().c_str();
+ else if (nface == 2)
+ vRet = pFormControl->GetRolloverCaption().c_str();
+ else
+ return FALSE;
- return TRUE;
+ return TRUE;
}
//#pragma warning(disable: 4800)
-FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- int nface = 0;
- int iSize = params.size();
- if (iSize >= 1)
- nface = params[0].ToInt();
+ int nface = 0;
+ int iSize = params.size();
+ if (iSize >= 1)
+ nface = params[0].ToInt();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
- return FALSE;
+ if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
+ return FALSE;
- CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
- if (!pFormControl)return FALSE;
+ CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
+ if (!pFormControl)
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
- ASSERT(pObj.IsEmpty() == FALSE);
+ JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext,
+ JS_GetObjDefnID(*pRuntime, L"Icon"));
+ ASSERT(pObj.IsEmpty() == FALSE);
- CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
- ASSERT(pJS_Icon != NULL);
+ CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
+ ASSERT(pJS_Icon != NULL);
- Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
- ASSERT(pIcon != NULL);
+ Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
+ ASSERT(pIcon != NULL);
- CPDF_Stream* pIconStream = NULL;
- if (nface == 0)
- pIconStream = pFormControl->GetNormalIcon();
- else if (nface == 1)
- pIconStream = pFormControl->GetDownIcon();
- else if (nface == 2)
- pIconStream = pFormControl->GetRolloverIcon();
- else
- return FALSE;
+ CPDF_Stream* pIconStream = NULL;
+ if (nface == 0)
+ pIconStream = pFormControl->GetNormalIcon();
+ else if (nface == 1)
+ pIconStream = pFormControl->GetDownIcon();
+ else if (nface == 2)
+ pIconStream = pFormControl->GetRolloverIcon();
+ else
+ return FALSE;
- pIcon->SetStream(pIconStream);
- vRet = pJS_Icon;
+ pIcon->SetStream(pIconStream);
+ vRet = pJS_Icon;
- return TRUE;
+ return TRUE;
}
//#pragma warning(default: 4800)
-FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
#if 0
ASSERT(m_pDocument != NULL);
@@ -3497,620 +3384,681 @@ FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params,
UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE);
vRet = 0;
-#endif // 0
- return TRUE;
+#endif // 0
+ return TRUE;
}
-FX_BOOL Field::buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::buttonSetCaption(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::buttonSetIcon(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::checkThisBox(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- if (!m_bCanSet) return FALSE;
+ if (!m_bCanSet)
+ return FALSE;
- int iSize = params.size();
- if (iSize < 1)
- return FALSE;
+ int iSize = params.size();
+ if (iSize < 1)
+ return FALSE;
- int nWidget = params[0].ToInt();
+ int nWidget = params[0].ToInt();
- FX_BOOL bCheckit = TRUE;
- if (iSize >= 2)
- bCheckit = params[1].ToBool();
+ FX_BOOL bCheckit = TRUE;
+ if (iSize >= 2)
+ bCheckit = params[1].ToBool();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
- return FALSE;
- if(nWidget <0 || nWidget >= pFormField->CountControls())
- return FALSE;
- if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
- pFormField->CheckControl(nWidget, bCheckit, TRUE);
- else
- pFormField->CheckControl(nWidget, bCheckit, TRUE);
+ if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
+ pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
+ return FALSE;
+ if (nWidget < 0 || nWidget >= pFormField->CountControls())
+ return FALSE;
+ if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
+ pFormField->CheckControl(nWidget, bCheckit, TRUE);
+ else
+ pFormField->CheckControl(nWidget, bCheckit, TRUE);
- UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
- return TRUE;
+ UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
+ return TRUE;
}
-FX_BOOL Field::clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::clearItems(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- if (!m_bCanSet) return FALSE;
+FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- int iSize = params.size();
- if (iSize < 1)
- return FALSE;
+ if (!m_bCanSet)
+ return FALSE;
- int nWidget = params[0].ToInt();
+ int iSize = params.size();
+ if (iSize < 1)
+ return FALSE;
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ int nWidget = params[0].ToInt();
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if(nWidget <0 || nWidget >= pFormField->CountControls())
- {
- vRet = FALSE;
- return FALSE;
- }
- if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
- || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
- {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- vRet = TRUE;
- }
- else
- vRet = FALSE;
+ if (nWidget < 0 || nWidget >= pFormField->CountControls()) {
+ vRet = FALSE;
+ return FALSE;
+ }
+ if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
+ (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
+ vRet = TRUE;
+ } else
+ vRet = FALSE;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::deleteItemAt(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2)
-{
- ASSERT(ps1 != NULL);
- ASSERT(ps2 != NULL);
+int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2) {
+ ASSERT(ps1 != NULL);
+ ASSERT(ps2 != NULL);
- return ps1->Compare(*ps2);
+ return ps1->Compare(*ps2);
}
+FX_BOOL Field::getArray(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
-FX_BOOL Field::getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
-
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CGW_ArrayTemplate<CFX_WideString*> swSort;
+ CGW_ArrayTemplate<CFX_WideString*> swSort;
- for (int i=0,sz=FieldArray.GetSize(); i<sz; i++)
- {
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
- ASSERT(pFormField != NULL);
+ for (int i = 0, sz = FieldArray.GetSize(); i < sz; i++) {
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
+ ASSERT(pFormField != NULL);
- swSort.Add(new CFX_WideString(pFormField->GetFullName()));
+ swSort.Add(new CFX_WideString(pFormField->GetFullName()));
+ }
+ swSort.Sort(JS_COMPARESTRING);
- }
- swSort.Sort(JS_COMPARESTRING);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Array FormFieldArray(m_isolate);
+ for (int j = 0, jsz = swSort.GetSize(); j < jsz; j++) {
+ CFX_WideString* pStr = swSort.GetAt(j);
- CJS_Array FormFieldArray(m_isolate);
- for (int j=0,jsz = swSort.GetSize(); j<jsz; j++)
- {
- CFX_WideString* pStr = swSort.GetAt(j);
+ JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext,
+ JS_GetObjDefnID(*pRuntime, L"Field"));
+ ASSERT(pObj.IsEmpty() == FALSE);
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field"));
- ASSERT(pObj.IsEmpty() == FALSE);
+ CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pObj);
+ ASSERT(pJSField != NULL);
- CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pObj);
- ASSERT(pJSField != NULL);
+ Field* pField = (Field*)pJSField->GetEmbedObject();
+ ASSERT(pField != NULL);
- Field* pField = (Field*)pJSField->GetEmbedObject();
- ASSERT(pField != NULL);
+ pField->AttachField(m_pJSDoc, *pStr);
- pField->AttachField(m_pJSDoc, *pStr);
+ CJS_Value FormFieldValue(m_isolate);
+ FormFieldValue = pJSField;
+ FormFieldArray.SetElement(j, FormFieldValue);
- CJS_Value FormFieldValue(m_isolate);
- FormFieldValue = pJSField;
- FormFieldArray.SetElement(j, FormFieldValue);
+ delete pStr;
+ }
- delete pStr;
- }
-
- vRet = FormFieldArray;
- swSort.RemoveAll();
- return TRUE;
+ vRet = FormFieldArray;
+ swSort.RemoveAll();
+ return TRUE;
}
-FX_BOOL Field::getItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
- int iSize = params.size();
+FX_BOOL Field::getItemAt(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
+ int iSize = params.size();
- int nIdx = -1;
- if (iSize >= 1)
- nIdx = params[0].ToInt();
+ int nIdx = -1;
+ if (iSize >= 1)
+ nIdx = params[0].ToInt();
- FX_BOOL bExport = TRUE;
- if (iSize >= 2)
- bExport = params[1].ToBool();
+ FX_BOOL bExport = TRUE;
+ if (iSize >= 2)
+ bExport = params[1].ToBool();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
-
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX)
- || (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX))
- {
- if (nIdx == -1 || nIdx > pFormField->CountOptions())
- nIdx = pFormField->CountOptions() -1;
- if (bExport)
- {
- CFX_WideString strval = pFormField->GetOptionValue(nIdx);
- if (strval.IsEmpty())
- vRet = pFormField->GetOptionLabel(nIdx).c_str();
- else
- vRet = strval.c_str();
- }
- else
- vRet = pFormField->GetOptionLabel(nIdx).c_str();
- }
- else
- return FALSE;
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
+
+ if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX) ||
+ (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX)) {
+ if (nIdx == -1 || nIdx > pFormField->CountOptions())
+ nIdx = pFormField->CountOptions() - 1;
+ if (bExport) {
+ CFX_WideString strval = pFormField->GetOptionValue(nIdx);
+ if (strval.IsEmpty())
+ vRet = pFormField->GetOptionLabel(nIdx).c_str();
+ else
+ vRet = strval.c_str();
+ } else
+ vRet = pFormField->GetOptionLabel(nIdx).c_str();
+ } else
+ return FALSE;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::getLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::getLock(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::insertItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::insertItemAt(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Field::isBoxChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::isBoxChecked(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- int nIndex = -1;
- if (params.size() >= 1)
- nIndex = params[0].ToInt();
+ int nIndex = -1;
+ if (params.size() >= 1)
+ nIndex = params[0].ToInt();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if(nIndex <0 || nIndex >= pFormField->CountControls())
- {
- vRet = FALSE;
- return FALSE;
- }
+ if (nIndex < 0 || nIndex >= pFormField->CountControls()) {
+ vRet = FALSE;
+ return FALSE;
+ }
- if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
- || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
- {
- if (pFormField->GetControl(nIndex)->IsChecked() !=0 )
- vRet = TRUE;
- else
- vRet = FALSE;
- }
+ if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
+ (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
+ if (pFormField->GetControl(nIndex)->IsChecked() != 0)
+ vRet = TRUE;
else
- vRet = FALSE;
+ vRet = FALSE;
+ } else
+ vRet = FALSE;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::isDefaultChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::isDefaultChecked(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- int nIndex = -1;
- if (params.size() >= 1)
- nIndex = params[0].ToInt();
+ int nIndex = -1;
+ if (params.size() >= 1)
+ nIndex = params[0].ToInt();
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- if(nIndex <0 || nIndex >= pFormField->CountControls())
- {
- vRet = FALSE;
- return FALSE;
- }
- if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
- || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
- {
- if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0)
- vRet = TRUE;
- else
- vRet = FALSE;
- }
+ if (nIndex < 0 || nIndex >= pFormField->CountControls()) {
+ vRet = FALSE;
+ return FALSE;
+ }
+ if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) ||
+ (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) {
+ if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0)
+ vRet = TRUE;
else
- vRet = FALSE;
+ vRet = FALSE;
+ } else
+ vRet = FALSE;
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::setAction(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::setAction(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Field::setFocus(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- ASSERT(m_pDocument != NULL);
+FX_BOOL Field::setFocus(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ ASSERT(m_pDocument != NULL);
- CFX_PtrArray FieldArray;
- GetFormFields(m_FieldName,FieldArray);
- if (FieldArray.GetSize() <= 0) return FALSE;
+ CFX_PtrArray FieldArray;
+ GetFormFields(m_FieldName, FieldArray);
+ if (FieldArray.GetSize() <= 0)
+ return FALSE;
- CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
- ASSERT(pFormField != NULL);
+ CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
+ ASSERT(pFormField != NULL);
- int32_t nCount = pFormField->CountControls();
+ int32_t nCount = pFormField->CountControls();
- if (nCount < 1) return FALSE;
+ if (nCount < 1)
+ return FALSE;
- CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CPDFSDK_InterForm* pInterForm =
+ (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CPDFSDK_Widget* pWidget = NULL;
- if (nCount == 1)
- {
- pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
- }
- else
- {
- CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
- ASSERT(pEnv);
- CPDF_Page* pPage = (CPDF_Page*)pEnv->FFI_GetCurrentPage(m_pDocument->GetDocument());
- if(!pPage)
- return FALSE;
- if (CPDFSDK_PageView* pCurPageView = m_pDocument->GetPageView(pPage))
- {
- for (int32_t i=0; i<nCount; i++)
- {
- if (CPDFSDK_Widget* pTempWidget = pInterForm->GetWidget(pFormField->GetControl(i)))
- {
- if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage())
- {
- pWidget = pTempWidget;
- break;
- }
- }
- }
+ CPDFSDK_Widget* pWidget = NULL;
+ if (nCount == 1) {
+ pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
+ } else {
+ CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
+ ASSERT(pEnv);
+ CPDF_Page* pPage =
+ (CPDF_Page*)pEnv->FFI_GetCurrentPage(m_pDocument->GetDocument());
+ if (!pPage)
+ return FALSE;
+ if (CPDFSDK_PageView* pCurPageView = m_pDocument->GetPageView(pPage)) {
+ for (int32_t i = 0; i < nCount; i++) {
+ if (CPDFSDK_Widget* pTempWidget =
+ pInterForm->GetWidget(pFormField->GetControl(i))) {
+ if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) {
+ pWidget = pTempWidget;
+ break;
+ }
}
+ }
}
+ }
- if (pWidget)
- {
- m_pDocument->SetFocusAnnot(pWidget);
- }
+ if (pWidget) {
+ m_pDocument->SetFocusAnnot(pWidget);
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL Field::setItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL Field::setItems(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL Field::setLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::setLock(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureGetModifications(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureGetModifications(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureGetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureGetSeedValue(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureInfo(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureInfo(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureSetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureSetSeedValue(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureSign(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureSign(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::signatureValidate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL Field::signatureValidate(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL Field::source(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << (CJS_Object*)NULL;
- }
+FX_BOOL Field::source(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << (CJS_Object*)NULL;
+ }
- return TRUE;
+ return TRUE;
}
-/////////////////////////////////////////// delay /////////////////////////////////////////////
+/////////////////////////////////////////// delay
+////////////////////////////////////////////////
-void Field::AddDelay_Int(enum FIELD_PROP prop, int32_t n)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_Int(enum FIELD_PROP prop, int32_t n) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->num = n;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->num = n;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_Bool(enum FIELD_PROP prop,bool b)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_Bool(enum FIELD_PROP prop, bool b) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->b = b;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->b = b;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_String(enum FIELD_PROP prop, const CFX_ByteString& string)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_String(enum FIELD_PROP prop,
+ const CFX_ByteString& string) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->string = string;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->string = string;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_WideString(enum FIELD_PROP prop, const CFX_WideString& string)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_WideString(enum FIELD_PROP prop,
+ const CFX_WideString& string) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->widestring = string;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->widestring = string;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->rect = rect;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->rect = rect;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- pNewData->color = color;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ pNewData->color = color;
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_WordArray(enum FIELD_PROP prop, const CFX_DWordArray& array)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_WordArray(enum FIELD_PROP prop,
+ const CFX_DWordArray& array) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
- for (int i=0,sz=array.GetSize(); i<sz; i++)
- pNewData->wordarray.Add(array.GetAt(i));
+ for (int i = 0, sz = array.GetSize(); i < sz; i++)
+ pNewData->wordarray.Add(array.GetAt(i));
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::AddDelay_WideStringArray(enum FIELD_PROP prop, const CJS_WideStringArray& array)
-{
- ASSERT(m_pJSDoc != NULL);
+void Field::AddDelay_WideStringArray(enum FIELD_PROP prop,
+ const CJS_WideStringArray& array) {
+ ASSERT(m_pJSDoc != NULL);
- CJS_DelayData* pNewData = new CJS_DelayData;
- pNewData->sFieldName = m_FieldName;
- pNewData->nControlIndex = m_nFormControlIndex;
- pNewData->eProp = prop;
- for (int i=0,sz=array.GetSize(); i<sz; i++)
- pNewData->widestringarray.Add(array.GetAt(i));
+ CJS_DelayData* pNewData = new CJS_DelayData;
+ pNewData->sFieldName = m_FieldName;
+ pNewData->nControlIndex = m_nFormControlIndex;
+ pNewData->eProp = prop;
+ for (int i = 0, sz = array.GetSize(); i < sz; i++)
+ pNewData->widestringarray.Add(array.GetAt(i));
- m_pJSDoc->AddDelayData(pNewData);
+ m_pJSDoc->AddDelayData(pNewData);
}
-void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData)
-{
- ASSERT(pDocument != NULL);
- ASSERT(pData != NULL);
+void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData) {
+ ASSERT(pDocument != NULL);
+ ASSERT(pData != NULL);
- switch (pData->eProp)
- {
+ switch (pData->eProp) {
case FP_ALIGNMENT:
- Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
- break;
+ Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->string);
+ break;
case FP_BORDERSTYLE:
- Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
- break;
+ Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->string);
+ break;
case FP_BUTTONALIGNX:
- Field::SetButtonAlignX(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetButtonAlignX(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_BUTTONALIGNY:
- Field::SetButtonAlignY(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetButtonAlignY(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_BUTTONFITBOUNDS:
- Field::SetButtonFitBounds(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetButtonFitBounds(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->b);
+ break;
case FP_BUTTONPOSITION:
- Field::SetButtonPosition(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetButtonPosition(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->num);
+ break;
case FP_BUTTONSCALEHOW:
- Field::SetButtonScaleHow(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetButtonScaleHow(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->num);
+ break;
case FP_BUTTONSCALEWHEN:
- Field::SetButtonScaleWhen(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetButtonScaleWhen(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->num);
+ break;
case FP_CALCORDERINDEX:
- Field::SetCalcOrderIndex(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetCalcOrderIndex(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->num);
+ break;
case FP_CHARLIMIT:
- Field::SetCharLimit(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetCharLimit(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_COMB:
- Field::SetComb(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetComb(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_COMMITONSELCHANGE:
- Field::SetCommitOnSelChange(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetCommitOnSelChange(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->b);
+ break;
case FP_CURRENTVALUEINDICES:
- Field::SetCurrentValueIndices(pDocument, pData->sFieldName, pData->nControlIndex, pData->wordarray);
- break;
+ Field::SetCurrentValueIndices(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->wordarray);
+ break;
case FP_DEFAULTVALUE:
- Field::SetDefaultValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring);
- break;
+ Field::SetDefaultValue(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->widestring);
+ break;
case FP_DONOTSCROLL:
- Field::SetDoNotScroll(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetDoNotScroll(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_DISPLAY:
- Field::SetDisplay(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetDisplay(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_FILLCOLOR:
- Field::SetFillColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
- break;
+ Field::SetFillColor(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->color);
+ break;
case FP_HIDDEN:
- Field::SetHidden(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetHidden(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_HIGHLIGHT:
- Field::SetHighlight(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
- break;
+ Field::SetHighlight(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->string);
+ break;
case FP_LINEWIDTH:
- Field::SetLineWidth(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetLineWidth(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_MULTILINE:
- Field::SetMultiline(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetMultiline(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_MULTIPLESELECTION:
- Field::SetMultipleSelection(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetMultipleSelection(pDocument, pData->sFieldName,
+ pData->nControlIndex, pData->b);
+ break;
case FP_PASSWORD:
- Field::SetPassword(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetPassword(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_RECT:
- Field::SetRect(pDocument, pData->sFieldName, pData->nControlIndex, pData->rect);
- break;
+ Field::SetRect(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->rect);
+ break;
case FP_RICHTEXT:
- Field::SetRichText(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
- break;
+ Field::SetRichText(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->b);
+ break;
case FP_RICHVALUE:
- break;
+ break;
case FP_ROTATION:
- Field::SetRotation(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetRotation(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_STROKECOLOR:
- Field::SetStrokeColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
- break;
+ Field::SetStrokeColor(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->color);
+ break;
case FP_STYLE:
- Field::SetStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
- break;
+ Field::SetStyle(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->string);
+ break;
case FP_TEXTCOLOR:
- Field::SetTextColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
- break;
+ Field::SetTextColor(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->color);
+ break;
case FP_TEXTFONT:
- Field::SetTextFont(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
- break;
+ Field::SetTextFont(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->string);
+ break;
case FP_TEXTSIZE:
- Field::SetTextSize(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
- break;
+ Field::SetTextSize(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->num);
+ break;
case FP_USERNAME:
- Field::SetUserName(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring);
- break;
+ Field::SetUserName(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->widestring);
+ break;
case FP_VALUE:
- Field::SetValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestringarray);
- break;
- }
+ Field::SetValue(pDocument, pData->sFieldName, pData->nControlIndex,
+ pData->widestringarray);
+ break;
+ }
}
-#define JS_FIELD_MINWIDTH 1
-#define JS_FIELD_MINHEIGHT 1
+#define JS_FIELD_MINWIDTH 1
+#define JS_FIELD_MINHEIGHT 1
-void Field::AddField(CPDFSDK_Document* pDocument, int nPageIndex, int nFieldType,
- const CFX_WideString& sName, const CPDF_Rect& rcCoords)
-{
- //Not supported.
+void Field::AddField(CPDFSDK_Document* pDocument,
+ int nPageIndex,
+ int nFieldType,
+ const CFX_WideString& sName,
+ const CPDF_Rect& rcCoords) {
+ // Not supported.
}
-
diff --git a/fpdfsdk/src/javascript/Icon.cpp b/fpdfsdk/src/javascript/Icon.cpp
index 6b3e02e1ec..0e96a05e5e 100644
--- a/fpdfsdk/src/javascript/Icon.cpp
+++ b/fpdfsdk/src/javascript/Icon.cpp
@@ -17,51 +17,42 @@ BEGIN_JS_STATIC_CONST(CJS_Icon)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_Icon)
- JS_STATIC_PROP_ENTRY(name)
+JS_STATIC_PROP_ENTRY(name)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Icon)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_Icon,Icon)
+IMPLEMENT_JS_CLASS(CJS_Icon, Icon)
-Icon::Icon(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject),
- m_pIconStream(NULL),
- m_swIconName(L"")
-{
-}
-
-Icon::~Icon()
-{
+Icon::Icon(CJS_Object* pJSObject)
+ : CJS_EmbedObj(pJSObject), m_pIconStream(NULL), m_swIconName(L"") {}
-}
+Icon::~Icon() {}
-void Icon::SetStream(CPDF_Stream* pIconStream)
-{
- if(pIconStream)
- m_pIconStream = pIconStream;
+void Icon::SetStream(CPDF_Stream* pIconStream) {
+ if (pIconStream)
+ m_pIconStream = pIconStream;
}
-CPDF_Stream* Icon::GetStream()
-{
- return m_pIconStream;
+CPDF_Stream* Icon::GetStream() {
+ return m_pIconStream;
}
-void Icon::SetIconName(CFX_WideString name)
-{
- m_swIconName = name;
+void Icon::SetIconName(CFX_WideString name) {
+ m_swIconName = name;
}
-CFX_WideString Icon::GetIconName()
-{
- return m_swIconName;
+CFX_WideString Icon::GetIconName() {
+ return m_swIconName;
}
-FX_BOOL Icon::name(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if(!vp.IsGetting())return FALSE;
+FX_BOOL Icon::name(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- vp << m_swIconName;
- return TRUE;
+ vp << m_swIconName;
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/javascript/JS_Context.cpp b/fpdfsdk/src/javascript/JS_Context.cpp
index 72be34d751..6e935e8647 100644
--- a/fpdfsdk/src/javascript/JS_Context.cpp
+++ b/fpdfsdk/src/javascript/JS_Context.cpp
@@ -14,337 +14,345 @@
/* -------------------------- CJS_Context -------------------------- */
-CJS_Context::CJS_Context(CJS_Runtime* pRuntime) :
- m_pRuntime(pRuntime),
- m_bBusy(FALSE),
- m_bMsgBoxEnable(TRUE)
-{
- m_pEventHandler = new CJS_EventHandler(this);
+CJS_Context::CJS_Context(CJS_Runtime* pRuntime)
+ : m_pRuntime(pRuntime), m_bBusy(FALSE), m_bMsgBoxEnable(TRUE) {
+ m_pEventHandler = new CJS_EventHandler(this);
}
-CJS_Context::~CJS_Context(void)
-{
- delete m_pEventHandler;
+CJS_Context::~CJS_Context(void) {
+ delete m_pEventHandler;
}
-CPDFSDK_Document* CJS_Context::GetReaderDocument()
-{
- ASSERT(m_pRuntime != NULL);
+CPDFSDK_Document* CJS_Context::GetReaderDocument() {
+ ASSERT(m_pRuntime != NULL);
- return m_pRuntime->GetReaderDocument();
+ return m_pRuntime->GetReaderDocument();
}
-CPDFDoc_Environment* CJS_Context::GetReaderApp()
-{
- ASSERT(m_pRuntime != NULL);
+CPDFDoc_Environment* CJS_Context::GetReaderApp() {
+ ASSERT(m_pRuntime != NULL);
- return m_pRuntime->GetReaderApp();
+ return m_pRuntime->GetReaderApp();
}
-FX_BOOL CJS_Context::DoJob(int nMode, const CFX_WideString& script, CFX_WideString& info)
-{
- if (m_bBusy)
- {
- info = JSGetStringFromID(this, IDS_STRING_JSBUSY);
- return FALSE;
- }
+FX_BOOL CJS_Context::DoJob(int nMode,
+ const CFX_WideString& script,
+ CFX_WideString& info) {
+ if (m_bBusy) {
+ info = JSGetStringFromID(this, IDS_STRING_JSBUSY);
+ return FALSE;
+ }
- m_bBusy = TRUE;
+ m_bBusy = TRUE;
- ASSERT(m_pRuntime != NULL);
- ASSERT(m_pEventHandler != NULL);
- ASSERT(m_pEventHandler->IsValid());
+ ASSERT(m_pRuntime != NULL);
+ ASSERT(m_pEventHandler != NULL);
+ ASSERT(m_pEventHandler->IsValid());
- if (!m_pRuntime->AddEventToLoop(m_pEventHandler->TargetName(), m_pEventHandler->EventType()))
- {
- info = JSGetStringFromID(this, IDS_STRING_JSEVENT);
- return FALSE;
- }
+ if (!m_pRuntime->AddEventToLoop(m_pEventHandler->TargetName(),
+ m_pEventHandler->EventType())) {
+ info = JSGetStringFromID(this, IDS_STRING_JSEVENT);
+ return FALSE;
+ }
- FXJSErr error ={NULL,NULL, 0};
- int nRet = 0;
+ FXJSErr error = {NULL, NULL, 0};
+ int nRet = 0;
- if (script.GetLength() > 0)
- {
- if (nMode == 0)
- {
- nRet = JS_Execute(*m_pRuntime, this, script.c_str(), script.GetLength(), &error);
- }
- else
- {
- nRet = JS_Parse(*m_pRuntime, this, script.c_str(), script.GetLength(), &error);
- }
- }
+ if (script.GetLength() > 0) {
+ if (nMode == 0) {
+ nRet = JS_Execute(*m_pRuntime, this, script.c_str(), script.GetLength(),
+ &error);
+ } else {
+ nRet = JS_Parse(*m_pRuntime, this, script.c_str(), script.GetLength(),
+ &error);
+ }
+ }
- if (nRet < 0)
- {
- CFX_WideString sLine;
- sLine.Format(L"[ Line: %05d { %s } ] : %s",error.linnum-1,error.srcline,error.message);
+ if (nRet < 0) {
+ CFX_WideString sLine;
+ sLine.Format(L"[ Line: %05d { %s } ] : %s", error.linnum - 1, error.srcline,
+ error.message);
-// TRACE(L"/* -------------- JS Error -------------- */\n");
-// TRACE(sLine);
-// TRACE(L"\n");
- //CFX_ByteString sTemp = CFX_ByteString::FromUnicode(error.message);
- info += sLine;
- }
- else
- {
- info = JSGetStringFromID(this, IDS_STRING_RUN);
- }
+ // TRACE(L"/* -------------- JS Error --------------
+ //*/\n");
+ // TRACE(sLine);
+ // TRACE(L"\n");
+ // CFX_ByteString sTemp = CFX_ByteString::FromUnicode(error.message);
+ info += sLine;
+ } else {
+ info = JSGetStringFromID(this, IDS_STRING_RUN);
+ }
- m_pRuntime->RemoveEventInLoop(m_pEventHandler->TargetName(), m_pEventHandler->EventType());
+ m_pRuntime->RemoveEventInLoop(m_pEventHandler->TargetName(),
+ m_pEventHandler->EventType());
- m_pEventHandler->Destroy();
- m_bBusy = FALSE;
+ m_pEventHandler->Destroy();
+ m_bBusy = FALSE;
- return nRet >= 0;
+ return nRet >= 0;
}
-FX_BOOL CJS_Context::RunScript(const CFX_WideString& script, CFX_WideString& info)
-{
- v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
- v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
- v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
- v8::Context::Scope context_scope(context);
+FX_BOOL CJS_Context::RunScript(const CFX_WideString& script,
+ CFX_WideString& info) {
+ v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
+ v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
+ v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
+ v8::Context::Scope context_scope(context);
- return DoJob(0, script, info);
+ return DoJob(0, script, info);
}
-FX_BOOL CJS_Context::Compile(const CFX_WideString& script, CFX_WideString& info)
-{
- v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
- v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
- v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
- v8::Context::Scope context_scope(context);
+FX_BOOL CJS_Context::Compile(const CFX_WideString& script,
+ CFX_WideString& info) {
+ v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate());
+ v8::HandleScope handle_scope(m_pRuntime->GetIsolate());
+ v8::Local<v8::Context> context = m_pRuntime->NewJSContext();
+ v8::Context::Scope context_scope(context);
- return DoJob(1, script, info);
+ return DoJob(1, script, info);
}
-void CJS_Context::OnApp_Init()
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnApp_Init();
+void CJS_Context::OnApp_Init() {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnApp_Init();
}
-void CJS_Context::OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString &strTargetName)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_Open(pDoc,strTargetName);
+void CJS_Context::OnDoc_Open(CPDFSDK_Document* pDoc,
+ const CFX_WideString& strTargetName) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_Open(pDoc, strTargetName);
}
-void CJS_Context::OnDoc_WillPrint(CPDFSDK_Document* pDoc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_WillPrint(pDoc);
+void CJS_Context::OnDoc_WillPrint(CPDFSDK_Document* pDoc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_WillPrint(pDoc);
}
-void CJS_Context::OnDoc_DidPrint(CPDFSDK_Document* pDoc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_DidPrint(pDoc);
+void CJS_Context::OnDoc_DidPrint(CPDFSDK_Document* pDoc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_DidPrint(pDoc);
}
-void CJS_Context::OnDoc_WillSave(CPDFSDK_Document* pDoc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_WillSave(pDoc);
+void CJS_Context::OnDoc_WillSave(CPDFSDK_Document* pDoc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_WillSave(pDoc);
}
-void CJS_Context::OnDoc_DidSave(CPDFSDK_Document* pDoc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_DidSave(pDoc);
+void CJS_Context::OnDoc_DidSave(CPDFSDK_Document* pDoc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_DidSave(pDoc);
}
-void CJS_Context::OnDoc_WillClose(CPDFSDK_Document* pDoc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnDoc_WillClose(pDoc);
+void CJS_Context::OnDoc_WillClose(CPDFSDK_Document* pDoc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnDoc_WillClose(pDoc);
}
-void CJS_Context::OnPage_Open(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnPage_Open(pTarget);
+void CJS_Context::OnPage_Open(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnPage_Open(pTarget);
}
-void CJS_Context::OnPage_Close(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnPage_Close(pTarget);
+void CJS_Context::OnPage_Close(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnPage_Close(pTarget);
}
-void CJS_Context::OnPage_InView(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnPage_InView(pTarget);
+void CJS_Context::OnPage_InView(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnPage_InView(pTarget);
}
-void CJS_Context::OnPage_OutView(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnPage_OutView(pTarget);
+void CJS_Context::OnPage_OutView(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnPage_OutView(pTarget);
}
-void CJS_Context::OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_MouseDown(bModifier, bShift, pTarget);
+void CJS_Context::OnField_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_MouseDown(bModifier, bShift, pTarget);
}
-void CJS_Context::OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_MouseEnter(bModifier, bShift, pTarget);
+void CJS_Context::OnField_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_MouseEnter(bModifier, bShift, pTarget);
}
-void CJS_Context::OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_MouseExit(bModifier, bShift, pTarget);
+void CJS_Context::OnField_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_MouseExit(bModifier, bShift, pTarget);
}
-void CJS_Context::OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField *pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_MouseUp(bModifier, bShift, pTarget);
+void CJS_Context::OnField_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_MouseUp(bModifier, bShift, pTarget);
}
-void CJS_Context::OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_Focus(bModifier, bShift, pTarget, Value);
+void CJS_Context::OnField_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_Focus(bModifier, bShift, pTarget, Value);
}
-void CJS_Context::OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_Blur(bModifier, bShift, pTarget, Value);
+void CJS_Context::OnField_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_Blur(bModifier, bShift, pTarget, Value);
}
-void CJS_Context::OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_Calculate(pSource, pTarget, Value, bRc);
+void CJS_Context::OnField_Calculate(CPDF_FormField* pSource,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_Calculate(pSource, pTarget, Value, bRc);
}
-void CJS_Context::OnField_Format(CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit)
-{
- m_pEventHandler->OnField_Format(pTarget, Value, bWillCommit);
+void CJS_Context::OnField_Format(CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL bWillCommit) {
+ m_pEventHandler->OnField_Format(pTarget, Value, bWillCommit);
}
-
-void CJS_Context::OnField_Keystroke(CFX_WideString& strChange, const CFX_WideString& strChangeEx,
- FX_BOOL bKeyDown, FX_BOOL bModifier, int &nSelEnd,int &nSelStart,
- FX_BOOL bShift, CPDF_FormField* pTarget, CFX_WideString& Value,
- FX_BOOL bWillCommit, FX_BOOL bFieldFull, FX_BOOL& bRc)
-{
- m_pEventHandler->OnField_Keystroke(
- strChange, strChangeEx, bKeyDown, bModifier, nSelEnd, nSelStart,
- bShift, pTarget, Value, bWillCommit, bFieldFull, bRc);
+void CJS_Context::OnField_Keystroke(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ int& nSelEnd,
+ int& nSelStart,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL bWillCommit,
+ FX_BOOL bFieldFull,
+ FX_BOOL& bRc) {
+ m_pEventHandler->OnField_Keystroke(
+ strChange, strChangeEx, bKeyDown, bModifier, nSelEnd, nSelStart, bShift,
+ pTarget, Value, bWillCommit, bFieldFull, bRc);
}
-void CJS_Context::OnField_Validate(CFX_WideString& strChange,const CFX_WideString& strChangeEx,
- FX_BOOL bKeyDown, FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
- CFX_WideString& Value, FX_BOOL& bRc)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnField_Validate(strChange, strChangeEx, bKeyDown, bModifier, bShift, pTarget, Value, bRc);
+void CJS_Context::OnField_Validate(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnField_Validate(strChange, strChangeEx, bKeyDown, bModifier,
+ bShift, pTarget, Value, bRc);
}
-void CJS_Context::OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_Focus(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_Focus(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_Blur(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_Blur(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_Open(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_Open(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_Open(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_Close(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_Close(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_Close(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_MouseDown(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_MouseDown(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_MouseUp(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_MouseUp(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_MouseEnter(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_MouseEnter(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_MouseExit(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_MouseExit(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_InView(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_InView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_InView(bModifier, bShift, pScreen);
}
-void CJS_Context::OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnScreen_OutView(bModifier, bShift, pScreen);
+void CJS_Context::OnScreen_OutView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnScreen_OutView(bModifier, bShift, pScreen);
}
-void CJS_Context::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnBookmark_MouseUp(pBookMark);
+void CJS_Context::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnBookmark_MouseUp(pBookMark);
}
-void CJS_Context::OnLink_MouseUp(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnLink_MouseUp(pTarget);
+void CJS_Context::OnLink_MouseUp(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnLink_MouseUp(pTarget);
}
-void CJS_Context::OnConsole_Exec()
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnConsole_Exec();
+void CJS_Context::OnConsole_Exec() {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnConsole_Exec();
}
-void CJS_Context::OnExternal_Exec()
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnExternal_Exec();
+void CJS_Context::OnExternal_Exec() {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnExternal_Exec();
}
-void CJS_Context::OnBatchExec(CPDFSDK_Document* pTarget)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnBatchExec(pTarget);
+void CJS_Context::OnBatchExec(CPDFSDK_Document* pTarget) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnBatchExec(pTarget);
}
-void CJS_Context::OnMenu_Exec(CPDFSDK_Document* pTarget,const CFX_WideString& strTargetName)
-{
- ASSERT(m_pEventHandler != NULL);
- m_pEventHandler->OnMenu_Exec(pTarget, strTargetName);
+void CJS_Context::OnMenu_Exec(CPDFSDK_Document* pTarget,
+ const CFX_WideString& strTargetName) {
+ ASSERT(m_pEventHandler != NULL);
+ m_pEventHandler->OnMenu_Exec(pTarget, strTargetName);
}
-
diff --git a/fpdfsdk/src/javascript/JS_EventHandler.cpp b/fpdfsdk/src/javascript/JS_EventHandler.cpp
index 1769e3053f..1eee92ddc1 100644
--- a/fpdfsdk/src/javascript/JS_EventHandler.cpp
+++ b/fpdfsdk/src/javascript/JS_EventHandler.cpp
@@ -17,511 +17,536 @@
/* ---------------------------- CJS_EventHandler ---------------------------- */
-CJS_EventHandler::CJS_EventHandler(CJS_Context * pContext) :
- m_pJSContext(pContext),
- m_eEventType(JET_UNKNOWN),
- m_bValid(FALSE),
- m_pWideStrChange(NULL),
- m_nCommitKey(-1),
- m_bKeyDown(FALSE),
- m_bModifier(FALSE),
- m_bShift(FALSE),
- m_pISelEnd(NULL),
- m_nSelEndDu(0),
- m_pISelStart(NULL),
- m_nSelStartDu(0),
- m_bWillCommit(FALSE),
- m_pValue(NULL),
- m_bFieldFull(FALSE),
- m_pbRc(NULL),
- m_bRcDu(FALSE),
- m_pSourceDoc(NULL),
- m_pTargetBookMark(NULL),
- m_pTargetDoc(NULL),
- m_pTargetAnnot(NULL)
-{
-}
+CJS_EventHandler::CJS_EventHandler(CJS_Context* pContext)
+ : m_pJSContext(pContext),
+ m_eEventType(JET_UNKNOWN),
+ m_bValid(FALSE),
+ m_pWideStrChange(NULL),
+ m_nCommitKey(-1),
+ m_bKeyDown(FALSE),
+ m_bModifier(FALSE),
+ m_bShift(FALSE),
+ m_pISelEnd(NULL),
+ m_nSelEndDu(0),
+ m_pISelStart(NULL),
+ m_nSelStartDu(0),
+ m_bWillCommit(FALSE),
+ m_pValue(NULL),
+ m_bFieldFull(FALSE),
+ m_pbRc(NULL),
+ m_bRcDu(FALSE),
+ m_pSourceDoc(NULL),
+ m_pTargetBookMark(NULL),
+ m_pTargetDoc(NULL),
+ m_pTargetAnnot(NULL) {}
-CJS_EventHandler::~CJS_EventHandler()
-{
-}
+CJS_EventHandler::~CJS_EventHandler() {}
-void CJS_EventHandler::OnApp_Init()
-{
- Initial(JET_APP_INIT);
+void CJS_EventHandler::OnApp_Init() {
+ Initial(JET_APP_INIT);
}
-void CJS_EventHandler::OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString& strTargetName)
-{
- Initial(JET_DOC_OPEN);
+void CJS_EventHandler::OnDoc_Open(CPDFSDK_Document* pDoc,
+ const CFX_WideString& strTargetName) {
+ Initial(JET_DOC_OPEN);
- m_pTargetDoc = pDoc;
- m_strTargetName = strTargetName;
+ m_pTargetDoc = pDoc;
+ m_strTargetName = strTargetName;
}
-void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc)
-{
- Initial(JET_DOC_WILLPRINT);
+void CJS_EventHandler::OnDoc_WillPrint(CPDFSDK_Document* pDoc) {
+ Initial(JET_DOC_WILLPRINT);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc)
-{
- Initial(JET_DOC_DIDPRINT);
+void CJS_EventHandler::OnDoc_DidPrint(CPDFSDK_Document* pDoc) {
+ Initial(JET_DOC_DIDPRINT);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc)
-{
- Initial(JET_DOC_WILLSAVE);
- m_pTargetDoc = pDoc;
+void CJS_EventHandler::OnDoc_WillSave(CPDFSDK_Document* pDoc) {
+ Initial(JET_DOC_WILLSAVE);
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc)
-{
- Initial(JET_DOC_DIDSAVE);
+void CJS_EventHandler::OnDoc_DidSave(CPDFSDK_Document* pDoc) {
+ Initial(JET_DOC_DIDSAVE);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc)
-{
- Initial(JET_DOC_WILLCLOSE);
+void CJS_EventHandler::OnDoc_WillClose(CPDFSDK_Document* pDoc) {
+ Initial(JET_DOC_WILLCLOSE);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc)
-{
- Initial(JET_PAGE_OPEN);
+void CJS_EventHandler::OnPage_Open(CPDFSDK_Document* pDoc) {
+ Initial(JET_PAGE_OPEN);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc)
-{
- Initial(JET_PAGE_CLOSE);
+void CJS_EventHandler::OnPage_Close(CPDFSDK_Document* pDoc) {
+ Initial(JET_PAGE_CLOSE);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc)
-{
- Initial(JET_PAGE_INVIEW);
+void CJS_EventHandler::OnPage_InView(CPDFSDK_Document* pDoc) {
+ Initial(JET_PAGE_INVIEW);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc)
-{
- Initial(JET_PAGE_OUTVIEW);
+void CJS_EventHandler::OnPage_OutView(CPDFSDK_Document* pDoc) {
+ Initial(JET_PAGE_OUTVIEW);
- m_pTargetDoc = pDoc;
+ m_pTargetDoc = pDoc;
}
-void CJS_EventHandler::OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
-{
- Initial(JET_FIELD_MOUSEENTER);
+void CJS_EventHandler::OnField_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ Initial(JET_FIELD_MOUSEENTER);
- m_bModifier = bModifier;
- m_bShift = bShift;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
}
-void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
-{
- Initial(JET_FIELD_MOUSEEXIT);
+void CJS_EventHandler::OnField_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ Initial(JET_FIELD_MOUSEEXIT);
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
}
-void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
-{
- Initial(JET_FIELD_MOUSEDOWN);
- m_eEventType = JET_FIELD_MOUSEDOWN;
+void CJS_EventHandler::OnField_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ Initial(JET_FIELD_MOUSEDOWN);
+ m_eEventType = JET_FIELD_MOUSEDOWN;
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
}
-void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget)
-{
- Initial(JET_FIELD_MOUSEUP);
+void CJS_EventHandler::OnField_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) {
+ Initial(JET_FIELD_MOUSEUP);
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
}
-void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
- const CFX_WideString& Value)
-{
- Initial(JET_FIELD_FOCUS);
+void CJS_EventHandler::OnField_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) {
+ Initial(JET_FIELD_FOCUS);
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = (CFX_WideString*)&Value;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = (CFX_WideString*)&Value;
}
-void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget,
- const CFX_WideString& Value)
-{
- Initial(JET_FIELD_BLUR);
+void CJS_EventHandler::OnField_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) {
+ Initial(JET_FIELD_BLUR);
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = (CFX_WideString*)&Value;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = (CFX_WideString*)&Value;
}
-void CJS_EventHandler::OnField_Keystroke(CFX_WideString &strChange,
- const CFX_WideString& strChangeEx, FX_BOOL KeyDown,
- FX_BOOL bModifier, int& nSelEnd, int& nSelStart,
- FX_BOOL bShift, CPDF_FormField* pTarget,
- CFX_WideString& Value, FX_BOOL bWillCommit,
- FX_BOOL bFieldFull, FX_BOOL& bRc)
-{
- Initial(JET_FIELD_KEYSTROKE);
-
- m_nCommitKey = 0;
- m_pWideStrChange = &strChange;
- m_WideStrChangeEx = strChangeEx;
- m_bKeyDown = KeyDown;
- m_bModifier = bModifier;
- m_pISelEnd = &nSelEnd;
- m_pISelStart = &nSelStart;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = &Value;
- m_bWillCommit = bWillCommit;
- m_pbRc = &bRc;
- m_bFieldFull = bFieldFull;
-}
-
-void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange, const CFX_WideString& strChangeEx,
- FX_BOOL bKeyDown, FX_BOOL bModifier, FX_BOOL bShift,
- CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc)
-{
- Initial(JET_FIELD_VALIDATE);
-
- m_pWideStrChange = &strChange;
- m_WideStrChangeEx = strChangeEx;
- m_bKeyDown = bKeyDown;
- m_bModifier = bModifier;
- m_bShift = bShift;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = &Value;
- m_pbRc = &bRc;
-}
-
-void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget,
- CFX_WideString& Value, FX_BOOL& bRc)
-{
- Initial(JET_FIELD_CALCULATE);
-
- if (pSource)
- m_strSourceName = pSource->GetFullName();
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = &Value;
- m_pbRc = &bRc;
+void CJS_EventHandler::OnField_Keystroke(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL KeyDown,
+ FX_BOOL bModifier,
+ int& nSelEnd,
+ int& nSelStart,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL bWillCommit,
+ FX_BOOL bFieldFull,
+ FX_BOOL& bRc) {
+ Initial(JET_FIELD_KEYSTROKE);
+
+ m_nCommitKey = 0;
+ m_pWideStrChange = &strChange;
+ m_WideStrChangeEx = strChangeEx;
+ m_bKeyDown = KeyDown;
+ m_bModifier = bModifier;
+ m_pISelEnd = &nSelEnd;
+ m_pISelStart = &nSelStart;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = &Value;
+ m_bWillCommit = bWillCommit;
+ m_pbRc = &bRc;
+ m_bFieldFull = bFieldFull;
+}
+
+void CJS_EventHandler::OnField_Validate(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) {
+ Initial(JET_FIELD_VALIDATE);
+
+ m_pWideStrChange = &strChange;
+ m_WideStrChangeEx = strChangeEx;
+ m_bKeyDown = bKeyDown;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = &Value;
+ m_pbRc = &bRc;
+}
+
+void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) {
+ Initial(JET_FIELD_CALCULATE);
+
+ if (pSource)
+ m_strSourceName = pSource->GetFullName();
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = &Value;
+ m_pbRc = &bRc;
}
void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget,
CFX_WideString& Value,
- FX_BOOL bWillCommit)
-{
- Initial(JET_FIELD_FORMAT);
+ FX_BOOL bWillCommit) {
+ Initial(JET_FIELD_FORMAT);
- m_nCommitKey = 0;
- ASSERT(pTarget != NULL);
- m_strTargetName = pTarget->GetFullName();
- m_pValue = &Value;
- m_bWillCommit = bWillCommit;
+ m_nCommitKey = 0;
+ ASSERT(pTarget != NULL);
+ m_strTargetName = pTarget->GetFullName();
+ m_pValue = &Value;
+ m_bWillCommit = bWillCommit;
}
-void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_FOCUS);
+void CJS_EventHandler::OnScreen_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_FOCUS);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_BLUR);
+void CJS_EventHandler::OnScreen_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_BLUR);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_OPEN);
+void CJS_EventHandler::OnScreen_Open(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_OPEN);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_CLOSE);
+void CJS_EventHandler::OnScreen_Close(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_CLOSE);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_MOUSEDOWN);
+void CJS_EventHandler::OnScreen_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_MOUSEDOWN);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_MOUSEUP);
+void CJS_EventHandler::OnScreen_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_MOUSEUP);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_MOUSEENTER);
+void CJS_EventHandler::OnScreen_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_MOUSEENTER);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_MOUSEEXIT);
+void CJS_EventHandler::OnScreen_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_MOUSEEXIT);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_INVIEW);
+void CJS_EventHandler::OnScreen_InView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_INVIEW);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen)
-{
- Initial(JET_SCREEN_OUTVIEW);
+void CJS_EventHandler::OnScreen_OutView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) {
+ Initial(JET_SCREEN_OUTVIEW);
- m_bModifier = bModifier;
- m_bShift = bShift;
- m_pTargetAnnot = pScreen;
+ m_bModifier = bModifier;
+ m_bShift = bShift;
+ m_pTargetAnnot = pScreen;
}
-void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget)
-{
- Initial(JET_LINK_MOUSEUP);
+void CJS_EventHandler::OnLink_MouseUp(CPDFSDK_Document* pTarget) {
+ Initial(JET_LINK_MOUSEUP);
- m_pTargetDoc = pTarget;
+ m_pTargetDoc = pTarget;
}
-void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark)
-{
- Initial(JET_BOOKMARK_MOUSEUP);
+void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) {
+ Initial(JET_BOOKMARK_MOUSEUP);
- m_pTargetBookMark = pBookMark;
+ m_pTargetBookMark = pBookMark;
}
-void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString& strTargetName)
-{
- Initial(JET_MENU_EXEC);
+void CJS_EventHandler::OnMenu_Exec(CPDFSDK_Document* pTarget,
+ const CFX_WideString& strTargetName) {
+ Initial(JET_MENU_EXEC);
- m_pTargetDoc = pTarget;
- m_strTargetName = strTargetName;
+ m_pTargetDoc = pTarget;
+ m_strTargetName = strTargetName;
}
-void CJS_EventHandler::OnExternal_Exec()
-{
- Initial(JET_EXTERNAL_EXEC);
+void CJS_EventHandler::OnExternal_Exec() {
+ Initial(JET_EXTERNAL_EXEC);
}
-void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget)
-{
- Initial(JET_BATCH_EXEC);
+void CJS_EventHandler::OnBatchExec(CPDFSDK_Document* pTarget) {
+ Initial(JET_BATCH_EXEC);
- m_pTargetDoc = pTarget;
+ m_pTargetDoc = pTarget;
}
-void CJS_EventHandler::OnConsole_Exec()
-{
- Initial(JET_CONSOLE_EXEC);
+void CJS_EventHandler::OnConsole_Exec() {
+ Initial(JET_CONSOLE_EXEC);
}
+void CJS_EventHandler::Initial(JS_EVENT_T type) {
+ m_eEventType = type;
-void CJS_EventHandler::Initial(JS_EVENT_T type)
-{
- m_eEventType = type;
-
- m_strTargetName = L"";
- m_strSourceName = L"";
- m_pWideStrChange = NULL;
- m_WideStrChangeDu = L"";
- m_WideStrChangeEx = L"";
- m_nCommitKey = -1;
- m_bKeyDown = FALSE;
- m_bModifier = FALSE;
- m_bShift = FALSE;
- m_pISelEnd = NULL;
- m_nSelEndDu = 0;
- m_pISelStart = NULL;
- m_nSelStartDu = 0;
- m_bWillCommit = FALSE;
- m_pValue = NULL;
- m_bFieldFull = FALSE;
- m_pbRc = NULL;
- m_bRcDu = FALSE;
+ m_strTargetName = L"";
+ m_strSourceName = L"";
+ m_pWideStrChange = NULL;
+ m_WideStrChangeDu = L"";
+ m_WideStrChangeEx = L"";
+ m_nCommitKey = -1;
+ m_bKeyDown = FALSE;
+ m_bModifier = FALSE;
+ m_bShift = FALSE;
+ m_pISelEnd = NULL;
+ m_nSelEndDu = 0;
+ m_pISelStart = NULL;
+ m_nSelStartDu = 0;
+ m_bWillCommit = FALSE;
+ m_pValue = NULL;
+ m_bFieldFull = FALSE;
+ m_pbRc = NULL;
+ m_bRcDu = FALSE;
- m_pSourceDoc = NULL;
- m_pTargetBookMark = NULL;
- m_pTargetDoc = NULL;
- m_pTargetAnnot = NULL;
+ m_pSourceDoc = NULL;
+ m_pTargetBookMark = NULL;
+ m_pTargetDoc = NULL;
+ m_pTargetAnnot = NULL;
- m_bValid = TRUE;
+ m_bValid = TRUE;
}
-void CJS_EventHandler::Destroy()
-{
- m_bValid = FALSE;
+void CJS_EventHandler::Destroy() {
+ m_bValid = FALSE;
}
-FX_BOOL CJS_EventHandler::IsValid()
-{
- return m_bValid;
+FX_BOOL CJS_EventHandler::IsValid() {
+ return m_bValid;
}
-CFX_WideString & CJS_EventHandler::Change()
-{
- if (m_pWideStrChange) {
- return *m_pWideStrChange;
- }
- return m_WideStrChangeDu;
+CFX_WideString& CJS_EventHandler::Change() {
+ if (m_pWideStrChange) {
+ return *m_pWideStrChange;
+ }
+ return m_WideStrChangeDu;
}
-CFX_WideString CJS_EventHandler::ChangeEx()
-{
- return m_WideStrChangeEx;
+CFX_WideString CJS_EventHandler::ChangeEx() {
+ return m_WideStrChangeEx;
}
-int CJS_EventHandler::CommitKey()
-{
- return m_nCommitKey;
+int CJS_EventHandler::CommitKey() {
+ return m_nCommitKey;
}
-FX_BOOL CJS_EventHandler::FieldFull()
-{
- return m_bFieldFull;
+FX_BOOL CJS_EventHandler::FieldFull() {
+ return m_bFieldFull;
}
-FX_BOOL CJS_EventHandler::KeyDown()
-{
- return m_bKeyDown;
+FX_BOOL CJS_EventHandler::KeyDown() {
+ return m_bKeyDown;
}
-FX_BOOL CJS_EventHandler::Modifier()
-{
- return m_bModifier;
+FX_BOOL CJS_EventHandler::Modifier() {
+ return m_bModifier;
}
-const FX_WCHAR* CJS_EventHandler::Name()
-{
- switch (m_eEventType)
- {
- case JET_APP_INIT: return L"Init";
- case JET_BATCH_EXEC: return L"Exec";
- case JET_BOOKMARK_MOUSEUP: return L"Mouse Up";
- case JET_CONSOLE_EXEC: return L"Exec";
- case JET_DOC_DIDPRINT: return L"DidPrint";
- case JET_DOC_DIDSAVE: return L"DidSave";
- case JET_DOC_OPEN: return L"Open";
- case JET_DOC_WILLCLOSE: return L"WillClose";
- case JET_DOC_WILLPRINT: return L"WillPrint";
- case JET_DOC_WILLSAVE: return L"WillSave";
- case JET_EXTERNAL_EXEC: return L"Exec";
+const FX_WCHAR* CJS_EventHandler::Name() {
+ switch (m_eEventType) {
+ case JET_APP_INIT:
+ return L"Init";
+ case JET_BATCH_EXEC:
+ return L"Exec";
+ case JET_BOOKMARK_MOUSEUP:
+ return L"Mouse Up";
+ case JET_CONSOLE_EXEC:
+ return L"Exec";
+ case JET_DOC_DIDPRINT:
+ return L"DidPrint";
+ case JET_DOC_DIDSAVE:
+ return L"DidSave";
+ case JET_DOC_OPEN:
+ return L"Open";
+ case JET_DOC_WILLCLOSE:
+ return L"WillClose";
+ case JET_DOC_WILLPRINT:
+ return L"WillPrint";
+ case JET_DOC_WILLSAVE:
+ return L"WillSave";
+ case JET_EXTERNAL_EXEC:
+ return L"Exec";
case JET_FIELD_FOCUS:
- case JET_SCREEN_FOCUS: return L"Focus";
+ case JET_SCREEN_FOCUS:
+ return L"Focus";
case JET_FIELD_BLUR:
- case JET_SCREEN_BLUR: return L"Blur";
+ case JET_SCREEN_BLUR:
+ return L"Blur";
case JET_FIELD_MOUSEDOWN:
- case JET_SCREEN_MOUSEDOWN: return L"Mouse Down";
+ case JET_SCREEN_MOUSEDOWN:
+ return L"Mouse Down";
case JET_FIELD_MOUSEUP:
- case JET_SCREEN_MOUSEUP: return L"Mouse Up";
+ case JET_SCREEN_MOUSEUP:
+ return L"Mouse Up";
case JET_FIELD_MOUSEENTER:
- case JET_SCREEN_MOUSEENTER: return L"Mouse Enter";
+ case JET_SCREEN_MOUSEENTER:
+ return L"Mouse Enter";
case JET_FIELD_MOUSEEXIT:
- case JET_SCREEN_MOUSEEXIT: return L"Mouse Exit";
- case JET_FIELD_CALCULATE: return L"Calculate";
- case JET_FIELD_FORMAT: return L"Format";
- case JET_FIELD_KEYSTROKE: return L"Keystroke";
- case JET_FIELD_VALIDATE: return L"Validate";
- case JET_LINK_MOUSEUP: return L"Mouse Up";
- case JET_MENU_EXEC: return L"Exec";
+ case JET_SCREEN_MOUSEEXIT:
+ return L"Mouse Exit";
+ case JET_FIELD_CALCULATE:
+ return L"Calculate";
+ case JET_FIELD_FORMAT:
+ return L"Format";
+ case JET_FIELD_KEYSTROKE:
+ return L"Keystroke";
+ case JET_FIELD_VALIDATE:
+ return L"Validate";
+ case JET_LINK_MOUSEUP:
+ return L"Mouse Up";
+ case JET_MENU_EXEC:
+ return L"Exec";
case JET_PAGE_OPEN:
- case JET_SCREEN_OPEN: return L"Open";
+ case JET_SCREEN_OPEN:
+ return L"Open";
case JET_PAGE_CLOSE:
- case JET_SCREEN_CLOSE: return L"Close";
+ case JET_SCREEN_CLOSE:
+ return L"Close";
case JET_SCREEN_INVIEW:
- case JET_PAGE_INVIEW: return L"InView";
+ case JET_PAGE_INVIEW:
+ return L"InView";
case JET_PAGE_OUTVIEW:
- case JET_SCREEN_OUTVIEW: return L"OutView";
+ case JET_SCREEN_OUTVIEW:
+ return L"OutView";
default:
- return L"";
- }
-
- return L"";
-}
-
-const FX_WCHAR* CJS_EventHandler::Type()
-{
- switch (m_eEventType)
- {
- case JET_APP_INIT: return L"App";
- case JET_BATCH_EXEC: return L"Batch";
- case JET_BOOKMARK_MOUSEUP: return L"BookMark";
- case JET_CONSOLE_EXEC: return L"Console";
+ return L"";
+ }
+
+ return L"";
+}
+
+const FX_WCHAR* CJS_EventHandler::Type() {
+ switch (m_eEventType) {
+ case JET_APP_INIT:
+ return L"App";
+ case JET_BATCH_EXEC:
+ return L"Batch";
+ case JET_BOOKMARK_MOUSEUP:
+ return L"BookMark";
+ case JET_CONSOLE_EXEC:
+ return L"Console";
case JET_DOC_DIDPRINT:
case JET_DOC_DIDSAVE:
case JET_DOC_OPEN:
case JET_DOC_WILLCLOSE:
case JET_DOC_WILLPRINT:
- case JET_DOC_WILLSAVE: return L"Doc";
- case JET_EXTERNAL_EXEC: return L"External";
+ case JET_DOC_WILLSAVE:
+ return L"Doc";
+ case JET_EXTERNAL_EXEC:
+ return L"External";
case JET_FIELD_BLUR:
case JET_FIELD_FOCUS:
case JET_FIELD_MOUSEDOWN:
@@ -531,7 +556,8 @@ const FX_WCHAR* CJS_EventHandler::Type()
case JET_FIELD_CALCULATE:
case JET_FIELD_FORMAT:
case JET_FIELD_KEYSTROKE:
- case JET_FIELD_VALIDATE: return L"Field";
+ case JET_FIELD_VALIDATE:
+ return L"Field";
case JET_SCREEN_FOCUS:
case JET_SCREEN_BLUR:
case JET_SCREEN_OPEN:
@@ -541,124 +567,123 @@ const FX_WCHAR* CJS_EventHandler::Type()
case JET_SCREEN_MOUSEENTER:
case JET_SCREEN_MOUSEEXIT:
case JET_SCREEN_INVIEW:
- case JET_SCREEN_OUTVIEW: return L"Screen";
- case JET_LINK_MOUSEUP: return L"Link";
- case JET_MENU_EXEC: return L"Menu";
+ case JET_SCREEN_OUTVIEW:
+ return L"Screen";
+ case JET_LINK_MOUSEUP:
+ return L"Link";
+ case JET_MENU_EXEC:
+ return L"Menu";
case JET_PAGE_OPEN:
case JET_PAGE_CLOSE:
case JET_PAGE_INVIEW:
- case JET_PAGE_OUTVIEW:return L"Page";
+ case JET_PAGE_OUTVIEW:
+ return L"Page";
default:
- return L"";
- }
+ return L"";
+ }
- return L"";
+ return L"";
}
-FX_BOOL& CJS_EventHandler::Rc()
-{
- if (m_pbRc) {
- return *m_pbRc;
- }
- return m_bRcDu;
+FX_BOOL& CJS_EventHandler::Rc() {
+ if (m_pbRc) {
+ return *m_pbRc;
+ }
+ return m_bRcDu;
}
-int & CJS_EventHandler::SelEnd()
-{
- if (m_pISelEnd) {
- return *m_pISelEnd;
- }
- return m_nSelEndDu;
+int& CJS_EventHandler::SelEnd() {
+ if (m_pISelEnd) {
+ return *m_pISelEnd;
+ }
+ return m_nSelEndDu;
}
-int & CJS_EventHandler::SelStart()
-{
- if (m_pISelStart) {
- return *m_pISelStart;
- }
- return m_nSelStartDu;
+int& CJS_EventHandler::SelStart() {
+ if (m_pISelStart) {
+ return *m_pISelStart;
+ }
+ return m_nSelStartDu;
}
-FX_BOOL CJS_EventHandler::Shift()
-{
- return m_bShift;
+FX_BOOL CJS_EventHandler::Shift() {
+ return m_bShift;
}
-Field* CJS_EventHandler::Source()
-{
- ASSERT(m_pJSContext != NULL);
+Field* CJS_EventHandler::Source() {
+ ASSERT(m_pJSContext != NULL);
- CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
+ CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
- JSFXObject pDocObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
- ASSERT(pDocObj.IsEmpty() == FALSE);
- JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
- ASSERT(pFieldObj.IsEmpty() == FALSE);
+ JSFXObject pDocObj = JS_NewFxDynamicObj(
+ *pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
+ ASSERT(pDocObj.IsEmpty() == FALSE);
+ JSFXObject pFieldObj = JS_NewFxDynamicObj(
+ *pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
+ ASSERT(pFieldObj.IsEmpty() == FALSE);
- CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
- ASSERT(pJSDocument != NULL);
- Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
- ASSERT(pDocument != NULL);
- if (m_pTargetDoc != NULL)
- pDocument->AttachDoc(m_pTargetDoc);
- else
- pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
+ CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
+ ASSERT(pJSDocument != NULL);
+ Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
+ ASSERT(pDocument != NULL);
+ if (m_pTargetDoc != NULL)
+ pDocument->AttachDoc(m_pTargetDoc);
+ else
+ pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
- //if (m_pSourceField == NULL)
- // return NULL;
- //CRAO_Widget *pWidget = IBCL_Widget::GetWidget(m_pSourceField);
- //CPDF_FormField* pFormField = pWidget->GetFormField();
- //ASSERT(pFormField);
- //CFX_WideString csFieldName = pFormField->GetFullName();
- CJS_Field * pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
- ASSERT(pJSField != NULL);
- Field * pField = (Field *)pJSField->GetEmbedObject();
- ASSERT(pField != NULL);
- pField->AttachField(pDocument, m_strSourceName);
- return pField;
+ // if (m_pSourceField == NULL)
+ // return NULL;
+ // CRAO_Widget *pWidget = IBCL_Widget::GetWidget(m_pSourceField);
+ // CPDF_FormField* pFormField = pWidget->GetFormField();
+ // ASSERT(pFormField);
+ // CFX_WideString csFieldName = pFormField->GetFullName();
+ CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
+ ASSERT(pJSField != NULL);
+ Field* pField = (Field*)pJSField->GetEmbedObject();
+ ASSERT(pField != NULL);
+ pField->AttachField(pDocument, m_strSourceName);
+ return pField;
}
-Field* CJS_EventHandler::Target_Field()
-{
- ASSERT(m_pJSContext != NULL);
+Field* CJS_EventHandler::Target_Field() {
+ ASSERT(m_pJSContext != NULL);
- CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
+ CJS_Runtime* pRuntime = m_pJSContext->GetJSRuntime();
- JSFXObject pDocObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
- ASSERT(pDocObj.IsEmpty() == FALSE);
- JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
- ASSERT(pFieldObj.IsEmpty() == FALSE);
+ JSFXObject pDocObj = JS_NewFxDynamicObj(
+ *pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Document"));
+ ASSERT(pDocObj.IsEmpty() == FALSE);
+ JSFXObject pFieldObj = JS_NewFxDynamicObj(
+ *pRuntime, m_pJSContext, JS_GetObjDefnID(*pRuntime, L"Field"));
+ ASSERT(pFieldObj.IsEmpty() == FALSE);
- CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
- ASSERT(pJSDocument != NULL);
- Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
- ASSERT(pDocument != NULL);
- if (m_pTargetDoc != NULL)
- pDocument->AttachDoc(m_pTargetDoc);
- else
- pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
+ CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pDocObj);
+ ASSERT(pJSDocument != NULL);
+ Document* pDocument = (Document*)pJSDocument->GetEmbedObject();
+ ASSERT(pDocument != NULL);
+ if (m_pTargetDoc != NULL)
+ pDocument->AttachDoc(m_pTargetDoc);
+ else
+ pDocument->AttachDoc(m_pJSContext->GetReaderDocument());
- CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
- ASSERT(pJSField != NULL);
+ CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pFieldObj);
+ ASSERT(pJSField != NULL);
- Field* pField = (Field *)pJSField->GetEmbedObject();
- ASSERT(pField != NULL);
+ Field* pField = (Field*)pJSField->GetEmbedObject();
+ ASSERT(pField != NULL);
- pField->AttachField(pDocument, m_strTargetName);
- return pField;
+ pField->AttachField(pDocument, m_strTargetName);
+ return pField;
}
-CFX_WideString& CJS_EventHandler::Value()
-{
- return *m_pValue;
+CFX_WideString& CJS_EventHandler::Value() {
+ return *m_pValue;
}
-FX_BOOL CJS_EventHandler::WillCommit()
-{
- return m_bWillCommit;
+FX_BOOL CJS_EventHandler::WillCommit() {
+ return m_bWillCommit;
}
-CFX_WideString CJS_EventHandler::TargetName()
-{
- return m_strTargetName;
+CFX_WideString CJS_EventHandler::TargetName() {
+ return m_strTargetName;
}
diff --git a/fpdfsdk/src/javascript/JS_GlobalData.cpp b/fpdfsdk/src/javascript/JS_GlobalData.cpp
index 8c7bd7150e..9f954acee5 100644
--- a/fpdfsdk/src/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/src/javascript/JS_GlobalData.cpp
@@ -9,449 +9,393 @@
#include "../../include/javascript/IJavaScript.h"
#include "../../include/javascript/JS_GlobalData.h"
-#define JS_MAXGLOBALDATA (1024 * 4 - 8)
+#define JS_MAXGLOBALDATA (1024 * 4 - 8)
/* --------------------- CJS_GlobalVariableArray --------------------- */
-CJS_GlobalVariableArray::CJS_GlobalVariableArray()
-{
-}
+CJS_GlobalVariableArray::CJS_GlobalVariableArray() {}
-CJS_GlobalVariableArray::~CJS_GlobalVariableArray()
-{
- Empty();
+CJS_GlobalVariableArray::~CJS_GlobalVariableArray() {
+ Empty();
}
-void CJS_GlobalVariableArray::Copy(const CJS_GlobalVariableArray& array)
-{
- Empty();
- for (int i=0,sz=array.Count(); i<sz; i++)
- {
- CJS_KeyValue* pOldObjData = array.GetAt(i);
- ASSERT(pOldObjData != NULL);
-
- switch (pOldObjData->nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- {
- CJS_KeyValue* pNewObjData = new CJS_KeyValue;
- pNewObjData->sKey = pOldObjData->sKey;
- pNewObjData->nType = pOldObjData->nType;
- pNewObjData->dData = pOldObjData->dData;
- Add(pNewObjData);
- }
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- {
- CJS_KeyValue* pNewObjData = new CJS_KeyValue;
- pNewObjData->sKey = pOldObjData->sKey;
- pNewObjData->nType = pOldObjData->nType;
- pNewObjData->bData = pOldObjData->bData;
- Add(pNewObjData);
- }
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- {
- CJS_KeyValue* pNewObjData = new CJS_KeyValue;
- pNewObjData->sKey = pOldObjData->sKey;
- pNewObjData->nType = pOldObjData->nType;
- pNewObjData->sData = pOldObjData->sData;
- Add(pNewObjData);
- }
- break;
- case JS_GLOBALDATA_TYPE_OBJECT:
- {
- CJS_KeyValue* pNewObjData = new CJS_KeyValue;
- pNewObjData->sKey = pOldObjData->sKey;
- pNewObjData->nType = pOldObjData->nType;
- pNewObjData->objData.Copy(pOldObjData->objData);
- Add(pNewObjData);
- }
- case JS_GLOBALDATA_TYPE_NULL:
- {
- CJS_KeyValue* pNewObjData = new CJS_KeyValue;
- pNewObjData->sKey = pOldObjData->sKey;
- pNewObjData->nType = pOldObjData->nType;
- Add(pNewObjData);
- }
- }
+void CJS_GlobalVariableArray::Copy(const CJS_GlobalVariableArray& array) {
+ Empty();
+ for (int i = 0, sz = array.Count(); i < sz; i++) {
+ CJS_KeyValue* pOldObjData = array.GetAt(i);
+ ASSERT(pOldObjData != NULL);
+
+ switch (pOldObjData->nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER: {
+ CJS_KeyValue* pNewObjData = new CJS_KeyValue;
+ pNewObjData->sKey = pOldObjData->sKey;
+ pNewObjData->nType = pOldObjData->nType;
+ pNewObjData->dData = pOldObjData->dData;
+ Add(pNewObjData);
+ } break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN: {
+ CJS_KeyValue* pNewObjData = new CJS_KeyValue;
+ pNewObjData->sKey = pOldObjData->sKey;
+ pNewObjData->nType = pOldObjData->nType;
+ pNewObjData->bData = pOldObjData->bData;
+ Add(pNewObjData);
+ } break;
+ case JS_GLOBALDATA_TYPE_STRING: {
+ CJS_KeyValue* pNewObjData = new CJS_KeyValue;
+ pNewObjData->sKey = pOldObjData->sKey;
+ pNewObjData->nType = pOldObjData->nType;
+ pNewObjData->sData = pOldObjData->sData;
+ Add(pNewObjData);
+ } break;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ CJS_KeyValue* pNewObjData = new CJS_KeyValue;
+ pNewObjData->sKey = pOldObjData->sKey;
+ pNewObjData->nType = pOldObjData->nType;
+ pNewObjData->objData.Copy(pOldObjData->objData);
+ Add(pNewObjData);
+ }
+ case JS_GLOBALDATA_TYPE_NULL: {
+ CJS_KeyValue* pNewObjData = new CJS_KeyValue;
+ pNewObjData->sKey = pOldObjData->sKey;
+ pNewObjData->nType = pOldObjData->nType;
+ Add(pNewObjData);
+ }
}
+ }
}
-void CJS_GlobalVariableArray::Add(CJS_KeyValue* p)
-{
- array.Add(p);
+void CJS_GlobalVariableArray::Add(CJS_KeyValue* p) {
+ array.Add(p);
}
-int CJS_GlobalVariableArray::Count() const
-{
- return array.GetSize();
+int CJS_GlobalVariableArray::Count() const {
+ return array.GetSize();
}
-CJS_KeyValue* CJS_GlobalVariableArray::GetAt(int index) const
-{
- return array.GetAt(index);
+CJS_KeyValue* CJS_GlobalVariableArray::GetAt(int index) const {
+ return array.GetAt(index);
}
-void CJS_GlobalVariableArray::Empty()
-{
- for (int i=0,sz=array.GetSize(); i<sz; i++)
- delete array.GetAt(i);
- array.RemoveAll();
+void CJS_GlobalVariableArray::Empty() {
+ for (int i = 0, sz = array.GetSize(); i < sz; i++)
+ delete array.GetAt(i);
+ array.RemoveAll();
}
/* -------------------------- CJS_GlobalData -------------------------- */
-#define READER_JS_GLOBALDATA_FILENAME L"Reader_JsGlobal.Data"
-#define PHANTOM_JS_GLOBALDATA_FILENAME L"Phantom_JsGlobal.Data"
-#define SDK_JS_GLOBALDATA_FILENAME L"SDK_JsGlobal.Data"
-
-static const uint8_t JS_RC4KEY[] = {0x19,0xa8,0xe8,0x01,0xf6,0xa8,0xb6,0x4d,0x82,0x04,
- 0x45,0x6d,0xb4,0xcf,0xd7,0x77,0x67,0xf9,0x75,0x9f,
- 0xf0,0xe0,0x1e,0x51,0xee,0x46,0xfd,0x0b,0xc9,0x93,
- 0x25,0x55,0x4a,0xee,0xe0,0x16,0xd0,0xdf,0x8c,0xfa,
- 0x2a,0xa9,0x49,0xfd,0x97,0x1c,0x0e,0x22,0x13,0x28,
- 0x7c,0xaf,0xc4,0xfc,0x9c,0x12,0x65,0x8c,0x4e,0x5b,
- 0x04,0x75,0x89,0xc9,0xb1,0xed,0x50,0xca,0x96,0x6f,
- 0x1a,0x7a,0xfe,0x58,0x5d,0xec,0x19,0x4a,0xf6,0x35,
- 0x6a,0x97,0x14,0x00,0x0e,0xd0,0x6b,0xbb,0xd5,0x75,
- 0x55,0x8b,0x6e,0x6b,0x19,0xa0,0xf8,0x77,0xd5,0xa3
- };
-
-CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp)
-{
-// IBaseAnnot* pBaseAnnot = IBaseAnnot::GetBaseAnnot(m_pApp);
-// ASSERT(pBaseAnnot != NULL);
-//
-// m_sFilePath = pBaseAnnot->GetUserPath();
- m_sFilePath += SDK_JS_GLOBALDATA_FILENAME;
-
- LoadGlobalPersistentVariables();
+#define READER_JS_GLOBALDATA_FILENAME L"Reader_JsGlobal.Data"
+#define PHANTOM_JS_GLOBALDATA_FILENAME L"Phantom_JsGlobal.Data"
+#define SDK_JS_GLOBALDATA_FILENAME L"SDK_JsGlobal.Data"
+
+static const uint8_t JS_RC4KEY[] = {
+ 0x19, 0xa8, 0xe8, 0x01, 0xf6, 0xa8, 0xb6, 0x4d, 0x82, 0x04, 0x45, 0x6d,
+ 0xb4, 0xcf, 0xd7, 0x77, 0x67, 0xf9, 0x75, 0x9f, 0xf0, 0xe0, 0x1e, 0x51,
+ 0xee, 0x46, 0xfd, 0x0b, 0xc9, 0x93, 0x25, 0x55, 0x4a, 0xee, 0xe0, 0x16,
+ 0xd0, 0xdf, 0x8c, 0xfa, 0x2a, 0xa9, 0x49, 0xfd, 0x97, 0x1c, 0x0e, 0x22,
+ 0x13, 0x28, 0x7c, 0xaf, 0xc4, 0xfc, 0x9c, 0x12, 0x65, 0x8c, 0x4e, 0x5b,
+ 0x04, 0x75, 0x89, 0xc9, 0xb1, 0xed, 0x50, 0xca, 0x96, 0x6f, 0x1a, 0x7a,
+ 0xfe, 0x58, 0x5d, 0xec, 0x19, 0x4a, 0xf6, 0x35, 0x6a, 0x97, 0x14, 0x00,
+ 0x0e, 0xd0, 0x6b, 0xbb, 0xd5, 0x75, 0x55, 0x8b, 0x6e, 0x6b, 0x19, 0xa0,
+ 0xf8, 0x77, 0xd5, 0xa3};
+
+CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp) {
+ // IBaseAnnot* pBaseAnnot = IBaseAnnot::GetBaseAnnot(m_pApp);
+ // ASSERT(pBaseAnnot != NULL);
+ //
+ // m_sFilePath = pBaseAnnot->GetUserPath();
+ m_sFilePath += SDK_JS_GLOBALDATA_FILENAME;
+
+ LoadGlobalPersistentVariables();
}
-CJS_GlobalData::~CJS_GlobalData()
-{
- SaveGlobalPersisitentVariables();
+CJS_GlobalData::~CJS_GlobalData() {
+ SaveGlobalPersisitentVariables();
- for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
- delete m_arrayGlobalData.GetAt(i);
+ for (int i = 0, sz = m_arrayGlobalData.GetSize(); i < sz; i++)
+ delete m_arrayGlobalData.GetAt(i);
- m_arrayGlobalData.RemoveAll();
+ m_arrayGlobalData.RemoveAll();
}
-int CJS_GlobalData::FindGlobalVariable(const FX_CHAR* propname)
-{
- ASSERT(propname != NULL);
+int CJS_GlobalData::FindGlobalVariable(const FX_CHAR* propname) {
+ ASSERT(propname != NULL);
- int nRet = -1;
+ int nRet = -1;
- for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
- {
- CJS_GlobalData_Element* pTemp = m_arrayGlobalData.GetAt(i);
- if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == propname)
- {
- nRet = i;
- break;
- }
+ for (int i = 0, sz = m_arrayGlobalData.GetSize(); i < sz; i++) {
+ CJS_GlobalData_Element* pTemp = m_arrayGlobalData.GetAt(i);
+ if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == propname) {
+ nRet = i;
+ break;
}
+ }
- return nRet;
+ return nRet;
}
-CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(const FX_CHAR* propname)
-{
- ASSERT(propname != NULL);
+CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(
+ const FX_CHAR* propname) {
+ ASSERT(propname != NULL);
- int nFind = FindGlobalVariable(propname);
- if (nFind >= 0)
- return m_arrayGlobalData.GetAt(nFind);
+ int nFind = FindGlobalVariable(propname);
+ if (nFind >= 0)
+ return m_arrayGlobalData.GetAt(nFind);
- return NULL;
+ return NULL;
}
-void CJS_GlobalData::SetGlobalVariableNumber(const FX_CHAR* propname, double dData)
-{
- ASSERT(propname != NULL);
-
- CFX_ByteString sPropName = propname;
- sPropName.TrimLeft();
- sPropName.TrimRight();
- if (sPropName.GetLength() == 0)
- return;
-
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
- pData->data.dData = dData;
- }
- else
- {
- CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
- pNewData->data.sKey = sPropName;
- pNewData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
- pNewData->data.dData = dData;
- m_arrayGlobalData.Add(pNewData);
- }
+void CJS_GlobalData::SetGlobalVariableNumber(const FX_CHAR* propname,
+ double dData) {
+ ASSERT(propname != NULL);
+
+ CFX_ByteString sPropName = propname;
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
+ if (sPropName.GetLength() == 0)
+ return;
+
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
+ pData->data.dData = dData;
+ } else {
+ CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
+ pNewData->data.sKey = sPropName;
+ pNewData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
+ pNewData->data.dData = dData;
+ m_arrayGlobalData.Add(pNewData);
+ }
}
-void CJS_GlobalData::SetGlobalVariableBoolean(const FX_CHAR* propname, bool bData)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+void CJS_GlobalData::SetGlobalVariableBoolean(const FX_CHAR* propname,
+ bool bData) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
- if (sPropName.GetLength() == 0) return;
+ if (sPropName.GetLength() == 0)
+ return;
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
- pData->data.bData = bData;
- }
- else
- {
- CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
- pNewData->data.sKey = sPropName;
- pNewData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
- pNewData->data.bData = bData;
-
- m_arrayGlobalData.Add(pNewData);
- }
-}
-
-void CJS_GlobalData::SetGlobalVariableString(const FX_CHAR* propname, const CFX_ByteString& sData)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
+ pData->data.bData = bData;
+ } else {
+ CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
+ pNewData->data.sKey = sPropName;
+ pNewData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
+ pNewData->data.bData = bData;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ m_arrayGlobalData.Add(pNewData);
+ }
+}
- if (sPropName.GetLength() == 0) return;
+void CJS_GlobalData::SetGlobalVariableString(const FX_CHAR* propname,
+ const CFX_ByteString& sData) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->data.nType = JS_GLOBALDATA_TYPE_STRING;
- pData->data.sData = sData;
- }
- else
- {
- CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
- pNewData->data.sKey = sPropName;
- pNewData->data.nType = JS_GLOBALDATA_TYPE_STRING;
- pNewData->data.sData = sData;
-
- m_arrayGlobalData.Add(pNewData);
- }
-}
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
-void CJS_GlobalData::SetGlobalVariableObject(const FX_CHAR* propname, const CJS_GlobalVariableArray& array)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+ if (sPropName.GetLength() == 0)
+ return;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->data.nType = JS_GLOBALDATA_TYPE_STRING;
+ pData->data.sData = sData;
+ } else {
+ CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
+ pNewData->data.sKey = sPropName;
+ pNewData->data.nType = JS_GLOBALDATA_TYPE_STRING;
+ pNewData->data.sData = sData;
- if (sPropName.GetLength() == 0) return;
+ m_arrayGlobalData.Add(pNewData);
+ }
+}
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
- pData->data.objData.Copy(array);
- }
- else
- {
- CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
- pNewData->data.sKey = sPropName;
- pNewData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
- pNewData->data.objData.Copy(array);
-
- m_arrayGlobalData.Add(pNewData);
- }
+void CJS_GlobalData::SetGlobalVariableObject(
+ const FX_CHAR* propname,
+ const CJS_GlobalVariableArray& array) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
+
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
+
+ if (sPropName.GetLength() == 0)
+ return;
+
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
+ pData->data.objData.Copy(array);
+ } else {
+ CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
+ pNewData->data.sKey = sPropName;
+ pNewData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
+ pNewData->data.objData.Copy(array);
+
+ m_arrayGlobalData.Add(pNewData);
+ }
}
-void CJS_GlobalData::SetGlobalVariableNull(const FX_CHAR* propname)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+void CJS_GlobalData::SetGlobalVariableNull(const FX_CHAR* propname) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
- if (sPropName.GetLength() == 0) return;
+ if (sPropName.GetLength() == 0)
+ return;
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->data.nType = JS_GLOBALDATA_TYPE_NULL;
- }
- else
- {
- CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
- pNewData->data.sKey = sPropName;
- pNewData->data.nType = JS_GLOBALDATA_TYPE_NULL;
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->data.nType = JS_GLOBALDATA_TYPE_NULL;
+ } else {
+ CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
+ pNewData->data.sKey = sPropName;
+ pNewData->data.nType = JS_GLOBALDATA_TYPE_NULL;
- m_arrayGlobalData.Add(pNewData);
- }
+ m_arrayGlobalData.Add(pNewData);
+ }
}
-FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(const FX_CHAR* propname, FX_BOOL bPersistent)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(const FX_CHAR* propname,
+ FX_BOOL bPersistent) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
- if (sPropName.GetLength() == 0) return FALSE;
+ if (sPropName.GetLength() == 0)
+ return FALSE;
- if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
- {
- pData->bPersistent = bPersistent;
- return TRUE;
- }
+ if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) {
+ pData->bPersistent = bPersistent;
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const FX_CHAR* propname)
-{
- ASSERT(propname != NULL);
- CFX_ByteString sPropName = propname;
+FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const FX_CHAR* propname) {
+ ASSERT(propname != NULL);
+ CFX_ByteString sPropName = propname;
- sPropName.TrimLeft();
- sPropName.TrimRight();
+ sPropName.TrimLeft();
+ sPropName.TrimRight();
- if (sPropName.GetLength() == 0) return FALSE;
+ if (sPropName.GetLength() == 0)
+ return FALSE;
- int nFind = FindGlobalVariable(sPropName);
+ int nFind = FindGlobalVariable(sPropName);
- if (nFind >= 0)
- {
- delete m_arrayGlobalData.GetAt(nFind);
- m_arrayGlobalData.RemoveAt(nFind);
- return TRUE;
- }
+ if (nFind >= 0) {
+ delete m_arrayGlobalData.GetAt(nFind);
+ m_arrayGlobalData.RemoveAt(nFind);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-int32_t CJS_GlobalData::GetSize() const
-{
- return m_arrayGlobalData.GetSize();
+int32_t CJS_GlobalData::GetSize() const {
+ return m_arrayGlobalData.GetSize();
}
-CJS_GlobalData_Element* CJS_GlobalData::GetAt(int index) const
-{
- return m_arrayGlobalData.GetAt(index);
+CJS_GlobalData_Element* CJS_GlobalData::GetAt(int index) const {
+ return m_arrayGlobalData.GetAt(index);
}
-void CJS_GlobalData::LoadGlobalPersistentVariables()
-{
- uint8_t* pBuffer = NULL;
- int32_t nLength = 0;
-
- LoadFileBuffer(m_sFilePath.c_str(), pBuffer, nLength);
- CRYPT_ArcFourCryptBlock(pBuffer, nLength, JS_RC4KEY, sizeof(JS_RC4KEY));
-
- if (pBuffer)
- {
- uint8_t* p = pBuffer;
- FX_WORD wType = *((FX_WORD*)p);
- p += sizeof(FX_WORD);
-
- //FX_WORD wTemp = (FX_WORD)(('X' << 8) | 'F');
-
- if (wType == (FX_WORD)(('X' << 8) | 'F'))
- {
- FX_WORD wVersion = *((FX_WORD*)p);
- p += sizeof(FX_WORD);
-
- ASSERT(wVersion <= 2);
-
- FX_DWORD dwCount = *((FX_DWORD*)p);
- p += sizeof(FX_DWORD);
-
- FX_DWORD dwSize = *((FX_DWORD*)p);
- p += sizeof(FX_DWORD);
-
- if (dwSize == nLength - sizeof(FX_WORD) * 2 - sizeof(FX_DWORD)* 2)
- {
- for (int32_t i=0,sz=dwCount; i<sz; i++)
- {
- if (p > pBuffer + nLength)
- break;
-
- FX_DWORD dwNameLen = *((FX_DWORD*)p);
- p += sizeof(FX_DWORD);
-
- if (p + dwNameLen > pBuffer + nLength)
- break;
-
- CFX_ByteString sEntry = CFX_ByteString(p, dwNameLen);
- p += sizeof(char) * dwNameLen;
-
- FX_WORD wDataType = *((FX_WORD*)p);
- p += sizeof(FX_WORD);
-
- switch (wDataType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- {
- double dData = 0;
- switch (wVersion)
- {
- case 1:
- {
- FX_DWORD dwData = *((FX_DWORD*)p);
- p += sizeof(FX_DWORD);
- dData = dwData;
- }
- break;
- case 2:
- {
- dData = *((double*)p);
- p += sizeof(double);
- }
- break;
- }
- SetGlobalVariableNumber(sEntry, dData);
- SetGlobalVariablePersistent(sEntry, TRUE);
- }
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- {
- FX_WORD wData = *((FX_WORD*)p);
- p += sizeof(FX_WORD);
- SetGlobalVariableBoolean(sEntry, (bool)(wData == 1));
- SetGlobalVariablePersistent(sEntry, TRUE);
- }
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- {
- FX_DWORD dwLength = *((FX_DWORD*)p);
- p += sizeof(FX_DWORD);
-
- if (p + dwLength > pBuffer + nLength)
- break;
-
- SetGlobalVariableString(sEntry, CFX_ByteString(p, dwLength));
- SetGlobalVariablePersistent(sEntry, TRUE);
- p += sizeof(char) * dwLength;
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- {
- SetGlobalVariableNull(sEntry);
- SetGlobalVariablePersistent(sEntry, TRUE);
- }
- }
- }
+void CJS_GlobalData::LoadGlobalPersistentVariables() {
+ uint8_t* pBuffer = NULL;
+ int32_t nLength = 0;
+
+ LoadFileBuffer(m_sFilePath.c_str(), pBuffer, nLength);
+ CRYPT_ArcFourCryptBlock(pBuffer, nLength, JS_RC4KEY, sizeof(JS_RC4KEY));
+
+ if (pBuffer) {
+ uint8_t* p = pBuffer;
+ FX_WORD wType = *((FX_WORD*)p);
+ p += sizeof(FX_WORD);
+
+ // FX_WORD wTemp = (FX_WORD)(('X' << 8) | 'F');
+
+ if (wType == (FX_WORD)(('X' << 8) | 'F')) {
+ FX_WORD wVersion = *((FX_WORD*)p);
+ p += sizeof(FX_WORD);
+
+ ASSERT(wVersion <= 2);
+
+ FX_DWORD dwCount = *((FX_DWORD*)p);
+ p += sizeof(FX_DWORD);
+
+ FX_DWORD dwSize = *((FX_DWORD*)p);
+ p += sizeof(FX_DWORD);
+
+ if (dwSize == nLength - sizeof(FX_WORD) * 2 - sizeof(FX_DWORD) * 2) {
+ for (int32_t i = 0, sz = dwCount; i < sz; i++) {
+ if (p > pBuffer + nLength)
+ break;
+
+ FX_DWORD dwNameLen = *((FX_DWORD*)p);
+ p += sizeof(FX_DWORD);
+
+ if (p + dwNameLen > pBuffer + nLength)
+ break;
+
+ CFX_ByteString sEntry = CFX_ByteString(p, dwNameLen);
+ p += sizeof(char) * dwNameLen;
+
+ FX_WORD wDataType = *((FX_WORD*)p);
+ p += sizeof(FX_WORD);
+
+ switch (wDataType) {
+ case JS_GLOBALDATA_TYPE_NUMBER: {
+ double dData = 0;
+ switch (wVersion) {
+ case 1: {
+ FX_DWORD dwData = *((FX_DWORD*)p);
+ p += sizeof(FX_DWORD);
+ dData = dwData;
+ } break;
+ case 2: {
+ dData = *((double*)p);
+ p += sizeof(double);
+ } break;
+ }
+ SetGlobalVariableNumber(sEntry, dData);
+ SetGlobalVariablePersistent(sEntry, TRUE);
+ } break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN: {
+ FX_WORD wData = *((FX_WORD*)p);
+ p += sizeof(FX_WORD);
+ SetGlobalVariableBoolean(sEntry, (bool)(wData == 1));
+ SetGlobalVariablePersistent(sEntry, TRUE);
+ } break;
+ case JS_GLOBALDATA_TYPE_STRING: {
+ FX_DWORD dwLength = *((FX_DWORD*)p);
+ p += sizeof(FX_DWORD);
+
+ if (p + dwLength > pBuffer + nLength)
+ break;
+
+ SetGlobalVariableString(sEntry, CFX_ByteString(p, dwLength));
+ SetGlobalVariablePersistent(sEntry, TRUE);
+ p += sizeof(char) * dwLength;
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL: {
+ SetGlobalVariableNull(sEntry);
+ SetGlobalVariablePersistent(sEntry, TRUE);
}
+ }
}
- FX_Free(pBuffer);
+ }
}
+ FX_Free(pBuffer);
+ }
}
/*
@@ -471,104 +415,96 @@ struct js_global_datafile_data
};
*/
-void CJS_GlobalData::SaveGlobalPersisitentVariables()
-{
- FX_DWORD nCount = 0;
- CFX_BinaryBuf sData;
+void CJS_GlobalData::SaveGlobalPersisitentVariables() {
+ FX_DWORD nCount = 0;
+ CFX_BinaryBuf sData;
- for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
- {
- CJS_GlobalData_Element* pElement = m_arrayGlobalData.GetAt(i);
- ASSERT(pElement != NULL);
+ for (int i = 0, sz = m_arrayGlobalData.GetSize(); i < sz; i++) {
+ CJS_GlobalData_Element* pElement = m_arrayGlobalData.GetAt(i);
+ ASSERT(pElement != NULL);
- if (pElement->bPersistent)
- {
- CFX_BinaryBuf sElement;
- MakeByteString(pElement->data.sKey, &pElement->data, sElement);
+ if (pElement->bPersistent) {
+ CFX_BinaryBuf sElement;
+ MakeByteString(pElement->data.sKey, &pElement->data, sElement);
- if (sData.GetSize() + sElement.GetSize() > JS_MAXGLOBALDATA)
- break;
+ if (sData.GetSize() + sElement.GetSize() > JS_MAXGLOBALDATA)
+ break;
- sData.AppendBlock(sElement.GetBuffer(), sElement.GetSize());
- nCount++;
- }
+ sData.AppendBlock(sElement.GetBuffer(), sElement.GetSize());
+ nCount++;
}
+ }
- CFX_BinaryBuf sFile;
+ CFX_BinaryBuf sFile;
- FX_WORD wType = (FX_WORD)(('X' << 8) | 'F');
- sFile.AppendBlock(&wType, sizeof(FX_WORD));
- FX_WORD wVersion = 2;
- sFile.AppendBlock(&wVersion, sizeof(FX_WORD));
- sFile.AppendBlock(&nCount, sizeof(FX_DWORD));
- FX_DWORD dwSize = sData.GetSize();
- sFile.AppendBlock(&dwSize, sizeof(FX_DWORD));
+ FX_WORD wType = (FX_WORD)(('X' << 8) | 'F');
+ sFile.AppendBlock(&wType, sizeof(FX_WORD));
+ FX_WORD wVersion = 2;
+ sFile.AppendBlock(&wVersion, sizeof(FX_WORD));
+ sFile.AppendBlock(&nCount, sizeof(FX_DWORD));
+ FX_DWORD dwSize = sData.GetSize();
+ sFile.AppendBlock(&dwSize, sizeof(FX_DWORD));
- sFile.AppendBlock(sData.GetBuffer(), sData.GetSize());
+ sFile.AppendBlock(sData.GetBuffer(), sData.GetSize());
- CRYPT_ArcFourCryptBlock(sFile.GetBuffer(), sFile.GetSize(), JS_RC4KEY, sizeof(JS_RC4KEY));
- WriteFileBuffer(m_sFilePath.c_str(), (const FX_CHAR*)sFile.GetBuffer(), sFile.GetSize());
+ CRYPT_ArcFourCryptBlock(sFile.GetBuffer(), sFile.GetSize(), JS_RC4KEY,
+ sizeof(JS_RC4KEY));
+ WriteFileBuffer(m_sFilePath.c_str(), (const FX_CHAR*)sFile.GetBuffer(),
+ sFile.GetSize());
}
-void CJS_GlobalData::LoadFileBuffer(const FX_WCHAR* sFilePath, uint8_t*& pBuffer, int32_t& nLength)
-{
-//UnSupport.
+void CJS_GlobalData::LoadFileBuffer(const FX_WCHAR* sFilePath,
+ uint8_t*& pBuffer,
+ int32_t& nLength) {
+ // UnSupport.
}
-void CJS_GlobalData::WriteFileBuffer(const FX_WCHAR* sFilePath, const FX_CHAR* pBuffer, int32_t nLength)
-{
-//UnSupport.
+void CJS_GlobalData::WriteFileBuffer(const FX_WCHAR* sFilePath,
+ const FX_CHAR* pBuffer,
+ int32_t nLength) {
+ // UnSupport.
}
-void CJS_GlobalData::MakeByteString(const CFX_ByteString& name, CJS_KeyValue* pData, CFX_BinaryBuf& sData)
-{
- FX_WORD wType = (FX_WORD)pData->nType;
- switch (wType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- {
- FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
- sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
- sData.AppendString(name);
- sData.AppendBlock(&wType, sizeof(FX_WORD));
-
- double dData = pData->dData;
- sData.AppendBlock(&dData, sizeof(double));
- }
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- {
- FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
- sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
- sData.AppendString(name);
- sData.AppendBlock(&wType, sizeof(FX_WORD));
-
- FX_WORD wData = (FX_WORD)pData->bData;
- sData.AppendBlock(&wData, sizeof(FX_WORD));
- }
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- {
- FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
- sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
- sData.AppendString(name);
- sData.AppendBlock(&wType, sizeof(FX_WORD));
-
- FX_DWORD dwDataLen = (FX_DWORD)pData->sData.GetLength();
- sData.AppendBlock(&dwDataLen, sizeof(FX_DWORD));
- sData.AppendString(pData->sData);
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- {
- FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
- sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
- sData.AppendString(name);
- sData.AppendBlock(&wType, sizeof(FX_DWORD));
- }
- break;
+void CJS_GlobalData::MakeByteString(const CFX_ByteString& name,
+ CJS_KeyValue* pData,
+ CFX_BinaryBuf& sData) {
+ FX_WORD wType = (FX_WORD)pData->nType;
+ switch (wType) {
+ case JS_GLOBALDATA_TYPE_NUMBER: {
+ FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
+ sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
+ sData.AppendString(name);
+ sData.AppendBlock(&wType, sizeof(FX_WORD));
+
+ double dData = pData->dData;
+ sData.AppendBlock(&dData, sizeof(double));
+ } break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN: {
+ FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
+ sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
+ sData.AppendString(name);
+ sData.AppendBlock(&wType, sizeof(FX_WORD));
+
+ FX_WORD wData = (FX_WORD)pData->bData;
+ sData.AppendBlock(&wData, sizeof(FX_WORD));
+ } break;
+ case JS_GLOBALDATA_TYPE_STRING: {
+ FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
+ sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
+ sData.AppendString(name);
+ sData.AppendBlock(&wType, sizeof(FX_WORD));
+
+ FX_DWORD dwDataLen = (FX_DWORD)pData->sData.GetLength();
+ sData.AppendBlock(&dwDataLen, sizeof(FX_DWORD));
+ sData.AppendString(pData->sData);
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL: {
+ FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
+ sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
+ sData.AppendString(name);
+ sData.AppendBlock(&wType, sizeof(FX_DWORD));
+ } break;
default:
- break;
- }
+ break;
+ }
}
-
diff --git a/fpdfsdk/src/javascript/JS_Object.cpp b/fpdfsdk/src/javascript/JS_Object.cpp
index 7a1b150ad8..eb089ed563 100644
--- a/fpdfsdk/src/javascript/JS_Object.cpp
+++ b/fpdfsdk/src/javascript/JS_Object.cpp
@@ -10,137 +10,130 @@
#include "../../include/javascript/JS_Object.h"
#include "../../include/javascript/JS_Context.h"
-JS_TIMER_MAPARRAY& GetTimeMap()
-{
+JS_TIMER_MAPARRAY& GetTimeMap() {
// Leak the timer array at shutdown.
static auto* timeMap = new JS_TIMER_MAPARRAY;
return *timeMap;
}
-int FXJS_MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, const FX_WCHAR* swMsg, const FX_WCHAR* swTitle, FX_UINT nType, FX_UINT nIcon)
-{
- if (!pApp)
- return 0;
+int FXJS_MsgBox(CPDFDoc_Environment* pApp,
+ CPDFSDK_PageView* pPageView,
+ const FX_WCHAR* swMsg,
+ const FX_WCHAR* swTitle,
+ FX_UINT nType,
+ FX_UINT nIcon) {
+ if (!pApp)
+ return 0;
- if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument())
- pDoc->KillFocusAnnot();
+ if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument())
+ pDoc->KillFocusAnnot();
- return pApp->JS_appAlert(swMsg, swTitle, nType, nIcon);
+ return pApp->JS_appAlert(swMsg, swTitle, nType, nIcon);
}
-CPDFSDK_PageView* FXJS_GetPageView(IFXJS_Context* cc)
-{
- if (CJS_Context* pContext = (CJS_Context *)cc)
- {
- if (pContext->GetReaderDocument())
- return NULL;
- }
- return NULL;
+CPDFSDK_PageView* FXJS_GetPageView(IFXJS_Context* cc) {
+ if (CJS_Context* pContext = (CJS_Context*)cc) {
+ if (pContext->GetReaderDocument())
+ return NULL;
+ }
+ return NULL;
}
-/* --------------------------------- CJS_EmbedObj --------------------------------- */
+/* --------------------------------- CJS_EmbedObj
+ * --------------------------------- */
-CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) :
- m_pJSObject(pJSObject)
-{
-}
-
-CJS_EmbedObj::~CJS_EmbedObj()
-{
- m_pJSObject = NULL;
+CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) : m_pJSObject(pJSObject) {}
+CJS_EmbedObj::~CJS_EmbedObj() {
+ m_pJSObject = NULL;
}
-CPDFSDK_PageView* CJS_EmbedObj::JSGetPageView(IFXJS_Context* cc)
-{
- return FXJS_GetPageView(cc);
+CPDFSDK_PageView* CJS_EmbedObj::JSGetPageView(IFXJS_Context* cc) {
+ return FXJS_GetPageView(cc);
}
-int CJS_EmbedObj::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView,const FX_WCHAR* swMsg,const FX_WCHAR* swTitle,FX_UINT nType,FX_UINT nIcon)
-{
- return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
+int CJS_EmbedObj::MsgBox(CPDFDoc_Environment* pApp,
+ CPDFSDK_PageView* pPageView,
+ const FX_WCHAR* swMsg,
+ const FX_WCHAR* swTitle,
+ FX_UINT nType,
+ FX_UINT nIcon) {
+ return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
}
-void CJS_EmbedObj::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg)
-{
- CJS_Object::Alert(pContext, swMsg);
+void CJS_EmbedObj::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg) {
+ CJS_Object::Alert(pContext, swMsg);
}
-CJS_Timer* CJS_EmbedObj::BeginTimer(CPDFDoc_Environment * pApp,FX_UINT nElapse)
-{
- CJS_Timer* pTimer = new CJS_Timer(this,pApp);
- pTimer->SetJSTimer(nElapse);
+CJS_Timer* CJS_EmbedObj::BeginTimer(CPDFDoc_Environment* pApp,
+ FX_UINT nElapse) {
+ CJS_Timer* pTimer = new CJS_Timer(this, pApp);
+ pTimer->SetJSTimer(nElapse);
- return pTimer;
+ return pTimer;
}
-void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer)
-{
- ASSERT(pTimer != NULL);
- pTimer->KillJSTimer();
- delete pTimer;
+void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer) {
+ ASSERT(pTimer != NULL);
+ pTimer->KillJSTimer();
+ delete pTimer;
}
-/* --------------------------------- CJS_Object --------------------------------- */
-void FreeObject(const v8::WeakCallbackInfo<CJS_Object>& data)
-{
- CJS_Object* pJSObj = data.GetParameter();
- pJSObj->ExitInstance();
- delete pJSObj;
- JS_FreePrivate(data.GetInternalField(0));
+/* --------------------------------- CJS_Object
+ * --------------------------------- */
+void FreeObject(const v8::WeakCallbackInfo<CJS_Object>& data) {
+ CJS_Object* pJSObj = data.GetParameter();
+ pJSObj->ExitInstance();
+ delete pJSObj;
+ JS_FreePrivate(data.GetInternalField(0));
}
-void DisposeObject(const v8::WeakCallbackInfo<CJS_Object>& data)
-{
- CJS_Object* pJSObj = data.GetParameter();
- pJSObj->Dispose();
- data.SetSecondPassCallback(FreeObject);
+void DisposeObject(const v8::WeakCallbackInfo<CJS_Object>& data) {
+ CJS_Object* pJSObj = data.GetParameter();
+ pJSObj->Dispose();
+ data.SetSecondPassCallback(FreeObject);
}
-CJS_Object::CJS_Object(JSFXObject pObject) :m_pEmbedObj(NULL)
-{
- v8::Local<v8::Context> context = pObject->CreationContext();
- m_pIsolate = context->GetIsolate();
- m_pObject.Reset(m_pIsolate, pObject);
+CJS_Object::CJS_Object(JSFXObject pObject) : m_pEmbedObj(NULL) {
+ v8::Local<v8::Context> context = pObject->CreationContext();
+ m_pIsolate = context->GetIsolate();
+ m_pObject.Reset(m_pIsolate, pObject);
};
-CJS_Object::~CJS_Object(void)
-{
- delete m_pEmbedObj;
- m_pEmbedObj = NULL;
+CJS_Object::~CJS_Object(void) {
+ delete m_pEmbedObj;
+ m_pEmbedObj = NULL;
- m_pObject.Reset();
+ m_pObject.Reset();
};
-void CJS_Object::MakeWeak()
-{
- m_pObject.SetWeak(
- this, DisposeObject, v8::WeakCallbackType::kInternalFields);
+void CJS_Object::MakeWeak() {
+ m_pObject.SetWeak(this, DisposeObject, v8::WeakCallbackType::kInternalFields);
}
-void CJS_Object::Dispose()
-{
- m_pObject.Reset();
+void CJS_Object::Dispose() {
+ m_pObject.Reset();
}
-CPDFSDK_PageView* CJS_Object::JSGetPageView(IFXJS_Context* cc)
-{
- return FXJS_GetPageView(cc);
+CPDFSDK_PageView* CJS_Object::JSGetPageView(IFXJS_Context* cc) {
+ return FXJS_GetPageView(cc);
}
-int CJS_Object::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, const FX_WCHAR* swMsg, const FX_WCHAR* swTitle, FX_UINT nType, FX_UINT nIcon)
-{
- return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
+int CJS_Object::MsgBox(CPDFDoc_Environment* pApp,
+ CPDFSDK_PageView* pPageView,
+ const FX_WCHAR* swMsg,
+ const FX_WCHAR* swTitle,
+ FX_UINT nType,
+ FX_UINT nIcon) {
+ return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
}
-void CJS_Object::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg)
-{
- ASSERT(pContext != NULL);
+void CJS_Object::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg) {
+ ASSERT(pContext != NULL);
- if (pContext->IsMsgBoxEnabled())
- {
- CPDFDoc_Environment* pApp = pContext->GetReaderApp();
- if(pApp)
- pApp->JS_appAlert(swMsg, NULL, 0, 3);
- }
+ if (pContext->IsMsgBoxEnabled()) {
+ CPDFDoc_Environment* pApp = pContext->GetReaderApp();
+ if (pApp)
+ pApp->JS_appAlert(swMsg, NULL, 0, 3);
+ }
}
diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp
index 485cd27813..08cd87c768 100644
--- a/fpdfsdk/src/javascript/JS_Runtime.cpp
+++ b/fpdfsdk/src/javascript/JS_Runtime.cpp
@@ -27,320 +27,308 @@
#include "../../include/javascript/global.h"
#include "../../include/javascript/console.h"
-CJS_RuntimeFactory::~CJS_RuntimeFactory()
-{
-}
-
-IFXJS_Runtime* CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp)
-{
- if (!m_bInit)
- {
- unsigned int embedderDataSlot = 0;
- if (pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
- embedderDataSlot = pApp->GetFormFillInfo()->m_pJsPlatform->m_v8EmbedderSlot;
- }
- JS_Initial(embedderDataSlot);
- m_bInit = TRUE;
+CJS_RuntimeFactory::~CJS_RuntimeFactory() {}
+
+IFXJS_Runtime* CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp) {
+ if (!m_bInit) {
+ unsigned int embedderDataSlot = 0;
+ if (pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
+ embedderDataSlot =
+ pApp->GetFormFillInfo()->m_pJsPlatform->m_v8EmbedderSlot;
}
- return new CJS_Runtime(pApp);
+ JS_Initial(embedderDataSlot);
+ m_bInit = TRUE;
+ }
+ return new CJS_Runtime(pApp);
}
-void CJS_RuntimeFactory::AddRef()
-{
- //to do.Should be implemented as atom manipulation.
- m_nRef++;
+void CJS_RuntimeFactory::AddRef() {
+ // to do.Should be implemented as atom manipulation.
+ m_nRef++;
}
-void CJS_RuntimeFactory::Release()
-{
- if(m_bInit)
- {
- //to do.Should be implemented as atom manipulation.
- if (--m_nRef == 0)
- {
- JS_Release();
- ReleaseGlobalData();
- m_bInit = FALSE;
- }
+void CJS_RuntimeFactory::Release() {
+ if (m_bInit) {
+ // to do.Should be implemented as atom manipulation.
+ if (--m_nRef == 0) {
+ JS_Release();
+ ReleaseGlobalData();
+ m_bInit = FALSE;
}
+ }
}
-void CJS_RuntimeFactory::DeleteJSRuntime(IFXJS_Runtime* pRuntime)
-{
- delete (CJS_Runtime*)pRuntime;
+void CJS_RuntimeFactory::DeleteJSRuntime(IFXJS_Runtime* pRuntime) {
+ delete (CJS_Runtime*)pRuntime;
}
-CJS_GlobalData* CJS_RuntimeFactory::NewGlobalData(CPDFDoc_Environment* pApp)
-{
- if (m_pGlobalData)
- {
- m_nGlobalDataCount++;
- return m_pGlobalData;
- }
- m_nGlobalDataCount = 1;
- m_pGlobalData = new CJS_GlobalData(pApp);
+CJS_GlobalData* CJS_RuntimeFactory::NewGlobalData(CPDFDoc_Environment* pApp) {
+ if (m_pGlobalData) {
+ m_nGlobalDataCount++;
return m_pGlobalData;
+ }
+ m_nGlobalDataCount = 1;
+ m_pGlobalData = new CJS_GlobalData(pApp);
+ return m_pGlobalData;
}
-void CJS_RuntimeFactory::ReleaseGlobalData()
-{
- m_nGlobalDataCount--;
+void CJS_RuntimeFactory::ReleaseGlobalData() {
+ m_nGlobalDataCount--;
- if (m_nGlobalDataCount <= 0)
- {
- delete m_pGlobalData;
- m_pGlobalData = NULL;
- }
+ if (m_nGlobalDataCount <= 0) {
+ delete m_pGlobalData;
+ m_pGlobalData = NULL;
+ }
}
void* CJS_ArrayBufferAllocator::Allocate(size_t length) {
- return calloc(1, length);
+ return calloc(1, length);
}
void* CJS_ArrayBufferAllocator::AllocateUninitialized(size_t length) {
- return malloc(length);
+ return malloc(length);
}
void CJS_ArrayBufferAllocator::Free(void* data, size_t length) {
- free(data);
+ free(data);
}
/* ------------------------------ CJS_Runtime ------------------------------ */
-CJS_Runtime::CJS_Runtime(CPDFDoc_Environment * pApp) :
- m_pApp(pApp),
- m_pDocument(NULL),
- m_bBlocking(FALSE),
- m_pFieldEventPath(NULL),
- m_isolate(NULL)
-{
- if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
- m_isolate = reinterpret_cast<v8::Isolate*>(m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate);
- }
- if (!m_isolate) {
- m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator());
-
- v8::Isolate::CreateParams params;
- params.array_buffer_allocator = m_pArrayBufferAllocator.get();
- m_isolate = v8::Isolate::New(params);
- }
-
- InitJSObjects();
-
- CJS_Context * pContext = (CJS_Context*)NewContext();
- JS_InitialRuntime(*this, this, pContext, m_context);
- ReleaseContext(pContext);
+CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp)
+ : m_pApp(pApp),
+ m_pDocument(NULL),
+ m_bBlocking(FALSE),
+ m_pFieldEventPath(NULL),
+ m_isolate(NULL) {
+ if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
+ m_isolate = reinterpret_cast<v8::Isolate*>(
+ m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate);
+ }
+ if (!m_isolate) {
+ m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator());
+
+ v8::Isolate::CreateParams params;
+ params.array_buffer_allocator = m_pArrayBufferAllocator.get();
+ m_isolate = v8::Isolate::New(params);
+ }
+
+ InitJSObjects();
+
+ CJS_Context* pContext = (CJS_Context*)NewContext();
+ JS_InitialRuntime(*this, this, pContext, m_context);
+ ReleaseContext(pContext);
}
-CJS_Runtime::~CJS_Runtime()
-{
- for (int i=0, sz=m_ContextArray.GetSize(); i<sz; i++)
- delete m_ContextArray.GetAt(i);
+CJS_Runtime::~CJS_Runtime() {
+ for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++)
+ delete m_ContextArray.GetAt(i);
- m_ContextArray.RemoveAll();
+ m_ContextArray.RemoveAll();
- JS_ReleaseRuntime(*this, m_context);
+ JS_ReleaseRuntime(*this, m_context);
- RemoveEventsInLoop(m_pFieldEventPath);
+ RemoveEventsInLoop(m_pFieldEventPath);
- m_pApp = NULL;
- m_pDocument = NULL;
- m_pFieldEventPath = NULL;
- m_context.Reset();
+ m_pApp = NULL;
+ m_pDocument = NULL;
+ m_pFieldEventPath = NULL;
+ m_context.Reset();
- //m_isolate->Exit();
- m_isolate->Dispose();
+ // m_isolate->Exit();
+ m_isolate->Dispose();
}
-FX_BOOL CJS_Runtime::InitJSObjects()
-{
- v8::Isolate::Scope isolate_scope(GetIsolate());
- v8::HandleScope handle_scope(GetIsolate());
- v8::Local<v8::Context> context = v8::Context::New(GetIsolate());
- v8::Context::Scope context_scope(context);
- //0 - 8
- if (CJS_Border::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Display::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Font::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Highlight::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Position::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_ScaleHow::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_ScaleWhen::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Style::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Zoomtype::Init(*this, JS_STATIC) < 0) return FALSE;
-
- //9 - 11
- if (CJS_App::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Color::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Console::Init(*this, JS_STATIC) < 0) return FALSE;
-
- //12 - 14
- if (CJS_Document::Init(*this, JS_DYNAMIC) < 0) return FALSE;
- if (CJS_Event::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Field::Init(*this, JS_DYNAMIC) < 0) return FALSE;
-
- //15 - 17
- if (CJS_Global::Init(*this, JS_STATIC) < 0) return FALSE;
- if (CJS_Icon::Init(*this, JS_DYNAMIC) < 0) return FALSE;
- if (CJS_Util::Init(*this, JS_STATIC) < 0) return FALSE;
-
- if (CJS_PublicMethods::Init(*this) < 0) return FALSE;
- if (CJS_GlobalConsts::Init(*this) < 0) return FALSE;
- if (CJS_GlobalArrays::Init(*this) < 0) return FALSE;
-
- if (CJS_TimerObj::Init(*this, JS_DYNAMIC) < 0) return FALSE;
- if (CJS_PrintParamsObj::Init(*this, JS_DYNAMIC) <0) return FALSE;
-
- return TRUE;
+FX_BOOL CJS_Runtime::InitJSObjects() {
+ v8::Isolate::Scope isolate_scope(GetIsolate());
+ v8::HandleScope handle_scope(GetIsolate());
+ v8::Local<v8::Context> context = v8::Context::New(GetIsolate());
+ v8::Context::Scope context_scope(context);
+ // 0 - 8
+ if (CJS_Border::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Display::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Font::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Highlight::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Position::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_ScaleHow::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_ScaleWhen::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Style::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Zoomtype::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+
+ // 9 - 11
+ if (CJS_App::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Color::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Console::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+
+ // 12 - 14
+ if (CJS_Document::Init(*this, JS_DYNAMIC) < 0)
+ return FALSE;
+ if (CJS_Event::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Field::Init(*this, JS_DYNAMIC) < 0)
+ return FALSE;
+
+ // 15 - 17
+ if (CJS_Global::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+ if (CJS_Icon::Init(*this, JS_DYNAMIC) < 0)
+ return FALSE;
+ if (CJS_Util::Init(*this, JS_STATIC) < 0)
+ return FALSE;
+
+ if (CJS_PublicMethods::Init(*this) < 0)
+ return FALSE;
+ if (CJS_GlobalConsts::Init(*this) < 0)
+ return FALSE;
+ if (CJS_GlobalArrays::Init(*this) < 0)
+ return FALSE;
+
+ if (CJS_TimerObj::Init(*this, JS_DYNAMIC) < 0)
+ return FALSE;
+ if (CJS_PrintParamsObj::Init(*this, JS_DYNAMIC) < 0)
+ return FALSE;
+
+ return TRUE;
}
-IFXJS_Context* CJS_Runtime::NewContext()
-{
- CJS_Context * p = new CJS_Context(this);
- m_ContextArray.Add(p);
- return p;
+IFXJS_Context* CJS_Runtime::NewContext() {
+ CJS_Context* p = new CJS_Context(this);
+ m_ContextArray.Add(p);
+ return p;
}
-void CJS_Runtime::ReleaseContext(IFXJS_Context * pContext)
-{
- CJS_Context* pJSContext = (CJS_Context*)pContext;
-
- for (int i=0, sz=m_ContextArray.GetSize(); i<sz; i++)
- {
- if (pJSContext == m_ContextArray.GetAt(i))
- {
- delete pJSContext;
- m_ContextArray.RemoveAt(i);
- break;
- }
+void CJS_Runtime::ReleaseContext(IFXJS_Context* pContext) {
+ CJS_Context* pJSContext = (CJS_Context*)pContext;
+
+ for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) {
+ if (pJSContext == m_ContextArray.GetAt(i)) {
+ delete pJSContext;
+ m_ContextArray.RemoveAt(i);
+ break;
}
+ }
}
-IFXJS_Context* CJS_Runtime::GetCurrentContext()
-{
- if(!m_ContextArray.GetSize())
- return NULL;
- return m_ContextArray.GetAt(m_ContextArray.GetSize()-1);
+IFXJS_Context* CJS_Runtime::GetCurrentContext() {
+ if (!m_ContextArray.GetSize())
+ return NULL;
+ return m_ContextArray.GetAt(m_ContextArray.GetSize() - 1);
}
-void CJS_Runtime::SetReaderDocument(CPDFSDK_Document* pReaderDoc)
-{
- if (m_pDocument != pReaderDoc)
- {
- v8::Isolate::Scope isolate_scope(m_isolate);
- v8::HandleScope handle_scope(m_isolate);
- v8::Local<v8::Context> context =v8::Local<v8::Context>::New(m_isolate, m_context);
- v8::Context::Scope context_scope(context);
-
- m_pDocument = pReaderDoc;
-
- if (pReaderDoc)
- {
- JSObject pThis = JS_GetThisObj(*this);
- if(!pThis.IsEmpty())
- {
- if (JS_GetObjDefnID(pThis) == JS_GetObjDefnID(*this, L"Document"))
- {
- if (CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pThis))
- {
- if (Document * pDocument = (Document*)pJSDocument->GetEmbedObject())
- pDocument->AttachDoc(pReaderDoc);
- }
- }
- }
- JS_SetThisObj(*this, JS_GetObjDefnID(*this, L"Document"));
- }
- else
- {
- JS_SetThisObj(*this, JS_GetObjDefnID(*this, L"app"));
+void CJS_Runtime::SetReaderDocument(CPDFSDK_Document* pReaderDoc) {
+ if (m_pDocument != pReaderDoc) {
+ v8::Isolate::Scope isolate_scope(m_isolate);
+ v8::HandleScope handle_scope(m_isolate);
+ v8::Local<v8::Context> context =
+ v8::Local<v8::Context>::New(m_isolate, m_context);
+ v8::Context::Scope context_scope(context);
+
+ m_pDocument = pReaderDoc;
+
+ if (pReaderDoc) {
+ JSObject pThis = JS_GetThisObj(*this);
+ if (!pThis.IsEmpty()) {
+ if (JS_GetObjDefnID(pThis) == JS_GetObjDefnID(*this, L"Document")) {
+ if (CJS_Document* pJSDocument = (CJS_Document*)JS_GetPrivate(pThis)) {
+ if (Document* pDocument = (Document*)pJSDocument->GetEmbedObject())
+ pDocument->AttachDoc(pReaderDoc);
+ }
}
+ }
+ JS_SetThisObj(*this, JS_GetObjDefnID(*this, L"Document"));
+ } else {
+ JS_SetThisObj(*this, JS_GetObjDefnID(*this, L"app"));
}
+ }
}
-FX_BOOL CJS_Runtime::AddEventToLoop(const CFX_WideString& sTargetName, JS_EVENT_T eEventType)
-{
- if (m_pFieldEventPath == NULL)
- {
- m_pFieldEventPath = new CJS_FieldEvent;
- m_pFieldEventPath->sTargetName = sTargetName;
- m_pFieldEventPath->eEventType = eEventType;
- m_pFieldEventPath->pNext = NULL;
+FX_BOOL CJS_Runtime::AddEventToLoop(const CFX_WideString& sTargetName,
+ JS_EVENT_T eEventType) {
+ if (m_pFieldEventPath == NULL) {
+ m_pFieldEventPath = new CJS_FieldEvent;
+ m_pFieldEventPath->sTargetName = sTargetName;
+ m_pFieldEventPath->eEventType = eEventType;
+ m_pFieldEventPath->pNext = NULL;
- return TRUE;
- }
+ return TRUE;
+ }
- //to search
- CJS_FieldEvent* p = m_pFieldEventPath;
- CJS_FieldEvent* pLast = m_pFieldEventPath;
- while (p)
- {
- if (p->eEventType == eEventType && p->sTargetName == sTargetName)
- return FALSE;
+ // to search
+ CJS_FieldEvent* p = m_pFieldEventPath;
+ CJS_FieldEvent* pLast = m_pFieldEventPath;
+ while (p) {
+ if (p->eEventType == eEventType && p->sTargetName == sTargetName)
+ return FALSE;
- pLast = p;
- p = p->pNext;
- }
+ pLast = p;
+ p = p->pNext;
+ }
- //to add
- CJS_FieldEvent* pNew = new CJS_FieldEvent;
- pNew->sTargetName = sTargetName;
- pNew->eEventType = eEventType;
- pNew->pNext = NULL;
+ // to add
+ CJS_FieldEvent* pNew = new CJS_FieldEvent;
+ pNew->sTargetName = sTargetName;
+ pNew->eEventType = eEventType;
+ pNew->pNext = NULL;
- pLast->pNext = pNew;
+ pLast->pNext = pNew;
- return TRUE;
+ return TRUE;
}
-void CJS_Runtime::RemoveEventInLoop(const CFX_WideString& sTargetName, JS_EVENT_T eEventType)
-{
- FX_BOOL bFind = FALSE;
-
- CJS_FieldEvent* p = m_pFieldEventPath;
- CJS_FieldEvent* pLast = NULL;
- while (p)
- {
- if (p->eEventType == eEventType && p->sTargetName == sTargetName)
- {
- bFind = TRUE;
- break;
- }
+void CJS_Runtime::RemoveEventInLoop(const CFX_WideString& sTargetName,
+ JS_EVENT_T eEventType) {
+ FX_BOOL bFind = FALSE;
- pLast = p;
- p = p->pNext;
+ CJS_FieldEvent* p = m_pFieldEventPath;
+ CJS_FieldEvent* pLast = NULL;
+ while (p) {
+ if (p->eEventType == eEventType && p->sTargetName == sTargetName) {
+ bFind = TRUE;
+ break;
}
- if (bFind)
- {
- RemoveEventsInLoop(p);
+ pLast = p;
+ p = p->pNext;
+ }
- if (p == m_pFieldEventPath)
- m_pFieldEventPath = NULL;
+ if (bFind) {
+ RemoveEventsInLoop(p);
- if (pLast)
- pLast->pNext = NULL;
- }
+ if (p == m_pFieldEventPath)
+ m_pFieldEventPath = NULL;
+
+ if (pLast)
+ pLast->pNext = NULL;
+ }
}
-void CJS_Runtime::RemoveEventsInLoop(CJS_FieldEvent* pStart)
-{
- CJS_FieldEvent* p = pStart;
+void CJS_Runtime::RemoveEventsInLoop(CJS_FieldEvent* pStart) {
+ CJS_FieldEvent* p = pStart;
- while (p)
- {
- CJS_FieldEvent* pOld = p;
- p = pOld->pNext;
+ while (p) {
+ CJS_FieldEvent* pOld = p;
+ p = pOld->pNext;
- delete pOld;
- }
+ delete pOld;
+ }
}
-v8::Local<v8::Context> CJS_Runtime::NewJSContext()
-{
- return v8::Local<v8::Context>::New(m_isolate, m_context);
+v8::Local<v8::Context> CJS_Runtime::NewJSContext() {
+ return v8::Local<v8::Context>::New(m_isolate, m_context);
}
-CFX_WideString ChangeObjName(const CFX_WideString& str)
-{
- CFX_WideString sRet = str;
- sRet.Replace(L"_", L".");
- return sRet;
+CFX_WideString ChangeObjName(const CFX_WideString& str) {
+ CFX_WideString sRet = str;
+ sRet.Replace(L"_", L".");
+ return sRet;
}
diff --git a/fpdfsdk/src/javascript/JS_Value.cpp b/fpdfsdk/src/javascript/JS_Value.cpp
index 058f2eaf45..faa1eeb6fc 100644
--- a/fpdfsdk/src/javascript/JS_Value.cpp
+++ b/fpdfsdk/src/javascript/JS_Value.cpp
@@ -12,651 +12,577 @@
/* ---------------------------- CJS_Value ---------------------------- */
-CJS_Value::CJS_Value(v8::Isolate* isolate) : m_eType(VT_unknown),m_isolate(isolate)
-{
-}
-CJS_Value::CJS_Value(v8::Isolate* isolate, v8::Local<v8::Value> pValue,FXJSVALUETYPE t) :
- m_pValue(pValue), m_eType(t), m_isolate(isolate)
-{
-}
+CJS_Value::CJS_Value(v8::Isolate* isolate)
+ : m_eType(VT_unknown), m_isolate(isolate) {}
+CJS_Value::CJS_Value(v8::Isolate* isolate,
+ v8::Local<v8::Value> pValue,
+ FXJSVALUETYPE t)
+ : m_pValue(pValue), m_eType(t), m_isolate(isolate) {}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const int &iValue):m_isolate(isolate)
-{
- operator =(iValue);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const int& iValue)
+ : m_isolate(isolate) {
+ operator=(iValue);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const bool &bValue):m_isolate(isolate)
-{
- operator =(bValue);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const bool& bValue)
+ : m_isolate(isolate) {
+ operator=(bValue);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const float &fValue):m_isolate(isolate)
-{
- operator =(fValue);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const float& fValue)
+ : m_isolate(isolate) {
+ operator=(fValue);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const double &dValue):m_isolate(isolate)
-{
- operator =(dValue);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const double& dValue)
+ : m_isolate(isolate) {
+ operator=(dValue);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, JSFXObject pJsObj):m_isolate(isolate)
-{
- operator =(pJsObj);
+CJS_Value::CJS_Value(v8::Isolate* isolate, JSFXObject pJsObj)
+ : m_isolate(isolate) {
+ operator=(pJsObj);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Object* pJsObj):m_isolate(isolate)
-{
- operator =(pJsObj);
+CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Object* pJsObj)
+ : m_isolate(isolate) {
+ operator=(pJsObj);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Document* pJsDoc):m_isolate(isolate)
-{
- m_eType = VT_object;
- if (pJsDoc)
- m_pValue = (JSFXObject)*pJsDoc;
+CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Document* pJsDoc)
+ : m_isolate(isolate) {
+ m_eType = VT_object;
+ if (pJsDoc)
+ m_pValue = (JSFXObject)*pJsDoc;
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_WCHAR* pWstr):m_isolate(isolate)
-{
- operator =(pWstr);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_WCHAR* pWstr)
+ : m_isolate(isolate) {
+ operator=(pWstr);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_CHAR* pStr):m_isolate(isolate)
-{
- operator = (pStr);
+CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_CHAR* pStr)
+ : m_isolate(isolate) {
+ operator=(pStr);
}
-CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Array& array):m_isolate(isolate)
-{
- operator = (array);
+CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Array& array)
+ : m_isolate(isolate) {
+ operator=(array);
}
-CJS_Value::~CJS_Value()
-{
-}
+CJS_Value::~CJS_Value() {}
-void CJS_Value::Attach(v8::Local<v8::Value> pValue,FXJSVALUETYPE t)
-{
- m_pValue = pValue;
- m_eType = t;
+void CJS_Value::Attach(v8::Local<v8::Value> pValue, FXJSVALUETYPE t) {
+ m_pValue = pValue;
+ m_eType = t;
}
-void CJS_Value::Attach(CJS_Value *pValue)
-{
- if (pValue)
- Attach(pValue->ToV8Value(), pValue->GetType());
+void CJS_Value::Attach(CJS_Value* pValue) {
+ if (pValue)
+ Attach(pValue->ToV8Value(), pValue->GetType());
}
-void CJS_Value::Detach()
-{
- m_pValue = v8::Local<v8::Value>();
- m_eType = VT_unknown;
+void CJS_Value::Detach() {
+ m_pValue = v8::Local<v8::Value>();
+ m_eType = VT_unknown;
}
-/* ---------------------------------------------------------------------------------------- */
+/* ----------------------------------------------------------------------------------------
+ */
-int CJS_Value::ToInt() const
-{
- return JS_ToInt32(m_isolate, m_pValue);
+int CJS_Value::ToInt() const {
+ return JS_ToInt32(m_isolate, m_pValue);
}
-bool CJS_Value::ToBool() const
-{
- return JS_ToBoolean(m_isolate, m_pValue);
+bool CJS_Value::ToBool() const {
+ return JS_ToBoolean(m_isolate, m_pValue);
}
-double CJS_Value::ToDouble() const
-{
- return JS_ToNumber(m_isolate, m_pValue);
+double CJS_Value::ToDouble() const {
+ return JS_ToNumber(m_isolate, m_pValue);
}
-float CJS_Value::ToFloat() const
-{
- return (float)ToDouble();
+float CJS_Value::ToFloat() const {
+ return (float)ToDouble();
}
-CJS_Object* CJS_Value::ToCJSObject() const
-{
- v8::Local<v8::Object> pObj = JS_ToObject(m_isolate, m_pValue);
- return (CJS_Object*)JS_GetPrivate(m_isolate, pObj);
+CJS_Object* CJS_Value::ToCJSObject() const {
+ v8::Local<v8::Object> pObj = JS_ToObject(m_isolate, m_pValue);
+ return (CJS_Object*)JS_GetPrivate(m_isolate, pObj);
}
-v8::Local<v8::Object> CJS_Value::ToV8Object() const
-{
- return JS_ToObject(m_isolate, m_pValue);
+v8::Local<v8::Object> CJS_Value::ToV8Object() const {
+ return JS_ToObject(m_isolate, m_pValue);
}
-CFX_WideString CJS_Value::ToCFXWideString() const
-{
- return JS_ToString(m_isolate, m_pValue);
+CFX_WideString CJS_Value::ToCFXWideString() const {
+ return JS_ToString(m_isolate, m_pValue);
}
-CFX_ByteString CJS_Value::ToCFXByteString() const
-{
- return CFX_ByteString::FromUnicode(ToCFXWideString());
+CFX_ByteString CJS_Value::ToCFXByteString() const {
+ return CFX_ByteString::FromUnicode(ToCFXWideString());
}
-v8::Local<v8::Value> CJS_Value::ToV8Value() const
-{
- return m_pValue;
+v8::Local<v8::Value> CJS_Value::ToV8Value() const {
+ return m_pValue;
}
-v8::Local<v8::Array>CJS_Value::ToV8Array() const
-{
- if (IsArrayObject())
- return v8::Local<v8::Array>::Cast(JS_ToObject(m_isolate, m_pValue));
- return v8::Local<v8::Array>();
+v8::Local<v8::Array> CJS_Value::ToV8Array() const {
+ if (IsArrayObject())
+ return v8::Local<v8::Array>::Cast(JS_ToObject(m_isolate, m_pValue));
+ return v8::Local<v8::Array>();
}
-/* ---------------------------------------------------------------------------------------- */
+/* ----------------------------------------------------------------------------------------
+ */
-void CJS_Value::operator =(int iValue)
-{
- m_pValue = JS_NewNumber(m_isolate, iValue);
+void CJS_Value::operator=(int iValue) {
+ m_pValue = JS_NewNumber(m_isolate, iValue);
- m_eType = VT_number;
+ m_eType = VT_number;
}
-void CJS_Value::operator =(bool bValue)
-{
- m_pValue = JS_NewBoolean(m_isolate, bValue);
+void CJS_Value::operator=(bool bValue) {
+ m_pValue = JS_NewBoolean(m_isolate, bValue);
- m_eType = VT_boolean;
+ m_eType = VT_boolean;
}
-void CJS_Value::operator =(double dValue)
-{
- m_pValue = JS_NewNumber(m_isolate,dValue);
+void CJS_Value::operator=(double dValue) {
+ m_pValue = JS_NewNumber(m_isolate, dValue);
- m_eType = VT_number;
+ m_eType = VT_number;
}
-void CJS_Value::operator = (float fValue)
-{
- m_pValue = JS_NewNumber(m_isolate,fValue);
- m_eType = VT_number;
+void CJS_Value::operator=(float fValue) {
+ m_pValue = JS_NewNumber(m_isolate, fValue);
+ m_eType = VT_number;
}
-void CJS_Value::operator =(v8::Local<v8::Object> pObj)
-{
+void CJS_Value::operator=(v8::Local<v8::Object> pObj) {
+ m_pValue = JS_NewObject(m_isolate, pObj);
- m_pValue = JS_NewObject(m_isolate,pObj);
-
- m_eType = VT_fxobject;
+ m_eType = VT_fxobject;
}
-void CJS_Value::operator =(CJS_Object * pObj)
-{
- if (pObj)
- operator = ((JSFXObject)*pObj);
+void CJS_Value::operator=(CJS_Object* pObj) {
+ if (pObj)
+ operator=((JSFXObject)*pObj);
}
-void CJS_Value::operator = (CJS_Document* pJsDoc)
-{
- m_eType = VT_object;
- if (pJsDoc) {
- m_pValue = static_cast<JSFXObject>(*pJsDoc);
- }
+void CJS_Value::operator=(CJS_Document* pJsDoc) {
+ m_eType = VT_object;
+ if (pJsDoc) {
+ m_pValue = static_cast<JSFXObject>(*pJsDoc);
+ }
}
-void CJS_Value::operator =(const FX_WCHAR* pWstr)
-{
- m_pValue = JS_NewString(m_isolate,(wchar_t *)pWstr);
+void CJS_Value::operator=(const FX_WCHAR* pWstr) {
+ m_pValue = JS_NewString(m_isolate, (wchar_t*)pWstr);
- m_eType = VT_string;
+ m_eType = VT_string;
}
-void CJS_Value::SetNull()
-{
- m_pValue = JS_NewNull();
+void CJS_Value::SetNull() {
+ m_pValue = JS_NewNull();
- m_eType = VT_null;
+ m_eType = VT_null;
}
-void CJS_Value::operator = (const FX_CHAR* pStr)
-{
- operator = (CFX_WideString::FromLocal(pStr).c_str());
+void CJS_Value::operator=(const FX_CHAR* pStr) {
+ operator=(CFX_WideString::FromLocal(pStr).c_str());
}
-void CJS_Value::operator = (CJS_Array & array)
-{
- m_pValue = JS_NewObject2(m_isolate,(v8::Local<v8::Array>)array);
+void CJS_Value::operator=(CJS_Array& array) {
+ m_pValue = JS_NewObject2(m_isolate, (v8::Local<v8::Array>)array);
- m_eType = VT_object;
+ m_eType = VT_object;
}
-void CJS_Value::operator = (CJS_Date & date)
-{
- m_pValue = JS_NewDate(m_isolate, (double)date);
+void CJS_Value::operator=(CJS_Date& date) {
+ m_pValue = JS_NewDate(m_isolate, (double)date);
- m_eType = VT_date;
+ m_eType = VT_date;
}
-void CJS_Value::operator = (CJS_Value value)
-{
- m_pValue = value.ToV8Value();
+void CJS_Value::operator=(CJS_Value value) {
+ m_pValue = value.ToV8Value();
- m_eType = value.m_eType;
- m_isolate = value.m_isolate;
+ m_eType = value.m_eType;
+ m_isolate = value.m_isolate;
}
-/* ---------------------------------------------------------------------------------------- */
+/* ----------------------------------------------------------------------------------------
+ */
-FXJSVALUETYPE CJS_Value::GetType() const
-{
- if(m_pValue.IsEmpty()) return VT_unknown;
- if(m_pValue->IsString()) return VT_string;
- if(m_pValue->IsNumber()) return VT_number;
- if(m_pValue->IsBoolean()) return VT_boolean;
- if(m_pValue->IsDate()) return VT_date;
- if(m_pValue->IsObject()) return VT_object;
- if(m_pValue->IsNull()) return VT_null;
- if(m_pValue->IsUndefined()) return VT_undefined;
- return VT_unknown;
+FXJSVALUETYPE CJS_Value::GetType() const {
+ if (m_pValue.IsEmpty())
+ return VT_unknown;
+ if (m_pValue->IsString())
+ return VT_string;
+ if (m_pValue->IsNumber())
+ return VT_number;
+ if (m_pValue->IsBoolean())
+ return VT_boolean;
+ if (m_pValue->IsDate())
+ return VT_date;
+ if (m_pValue->IsObject())
+ return VT_object;
+ if (m_pValue->IsNull())
+ return VT_null;
+ if (m_pValue->IsUndefined())
+ return VT_undefined;
+ return VT_unknown;
}
-FX_BOOL CJS_Value::IsArrayObject() const
-{
- if(m_pValue.IsEmpty()) return FALSE;
- return m_pValue->IsArray();
+FX_BOOL CJS_Value::IsArrayObject() const {
+ if (m_pValue.IsEmpty())
+ return FALSE;
+ return m_pValue->IsArray();
}
-FX_BOOL CJS_Value::IsDateObject() const
-{
- if(m_pValue.IsEmpty()) return FALSE;
- return m_pValue->IsDate();
+FX_BOOL CJS_Value::IsDateObject() const {
+ if (m_pValue.IsEmpty())
+ return FALSE;
+ return m_pValue->IsDate();
}
-//CJS_Value::operator CJS_Array()
-FX_BOOL CJS_Value::ConvertToArray(CJS_Array &array) const
-{
- if (IsArrayObject())
- {
- array.Attach(JS_ToArray(m_isolate, m_pValue));
- return TRUE;
- }
+// CJS_Value::operator CJS_Array()
+FX_BOOL CJS_Value::ConvertToArray(CJS_Array& array) const {
+ if (IsArrayObject()) {
+ array.Attach(JS_ToArray(m_isolate, m_pValue));
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CJS_Value::ConvertToDate(CJS_Date &date) const
-{
-// if (GetType() == VT_date)
-// {
-// date = (double)(*this);
-// return TRUE;
-// }
+FX_BOOL CJS_Value::ConvertToDate(CJS_Date& date) const {
+ // if (GetType() == VT_date)
+ // {
+ // date = (double)(*this);
+ // return TRUE;
+ // }
- if (IsDateObject())
- {
- date.Attach(m_pValue);
- return TRUE;
- }
+ if (IsDateObject()) {
+ date.Attach(m_pValue);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
/* ---------------------------- CJS_PropValue ---------------------------- */
-CJS_PropValue::CJS_PropValue(const CJS_Value &value) :
- CJS_Value(value),
- m_bIsSetting(0)
-{
-}
+CJS_PropValue::CJS_PropValue(const CJS_Value& value)
+ : CJS_Value(value), m_bIsSetting(0) {}
-CJS_PropValue::CJS_PropValue(v8::Isolate* isolate) : CJS_Value(isolate),
- m_bIsSetting(0)
-{
-}
+CJS_PropValue::CJS_PropValue(v8::Isolate* isolate)
+ : CJS_Value(isolate), m_bIsSetting(0) {}
-CJS_PropValue::~CJS_PropValue()
-{
-}
+CJS_PropValue::~CJS_PropValue() {}
-FX_BOOL CJS_PropValue::IsSetting()
-{
- return m_bIsSetting;
+FX_BOOL CJS_PropValue::IsSetting() {
+ return m_bIsSetting;
}
-FX_BOOL CJS_PropValue::IsGetting()
-{
- return !m_bIsSetting;
+FX_BOOL CJS_PropValue::IsGetting() {
+ return !m_bIsSetting;
}
-void CJS_PropValue::operator <<(int iValue)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator =(iValue);
+void CJS_PropValue::operator<<(int iValue) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(iValue);
}
-void CJS_PropValue::operator >>(int & iValue) const
-{
- ASSERT(m_bIsSetting);
- iValue = CJS_Value::ToInt();
+void CJS_PropValue::operator>>(int& iValue) const {
+ ASSERT(m_bIsSetting);
+ iValue = CJS_Value::ToInt();
}
-
-void CJS_PropValue::operator <<(bool bValue)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator =(bValue);
+void CJS_PropValue::operator<<(bool bValue) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(bValue);
}
-void CJS_PropValue::operator >>(bool& bValue) const
-{
- ASSERT(m_bIsSetting);
- bValue = CJS_Value::ToBool();
+void CJS_PropValue::operator>>(bool& bValue) const {
+ ASSERT(m_bIsSetting);
+ bValue = CJS_Value::ToBool();
}
-void CJS_PropValue::operator <<(double dValue)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator =(dValue);
+void CJS_PropValue::operator<<(double dValue) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(dValue);
}
-void CJS_PropValue::operator >>(double& dValue) const
-{
- ASSERT(m_bIsSetting);
- dValue = CJS_Value::ToDouble();
+void CJS_PropValue::operator>>(double& dValue) const {
+ ASSERT(m_bIsSetting);
+ dValue = CJS_Value::ToDouble();
}
-void CJS_PropValue::operator <<(CJS_Object* pObj)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator = (pObj);
+void CJS_PropValue::operator<<(CJS_Object* pObj) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(pObj);
}
-void CJS_PropValue::operator >>(CJS_Object*& ppObj) const
-{
- ASSERT(m_bIsSetting);
- ppObj = CJS_Value::ToCJSObject();
+void CJS_PropValue::operator>>(CJS_Object*& ppObj) const {
+ ASSERT(m_bIsSetting);
+ ppObj = CJS_Value::ToCJSObject();
}
-void CJS_PropValue::operator <<(CJS_Document* pJsDoc)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator = (pJsDoc);
+void CJS_PropValue::operator<<(CJS_Document* pJsDoc) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(pJsDoc);
}
-void CJS_PropValue::operator >>(CJS_Document*& ppJsDoc) const
-{
- ASSERT(m_bIsSetting);
- ppJsDoc = static_cast<CJS_Document*>(CJS_Value::ToCJSObject());
+void CJS_PropValue::operator>>(CJS_Document*& ppJsDoc) const {
+ ASSERT(m_bIsSetting);
+ ppJsDoc = static_cast<CJS_Document*>(CJS_Value::ToCJSObject());
}
-void CJS_PropValue::operator<<(JSFXObject pObj)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator = (pObj);
+void CJS_PropValue::operator<<(JSFXObject pObj) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(pObj);
}
-void CJS_PropValue::operator>>(JSFXObject &ppObj) const
-{
- ASSERT(m_bIsSetting);
- ppObj = CJS_Value::ToV8Object();
+void CJS_PropValue::operator>>(JSFXObject& ppObj) const {
+ ASSERT(m_bIsSetting);
+ ppObj = CJS_Value::ToV8Object();
}
-
-void CJS_PropValue::StartSetting()
-{
- m_bIsSetting = 1;
+void CJS_PropValue::StartSetting() {
+ m_bIsSetting = 1;
}
-void CJS_PropValue::StartGetting()
-{
- m_bIsSetting = 0;
+void CJS_PropValue::StartGetting() {
+ m_bIsSetting = 0;
}
-void CJS_PropValue::operator <<(CFX_ByteString string)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator = (string.c_str());
+void CJS_PropValue::operator<<(CFX_ByteString string) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(string.c_str());
}
-void CJS_PropValue::operator >>(CFX_ByteString &string) const
-{
- ASSERT(m_bIsSetting);
- string = CJS_Value::ToCFXByteString();
+void CJS_PropValue::operator>>(CFX_ByteString& string) const {
+ ASSERT(m_bIsSetting);
+ string = CJS_Value::ToCFXByteString();
}
-void CJS_PropValue::operator <<(const FX_WCHAR* c_string)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator =(c_string);
+void CJS_PropValue::operator<<(const FX_WCHAR* c_string) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(c_string);
}
-void CJS_PropValue::operator >>(CFX_WideString &wide_string) const
-{
- ASSERT(m_bIsSetting);
- wide_string = CJS_Value::ToCFXWideString();
+void CJS_PropValue::operator>>(CFX_WideString& wide_string) const {
+ ASSERT(m_bIsSetting);
+ wide_string = CJS_Value::ToCFXWideString();
}
-void CJS_PropValue::operator <<(CFX_WideString wide_string)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator = (wide_string.c_str());
+void CJS_PropValue::operator<<(CFX_WideString wide_string) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(wide_string.c_str());
}
-void CJS_PropValue::operator >>(CJS_Array &array) const
-{
- ASSERT(m_bIsSetting);
- ConvertToArray(array);
+void CJS_PropValue::operator>>(CJS_Array& array) const {
+ ASSERT(m_bIsSetting);
+ ConvertToArray(array);
}
-void CJS_PropValue::operator <<(CJS_Array &array)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator=(array);
+void CJS_PropValue::operator<<(CJS_Array& array) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(array);
}
-void CJS_PropValue::operator>>(CJS_Date &date) const
-{
- ASSERT(m_bIsSetting);
- ConvertToDate(date);
+void CJS_PropValue::operator>>(CJS_Date& date) const {
+ ASSERT(m_bIsSetting);
+ ConvertToDate(date);
}
-void CJS_PropValue::operator<<(CJS_Date &date)
-{
- ASSERT(!m_bIsSetting);
- CJS_Value::operator=(date);
+void CJS_PropValue::operator<<(CJS_Date& date) {
+ ASSERT(!m_bIsSetting);
+ CJS_Value::operator=(date);
}
-CJS_PropValue::operator v8::Local<v8::Value>() const
-{
- return m_pValue;
+CJS_PropValue::operator v8::Local<v8::Value>() const {
+ return m_pValue;
}
-/* ======================================== CJS_Array ========================================= */
-CJS_Array::CJS_Array(v8::Isolate* isolate):m_isolate(isolate)
-{
-}
+/* ======================================== CJS_Array
+ * ========================================= */
+CJS_Array::CJS_Array(v8::Isolate* isolate) : m_isolate(isolate) {}
-CJS_Array::~CJS_Array()
-{
-}
+CJS_Array::~CJS_Array() {}
-void CJS_Array::Attach(v8::Local<v8::Array> pArray)
-{
- m_pArray = pArray;
+void CJS_Array::Attach(v8::Local<v8::Array> pArray) {
+ m_pArray = pArray;
}
-FX_BOOL CJS_Array::IsAttached()
-{
- return FALSE;
+FX_BOOL CJS_Array::IsAttached() {
+ return FALSE;
}
-void CJS_Array::GetElement(unsigned index,CJS_Value &value)
-{
- if (m_pArray.IsEmpty())
- return;
- v8::Local<v8::Value> p = JS_GetArrayElement(m_isolate, m_pArray,index);
- value.Attach(p,VT_object);
+void CJS_Array::GetElement(unsigned index, CJS_Value& value) {
+ if (m_pArray.IsEmpty())
+ return;
+ v8::Local<v8::Value> p = JS_GetArrayElement(m_isolate, m_pArray, index);
+ value.Attach(p, VT_object);
}
-void CJS_Array::SetElement(unsigned index,CJS_Value value)
-{
- if (m_pArray.IsEmpty())
- m_pArray = JS_NewArray(m_isolate);
+void CJS_Array::SetElement(unsigned index, CJS_Value value) {
+ if (m_pArray.IsEmpty())
+ m_pArray = JS_NewArray(m_isolate);
- JS_PutArrayElement(m_isolate, m_pArray, index, value.ToV8Value(), value.GetType());
+ JS_PutArrayElement(m_isolate, m_pArray, index, value.ToV8Value(),
+ value.GetType());
}
-int CJS_Array::GetLength()
-{
- if (m_pArray.IsEmpty())
- return 0;
- return JS_GetArrayLength(m_pArray);
+int CJS_Array::GetLength() {
+ if (m_pArray.IsEmpty())
+ return 0;
+ return JS_GetArrayLength(m_pArray);
}
-CJS_Array:: operator v8::Local<v8::Array>()
-{
- if (m_pArray.IsEmpty())
- m_pArray = JS_NewArray(m_isolate);
+CJS_Array::operator v8::Local<v8::Array>() {
+ if (m_pArray.IsEmpty())
+ m_pArray = JS_NewArray(m_isolate);
- return m_pArray;
+ return m_pArray;
}
-/* ======================================== CJS_Date ========================================= */
+/* ======================================== CJS_Date
+ * ========================================= */
-CJS_Date::CJS_Date(v8::Isolate* isolate) :m_isolate(isolate)
-{
-}
+CJS_Date::CJS_Date(v8::Isolate* isolate) : m_isolate(isolate) {}
-CJS_Date::CJS_Date(v8::Isolate* isolate,double dMsec_time)
-{
- m_isolate = isolate;
- m_pDate = JS_NewDate(isolate,dMsec_time);
+CJS_Date::CJS_Date(v8::Isolate* isolate, double dMsec_time) {
+ m_isolate = isolate;
+ m_pDate = JS_NewDate(isolate, dMsec_time);
}
-CJS_Date::CJS_Date(v8::Isolate* isolate,int year, int mon, int day,int hour, int min, int sec)
-{
- m_isolate = isolate;
- m_pDate = JS_NewDate(isolate,MakeDate(year,mon,day,hour,min,sec,0));
+CJS_Date::CJS_Date(v8::Isolate* isolate,
+ int year,
+ int mon,
+ int day,
+ int hour,
+ int min,
+ int sec) {
+ m_isolate = isolate;
+ m_pDate = JS_NewDate(isolate, MakeDate(year, mon, day, hour, min, sec, 0));
}
-double CJS_Date::MakeDate(int year, int mon, int day,int hour, int min, int sec,int ms)
-{
- return JS_MakeDate(JS_MakeDay(year,mon,day), JS_MakeTime(hour,min,sec,ms));
+double CJS_Date::MakeDate(int year,
+ int mon,
+ int day,
+ int hour,
+ int min,
+ int sec,
+ int ms) {
+ return JS_MakeDate(JS_MakeDay(year, mon, day),
+ JS_MakeTime(hour, min, sec, ms));
}
-CJS_Date::~CJS_Date()
-{
-}
+CJS_Date::~CJS_Date() {}
-FX_BOOL CJS_Date::IsValidDate()
-{
- if(m_pDate.IsEmpty()) return FALSE;
- return !JS_PortIsNan(JS_ToNumber(m_isolate, m_pDate));
+FX_BOOL CJS_Date::IsValidDate() {
+ if (m_pDate.IsEmpty())
+ return FALSE;
+ return !JS_PortIsNan(JS_ToNumber(m_isolate, m_pDate));
}
-void CJS_Date::Attach(v8::Local<v8::Value> pDate)
-{
- m_pDate = pDate;
+void CJS_Date::Attach(v8::Local<v8::Value> pDate) {
+ m_pDate = pDate;
}
-int CJS_Date::GetYear()
-{
- if (IsValidDate())
- return JS_GetYearFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetYear() {
+ if (IsValidDate())
+ return JS_GetYearFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetYear(int iYear)
-{
- double date = MakeDate(iYear,GetMonth(),GetDay(),GetHours(),GetMinutes(),GetSeconds(),0);
- JS_ValueCopy(m_pDate, JS_NewDate(m_isolate,date));
+void CJS_Date::SetYear(int iYear) {
+ double date = MakeDate(iYear, GetMonth(), GetDay(), GetHours(), GetMinutes(),
+ GetSeconds(), 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-int CJS_Date::GetMonth()
-{
- if (IsValidDate())
- return JS_GetMonthFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetMonth() {
+ if (IsValidDate())
+ return JS_GetMonthFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetMonth(int iMonth)
-{
-
- double date = MakeDate(GetYear(),iMonth,GetDay(),GetHours(),GetMinutes(),GetSeconds(),0);
- JS_ValueCopy(m_pDate, JS_NewDate(m_isolate,date));
-
+void CJS_Date::SetMonth(int iMonth) {
+ double date = MakeDate(GetYear(), iMonth, GetDay(), GetHours(), GetMinutes(),
+ GetSeconds(), 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-int CJS_Date::GetDay()
-{
- if (IsValidDate())
- return JS_GetDayFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetDay() {
+ if (IsValidDate())
+ return JS_GetDayFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetDay(int iDay)
-{
-
- double date = MakeDate(GetYear(),GetMonth(),iDay,GetHours(),GetMinutes(),GetSeconds(),0);
- JS_ValueCopy(m_pDate,JS_NewDate(m_isolate,date));
-
+void CJS_Date::SetDay(int iDay) {
+ double date = MakeDate(GetYear(), GetMonth(), iDay, GetHours(), GetMinutes(),
+ GetSeconds(), 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-int CJS_Date::GetHours()
-{
- if (IsValidDate())
- return JS_GetHourFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetHours() {
+ if (IsValidDate())
+ return JS_GetHourFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetHours(int iHours)
-{
- double date = MakeDate(GetYear(),GetMonth(),GetDay(),iHours,GetMinutes(),GetSeconds(),0);
- JS_ValueCopy(m_pDate,JS_NewDate(m_isolate,date));
+void CJS_Date::SetHours(int iHours) {
+ double date = MakeDate(GetYear(), GetMonth(), GetDay(), iHours, GetMinutes(),
+ GetSeconds(), 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-int CJS_Date::GetMinutes()
-{
- if (IsValidDate())
- return JS_GetMinFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetMinutes() {
+ if (IsValidDate())
+ return JS_GetMinFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetMinutes(int minutes)
-{
- double date = MakeDate(GetYear(),GetMonth(),GetDay(),GetHours(),minutes,GetSeconds(),0);
- JS_ValueCopy(m_pDate,JS_NewDate(m_isolate,date));
+void CJS_Date::SetMinutes(int minutes) {
+ double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(), minutes,
+ GetSeconds(), 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-int CJS_Date::GetSeconds()
-{
- if (IsValidDate())
- return JS_GetSecFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
+int CJS_Date::GetSeconds() {
+ if (IsValidDate())
+ return JS_GetSecFromTime(JS_LocalTime(JS_ToNumber(m_isolate, m_pDate)));
- return 0;
+ return 0;
}
-void CJS_Date::SetSeconds(int seconds)
-{
- double date = MakeDate(GetYear(),GetMonth(),GetDay(),GetHours(),GetMinutes(),seconds,0);
- JS_ValueCopy(m_pDate,JS_NewDate(m_isolate,date));
+void CJS_Date::SetSeconds(int seconds) {
+ double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(),
+ GetMinutes(), seconds, 0);
+ JS_ValueCopy(m_pDate, JS_NewDate(m_isolate, date));
}
-CJS_Date::operator v8::Local<v8::Value>()
-{
- return m_pDate;
+CJS_Date::operator v8::Local<v8::Value>() {
+ return m_pDate;
}
-CJS_Date::operator double() const
-{
- if(m_pDate.IsEmpty())
- return 0.0;
- return JS_ToNumber(m_isolate, m_pDate);
+CJS_Date::operator double() const {
+ if (m_pDate.IsEmpty())
+ return 0.0;
+ return JS_ToNumber(m_isolate, m_pDate);
}
-CFX_WideString CJS_Date::ToString() const
-{
- if(m_pDate.IsEmpty())
- return L"";
- return JS_ToString(m_isolate, m_pDate);
+CFX_WideString CJS_Date::ToString() const {
+ if (m_pDate.IsEmpty())
+ return L"";
+ return JS_ToString(m_isolate, m_pDate);
}
diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
index daecdbec89..30400789b8 100644
--- a/fpdfsdk/src/javascript/PublicMethods.cpp
+++ b/fpdfsdk/src/javascript/PublicMethods.cpp
@@ -19,2255 +19,2123 @@
#include "../../include/javascript/color.h"
#include "../../include/javascript/JS_Runtime.h"
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- return pRuntime->GetIsolate();
+ return pRuntime->GetIsolate();
}
+/* -------------------------------- CJS_PublicMethods
+ * -------------------------------- */
-/* -------------------------------- CJS_PublicMethods -------------------------------- */
-
-#define DOUBLE_CORRECT 0.000000000000001
+#define DOUBLE_CORRECT 0.000000000000001
BEGIN_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Keystroke)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_FormatEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_KeystrokeEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Format)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Keystroke)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Format)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Keystroke)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_KeystrokeEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFMakeNumber)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple_Calculate)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFRange_Validate)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFMergeChange)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFParseDateEx)
- JS_STATIC_GLOBAL_FUN_ENTRY(AFExtractNums)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Keystroke)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_FormatEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_KeystrokeEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Format)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Keystroke)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Format)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Keystroke)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_KeystrokeEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFMakeNumber)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple_Calculate)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFRange_Validate)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFMergeChange)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFParseDateEx)
+JS_STATIC_GLOBAL_FUN_ENTRY(AFExtractNums)
END_JS_STATIC_GLOBAL_FUN()
IMPLEMENT_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods)
-static const FX_WCHAR* months[] =
-{
- L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec"
-};
+static const FX_WCHAR* months[] = {L"Jan", L"Feb", L"Mar", L"Apr",
+ L"May", L"Jun", L"Jul", L"Aug",
+ L"Sep", L"Oct", L"Nov", L"Dec"};
-static const FX_WCHAR* fullmonths[] =
-{
- L"January", L"February", L"March", L"April", L"May", L"June", L"July", L"August", L"September", L"October", L"November", L"December"
-};
+static const FX_WCHAR* fullmonths[] = {L"January", L"February", L"March",
+ L"April", L"May", L"June",
+ L"July", L"August", L"September",
+ L"October", L"November", L"December"};
-FX_BOOL CJS_PublicMethods::IsNumber(const FX_WCHAR* string)
-{
- CFX_WideString sTrim = StrTrim(string);
- const FX_WCHAR* pTrim = sTrim.c_str();
- const FX_WCHAR* p = pTrim;
+FX_BOOL CJS_PublicMethods::IsNumber(const FX_WCHAR* string) {
+ CFX_WideString sTrim = StrTrim(string);
+ const FX_WCHAR* pTrim = sTrim.c_str();
+ const FX_WCHAR* p = pTrim;
+ FX_BOOL bDot = FALSE;
+ FX_BOOL bKXJS = FALSE;
- FX_BOOL bDot = FALSE;
- FX_BOOL bKXJS = FALSE;
-
- wchar_t c;
- while ((c = *p))
- {
- if (c == '.' || c == ',')
- {
- if (bDot) return FALSE;
- bDot = TRUE;
- }
- else if (c == '-' || c == '+')
- {
- if (p != pTrim)
- return FALSE;
- }
- else if (c == 'e' || c == 'E')
- {
- if (bKXJS)
- return FALSE;
+ wchar_t c;
+ while ((c = *p)) {
+ if (c == '.' || c == ',') {
+ if (bDot)
+ return FALSE;
+ bDot = TRUE;
+ } else if (c == '-' || c == '+') {
+ if (p != pTrim)
+ return FALSE;
+ } else if (c == 'e' || c == 'E') {
+ if (bKXJS)
+ return FALSE;
- p++;
- c = *p;
- if (c == '+' || c == '-')
- {
- bKXJS = TRUE;
- }
- else
- {
- return FALSE;
- }
- }
- else if (!IsDigit(c))
- {
- return FALSE;
- }
- p++;
+ p++;
+ c = *p;
+ if (c == '+' || c == '-') {
+ bKXJS = TRUE;
+ } else {
+ return FALSE;
+ }
+ } else if (!IsDigit(c)) {
+ return FALSE;
}
+ p++;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CJS_PublicMethods::IsDigit(wchar_t ch)
-{
- return (ch >= L'0' && ch <= L'9');
+FX_BOOL CJS_PublicMethods::IsDigit(wchar_t ch) {
+ return (ch >= L'0' && ch <= L'9');
}
-FX_BOOL CJS_PublicMethods::IsDigit(char ch)
-{
- return (ch >= '0' && ch <= '9');
+FX_BOOL CJS_PublicMethods::IsDigit(char ch) {
+ return (ch >= '0' && ch <= '9');
}
-FX_BOOL CJS_PublicMethods::IsAlphabetic(wchar_t ch)
-{
- return ((ch >= L'a' && ch <= L'z') || (ch >= L'A' && ch <= L'Z'));
+FX_BOOL CJS_PublicMethods::IsAlphabetic(wchar_t ch) {
+ return ((ch >= L'a' && ch <= L'z') || (ch >= L'A' && ch <= L'Z'));
}
-FX_BOOL CJS_PublicMethods::IsAlphaNumeric(wchar_t ch)
-{
- return (IsDigit(ch) || IsAlphabetic(ch));
+FX_BOOL CJS_PublicMethods::IsAlphaNumeric(wchar_t ch) {
+ return (IsDigit(ch) || IsAlphabetic(ch));
}
-FX_BOOL CJS_PublicMethods::maskSatisfied(wchar_t c_Change,wchar_t c_Mask)
-{
- switch (c_Mask)
- {
+FX_BOOL CJS_PublicMethods::maskSatisfied(wchar_t c_Change, wchar_t c_Mask) {
+ switch (c_Mask) {
case L'9':
- return IsDigit(c_Change);
+ return IsDigit(c_Change);
case L'A':
- return IsAlphabetic(c_Change);
+ return IsAlphabetic(c_Change);
case L'O':
- return IsAlphaNumeric(c_Change);
+ return IsAlphaNumeric(c_Change);
case L'X':
- return TRUE;
+ return TRUE;
default:
- return (c_Change == c_Mask);
- }
+ return (c_Change == c_Mask);
+ }
}
-FX_BOOL CJS_PublicMethods::isReservedMaskChar(wchar_t ch)
-{
- return ch == L'9' || ch == L'A' || ch == L'O' || ch == L'X';
+FX_BOOL CJS_PublicMethods::isReservedMaskChar(wchar_t ch) {
+ return ch == L'9' || ch == L'A' || ch == L'O' || ch == L'X';
}
-double CJS_PublicMethods::AF_Simple(const FX_WCHAR* sFuction, double dValue1, double dValue2)
-{
- if (FXSYS_wcsicmp(sFuction,L"AVG") == 0 || FXSYS_wcsicmp(sFuction,L"SUM") == 0)
- {
- return dValue1 + dValue2;
- }
- if (FXSYS_wcsicmp(sFuction, L"PRD") == 0)
- {
- return dValue1 * dValue2;
- }
- if (FXSYS_wcsicmp(sFuction,L"MIN") == 0)
- {
- return FX_MIN(dValue1, dValue2);
- }
- if (FXSYS_wcsicmp(sFuction,L"MAX") == 0)
- {
- return FX_MAX(dValue1, dValue2);
- }
- return dValue1;
+double CJS_PublicMethods::AF_Simple(const FX_WCHAR* sFuction,
+ double dValue1,
+ double dValue2) {
+ if (FXSYS_wcsicmp(sFuction, L"AVG") == 0 ||
+ FXSYS_wcsicmp(sFuction, L"SUM") == 0) {
+ return dValue1 + dValue2;
+ }
+ if (FXSYS_wcsicmp(sFuction, L"PRD") == 0) {
+ return dValue1 * dValue2;
+ }
+ if (FXSYS_wcsicmp(sFuction, L"MIN") == 0) {
+ return FX_MIN(dValue1, dValue2);
+ }
+ if (FXSYS_wcsicmp(sFuction, L"MAX") == 0) {
+ return FX_MAX(dValue1, dValue2);
+ }
+ return dValue1;
}
-CFX_WideString CJS_PublicMethods::StrLTrim(const FX_WCHAR* pStr)
-{
- while (*pStr && *pStr == L' ') pStr++;
+CFX_WideString CJS_PublicMethods::StrLTrim(const FX_WCHAR* pStr) {
+ while (*pStr && *pStr == L' ')
+ pStr++;
- return pStr;
+ return pStr;
}
-CFX_WideString CJS_PublicMethods::StrRTrim(const FX_WCHAR* pStr)
-{
- const FX_WCHAR* p = pStr;
- while (*p) p++;
- while (p > pStr && *(p - 1) == L' ') p--;
+CFX_WideString CJS_PublicMethods::StrRTrim(const FX_WCHAR* pStr) {
+ const FX_WCHAR* p = pStr;
+ while (*p)
+ p++;
+ while (p > pStr && *(p - 1) == L' ')
+ p--;
- return CFX_WideString(pStr, p - pStr);
+ return CFX_WideString(pStr, p - pStr);
}
-CFX_WideString CJS_PublicMethods::StrTrim(const FX_WCHAR* pStr)
-{
- return StrRTrim(StrLTrim(pStr).c_str());
+CFX_WideString CJS_PublicMethods::StrTrim(const FX_WCHAR* pStr) {
+ return StrRTrim(StrLTrim(pStr).c_str());
}
-CFX_ByteString CJS_PublicMethods::StrLTrim(const FX_CHAR* pStr)
-{
- while (*pStr && *pStr == ' ') pStr++;
+CFX_ByteString CJS_PublicMethods::StrLTrim(const FX_CHAR* pStr) {
+ while (*pStr && *pStr == ' ')
+ pStr++;
- return pStr;
+ return pStr;
}
-CFX_ByteString CJS_PublicMethods::StrRTrim(const FX_CHAR* pStr)
-{
- const FX_CHAR* p = pStr;
- while (*p) p++;
- while (p > pStr && *(p - 1) == L' ') p--;
+CFX_ByteString CJS_PublicMethods::StrRTrim(const FX_CHAR* pStr) {
+ const FX_CHAR* p = pStr;
+ while (*p)
+ p++;
+ while (p > pStr && *(p - 1) == L' ')
+ p--;
- return CFX_ByteString(pStr,p-pStr);
+ return CFX_ByteString(pStr, p - pStr);
}
-CFX_ByteString CJS_PublicMethods::StrTrim(const FX_CHAR* pStr)
-{
- return StrRTrim(StrLTrim(pStr));
+CFX_ByteString CJS_PublicMethods::StrTrim(const FX_CHAR* pStr) {
+ return StrRTrim(StrLTrim(pStr));
}
-double CJS_PublicMethods::ParseNumber(const FX_WCHAR* swSource, FX_BOOL& bAllDigits, FX_BOOL& bDot, FX_BOOL& bSign, FX_BOOL& bKXJS)
-{
- bDot = FALSE;
- bSign = FALSE;
- bKXJS = FALSE;
+double CJS_PublicMethods::ParseNumber(const FX_WCHAR* swSource,
+ FX_BOOL& bAllDigits,
+ FX_BOOL& bDot,
+ FX_BOOL& bSign,
+ FX_BOOL& bKXJS) {
+ bDot = FALSE;
+ bSign = FALSE;
+ bKXJS = FALSE;
- FX_BOOL bDigitExist = FALSE;
+ FX_BOOL bDigitExist = FALSE;
- const FX_WCHAR* p = swSource;
- wchar_t c;
+ const FX_WCHAR* p = swSource;
+ wchar_t c;
- const FX_WCHAR* pStart = NULL;
- const FX_WCHAR* pEnd = NULL;
-
- while ((c = *p))
- {
- if (!pStart && c != L' ')
- {
- pStart = p;
- }
+ const FX_WCHAR* pStart = NULL;
+ const FX_WCHAR* pEnd = NULL;
- pEnd = p;
- p++;
+ while ((c = *p)) {
+ if (!pStart && c != L' ') {
+ pStart = p;
}
- if (!pStart)
- {
- bAllDigits = FALSE;
- return 0;
- }
+ pEnd = p;
+ p++;
+ }
- while (pEnd != pStart)
- {
- if (*pEnd == L' ')
- pEnd --;
- else
- break;
- }
+ if (!pStart) {
+ bAllDigits = FALSE;
+ return 0;
+ }
- double dRet = 0;
- p = pStart;
- bAllDigits = TRUE;
- CFX_WideString swDigits;
-
- while (p <= pEnd)
- {
- c = *p;
-
- if (IsDigit(c))
- {
- swDigits += c;
- bDigitExist = TRUE;
- }
- else
- {
- switch (c)
- {
- case L' ':
- bAllDigits = FALSE;
- break;
- case L'.':
- case L',':
- if (!bDot)
- {
- if (bDigitExist)
- {
- swDigits += L'.';
- }
- else
- {
- swDigits += L'0';
- swDigits += L'.';
- bDigitExist = TRUE;
- }
-
- bDot = TRUE;
- break;
- }
- case 'e':
- case 'E':
- if (!bKXJS)
- {
- p++;
- c = *p;
- if (c == '+' || c == '-')
- {
- bKXJS = TRUE;
- swDigits += 'e';
- swDigits += c;
- }
- break;
- }
- case L'-':
- if (!bDigitExist && !bSign)
- {
- swDigits += c;
- bSign = TRUE;
- break;
- }
- default:
- bAllDigits = FALSE;
-
- if (p != pStart && !bDot && bDigitExist)
- {
- swDigits += L'.';
- bDot = TRUE;
- }
- else
- {
- bDot = FALSE;
- bDigitExist = FALSE;
- swDigits = L"";
- }
- break;
+ while (pEnd != pStart) {
+ if (*pEnd == L' ')
+ pEnd--;
+ else
+ break;
+ }
+
+ double dRet = 0;
+ p = pStart;
+ bAllDigits = TRUE;
+ CFX_WideString swDigits;
+
+ while (p <= pEnd) {
+ c = *p;
+
+ if (IsDigit(c)) {
+ swDigits += c;
+ bDigitExist = TRUE;
+ } else {
+ switch (c) {
+ case L' ':
+ bAllDigits = FALSE;
+ break;
+ case L'.':
+ case L',':
+ if (!bDot) {
+ if (bDigitExist) {
+ swDigits += L'.';
+ } else {
+ swDigits += L'0';
+ swDigits += L'.';
+ bDigitExist = TRUE;
}
- }
- p++;
- }
-
- if (swDigits.GetLength() > 0 && swDigits.GetLength() < 17)
- {
- CFX_ByteString sDigits = swDigits.UTF8Encode();
-
- if (bKXJS)
- {
- dRet = atof(sDigits);
- }
- else
- {
- if (bDot)
- {
- char* pStopString;
- dRet = ::strtod(sDigits, &pStopString);
- }
- else
- {
- dRet = atol(sDigits);
+ bDot = TRUE;
+ break;
+ }
+ case 'e':
+ case 'E':
+ if (!bKXJS) {
+ p++;
+ c = *p;
+ if (c == '+' || c == '-') {
+ bKXJS = TRUE;
+ swDigits += 'e';
+ swDigits += c;
}
- }
-
- }
+ break;
+ }
+ case L'-':
+ if (!bDigitExist && !bSign) {
+ swDigits += c;
+ bSign = TRUE;
+ break;
+ }
+ default:
+ bAllDigits = FALSE;
- return dRet;
+ if (p != pStart && !bDot && bDigitExist) {
+ swDigits += L'.';
+ bDot = TRUE;
+ } else {
+ bDot = FALSE;
+ bDigitExist = FALSE;
+ swDigits = L"";
+ }
+ break;
+ }
+ }
+
+ p++;
+ }
+
+ if (swDigits.GetLength() > 0 && swDigits.GetLength() < 17) {
+ CFX_ByteString sDigits = swDigits.UTF8Encode();
+
+ if (bKXJS) {
+ dRet = atof(sDigits);
+ } else {
+ if (bDot) {
+ char* pStopString;
+ dRet = ::strtod(sDigits, &pStopString);
+ } else {
+ dRet = atol(sDigits);
+ }
+ }
+ }
+
+ return dRet;
}
-double CJS_PublicMethods::ParseStringToNumber(const FX_WCHAR* swSource)
-{
- FX_BOOL bAllDigits = FALSE;
- FX_BOOL bDot = FALSE;
- FX_BOOL bSign = FALSE;
- FX_BOOL bKXJS = FALSE;
+double CJS_PublicMethods::ParseStringToNumber(const FX_WCHAR* swSource) {
+ FX_BOOL bAllDigits = FALSE;
+ FX_BOOL bDot = FALSE;
+ FX_BOOL bSign = FALSE;
+ FX_BOOL bKXJS = FALSE;
- return ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS);
+ return ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS);
}
-FX_BOOL CJS_PublicMethods::ConvertStringToNumber(const FX_WCHAR* swSource, double & dRet, FX_BOOL & bDot)
-{
- FX_BOOL bAllDigits = FALSE;
- FX_BOOL bSign = FALSE;
- FX_BOOL bKXJS = FALSE;
+FX_BOOL CJS_PublicMethods::ConvertStringToNumber(const FX_WCHAR* swSource,
+ double& dRet,
+ FX_BOOL& bDot) {
+ FX_BOOL bAllDigits = FALSE;
+ FX_BOOL bSign = FALSE;
+ FX_BOOL bKXJS = FALSE;
- dRet = ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS);
+ dRet = ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS);
- return bAllDigits;
+ return bAllDigits;
}
-CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate, CJS_Value val)
-{
- CJS_Array StrArray(isolate);
- if(val.IsArrayObject())
- {
- val.ConvertToArray(StrArray);
- return StrArray;
- }
- CFX_WideString wsStr = val.ToCFXWideString();
- CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr);
- const char * p = (const char *)t;
-
-
- int ch = ',' ;
- int nIndex = 0;
-
- while (*p)
- {
- const char * pTemp = strchr(p, ch);
- if (pTemp == NULL)
- {
- StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(p).c_str()));
- break;
- }
- else
- {
- char * pSub = new char[pTemp - p + 1];
- strncpy(pSub, p, pTemp - p);
- *(pSub + (pTemp - p)) = '\0';
-
- StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(pSub).c_str()));
- delete []pSub;
-
- nIndex ++;
- p = ++pTemp;
- }
-
- }
+CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate,
+ CJS_Value val) {
+ CJS_Array StrArray(isolate);
+ if (val.IsArrayObject()) {
+ val.ConvertToArray(StrArray);
return StrArray;
+ }
+ CFX_WideString wsStr = val.ToCFXWideString();
+ CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr);
+ const char* p = (const char*)t;
+
+ int ch = ',';
+ int nIndex = 0;
+
+ while (*p) {
+ const char* pTemp = strchr(p, ch);
+ if (pTemp == NULL) {
+ StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(p).c_str()));
+ break;
+ } else {
+ char* pSub = new char[pTemp - p + 1];
+ strncpy(pSub, p, pTemp - p);
+ *(pSub + (pTemp - p)) = '\0';
+
+ StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(pSub).c_str()));
+ delete[] pSub;
+
+ nIndex++;
+ p = ++pTemp;
+ }
+ }
+ return StrArray;
}
-int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string,int nStart,int& nSkip, int nMaxStep)
-{
- int nRet = 0;
- nSkip = 0;
- for (int i=nStart, sz=string.GetLength(); i < sz; i++)
- {
- if (i-nStart > 10)
- break;
-
- FX_WCHAR c = string.GetAt(i);
- if (IsDigit((wchar_t)c))
- {
- nRet = nRet * 10 + (c - '0');
- nSkip = i - nStart + 1;
- if (nSkip >= nMaxStep)
- break;
- }
- else
- break;
- }
+int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string,
+ int nStart,
+ int& nSkip,
+ int nMaxStep) {
+ int nRet = 0;
+ nSkip = 0;
+ for (int i = nStart, sz = string.GetLength(); i < sz; i++) {
+ if (i - nStart > 10)
+ break;
+
+ FX_WCHAR c = string.GetAt(i);
+ if (IsDigit((wchar_t)c)) {
+ nRet = nRet * 10 + (c - '0');
+ nSkip = i - nStart + 1;
+ if (nSkip >= nMaxStep)
+ break;
+ } else
+ break;
+ }
- return nRet;
+ return nRet;
}
-CFX_WideString CJS_PublicMethods::ParseStringString(const CFX_WideString& string, int nStart, int& nSkip)
-{
- CFX_WideString swRet;
- nSkip = 0;
- for (int i=nStart, sz=string.GetLength(); i < sz; i++)
- {
- FX_WCHAR c = string.GetAt(i);
- if ((c >= L'a' && c <= L'z') || (c >= L'A' && c <= L'Z'))
- {
- swRet += c;
- nSkip = i - nStart + 1;
- }
- else
- break;
- }
-
- return swRet;
+CFX_WideString CJS_PublicMethods::ParseStringString(
+ const CFX_WideString& string,
+ int nStart,
+ int& nSkip) {
+ CFX_WideString swRet;
+ nSkip = 0;
+ for (int i = nStart, sz = string.GetLength(); i < sz; i++) {
+ FX_WCHAR c = string.GetAt(i);
+ if ((c >= L'a' && c <= L'z') || (c >= L'A' && c <= L'Z')) {
+ swRet += c;
+ nSkip = i - nStart + 1;
+ } else
+ break;
+ }
+
+ return swRet;
}
-double CJS_PublicMethods::ParseNormalDate(const CFX_WideString & value, FX_BOOL& bWrongFormat)
-{
- double dt = JS_GetDateTime();
-
- int nYear = JS_GetYearFromTime(dt);
- int nMonth = JS_GetMonthFromTime(dt) + 1;
- int nDay = JS_GetDayFromTime(dt);
- int nHour = JS_GetHourFromTime(dt);
- int nMin = JS_GetMinFromTime(dt);
- int nSec = JS_GetSecFromTime(dt);
-
- int number[3];
-
- int nSkip = 0;
- int nLen = value.GetLength();
- int nIndex = 0;
- int i = 0;
- while (i < nLen)
- {
- if (nIndex > 2) break;
-
- FX_WCHAR c = value.GetAt(i);
- if (IsDigit((wchar_t)c))
- {
- number[nIndex++] = ParseStringInteger(value, i, nSkip, 4);
- i += nSkip;
- }
- else
- {
- i ++;
- }
- }
-
- if (nIndex == 2)
- {
- // case2: month/day
- // case3: day/month
- if ((number[0] >= 1 && number[0] <= 12) && (number[1] >= 1 && number[1] <= 31))
- {
- nMonth = number[0];
- nDay = number[1];
- }
- else if ((number[0] >= 1 && number[0] <= 31) && (number[1] >= 1 && number[1] <= 12))
- {
- nDay = number[0];
- nMonth = number[1];
- }
-
- bWrongFormat = FALSE;
+double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
+ FX_BOOL& bWrongFormat) {
+ double dt = JS_GetDateTime();
+
+ int nYear = JS_GetYearFromTime(dt);
+ int nMonth = JS_GetMonthFromTime(dt) + 1;
+ int nDay = JS_GetDayFromTime(dt);
+ int nHour = JS_GetHourFromTime(dt);
+ int nMin = JS_GetMinFromTime(dt);
+ int nSec = JS_GetSecFromTime(dt);
+
+ int number[3];
+
+ int nSkip = 0;
+ int nLen = value.GetLength();
+ int nIndex = 0;
+ int i = 0;
+ while (i < nLen) {
+ if (nIndex > 2)
+ break;
+
+ FX_WCHAR c = value.GetAt(i);
+ if (IsDigit((wchar_t)c)) {
+ number[nIndex++] = ParseStringInteger(value, i, nSkip, 4);
+ i += nSkip;
+ } else {
+ i++;
+ }
+ }
+
+ if (nIndex == 2) {
+ // case2: month/day
+ // case3: day/month
+ if ((number[0] >= 1 && number[0] <= 12) &&
+ (number[1] >= 1 && number[1] <= 31)) {
+ nMonth = number[0];
+ nDay = number[1];
+ } else if ((number[0] >= 1 && number[0] <= 31) &&
+ (number[1] >= 1 && number[1] <= 12)) {
+ nDay = number[0];
+ nMonth = number[1];
}
- else if (nIndex == 3)
- {
- // case1: year/month/day
- // case2: month/day/year
- // case3: day/month/year
-
- if (number[0] > 12 && (number[1] >= 1 && number[1] <= 12) && (number[2] >= 1 && number[2] <= 31))
- {
- nYear = number[0];
- nMonth = number[1];
- nDay = number[2];
- }
- else if ((number[0] >= 1 && number[0] <= 12) && (number[1] >= 1 && number[1] <= 31) && number[2] > 31)
- {
- nMonth = number[0];
- nDay = number[1];
- nYear = number[2];
- }
- else if ((number[0] >= 1 && number[0] <= 31) && (number[1] >= 1 && number[1] <= 12) && number[2] > 31)
- {
- nDay = number[0];
- nMonth = number[1];
- nYear = number[2];
- }
- bWrongFormat = FALSE;
- }
- else
- {
- bWrongFormat = TRUE;
- return dt;
+ bWrongFormat = FALSE;
+ } else if (nIndex == 3) {
+ // case1: year/month/day
+ // case2: month/day/year
+ // case3: day/month/year
+
+ if (number[0] > 12 && (number[1] >= 1 && number[1] <= 12) &&
+ (number[2] >= 1 && number[2] <= 31)) {
+ nYear = number[0];
+ nMonth = number[1];
+ nDay = number[2];
+ } else if ((number[0] >= 1 && number[0] <= 12) &&
+ (number[1] >= 1 && number[1] <= 31) && number[2] > 31) {
+ nMonth = number[0];
+ nDay = number[1];
+ nYear = number[2];
+ } else if ((number[0] >= 1 && number[0] <= 31) &&
+ (number[1] >= 1 && number[1] <= 12) && number[2] > 31) {
+ nDay = number[0];
+ nMonth = number[1];
+ nYear = number[2];
}
- CFX_WideString swTemp;
- swTemp.Format(L"%d/%d/%d %d:%d:%d",nMonth,nDay,nYear,nHour,nMin,nSec);
- return JS_DateParse(swTemp.c_str());
-}
-
-double CJS_PublicMethods::MakeRegularDate(const CFX_WideString & value, const CFX_WideString & format, FX_BOOL& bWrongFormat)
-{
- double dt = JS_GetDateTime();
-
- if (format.IsEmpty() || value.IsEmpty())
- return dt;
-
- int nYear = JS_GetYearFromTime(dt);
- int nMonth = JS_GetMonthFromTime(dt) + 1;
- int nDay = JS_GetDayFromTime(dt);
- int nHour = JS_GetHourFromTime(dt);
- int nMin = JS_GetMinFromTime(dt);
- int nSec = JS_GetSecFromTime(dt);
-
- int nYearSub = 99; //nYear - 2000;
-
- FX_BOOL bPm = FALSE;
- FX_BOOL bExit = FALSE;
bWrongFormat = FALSE;
+ } else {
+ bWrongFormat = TRUE;
+ return dt;
+ }
+
+ CFX_WideString swTemp;
+ swTemp.Format(L"%d/%d/%d %d:%d:%d", nMonth, nDay, nYear, nHour, nMin, nSec);
+ return JS_DateParse(swTemp.c_str());
+}
- int i=0;
- int j=0;
-
- while (i < format.GetLength())
- {
- if (bExit) break;
-
- FX_WCHAR c = format.GetAt(i);
- switch (c)
- {
- case ':':
- case '.':
- case '-':
- case '\\':
- case '/':
- i++;
- j++;
- break;
+double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
+ const CFX_WideString& format,
+ FX_BOOL& bWrongFormat) {
+ double dt = JS_GetDateTime();
+
+ if (format.IsEmpty() || value.IsEmpty())
+ return dt;
+
+ int nYear = JS_GetYearFromTime(dt);
+ int nMonth = JS_GetMonthFromTime(dt) + 1;
+ int nDay = JS_GetDayFromTime(dt);
+ int nHour = JS_GetHourFromTime(dt);
+ int nMin = JS_GetMinFromTime(dt);
+ int nSec = JS_GetSecFromTime(dt);
+
+ int nYearSub = 99; // nYear - 2000;
+
+ FX_BOOL bPm = FALSE;
+ FX_BOOL bExit = FALSE;
+ bWrongFormat = FALSE;
+
+ int i = 0;
+ int j = 0;
+
+ while (i < format.GetLength()) {
+ if (bExit)
+ break;
+
+ FX_WCHAR c = format.GetAt(i);
+ switch (c) {
+ case ':':
+ case '.':
+ case '-':
+ case '\\':
+ case '/':
+ i++;
+ j++;
+ break;
+ case 'y':
+ case 'm':
+ case 'd':
+ case 'H':
+ case 'h':
+ case 'M':
+ case 's':
+ case 't': {
+ int oldj = j;
+ int nSkip = 0;
+ int remaining = format.GetLength() - i - 1;
+
+ if (remaining == 0 || format.GetAt(i + 1) != c) {
+ switch (c) {
case 'y':
+ i++;
+ j++;
+ break;
case 'm':
+ nMonth = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 'd':
+ nDay = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 'H':
+ nHour = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 'h':
+ nHour = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 'M':
+ nMin = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 's':
+ nSec = ParseStringInteger(value, j, nSkip, 2);
+ i++;
+ j += nSkip;
+ break;
case 't':
- {
- int oldj = j;
- int nSkip = 0;
- int remaining = format.GetLength() - i - 1;
-
- if (remaining == 0 || format.GetAt(i+1) != c)
- {
- switch (c)
- {
- case 'y':
- i++;
- j++;
- break;
- case 'm':
- nMonth = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 'd':
- nDay = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 'H':
- nHour = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 'h':
- nHour = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 'M':
- nMin = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 's':
- nSec = ParseStringInteger(value, j, nSkip, 2);
- i++;
- j += nSkip;
- break;
- case 't':
- bPm = (j < value.GetLength() && value.GetAt(j) == 'p');
- i++;
- j++;
- break;
- }
- }
- else if (remaining == 1 || format.GetAt(i+2) != c)
- {
- switch (c)
- {
- case 'y':
- nYear = ParseStringInteger(value, j, nSkip, 4);
- i += 2;
- j += nSkip;
- break;
- case 'm':
- nMonth = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 'd':
- nDay = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 'H':
- nHour = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 'h':
- nHour = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 'M':
- nMin = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 's':
- nSec = ParseStringInteger(value, j, nSkip, 2);
- i += 2;
- j += nSkip;
- break;
- case 't':
- bPm = (j + 1 < value.GetLength() && value.GetAt(j) == 'p' && value.GetAt(j+1) == 'm');
- i += 2;
- j += 2;
- break;
- }
- }
- else if (remaining == 2 || format.GetAt(i+3) != c)
- {
- switch (c)
- {
- case 'm':
- {
- CFX_WideString sMonth = ParseStringString(value, j, nSkip);
- FX_BOOL bFind = FALSE;
- for (int m = 0; m < 12; m++)
- {
- if (sMonth.CompareNoCase(months[m]) == 0)
- {
- nMonth = m + 1;
- i+=3;
- j+=nSkip;
- bFind = TRUE;
- break;
- }
- }
-
- if (!bFind)
- {
- nMonth = ParseStringInteger(value, j, nSkip, 3);
- i+=3;
- j += nSkip;
- }
- }
- break;
- case 'y':
- break;
- default:
- i+=3;
- j+=3;
- break;
- }
- }
- else if (remaining == 3 || format.GetAt(i+4) != c)
- {
- switch (c)
- {
-
-
- case 'y':
- nYear = ParseStringInteger(value, j, nSkip, 4);
- j += nSkip;
- i += 4;
- break;
- case 'm':
- {
- FX_BOOL bFind = FALSE;
-
- CFX_WideString sMonth = ParseStringString(value, j, nSkip);
- sMonth.MakeLower();
-
- for (int m = 0; m < 12; m++)
- {
- CFX_WideString sFullMonths = fullmonths[m];
- sFullMonths.MakeLower();
-
- if (sFullMonths.Find(sMonth.c_str(), 0) != -1)
- {
- nMonth = m + 1;
- i += 4;
- j += nSkip;
- bFind = TRUE;
- break;
- }
- }
-
- if (!bFind)
- {
- nMonth = ParseStringInteger(value, j, nSkip, 4);
- i+=4;
- j += nSkip;
- }
- }
- break;
- default:
- i += 4;
- j += 4;
- break;
- }
- }
- else
- {
- if (j >= value.GetLength() || format.GetAt(i) != value.GetAt(j))
- {
- bWrongFormat = TRUE;
- bExit = TRUE;
- }
- i++;
- j++;
- }
-
- if (oldj == j)
- {
- bWrongFormat = TRUE;
- bExit = TRUE;
- }
+ bPm = (j < value.GetLength() && value.GetAt(j) == 'p');
+ i++;
+ j++;
+ break;
+ }
+ } else if (remaining == 1 || format.GetAt(i + 2) != c) {
+ switch (c) {
+ case 'y':
+ nYear = ParseStringInteger(value, j, nSkip, 4);
+ i += 2;
+ j += nSkip;
+ break;
+ case 'm':
+ nMonth = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 'd':
+ nDay = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 'H':
+ nHour = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 'h':
+ nHour = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 'M':
+ nMin = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 's':
+ nSec = ParseStringInteger(value, j, nSkip, 2);
+ i += 2;
+ j += nSkip;
+ break;
+ case 't':
+ bPm = (j + 1 < value.GetLength() && value.GetAt(j) == 'p' &&
+ value.GetAt(j + 1) == 'm');
+ i += 2;
+ j += 2;
+ break;
+ }
+ } else if (remaining == 2 || format.GetAt(i + 3) != c) {
+ switch (c) {
+ case 'm': {
+ CFX_WideString sMonth = ParseStringString(value, j, nSkip);
+ FX_BOOL bFind = FALSE;
+ for (int m = 0; m < 12; m++) {
+ if (sMonth.CompareNoCase(months[m]) == 0) {
+ nMonth = m + 1;
+ i += 3;
+ j += nSkip;
+ bFind = TRUE;
+ break;
}
-
- break;
+ }
+
+ if (!bFind) {
+ nMonth = ParseStringInteger(value, j, nSkip, 3);
+ i += 3;
+ j += nSkip;
+ }
+ } break;
+ case 'y':
+ break;
default:
- if (value.GetLength() <= j)
- {
- bExit = TRUE;
- }
- else if (format.GetAt(i) != value.GetAt(j))
- {
- bWrongFormat = TRUE;
- bExit = TRUE;
+ i += 3;
+ j += 3;
+ break;
+ }
+ } else if (remaining == 3 || format.GetAt(i + 4) != c) {
+ switch (c) {
+ case 'y':
+ nYear = ParseStringInteger(value, j, nSkip, 4);
+ j += nSkip;
+ i += 4;
+ break;
+ case 'm': {
+ FX_BOOL bFind = FALSE;
+
+ CFX_WideString sMonth = ParseStringString(value, j, nSkip);
+ sMonth.MakeLower();
+
+ for (int m = 0; m < 12; m++) {
+ CFX_WideString sFullMonths = fullmonths[m];
+ sFullMonths.MakeLower();
+
+ if (sFullMonths.Find(sMonth.c_str(), 0) != -1) {
+ nMonth = m + 1;
+ i += 4;
+ j += nSkip;
+ bFind = TRUE;
+ break;
}
+ }
+
+ if (!bFind) {
+ nMonth = ParseStringInteger(value, j, nSkip, 4);
+ i += 4;
+ j += nSkip;
+ }
+ } break;
+ default:
+ i += 4;
+ j += 4;
+ break;
+ }
+ } else {
+ if (j >= value.GetLength() || format.GetAt(i) != value.GetAt(j)) {
+ bWrongFormat = TRUE;
+ bExit = TRUE;
+ }
+ i++;
+ j++;
+ }
- i++;
- j++;
- break;
+ if (oldj == j) {
+ bWrongFormat = TRUE;
+ bExit = TRUE;
+ }
+ }
+
+ break;
+ default:
+ if (value.GetLength() <= j) {
+ bExit = TRUE;
+ } else if (format.GetAt(i) != value.GetAt(j)) {
+ bWrongFormat = TRUE;
+ bExit = TRUE;
}
- }
- if (bPm) nHour += 12;
+ i++;
+ j++;
+ break;
+ }
+ }
- if (nYear >= 0 && nYear <= nYearSub)
- nYear += 2000;
+ if (bPm)
+ nHour += 12;
- if (nMonth < 1 || nMonth > 12)
- bWrongFormat = TRUE;
+ if (nYear >= 0 && nYear <= nYearSub)
+ nYear += 2000;
- if (nDay < 1 || nDay > 31)
- bWrongFormat = TRUE;
+ if (nMonth < 1 || nMonth > 12)
+ bWrongFormat = TRUE;
- if (nHour < 0 || nHour > 24)
- bWrongFormat = TRUE;
+ if (nDay < 1 || nDay > 31)
+ bWrongFormat = TRUE;
- if (nMin < 0 || nMin > 60)
- bWrongFormat = TRUE;
+ if (nHour < 0 || nHour > 24)
+ bWrongFormat = TRUE;
- if (nSec < 0 || nSec > 60)
- bWrongFormat = TRUE;
+ if (nMin < 0 || nMin > 60)
+ bWrongFormat = TRUE;
- double dRet = 0;
+ if (nSec < 0 || nSec > 60)
+ bWrongFormat = TRUE;
- if (bWrongFormat)
- {
- dRet = ParseNormalDate(value, bWrongFormat);
- }
- else
- {
- dRet = JS_MakeDate(JS_MakeDay(nYear,nMonth - 1,nDay),JS_MakeTime(nHour, nMin, nSec, 0));
+ double dRet = 0;
- if (JS_PortIsNan(dRet))
- {
- dRet = JS_DateParse(value.c_str());
- }
- }
+ if (bWrongFormat) {
+ dRet = ParseNormalDate(value, bWrongFormat);
+ } else {
+ dRet = JS_MakeDate(JS_MakeDay(nYear, nMonth - 1, nDay),
+ JS_MakeTime(nHour, nMin, nSec, 0));
- if (JS_PortIsNan(dRet))
- {
- dRet = ParseNormalDate(value, bWrongFormat);
+ if (JS_PortIsNan(dRet)) {
+ dRet = JS_DateParse(value.c_str());
}
+ }
- return dRet;
+ if (JS_PortIsNan(dRet)) {
+ dRet = ParseNormalDate(value, bWrongFormat);
+ }
+ return dRet;
}
-CFX_WideString CJS_PublicMethods::MakeFormatDate(double dDate, const CFX_WideString & format)
-{
- CFX_WideString sRet = L"",sPart = L"";
-
- int nYear = JS_GetYearFromTime(dDate);
- int nMonth = JS_GetMonthFromTime(dDate) + 1;
- int nDay = JS_GetDayFromTime(dDate);
- int nHour = JS_GetHourFromTime(dDate);
- int nMin = JS_GetMinFromTime(dDate);
- int nSec = JS_GetSecFromTime(dDate);
-
- int i = 0;
- while (i < format.GetLength())
- {
- FX_WCHAR c = format.GetAt(i);
- int remaining = format.GetLength() - i - 1;
- sPart = L"";
- switch (c)
- {
+CFX_WideString CJS_PublicMethods::MakeFormatDate(double dDate,
+ const CFX_WideString& format) {
+ CFX_WideString sRet = L"", sPart = L"";
+
+ int nYear = JS_GetYearFromTime(dDate);
+ int nMonth = JS_GetMonthFromTime(dDate) + 1;
+ int nDay = JS_GetDayFromTime(dDate);
+ int nHour = JS_GetHourFromTime(dDate);
+ int nMin = JS_GetMinFromTime(dDate);
+ int nSec = JS_GetSecFromTime(dDate);
+
+ int i = 0;
+ while (i < format.GetLength()) {
+ FX_WCHAR c = format.GetAt(i);
+ int remaining = format.GetLength() - i - 1;
+ sPart = L"";
+ switch (c) {
+ case 'y':
+ case 'm':
+ case 'd':
+ case 'H':
+ case 'h':
+ case 'M':
+ case 's':
+ case 't':
+ if (remaining == 0 || format.GetAt(i + 1) != c) {
+ switch (c) {
case 'y':
+ sPart += c;
+ break;
case 'm':
+ sPart.Format(L"%d", nMonth);
+ break;
case 'd':
+ sPart.Format(L"%d", nDay);
+ break;
case 'H':
+ sPart.Format(L"%d", nHour);
+ break;
case 'h':
+ sPart.Format(L"%d", nHour > 12 ? nHour - 12 : nHour);
+ break;
case 'M':
+ sPart.Format(L"%d", nMin);
+ break;
case 's':
+ sPart.Format(L"%d", nSec);
+ break;
case 't':
- if (remaining == 0 || format.GetAt(i+1) != c)
- {
- switch (c)
- {
- case 'y':
- sPart += c;
- break;
- case 'm':
- sPart.Format(L"%d",nMonth);
- break;
- case 'd':
- sPart.Format(L"%d",nDay);
- break;
- case 'H':
- sPart.Format(L"%d",nHour);
- break;
- case 'h':
- sPart.Format(L"%d",nHour>12?nHour - 12:nHour);
- break;
- case 'M':
- sPart.Format(L"%d",nMin);
- break;
- case 's':
- sPart.Format(L"%d",nSec);
- break;
- case 't':
- sPart += nHour>12?'p':'a';
- break;
- }
- i++;
- }
- else if (remaining == 1 || format.GetAt(i+2) != c)
- {
- switch (c)
- {
- case 'y':
- sPart.Format(L"%02d",nYear - (nYear / 100) * 100);
- break;
- case 'm':
- sPart.Format(L"%02d",nMonth);
- break;
- case 'd':
- sPart.Format(L"%02d",nDay);
- break;
- case 'H':
- sPart.Format(L"%02d",nHour);
- break;
- case 'h':
- sPart.Format(L"%02d",nHour>12?nHour - 12:nHour);
- break;
- case 'M':
- sPart.Format(L"%02d",nMin);
- break;
- case 's':
- sPart.Format(L"%02d",nSec);
- break;
- case 't':
- sPart = nHour>12? L"pm": L"am";
- break;
- }
- i+=2;
- }
- else if (remaining == 2 || format.GetAt(i+3) != c)
- {
- switch (c)
- {
- case 'm':
- i+=3;
- if (nMonth > 0&&nMonth <= 12)
- sPart += months[nMonth - 1];
- break;
- default:
- i+=3;
- sPart += c;
- sPart += c;
- sPart += c;
- break;
- }
- }
- else if (remaining == 3 || format.GetAt(i+4) != c)
- {
- switch (c)
- {
- case 'y':
- sPart.Format(L"%04d",nYear);
- i += 4;
- break;
- case 'm':
- i+=4;
- if (nMonth > 0&&nMonth <= 12)
- sPart += fullmonths[nMonth - 1];
- break;
- default:
- i += 4;
- sPart += c;
- sPart += c;
- sPart += c;
- sPart += c;
- break;
- }
- }
- else
- {
- i++;
- sPart += c;
- }
- break;
+ sPart += nHour > 12 ? 'p' : 'a';
+ break;
+ }
+ i++;
+ } else if (remaining == 1 || format.GetAt(i + 2) != c) {
+ switch (c) {
+ case 'y':
+ sPart.Format(L"%02d", nYear - (nYear / 100) * 100);
+ break;
+ case 'm':
+ sPart.Format(L"%02d", nMonth);
+ break;
+ case 'd':
+ sPart.Format(L"%02d", nDay);
+ break;
+ case 'H':
+ sPart.Format(L"%02d", nHour);
+ break;
+ case 'h':
+ sPart.Format(L"%02d", nHour > 12 ? nHour - 12 : nHour);
+ break;
+ case 'M':
+ sPart.Format(L"%02d", nMin);
+ break;
+ case 's':
+ sPart.Format(L"%02d", nSec);
+ break;
+ case 't':
+ sPart = nHour > 12 ? L"pm" : L"am";
+ break;
+ }
+ i += 2;
+ } else if (remaining == 2 || format.GetAt(i + 3) != c) {
+ switch (c) {
+ case 'm':
+ i += 3;
+ if (nMonth > 0 && nMonth <= 12)
+ sPart += months[nMonth - 1];
+ break;
default:
- i++;
- sPart += c;
- break;
+ i += 3;
+ sPart += c;
+ sPart += c;
+ sPart += c;
+ break;
+ }
+ } else if (remaining == 3 || format.GetAt(i + 4) != c) {
+ switch (c) {
+ case 'y':
+ sPart.Format(L"%04d", nYear);
+ i += 4;
+ break;
+ case 'm':
+ i += 4;
+ if (nMonth > 0 && nMonth <= 12)
+ sPart += fullmonths[nMonth - 1];
+ break;
+ default:
+ i += 4;
+ sPart += c;
+ sPart += c;
+ sPart += c;
+ sPart += c;
+ break;
+ }
+ } else {
+ i++;
+ sPart += c;
}
-
- sRet += sPart;
+ break;
+ default:
+ i++;
+ sPart += c;
+ break;
}
- return sRet;
+ sRet += sPart;
+ }
+
+ return sRet;
}
/* -------------------------------------------------------------------------- */
-//function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend)
-FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+// function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency,
+// bCurrencyPrepend)
+FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
#if _FX_OS_ != _FX_ANDROID_
- v8::Isolate* isolate = ::GetIsolate(cc);
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (params.size() != 6)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString& Value = pEvent->Value();
- CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
-
- if (strValue.IsEmpty()) return TRUE;
-
- int iDec = params[0].ToInt();
- int iSepStyle = params[1].ToInt();
- int iNegStyle = params[2].ToInt();
- // params[3] is iCurrStyle, it's not used.
- std::wstring wstrCurrency(params[4].ToCFXWideString().c_str());
- FX_BOOL bCurrencyPrepend = params[5].ToBool();
+ v8::Isolate* isolate = ::GetIsolate(cc);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 6) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString& Value = pEvent->Value();
+ CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
+
+ if (strValue.IsEmpty())
+ return TRUE;
- if (iDec < 0) iDec = -iDec;
+ int iDec = params[0].ToInt();
+ int iSepStyle = params[1].ToInt();
+ int iNegStyle = params[2].ToInt();
+ // params[3] is iCurrStyle, it's not used.
+ std::wstring wstrCurrency(params[4].ToCFXWideString().c_str());
+ FX_BOOL bCurrencyPrepend = params[5].ToBool();
- if (iSepStyle < 0 || iSepStyle > 3)
- iSepStyle = 0;
+ if (iDec < 0)
+ iDec = -iDec;
- if (iNegStyle < 0 || iNegStyle > 3)
- iNegStyle = 0;
+ if (iSepStyle < 0 || iSepStyle > 3)
+ iSepStyle = 0;
+ if (iNegStyle < 0 || iNegStyle > 3)
+ iNegStyle = 0;
- //////////////////////////////////////////////////////
- //for processing decimal places
- strValue.Replace(",", ".");
- double dValue = atof(strValue);
- if (iDec > 0)
- dValue += DOUBLE_CORRECT;
+ //////////////////////////////////////////////////////
+ // for processing decimal places
+ strValue.Replace(",", ".");
+ double dValue = atof(strValue);
+ if (iDec > 0)
+ dValue += DOUBLE_CORRECT;
- int iDec2;
- int iNegative = 0;
+ int iDec2;
+ int iNegative = 0;
+ strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
+ if (strValue.IsEmpty()) {
+ dValue = 0;
strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
- if (strValue.IsEmpty())
- {
- dValue = 0;
- strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
- if (strValue.IsEmpty())
- {
- strValue = "0";
- iDec2 = 1;
- }
-
- }
-
- if (iDec2 < 0)
- {
- for (int iNum = 0;iNum < abs(iDec2);iNum++)
- {
- strValue = "0" + strValue;
- }
- iDec2 = 0;
-
- }
- int iMax = strValue.GetLength();
- if (iDec2 > iMax)
- {
- for (int iNum = 0;iNum <= iDec2 - iMax ;iNum++)
- {
- strValue += "0";
- }
- iMax = iDec2+1;
- }
- ///////////////////////////////////////////////////////
- //for processing seperator style
- if (iDec2 < iMax)
- {
- if (iSepStyle == 0 || iSepStyle == 1)
- {
- strValue.Insert(iDec2, '.');
- iMax++;
- }
- else if (iSepStyle == 2 || iSepStyle == 3)
- {
- strValue.Insert(iDec2, ',');
- iMax++;
- }
-
- if (iDec2 == 0)
- strValue.Insert(iDec2, '0');
- }
- if (iSepStyle == 0 || iSepStyle == 2)
- {
- char cSeperator;
- if (iSepStyle == 0)
- cSeperator = ',';
- else
- cSeperator = '.';
-
- int iDecPositive;
- iDecPositive = iDec2;
-
- for (iDecPositive = iDec2 -3; iDecPositive > 0;iDecPositive -= 3)
- {
- strValue.Insert(iDecPositive, cSeperator);
- iMax++;
- }
- }
-
- //////////////////////////////////////////////////////////////////////
- //for processing currency string
-
- Value = CFX_WideString::FromLocal(strValue);
- std::wstring strValue2 = Value.c_str();
-
- if (bCurrencyPrepend)
- strValue2 = wstrCurrency + strValue2;
+ if (strValue.IsEmpty()) {
+ strValue = "0";
+ iDec2 = 1;
+ }
+ }
+
+ if (iDec2 < 0) {
+ for (int iNum = 0; iNum < abs(iDec2); iNum++) {
+ strValue = "0" + strValue;
+ }
+ iDec2 = 0;
+ }
+ int iMax = strValue.GetLength();
+ if (iDec2 > iMax) {
+ for (int iNum = 0; iNum <= iDec2 - iMax; iNum++) {
+ strValue += "0";
+ }
+ iMax = iDec2 + 1;
+ }
+ ///////////////////////////////////////////////////////
+ // for processing seperator style
+ if (iDec2 < iMax) {
+ if (iSepStyle == 0 || iSepStyle == 1) {
+ strValue.Insert(iDec2, '.');
+ iMax++;
+ } else if (iSepStyle == 2 || iSepStyle == 3) {
+ strValue.Insert(iDec2, ',');
+ iMax++;
+ }
+
+ if (iDec2 == 0)
+ strValue.Insert(iDec2, '0');
+ }
+ if (iSepStyle == 0 || iSepStyle == 2) {
+ char cSeperator;
+ if (iSepStyle == 0)
+ cSeperator = ',';
else
- strValue2 = strValue2 + wstrCurrency;
-
-
-
- /////////////////////////////////////////////////////////////////////////
- //for processing negative style
- if (iNegative)
- {
- if (iNegStyle == 0)
- {
- strValue2.insert(0,L"-");
- }
- if (iNegStyle == 2 || iNegStyle == 3)
- {
- strValue2.insert(0,L"(");
- strValue2.insert(strValue2.length(),L")");
- }
- if (iNegStyle == 1 || iNegStyle == 3)
- {
- if (Field * fTarget = pEvent->Target_Field())
- {
- CJS_Array arColor(isolate);
- CJS_Value vColElm(isolate);
- vColElm = L"RGB";
- arColor.SetElement(0,vColElm);
- vColElm = 1;
- arColor.SetElement(1,vColElm);
- vColElm = 0;
- arColor.SetElement(2,vColElm);
-
- arColor.SetElement(3,vColElm);
-
- CJS_PropValue vProp(isolate);
- vProp.StartGetting();
- vProp<<arColor;
- vProp.StartSetting();
- fTarget->textColor(cc,vProp,sError);// red
- }
+ cSeperator = '.';
+
+ int iDecPositive;
+ iDecPositive = iDec2;
+
+ for (iDecPositive = iDec2 - 3; iDecPositive > 0; iDecPositive -= 3) {
+ strValue.Insert(iDecPositive, cSeperator);
+ iMax++;
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // for processing currency string
+
+ Value = CFX_WideString::FromLocal(strValue);
+ std::wstring strValue2 = Value.c_str();
+
+ if (bCurrencyPrepend)
+ strValue2 = wstrCurrency + strValue2;
+ else
+ strValue2 = strValue2 + wstrCurrency;
+
+ /////////////////////////////////////////////////////////////////////////
+ // for processing negative style
+ if (iNegative) {
+ if (iNegStyle == 0) {
+ strValue2.insert(0, L"-");
+ }
+ if (iNegStyle == 2 || iNegStyle == 3) {
+ strValue2.insert(0, L"(");
+ strValue2.insert(strValue2.length(), L")");
+ }
+ if (iNegStyle == 1 || iNegStyle == 3) {
+ if (Field* fTarget = pEvent->Target_Field()) {
+ CJS_Array arColor(isolate);
+ CJS_Value vColElm(isolate);
+ vColElm = L"RGB";
+ arColor.SetElement(0, vColElm);
+ vColElm = 1;
+ arColor.SetElement(1, vColElm);
+ vColElm = 0;
+ arColor.SetElement(2, vColElm);
+
+ arColor.SetElement(3, vColElm);
+
+ CJS_PropValue vProp(isolate);
+ vProp.StartGetting();
+ vProp << arColor;
+ vProp.StartSetting();
+ fTarget->textColor(cc, vProp, sError); // red
+ }
+ }
+ } else {
+ if (iNegStyle == 1 || iNegStyle == 3) {
+ if (Field* fTarget = pEvent->Target_Field()) {
+ CJS_Array arColor(isolate);
+ CJS_Value vColElm(isolate);
+ vColElm = L"RGB";
+ arColor.SetElement(0, vColElm);
+ vColElm = 0;
+ arColor.SetElement(1, vColElm);
+ arColor.SetElement(2, vColElm);
+ arColor.SetElement(3, vColElm);
+
+ CJS_PropValue vProp(isolate);
+ vProp.StartGetting();
+ fTarget->textColor(cc, vProp, sError);
+
+ CJS_Array aProp(isolate);
+ vProp.ConvertToArray(aProp);
+
+ CPWL_Color crProp;
+ CPWL_Color crColor;
+ color::ConvertArrayToPWLColor(aProp, crProp);
+ color::ConvertArrayToPWLColor(arColor, crColor);
+
+ if (crColor != crProp) {
+ CJS_PropValue vProp2(isolate);
+ vProp2.StartGetting();
+ vProp2 << arColor;
+ vProp2.StartSetting();
+ fTarget->textColor(cc, vProp2, sError);
}
+ }
}
- else
- {
- if (iNegStyle == 1 || iNegStyle == 3)
- {
- if (Field *fTarget = pEvent->Target_Field())
- {
- CJS_Array arColor(isolate);
- CJS_Value vColElm(isolate);
- vColElm = L"RGB";
- arColor.SetElement(0,vColElm);
- vColElm = 0;
- arColor.SetElement(1,vColElm);
- arColor.SetElement(2,vColElm);
- arColor.SetElement(3,vColElm);
-
- CJS_PropValue vProp(isolate);
- vProp.StartGetting();
- fTarget->textColor(cc,vProp,sError);
-
- CJS_Array aProp(isolate);
- vProp.ConvertToArray(aProp);
-
- CPWL_Color crProp;
- CPWL_Color crColor;
- color::ConvertArrayToPWLColor(aProp, crProp);
- color::ConvertArrayToPWLColor(arColor, crColor);
-
- if (crColor != crProp)
- {
- CJS_PropValue vProp2(isolate);
- vProp2.StartGetting();
- vProp2<<arColor;
- vProp2.StartSetting();
- fTarget->textColor(cc,vProp2,sError);
- }
- }
- }
- }
- Value = strValue2.c_str();
+ }
+ Value = strValue2.c_str();
#endif
- return TRUE;
+ return TRUE;
}
-//function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend)
-FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if(params.size() < 2)
- return FALSE;
- int iSepStyle = params[1].ToInt();
-
- if (iSepStyle < 0 || iSepStyle > 3)
- iSepStyle = 0;
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString & val = pEvent->Value();
- CFX_WideString & w_strChange = pEvent->Change();
- CFX_WideString w_strValue = val;
-
- if (pEvent->WillCommit())
- {
- CFX_WideString wstrChange = w_strChange;
- CFX_WideString wstrValue = StrLTrim(w_strValue.c_str());
- if (wstrValue.IsEmpty())
- return TRUE;
-
- CFX_WideString swTemp = wstrValue;
- swTemp.Replace(L",", L".");
- if (!IsNumber(swTemp.c_str()))
- {
- pEvent->Rc() = FALSE;
- sError = JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE);
- Alert(pContext, sError.c_str());
- return TRUE;
- }
- return TRUE; // it happens after the last keystroke and before validating,
- }
-
- std::wstring w_strValue2 = w_strValue.c_str();
- std::wstring w_strChange2 = w_strChange.c_str();
- std::wstring w_strSelected;
- if(-1 != pEvent->SelStart())
- w_strSelected = w_strValue2.substr(pEvent->SelStart(),(pEvent->SelEnd() - pEvent->SelStart()));
- FX_BOOL bHasSign = (w_strValue2.find('-') != -1) && (w_strSelected.find('-') == -1);
- if (bHasSign)
- {
- //can't insert "change" in front to sign postion.
- if (pEvent->SelStart() == 0)
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- }
-
- char cSep = L'.';
-
- switch (iSepStyle)
- {
+// function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency,
+// bCurrencyPrepend)
+FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() < 2)
+ return FALSE;
+ int iSepStyle = params[1].ToInt();
+
+ if (iSepStyle < 0 || iSepStyle > 3)
+ iSepStyle = 0;
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString& val = pEvent->Value();
+ CFX_WideString& w_strChange = pEvent->Change();
+ CFX_WideString w_strValue = val;
+
+ if (pEvent->WillCommit()) {
+ CFX_WideString wstrChange = w_strChange;
+ CFX_WideString wstrValue = StrLTrim(w_strValue.c_str());
+ if (wstrValue.IsEmpty())
+ return TRUE;
+
+ CFX_WideString swTemp = wstrValue;
+ swTemp.Replace(L",", L".");
+ if (!IsNumber(swTemp.c_str())) {
+ pEvent->Rc() = FALSE;
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE);
+ Alert(pContext, sError.c_str());
+ return TRUE;
+ }
+ return TRUE; // it happens after the last keystroke and before validating,
+ }
+
+ std::wstring w_strValue2 = w_strValue.c_str();
+ std::wstring w_strChange2 = w_strChange.c_str();
+ std::wstring w_strSelected;
+ if (-1 != pEvent->SelStart())
+ w_strSelected = w_strValue2.substr(pEvent->SelStart(),
+ (pEvent->SelEnd() - pEvent->SelStart()));
+ FX_BOOL bHasSign =
+ (w_strValue2.find('-') != -1) && (w_strSelected.find('-') == -1);
+ if (bHasSign) {
+ // can't insert "change" in front to sign postion.
+ if (pEvent->SelStart() == 0) {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ }
+
+ char cSep = L'.';
+
+ switch (iSepStyle) {
case 0:
case 1:
- cSep = L'.';
- break;
+ cSep = L'.';
+ break;
case 2:
case 3:
- cSep = L',';
- break;
- }
-
- FX_BOOL bHasSep = (w_strValue2.find(cSep) != -1);
- for (std::wstring::iterator it = w_strChange2.begin(); it != w_strChange2.end(); it++)
- {
- if (*it == cSep)
- {
- if (bHasSep)
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- bHasSep = TRUE;
- continue;
- }
- if (*it == L'-')
- {
- if (bHasSign)
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- if (it != w_strChange2.begin()) //sign's position is not correct
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- if (pEvent->SelStart() != 0)
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- bHasSign = TRUE;
- continue;
- }
-
- if (!IsDigit(*it))
- {
- FX_BOOL &bRc = pEvent->Rc();
- bRc = FALSE;
- return TRUE;
- }
- }
-
-
- std::wstring w_prefix = w_strValue2.substr(0,pEvent->SelStart());
- std::wstring w_postfix;
- if (pEvent->SelEnd()<(int)w_strValue2.length())
- w_postfix = w_strValue2.substr(pEvent->SelEnd());
- w_strValue2 = w_prefix + w_strChange2 + w_postfix;
- w_strValue = w_strValue2.c_str();
- val = w_strValue;
- return TRUE;
-
+ cSep = L',';
+ break;
+ }
+
+ FX_BOOL bHasSep = (w_strValue2.find(cSep) != -1);
+ for (std::wstring::iterator it = w_strChange2.begin();
+ it != w_strChange2.end(); it++) {
+ if (*it == cSep) {
+ if (bHasSep) {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ bHasSep = TRUE;
+ continue;
+ }
+ if (*it == L'-') {
+ if (bHasSign) {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ if (it != w_strChange2.begin()) // sign's position is not correct
+ {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ if (pEvent->SelStart() != 0) {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ bHasSign = TRUE;
+ continue;
+ }
+
+ if (!IsDigit(*it)) {
+ FX_BOOL& bRc = pEvent->Rc();
+ bRc = FALSE;
+ return TRUE;
+ }
+ }
+
+ std::wstring w_prefix = w_strValue2.substr(0, pEvent->SelStart());
+ std::wstring w_postfix;
+ if (pEvent->SelEnd() < (int)w_strValue2.length())
+ w_postfix = w_strValue2.substr(pEvent->SelEnd());
+ w_strValue2 = w_prefix + w_strChange2 + w_postfix;
+ w_strValue = w_strValue2.c_str();
+ val = w_strValue;
+ return TRUE;
}
-//function AFPercent_Format(nDec, sepStyle)
-FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+// function AFPercent_Format(nDec, sepStyle)
+FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
#if _FX_OS_ != _FX_ANDROID_
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (params.size() != 2)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
- if(!pEvent->m_pValue)
- return FALSE;
-
- CFX_WideString& Value = pEvent->Value();
- CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
- if (strValue.IsEmpty())
- return TRUE;
-
- int iDec = params[0].ToInt();
- if (iDec < 0)
- iDec = -iDec;
-
- int iSepStyle = params[1].ToInt();
- if (iSepStyle < 0 || iSepStyle > 3)
- iSepStyle = 0;
-
- //////////////////////////////////////////////////////
- //for processing decimal places
- double dValue = atof(strValue);
- dValue *= 100;
- if (iDec > 0)
- dValue += DOUBLE_CORRECT;//УÕý
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 2) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+ if (!pEvent->m_pValue)
+ return FALSE;
+
+ CFX_WideString& Value = pEvent->Value();
+ CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
+ if (strValue.IsEmpty())
+ return TRUE;
- int iDec2;
- int iNegative = 0;
+ int iDec = params[0].ToInt();
+ if (iDec < 0)
+ iDec = -iDec;
+
+ int iSepStyle = params[1].ToInt();
+ if (iSepStyle < 0 || iSepStyle > 3)
+ iSepStyle = 0;
+
+ //////////////////////////////////////////////////////
+ // for processing decimal places
+ double dValue = atof(strValue);
+ dValue *= 100;
+ if (iDec > 0)
+ dValue += DOUBLE_CORRECT; //УÕý
+
+ int iDec2;
+ int iNegative = 0;
+ strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
+ if (strValue.IsEmpty()) {
+ dValue = 0;
strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
- if (strValue.IsEmpty())
- {
- dValue = 0;
- strValue = fcvt(dValue, iDec, &iDec2, &iNegative);
- }
-
- if (iDec2 < 0)
- {
- for (int iNum = 0; iNum < abs(iDec2); iNum++)
- {
- strValue = "0" + strValue;
- }
- iDec2 = 0;
-
- }
- int iMax = strValue.GetLength();
- if (iDec2 > iMax)
- {
- for (int iNum = 0; iNum <= iDec2 - iMax; iNum++)
- {
- strValue += "0";
- }
- iMax = iDec2+1;
- }
- ///////////////////////////////////////////////////////
- //for processing seperator style
- if (iDec2 < iMax)
- {
- if (iSepStyle == 0 || iSepStyle == 1)
- {
- strValue.Insert(iDec2, '.');
- iMax++;
- }
- else if (iSepStyle == 2 || iSepStyle == 3)
- {
- strValue.Insert(iDec2, ',');
- iMax++;
- }
-
- if (iDec2 == 0)
- strValue.Insert(iDec2, '0');
- }
- if (iSepStyle == 0 || iSepStyle == 2)
- {
- char cSeperator;
- if (iSepStyle == 0)
- cSeperator = ',';
- else
- cSeperator = '.';
-
- int iDecPositive;
- iDecPositive = iDec2;
-
- for (iDecPositive = iDec2 -3; iDecPositive > 0; iDecPositive -= 3)
- {
- strValue.Insert(iDecPositive,cSeperator);
- iMax++;
- }
- }
- ////////////////////////////////////////////////////////////////////
- //negative mark
- if (iNegative)
- strValue = "-" + strValue;
- strValue += "%";
- Value = CFX_WideString::FromLocal(strValue);
+ }
+
+ if (iDec2 < 0) {
+ for (int iNum = 0; iNum < abs(iDec2); iNum++) {
+ strValue = "0" + strValue;
+ }
+ iDec2 = 0;
+ }
+ int iMax = strValue.GetLength();
+ if (iDec2 > iMax) {
+ for (int iNum = 0; iNum <= iDec2 - iMax; iNum++) {
+ strValue += "0";
+ }
+ iMax = iDec2 + 1;
+ }
+ ///////////////////////////////////////////////////////
+ // for processing seperator style
+ if (iDec2 < iMax) {
+ if (iSepStyle == 0 || iSepStyle == 1) {
+ strValue.Insert(iDec2, '.');
+ iMax++;
+ } else if (iSepStyle == 2 || iSepStyle == 3) {
+ strValue.Insert(iDec2, ',');
+ iMax++;
+ }
+
+ if (iDec2 == 0)
+ strValue.Insert(iDec2, '0');
+ }
+ if (iSepStyle == 0 || iSepStyle == 2) {
+ char cSeperator;
+ if (iSepStyle == 0)
+ cSeperator = ',';
+ else
+ cSeperator = '.';
+
+ int iDecPositive;
+ iDecPositive = iDec2;
+
+ for (iDecPositive = iDec2 - 3; iDecPositive > 0; iDecPositive -= 3) {
+ strValue.Insert(iDecPositive, cSeperator);
+ iMax++;
+ }
+ }
+ ////////////////////////////////////////////////////////////////////
+ // negative mark
+ if (iNegative)
+ strValue = "-" + strValue;
+ strValue += "%";
+ Value = CFX_WideString::FromLocal(strValue);
#endif
- return TRUE;
+ return TRUE;
}
-//AFPercent_Keystroke(nDec, sepStyle)
-FX_BOOL CJS_PublicMethods::AFPercent_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return AFNumber_Keystroke(cc,params,vRet,sError);
+// AFPercent_Keystroke(nDec, sepStyle)
+FX_BOOL CJS_PublicMethods::AFPercent_Keystroke(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return AFNumber_Keystroke(cc, params, vRet, sError);
}
-//function AFDate_FormatEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (params.size() != 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
- if(!pEvent->m_pValue)
- return FALSE;
-
- CFX_WideString& val = pEvent->Value();
- CFX_WideString strValue = val;
- if (strValue.IsEmpty())
- return TRUE;
-
- CFX_WideString sFormat = params[0].ToCFXWideString();
- FX_BOOL bWrongFormat = FALSE;
- double dDate = 0.0f;
-
- if(strValue.Find(L"GMT") != -1)
- {
- //for GMT format time
- //such as "Tue Aug 11 14:24:16 GMT+08002009"
- dDate = MakeInterDate(strValue);
- }
- else
- {
- dDate = MakeRegularDate(strValue,sFormat,bWrongFormat);
- }
-
- if (JS_PortIsNan(dDate))
- {
- CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
- Alert(pContext, swMsg.c_str());
- return FALSE;
- }
-
- val = MakeFormatDate(dDate,sFormat);
+// function AFDate_FormatEx(cFormat)
+FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+ if (!pEvent->m_pValue)
+ return FALSE;
+
+ CFX_WideString& val = pEvent->Value();
+ CFX_WideString strValue = val;
+ if (strValue.IsEmpty())
return TRUE;
-}
-double CJS_PublicMethods::MakeInterDate(CFX_WideString strValue)
-{
- int nHour;
- int nMin;
- int nSec;
- int nYear;
- int nMonth;
- int nDay;
-
- CFX_WideStringArray wsArray;
- CFX_WideString sMonth = L"";
- CFX_WideString sTemp = L"";
- int nSize = strValue.GetLength();
-
- for(int i = 0; i < nSize; i++)
- {
- FX_WCHAR c = strValue.GetAt(i);
- if(c == L' ' || c == L':')
- {
- wsArray.Add(sTemp);
- sTemp = L"";
- continue;
- }
+ CFX_WideString sFormat = params[0].ToCFXWideString();
+ FX_BOOL bWrongFormat = FALSE;
+ double dDate = 0.0f;
- sTemp += c;
- }
-
- wsArray.Add(sTemp);
- if(wsArray.GetSize() != 8)return 0;
-
- sTemp = wsArray[1];
- if(sTemp.Compare(L"Jan") == 0) nMonth = 1;
- if(sTemp.Compare(L"Feb") == 0) nMonth = 2;
- if(sTemp.Compare(L"Mar") == 0) nMonth = 3;
- if(sTemp.Compare(L"Apr") == 0) nMonth = 4;
- if(sTemp.Compare(L"May") == 0) nMonth = 5;
- if(sTemp.Compare(L"Jun") == 0) nMonth = 6;
- if(sTemp.Compare(L"Jul") == 0) nMonth = 7;
- if(sTemp.Compare(L"Aug") == 0) nMonth = 8;
- if(sTemp.Compare(L"Sep") == 0) nMonth = 9;
- if(sTemp.Compare(L"Oct") == 0) nMonth = 10;
- if(sTemp.Compare(L"Nov") == 0) nMonth = 11;
- if(sTemp.Compare(L"Dec") == 0) nMonth = 12;
-
- nDay = (int)ParseStringToNumber(wsArray[2].c_str());
- nHour = (int)ParseStringToNumber(wsArray[3].c_str());
- nMin = (int)ParseStringToNumber(wsArray[4].c_str());
- nSec = (int)ParseStringToNumber(wsArray[5].c_str());
- nYear = (int)ParseStringToNumber(wsArray[7].c_str());
-
- double dRet = JS_MakeDate(JS_MakeDay(nYear,nMonth - 1,nDay),JS_MakeTime(nHour, nMin, nSec, 0));
-
- if (JS_PortIsNan(dRet))
- {
- dRet = JS_DateParse(strValue.c_str());
- }
+ if (strValue.Find(L"GMT") != -1) {
+ // for GMT format time
+ // such as "Tue Aug 11 14:24:16 GMT+08002009"
+ dDate = MakeInterDate(strValue);
+ } else {
+ dDate = MakeRegularDate(strValue, sFormat, bWrongFormat);
+ }
- return dRet;
+ if (JS_PortIsNan(dDate)) {
+ CFX_WideString swMsg;
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
+ sFormat.c_str());
+ Alert(pContext, swMsg.c_str());
+ return FALSE;
+ }
+
+ val = MakeFormatDate(dDate, sFormat);
+ return TRUE;
}
-//AFDate_KeystrokeEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (params.size() != 1)
- {
- sError = L"AFDate_KeystrokeEx's parameters' size r not correct";
- return FALSE;
- }
-
- if (pEvent->WillCommit())
- {
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString strValue = pEvent->Value();
- if (strValue.IsEmpty())
- return TRUE;
-
- CFX_WideString sFormat = params[0].ToCFXWideString();
- FX_BOOL bWrongFormat = FALSE;
- double dRet = MakeRegularDate(strValue,sFormat,bWrongFormat);
- if (bWrongFormat || JS_PortIsNan(dRet))
- {
- CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
- Alert(pContext, swMsg.c_str());
- pEvent->Rc() = FALSE;
- return TRUE;
- }
- }
- return TRUE;
+double CJS_PublicMethods::MakeInterDate(CFX_WideString strValue) {
+ int nHour;
+ int nMin;
+ int nSec;
+ int nYear;
+ int nMonth;
+ int nDay;
+
+ CFX_WideStringArray wsArray;
+ CFX_WideString sMonth = L"";
+ CFX_WideString sTemp = L"";
+ int nSize = strValue.GetLength();
+
+ for (int i = 0; i < nSize; i++) {
+ FX_WCHAR c = strValue.GetAt(i);
+ if (c == L' ' || c == L':') {
+ wsArray.Add(sTemp);
+ sTemp = L"";
+ continue;
+ }
+
+ sTemp += c;
+ }
+
+ wsArray.Add(sTemp);
+ if (wsArray.GetSize() != 8)
+ return 0;
+
+ sTemp = wsArray[1];
+ if (sTemp.Compare(L"Jan") == 0)
+ nMonth = 1;
+ if (sTemp.Compare(L"Feb") == 0)
+ nMonth = 2;
+ if (sTemp.Compare(L"Mar") == 0)
+ nMonth = 3;
+ if (sTemp.Compare(L"Apr") == 0)
+ nMonth = 4;
+ if (sTemp.Compare(L"May") == 0)
+ nMonth = 5;
+ if (sTemp.Compare(L"Jun") == 0)
+ nMonth = 6;
+ if (sTemp.Compare(L"Jul") == 0)
+ nMonth = 7;
+ if (sTemp.Compare(L"Aug") == 0)
+ nMonth = 8;
+ if (sTemp.Compare(L"Sep") == 0)
+ nMonth = 9;
+ if (sTemp.Compare(L"Oct") == 0)
+ nMonth = 10;
+ if (sTemp.Compare(L"Nov") == 0)
+ nMonth = 11;
+ if (sTemp.Compare(L"Dec") == 0)
+ nMonth = 12;
+
+ nDay = (int)ParseStringToNumber(wsArray[2].c_str());
+ nHour = (int)ParseStringToNumber(wsArray[3].c_str());
+ nMin = (int)ParseStringToNumber(wsArray[4].c_str());
+ nSec = (int)ParseStringToNumber(wsArray[5].c_str());
+ nYear = (int)ParseStringToNumber(wsArray[7].c_str());
+
+ double dRet = JS_MakeDate(JS_MakeDay(nYear, nMonth - 1, nDay),
+ JS_MakeTime(nHour, nMin, nSec, 0));
+
+ if (JS_PortIsNan(dRet)) {
+ dRet = JS_DateParse(strValue.c_str());
+ }
+
+ return dRet;
}
-FX_BOOL CJS_PublicMethods::AFDate_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
-
- if (params.size() != 1)
- {
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
-
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+// AFDate_KeystrokeEx(cFormat)
+FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 1) {
+ sError = L"AFDate_KeystrokeEx's parameters' size r not correct";
+ return FALSE;
+ }
+
+ if (pEvent->WillCommit()) {
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString strValue = pEvent->Value();
+ if (strValue.IsEmpty())
+ return TRUE;
- int iIndex = params[0].ToInt();
- const FX_WCHAR* cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", L"mm/yy", L"d-mmm", L"d-mmm-yy", L"dd-mmm-yy",
- L"yy-mm-dd", L"mmm-yy", L"mmmm-yy", L"mmm d, yyyy", L"mmmm d, yyyy",
- L"m/d/yy h:MM tt", L"m/d/yy HH:MM" };
-
- ASSERT(iIndex < FX_ArraySize(cFormats));
-
- if (iIndex < 0)
- iIndex = 0;
- if (iIndex >= FX_ArraySize(cFormats))
- iIndex = 0;
- CJS_Parameters newParams;
- CJS_Value val(isolate,cFormats[iIndex]);
- newParams.push_back(val);
- return AFDate_FormatEx(cc,newParams,vRet,sError);
+ CFX_WideString sFormat = params[0].ToCFXWideString();
+ FX_BOOL bWrongFormat = FALSE;
+ double dRet = MakeRegularDate(strValue, sFormat, bWrongFormat);
+ if (bWrongFormat || JS_PortIsNan(dRet)) {
+ CFX_WideString swMsg;
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
+ sFormat.c_str());
+ Alert(pContext, swMsg.c_str());
+ pEvent->Rc() = FALSE;
+ return TRUE;
+ }
+ }
+ return TRUE;
}
-//AFDate_KeystrokeEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
-
- if (params.size() != 1)
- {
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
+FX_BOOL CJS_PublicMethods::AFDate_Format(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ if (params.size() != 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- int iIndex = params[0].ToInt();
- const FX_WCHAR* cFormats[] = {L"m/d", L"m/d/yy", L"mm/dd/yy", L"mm/yy", L"d-mmm", L"d-mmm-yy", L"dd-mmm-yy",
- L"yy-mm-dd", L"mmm-yy", L"mmmm-yy", L"mmm d, yyyy", L"mmmm d, yyyy",
- L"m/d/yy h:MM tt", L"m/d/yy HH:MM" };
-
- ASSERT(iIndex<FX_ArraySize(cFormats));
-
- if (iIndex < 0)
- iIndex = 0;
- if (iIndex >= FX_ArraySize(cFormats))
- iIndex = 0;
- CJS_Parameters newParams;
- CJS_Value val(isolate,cFormats[iIndex]);
- newParams.push_back(val);
- return AFDate_KeystrokeEx(cc,newParams,vRet,sError);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ int iIndex = params[0].ToInt();
+ const FX_WCHAR* cFormats[] = {L"m/d",
+ L"m/d/yy",
+ L"mm/dd/yy",
+ L"mm/yy",
+ L"d-mmm",
+ L"d-mmm-yy",
+ L"dd-mmm-yy",
+ L"yy-mm-dd",
+ L"mmm-yy",
+ L"mmmm-yy",
+ L"mmm d, yyyy",
+ L"mmmm d, yyyy",
+ L"m/d/yy h:MM tt",
+ L"m/d/yy HH:MM"};
+
+ ASSERT(iIndex < FX_ArraySize(cFormats));
+
+ if (iIndex < 0)
+ iIndex = 0;
+ if (iIndex >= FX_ArraySize(cFormats))
+ iIndex = 0;
+ CJS_Parameters newParams;
+ CJS_Value val(isolate, cFormats[iIndex]);
+ newParams.push_back(val);
+ return AFDate_FormatEx(cc, newParams, vRet, sError);
}
-//function AFTime_Format(ptf)
-FX_BOOL CJS_PublicMethods::AFTime_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
-
- if (params.size() != 1)
- {
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+// AFDate_KeystrokeEx(cFormat)
+FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
- int iIndex = params[0].ToInt();
- const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", L"h:MM:ss tt"};
-
- ASSERT(iIndex<FX_ArraySize(cFormats));
+ if (params.size() != 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- if (iIndex < 0)
- iIndex = 0;
- if (iIndex >= FX_ArraySize(cFormats))
- iIndex = 0;
- CJS_Parameters newParams;
- CJS_Value val(isolate,cFormats[iIndex]);
- newParams.push_back(val);
- return AFDate_FormatEx(cc,newParams,vRet,sError);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ int iIndex = params[0].ToInt();
+ const FX_WCHAR* cFormats[] = {L"m/d",
+ L"m/d/yy",
+ L"mm/dd/yy",
+ L"mm/yy",
+ L"d-mmm",
+ L"d-mmm-yy",
+ L"dd-mmm-yy",
+ L"yy-mm-dd",
+ L"mmm-yy",
+ L"mmmm-yy",
+ L"mmm d, yyyy",
+ L"mmmm d, yyyy",
+ L"m/d/yy h:MM tt",
+ L"m/d/yy HH:MM"};
+
+ ASSERT(iIndex < FX_ArraySize(cFormats));
+
+ if (iIndex < 0)
+ iIndex = 0;
+ if (iIndex >= FX_ArraySize(cFormats))
+ iIndex = 0;
+ CJS_Parameters newParams;
+ CJS_Value val(isolate, cFormats[iIndex]);
+ newParams.push_back(val);
+ return AFDate_KeystrokeEx(cc, newParams, vRet, sError);
}
-FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
- if (params.size() != 1)
- {
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- int iIndex = params[0].ToInt();
- const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", L"h:MM:ss tt"};
+// function AFTime_Format(ptf)
+FX_BOOL CJS_PublicMethods::AFTime_Format(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
- ASSERT(iIndex<FX_ArraySize(cFormats));
+ if (params.size() != 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ int iIndex = params[0].ToInt();
+ const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+ L"h:MM:ss tt"};
+
+ ASSERT(iIndex < FX_ArraySize(cFormats));
+
+ if (iIndex < 0)
+ iIndex = 0;
+ if (iIndex >= FX_ArraySize(cFormats))
+ iIndex = 0;
+ CJS_Parameters newParams;
+ CJS_Value val(isolate, cFormats[iIndex]);
+ newParams.push_back(val);
+ return AFDate_FormatEx(cc, newParams, vRet, sError);
+}
- if (iIndex < 0)
- iIndex = 0;
- if (iIndex >= FX_ArraySize(cFormats))
- iIndex = 0;
- CJS_Parameters newParams;
- CJS_Value val(isolate,cFormats[iIndex]);
- newParams.push_back(val);
- return AFDate_KeystrokeEx(cc,newParams,vRet,sError);
+FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
+ if (params.size() != 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ int iIndex = params[0].ToInt();
+ const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+ L"h:MM:ss tt"};
+
+ ASSERT(iIndex < FX_ArraySize(cFormats));
+
+ if (iIndex < 0)
+ iIndex = 0;
+ if (iIndex >= FX_ArraySize(cFormats))
+ iIndex = 0;
+ CJS_Parameters newParams;
+ CJS_Value val(isolate, cFormats[iIndex]);
+ newParams.push_back(val);
+ return AFDate_KeystrokeEx(cc, newParams, vRet, sError);
}
-FX_BOOL CJS_PublicMethods::AFTime_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return AFDate_FormatEx(cc,params,vRet,sError);
+FX_BOOL CJS_PublicMethods::AFTime_FormatEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return AFDate_FormatEx(cc, params, vRet, sError);
}
-FX_BOOL CJS_PublicMethods::AFTime_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return AFDate_KeystrokeEx(cc,params,vRet,sError);
+FX_BOOL CJS_PublicMethods::AFTime_KeystrokeEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return AFDate_KeystrokeEx(cc, params, vRet, sError);
}
-//function AFSpecial_Format(psf)
-FX_BOOL CJS_PublicMethods::AFSpecial_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+// function AFSpecial_Format(psf)
+FX_BOOL CJS_PublicMethods::AFSpecial_Format(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- if (params.size() != 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- std::string cFormat;
- int iIndex = params[0].ToInt();
+ std::string cFormat;
+ int iIndex = params[0].ToInt();
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString& Value = pEvent->Value();
- std::string strSrc = CFX_ByteString::FromUnicode(Value).c_str();
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString& Value = pEvent->Value();
+ std::string strSrc = CFX_ByteString::FromUnicode(Value).c_str();
- switch (iIndex)
- {
+ switch (iIndex) {
case 0:
- cFormat = "99999";
- break;
+ cFormat = "99999";
+ break;
case 1:
- cFormat = "99999-9999";
- break;
- case 2:
- {
- std::string NumberStr;
- util::printx("9999999999", strSrc,NumberStr);
- if (NumberStr.length() >= 10 )
- cFormat = "(999) 999-9999";
- else
- cFormat = "999-9999";
- break;
- }
- case 3:
- cFormat = "999-99-9999";
- break;
+ cFormat = "99999-9999";
+ break;
+ case 2: {
+ std::string NumberStr;
+ util::printx("9999999999", strSrc, NumberStr);
+ if (NumberStr.length() >= 10)
+ cFormat = "(999) 999-9999";
+ else
+ cFormat = "999-9999";
+ break;
}
-
- std::string strDes;
- util::printx(cFormat,strSrc,strDes);
- Value = CFX_WideString::FromLocal(strDes.c_str());
- return TRUE;
+ case 3:
+ cFormat = "999-99-9999";
+ break;
+ }
+
+ std::string strDes;
+ util::printx(cFormat, strSrc, strDes);
+ Value = CFX_WideString::FromLocal(strDes.c_str());
+ return TRUE;
}
+// function AFSpecial_KeystrokeEx(mask)
+FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
-//function AFSpecial_KeystrokeEx(mask)
-FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- ASSERT(pEvent != NULL);
+ if (params.size() < 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- if (params.size() < 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString& valEvent = pEvent->Value();
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString& valEvent = pEvent->Value();
- CFX_WideString wstrMask = params[0].ToCFXWideString();
- if (wstrMask.IsEmpty())
- return TRUE;
-
- std::wstring wstrValue = valEvent.c_str();
-
- if (pEvent->WillCommit())
- {
- if (wstrValue.empty())
- return TRUE;
- int iIndexMask = 0;
- for (std::wstring::iterator it = wstrValue.begin(); it != wstrValue.end(); it++)
- {
- wchar_t w_Value = *it;
- if (!maskSatisfied(w_Value,wstrMask[iIndexMask]))
- break;
- iIndexMask++;
- }
-
- if (iIndexMask != wstrMask.GetLength() || (iIndexMask != wstrValue.size() && wstrMask.GetLength() != 0))
- {
- Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE).c_str());
- pEvent->Rc() = FALSE;
- }
- return TRUE;
- }
-
- CFX_WideString &wideChange = pEvent->Change();
- std::wstring wChange = wideChange.c_str();
- if (wChange.empty())
- return TRUE;
-
- int iIndexMask = pEvent->SelStart();
+ CFX_WideString wstrMask = params[0].ToCFXWideString();
+ if (wstrMask.IsEmpty())
+ return TRUE;
- if (wstrValue.length() - (pEvent->SelEnd()-pEvent->SelStart()) + wChange.length() > (FX_DWORD)wstrMask.GetLength())
- {
- Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
- pEvent->Rc() = FALSE;
- return TRUE;
- }
+ std::wstring wstrValue = valEvent.c_str();
- if (iIndexMask >= wstrMask.GetLength() && (!wChange.empty()))
- {
- Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
- pEvent->Rc() = FALSE;
- return TRUE;
+ if (pEvent->WillCommit()) {
+ if (wstrValue.empty())
+ return TRUE;
+ int iIndexMask = 0;
+ for (std::wstring::iterator it = wstrValue.begin(); it != wstrValue.end();
+ it++) {
+ wchar_t w_Value = *it;
+ if (!maskSatisfied(w_Value, wstrMask[iIndexMask]))
+ break;
+ iIndexMask++;
}
- for (std::wstring::iterator it = wChange.begin(); it != wChange.end(); it++)
- {
- if (iIndexMask >= wstrMask.GetLength())
- {
- Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
- pEvent->Rc() = FALSE;
- return TRUE;
- }
- wchar_t w_Mask = wstrMask[iIndexMask];
- if (!isReservedMaskChar(w_Mask))
- {
- *it = w_Mask;
- }
- wchar_t w_Change = *it;
- if (!maskSatisfied(w_Change,w_Mask))
- {
- pEvent->Rc() = FALSE;
- return TRUE;
- }
- iIndexMask++;
+ if (iIndexMask != wstrMask.GetLength() ||
+ (iIndexMask != wstrValue.size() && wstrMask.GetLength() != 0)) {
+ Alert(
+ pContext,
+ JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE).c_str());
+ pEvent->Rc() = FALSE;
}
+ return TRUE;
+ }
- wideChange = wChange.c_str();
+ CFX_WideString& wideChange = pEvent->Change();
+ std::wstring wChange = wideChange.c_str();
+ if (wChange.empty())
return TRUE;
-}
+ int iIndexMask = pEvent->SelStart();
-//function AFSpecial_Keystroke(psf)
-FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
+ if (wstrValue.length() - (pEvent->SelEnd() - pEvent->SelStart()) +
+ wChange.length() >
+ (FX_DWORD)wstrMask.GetLength()) {
+ Alert(pContext,
+ JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
+ pEvent->Rc() = FALSE;
+ return TRUE;
+ }
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ if (iIndexMask >= wstrMask.GetLength() && (!wChange.empty())) {
+ Alert(pContext,
+ JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
+ pEvent->Rc() = FALSE;
+ return TRUE;
+ }
- if (params.size() != 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
+ for (std::wstring::iterator it = wChange.begin(); it != wChange.end(); it++) {
+ if (iIndexMask >= wstrMask.GetLength()) {
+ Alert(pContext,
+ JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
+ pEvent->Rc() = FALSE;
+ return TRUE;
}
+ wchar_t w_Mask = wstrMask[iIndexMask];
+ if (!isReservedMaskChar(w_Mask)) {
+ *it = w_Mask;
+ }
+ wchar_t w_Change = *it;
+ if (!maskSatisfied(w_Change, w_Mask)) {
+ pEvent->Rc() = FALSE;
+ return TRUE;
+ }
+ iIndexMask++;
+ }
- std::string cFormat;
- int iIndex = params[0].ToInt();
-
- if(!pEvent->m_pValue)
- return FALSE;
- //CJS_Value val = pEvent->Value();
- CFX_WideString& val = pEvent->Value();
- std::string strSrc = CFX_ByteString::FromUnicode(val).c_str();
- std::wstring wstrChange = pEvent->Change().c_str();
+ wideChange = wChange.c_str();
+ return TRUE;
+}
- switch (iIndex)
- {
+// function AFSpecial_Keystroke(psf)
+FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ std::string cFormat;
+ int iIndex = params[0].ToInt();
+
+ if (!pEvent->m_pValue)
+ return FALSE;
+ // CJS_Value val = pEvent->Value();
+ CFX_WideString& val = pEvent->Value();
+ std::string strSrc = CFX_ByteString::FromUnicode(val).c_str();
+ std::wstring wstrChange = pEvent->Change().c_str();
+
+ switch (iIndex) {
case 0:
- cFormat = "99999";
- break;
+ cFormat = "99999";
+ break;
case 1:
- //cFormat = "99999-9999";
- cFormat = "999999999";
- break;
- case 2:
- {
- std::string NumberStr;
- util::printx("9999999999", strSrc,NumberStr);
- if (strSrc.length() + wstrChange.length() > 7 )
- //cFormat = "(999) 999-9999";
- cFormat = "9999999999";
- else
- //cFormat = "999-9999";
- cFormat = "9999999";
- break;
- }
- case 3:
- //cFormat = "999-99-9999";
- cFormat = "999999999";
- break;
+ // cFormat = "99999-9999";
+ cFormat = "999999999";
+ break;
+ case 2: {
+ std::string NumberStr;
+ util::printx("9999999999", strSrc, NumberStr);
+ if (strSrc.length() + wstrChange.length() > 7)
+ // cFormat = "(999) 999-9999";
+ cFormat = "9999999999";
+ else
+ // cFormat = "999-9999";
+ cFormat = "9999999";
+ break;
}
+ case 3:
+ // cFormat = "999-99-9999";
+ cFormat = "999999999";
+ break;
+ }
- CJS_Parameters params2;
- CJS_Value vMask(isolate, cFormat.c_str());
- params2.push_back(vMask);
+ CJS_Parameters params2;
+ CJS_Value vMask(isolate, cFormat.c_str());
+ params2.push_back(vMask);
- return AFSpecial_KeystrokeEx(cc,params2,vRet,sError);
+ return AFSpecial_KeystrokeEx(cc, params2, vRet, sError);
}
-FX_BOOL CJS_PublicMethods::AFMergeChange(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEventHandler = pContext->GetEventHandler();
- ASSERT(pEventHandler != NULL);
+FX_BOOL CJS_PublicMethods::AFMergeChange(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEventHandler = pContext->GetEventHandler();
+ ASSERT(pEventHandler != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ CFX_WideString swValue;
+ if (pEventHandler->m_pValue != NULL)
+ swValue = pEventHandler->Value();
+
+ if (pEventHandler->WillCommit()) {
+ vRet = swValue.c_str();
+ return TRUE;
+ }
- if (params.size() != 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ CFX_WideString prefix, postfix;
- CFX_WideString swValue;
- if (pEventHandler->m_pValue != NULL)
- swValue = pEventHandler->Value();
+ if (pEventHandler->SelStart() >= 0)
+ prefix = swValue.Mid(0, pEventHandler->SelStart());
+ else
+ prefix = L"";
- if (pEventHandler->WillCommit())
- {
- vRet = swValue.c_str();
- return TRUE;
- }
+ if (pEventHandler->SelEnd() >= 0 &&
+ pEventHandler->SelEnd() <= swValue.GetLength())
+ postfix = swValue.Mid(pEventHandler->SelEnd(),
+ swValue.GetLength() - pEventHandler->SelEnd());
+ else
+ postfix = L"";
- CFX_WideString prefix,postfix;
+ vRet = (prefix + pEventHandler->Change() + postfix).c_str();
- if (pEventHandler->SelStart() >= 0)
- prefix = swValue.Mid(0,pEventHandler->SelStart());
- else
- prefix = L"";
+ return TRUE;
+}
+FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- if (pEventHandler->SelEnd() >= 0 && pEventHandler->SelEnd() <= swValue.GetLength())
- postfix = swValue.Mid(pEventHandler->SelEnd(), swValue.GetLength() - pEventHandler->SelEnd());
- else postfix = L"";
+ if (params.size() != 2) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- vRet = (prefix + pEventHandler->Change() + postfix).c_str();
+ CFX_WideString sValue = params[0].ToCFXWideString();
+ CFX_WideString sFormat = params[1].ToCFXWideString();
- return TRUE;
+ FX_BOOL bWrongFormat = FALSE;
+ double dDate = MakeRegularDate(sValue, sFormat, bWrongFormat);
+
+ if (JS_PortIsNan(dDate)) {
+ CFX_WideString swMsg;
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
+ sFormat.c_str());
+ Alert((CJS_Context*)cc, swMsg.c_str());
+ return FALSE;
+ }
+
+ vRet = dDate;
+ return TRUE;
}
-FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
+FX_BOOL CJS_PublicMethods::AFSimple(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ if (params.size() != 3) {
+ CJS_Context* pContext = (CJS_Context*)cc;
ASSERT(pContext != NULL);
- if (params.size() != 2)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- CFX_WideString sValue = params[0].ToCFXWideString();
- CFX_WideString sFormat = params[1].ToCFXWideString();
-
- FX_BOOL bWrongFormat = FALSE;
- double dDate = MakeRegularDate(sValue,sFormat,bWrongFormat);
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- if (JS_PortIsNan(dDate))
- {
- CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
- Alert((CJS_Context *)cc, swMsg.c_str());
- return FALSE;
- }
-
- vRet = dDate;
- return TRUE;
+ vRet = (double)AF_Simple(params[0].ToCFXWideString().c_str(),
+ params[1].ToDouble(), params[2].ToDouble());
+ return TRUE;
}
-FX_BOOL CJS_PublicMethods::AFSimple(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- if (params.size() != 3)
- {
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
-
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+FX_BOOL CJS_PublicMethods::AFMakeNumber(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ if (params.size() != 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- vRet = (double)AF_Simple(params[0].ToCFXWideString().c_str(), params[1].ToDouble(), params[2].ToDouble());
- return TRUE;
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+ vRet = ParseStringToNumber(params[0].ToCFXWideString().c_str());
+ return TRUE;
}
-FX_BOOL CJS_PublicMethods::AFMakeNumber(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- if (params.size() != 1)
- {
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
- vRet = ParseStringToNumber(params[0].ToCFXWideString().c_str());
- return TRUE;
-}
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
-FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
+ if (params.size() != 2) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+ CJS_Value params1 = params[1];
- if (params.size() != 2)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ if (!params1.IsArrayObject() && params1.GetType() != VT_string) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- CJS_Value params1 = params[1];
+ CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument();
+ ASSERT(pReaderDoc != NULL);
- if (!params1.IsArrayObject() && params1.GetType() != VT_string)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
+ CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm();
+ ASSERT(pReaderInterForm != NULL);
- CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument();
- ASSERT(pReaderDoc != NULL);
+ CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
+ ASSERT(pInterForm != NULL);
- CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm();
- ASSERT(pReaderInterForm != NULL);
+ double dValue;
+ CFX_WideString sFunction = params[0].ToCFXWideString();
+ if (wcscmp(sFunction.c_str(), L"PRD") == 0)
+ dValue = 1.0;
+ else
+ dValue = 0.0;
- CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
- ASSERT(pInterForm != NULL);
+ CJS_Array FieldNameArray = AF_MakeArrayFromList(isolate, params1);
- double dValue;
- CFX_WideString sFunction = params[0].ToCFXWideString();
- if (wcscmp(sFunction.c_str(), L"PRD") == 0)
- dValue = 1.0;
- else
- dValue = 0.0;
-
- CJS_Array FieldNameArray = AF_MakeArrayFromList(isolate,params1);
-
- int nFieldsCount = 0;
-
- for (int i=0,isz=FieldNameArray.GetLength(); i<isz; i++)
- {
- CJS_Value jsValue(isolate);
- FieldNameArray.GetElement(i,jsValue);
- CFX_WideString wsFieldName = jsValue.ToCFXWideString();
-
- for (int j=0,jsz=pInterForm->CountFields(wsFieldName); j<jsz; j++)
- {
- if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName))
- {
- double dTemp = 0.0;
-
- switch (pFormField->GetFieldType())
- {
- case FIELDTYPE_TEXTFIELD:
- case FIELDTYPE_COMBOBOX:
- {
- dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
- break;
- }
- case FIELDTYPE_PUSHBUTTON:
- {
- dTemp = 0.0;
- break;
- }
- case FIELDTYPE_CHECKBOX:
- case FIELDTYPE_RADIOBUTTON:
- {
- dTemp = 0.0;
- for (int c=0,csz=pFormField->CountControls(); c<csz; c++)
- {
- if (CPDF_FormControl* pFormCtrl = pFormField->GetControl(c))
- {
- if (pFormCtrl->IsChecked())
- {
- dTemp += ParseStringToNumber(pFormCtrl->GetExportValue().c_str());
- break;
- }
- else
- continue;
- }
- }
- break;
- }
- case FIELDTYPE_LISTBOX:
- {
- dTemp = 0.0;
- if (pFormField->CountSelectedItems() > 1)
- break;
- else
- {
- dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
- break;
- }
- }
- default:
- break;
- }
+ int nFieldsCount = 0;
- if (i == 0 && j == 0 && (wcscmp(sFunction.c_str(), L"MIN") == 0 || wcscmp(sFunction.c_str(), L"MAX") == 0))
- dValue = dTemp;
+ for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) {
+ CJS_Value jsValue(isolate);
+ FieldNameArray.GetElement(i, jsValue);
+ CFX_WideString wsFieldName = jsValue.ToCFXWideString();
- dValue = AF_Simple(sFunction.c_str(), dValue, dTemp);
+ for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) {
+ if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) {
+ double dTemp = 0.0;
- nFieldsCount++;
+ switch (pFormField->GetFieldType()) {
+ case FIELDTYPE_TEXTFIELD:
+ case FIELDTYPE_COMBOBOX: {
+ dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
+ break;
+ }
+ case FIELDTYPE_PUSHBUTTON: {
+ dTemp = 0.0;
+ break;
+ }
+ case FIELDTYPE_CHECKBOX:
+ case FIELDTYPE_RADIOBUTTON: {
+ dTemp = 0.0;
+ for (int c = 0, csz = pFormField->CountControls(); c < csz; c++) {
+ if (CPDF_FormControl* pFormCtrl = pFormField->GetControl(c)) {
+ if (pFormCtrl->IsChecked()) {
+ dTemp +=
+ ParseStringToNumber(pFormCtrl->GetExportValue().c_str());
+ break;
+ } else
+ continue;
+ }
}
+ break;
+ }
+ case FIELDTYPE_LISTBOX: {
+ dTemp = 0.0;
+ if (pFormField->CountSelectedItems() > 1)
+ break;
+ else {
+ dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
+ break;
+ }
+ }
+ default:
+ break;
}
+
+ if (i == 0 && j == 0 && (wcscmp(sFunction.c_str(), L"MIN") == 0 ||
+ wcscmp(sFunction.c_str(), L"MAX") == 0))
+ dValue = dTemp;
+
+ dValue = AF_Simple(sFunction.c_str(), dValue, dTemp);
+
+ nFieldsCount++;
+ }
}
+ }
- if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0)
- dValue /= nFieldsCount;
+ if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0)
+ dValue /= nFieldsCount;
- dValue = (double)floor(dValue * FXSYS_pow((double)10,(double)6) + 0.49) / FXSYS_pow((double)10,(double)6);
- CJS_Value jsValue(isolate,dValue);
- if((CJS_EventHandler*)pContext->GetEventHandler()->m_pValue)
- ((CJS_EventHandler*)pContext->GetEventHandler())->Value() = jsValue.ToCFXWideString();
+ dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) /
+ FXSYS_pow((double)10, (double)6);
+ CJS_Value jsValue(isolate, dValue);
+ if ((CJS_EventHandler*)pContext->GetEventHandler()->m_pValue)
+ ((CJS_EventHandler*)pContext->GetEventHandler())->Value() =
+ jsValue.ToCFXWideString();
- return TRUE;
+ return TRUE;
}
/* This function validates the current event to ensure that its value is
** within the specified range. */
-FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (params.size() != 4)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- if(!pEvent->m_pValue)
- return FALSE;
- if (pEvent->Value().IsEmpty() )
- return TRUE;
- double dEentValue = atof(CFX_ByteString::FromUnicode(pEvent->Value()));
- FX_BOOL bGreaterThan = params[0].ToBool();
- double dGreaterThan = params[1].ToDouble();
- FX_BOOL bLessThan = params[2].ToBool();
- double dLessThan = params[3].ToDouble();
- CFX_WideString swMsg;
-
- if (bGreaterThan && bLessThan)
- {
- if (dEentValue < dGreaterThan || dEentValue > dLessThan)
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(),
- params[1].ToCFXWideString().c_str(),
- params[3].ToCFXWideString().c_str());
- }
- else if (bGreaterThan)
- {
- if (dEentValue < dGreaterThan)
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(),
- params[1].ToCFXWideString().c_str());
- }
- else if (bLessThan)
- {
- if (dEentValue > dLessThan)
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(),
- params[3].ToCFXWideString().c_str());
- }
-
- if (!swMsg.IsEmpty())
- {
- Alert(pContext, swMsg.c_str());
- pEvent->Rc() = FALSE;
- }
+FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (params.size() != 4) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ if (!pEvent->m_pValue)
+ return FALSE;
+ if (pEvent->Value().IsEmpty())
return TRUE;
+ double dEentValue = atof(CFX_ByteString::FromUnicode(pEvent->Value()));
+ FX_BOOL bGreaterThan = params[0].ToBool();
+ double dGreaterThan = params[1].ToDouble();
+ FX_BOOL bLessThan = params[2].ToBool();
+ double dLessThan = params[3].ToDouble();
+ CFX_WideString swMsg;
+
+ if (bGreaterThan && bLessThan) {
+ if (dEentValue < dGreaterThan || dEentValue > dLessThan)
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(),
+ params[1].ToCFXWideString().c_str(),
+ params[3].ToCFXWideString().c_str());
+ } else if (bGreaterThan) {
+ if (dEentValue < dGreaterThan)
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(),
+ params[1].ToCFXWideString().c_str());
+ } else if (bLessThan) {
+ if (dEentValue > dLessThan)
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(),
+ params[3].ToCFXWideString().c_str());
+ }
+
+ if (!swMsg.IsEmpty()) {
+ Alert(pContext, swMsg.c_str());
+ pEvent->Rc() = FALSE;
+ }
+ return TRUE;
}
-FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = ::GetIsolate(cc);
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
-
- if (params.size() != 1)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- CJS_Array nums(isolate);
-
- CFX_WideString str = params[0].ToCFXWideString();
- CFX_WideString sPart;
-
- if (str.GetAt(0) == L'.' || str.GetAt(0) == L',')
- str = L"0" + str;
-
- int nIndex = 0;
- for (int i=0, sz=str.GetLength(); i<sz; i++)
- {
- FX_WCHAR wc = str.GetAt(i);
- if (IsDigit((wchar_t)wc))
- {
- sPart += wc;
- }
- else
- {
- if (sPart.GetLength() > 0)
- {
- nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
- sPart = L"";
- nIndex ++;
- }
- }
+FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = ::GetIsolate(cc);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ CJS_Array nums(isolate);
+
+ CFX_WideString str = params[0].ToCFXWideString();
+ CFX_WideString sPart;
+
+ if (str.GetAt(0) == L'.' || str.GetAt(0) == L',')
+ str = L"0" + str;
+
+ int nIndex = 0;
+ for (int i = 0, sz = str.GetLength(); i < sz; i++) {
+ FX_WCHAR wc = str.GetAt(i);
+ if (IsDigit((wchar_t)wc)) {
+ sPart += wc;
+ } else {
+ if (sPart.GetLength() > 0) {
+ nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str()));
+ sPart = L"";
+ nIndex++;
+ }
}
+ }
- if (sPart.GetLength() > 0)
- {
- nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
- }
+ if (sPart.GetLength() > 0) {
+ nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str()));
+ }
- if (nums.GetLength() > 0)
- vRet = nums;
- else
- vRet.SetNull();
+ if (nums.GetLength() > 0)
+ vRet = nums;
+ else
+ vRet.SetNull();
- return TRUE;
+ return TRUE;
}
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index af329655fd..29007a4a2a 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -17,16 +17,14 @@
#include "../../include/javascript/JS_Runtime.h"
#include "../../include/javascript/Document.h"
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- return pRuntime->GetIsolate();
+ return pRuntime->GetIsolate();
}
/* ---------------------------- TimerObj ---------------------------- */
@@ -43,35 +41,27 @@ END_JS_STATIC_METHOD()
IMPLEMENT_JS_CLASS(CJS_TimerObj, TimerObj)
TimerObj::TimerObj(CJS_Object* pJSObject)
-: CJS_EmbedObj(pJSObject),
-m_pTimer(NULL)
-{
-
-}
+ : CJS_EmbedObj(pJSObject), m_pTimer(NULL) {}
-TimerObj::~TimerObj()
-{
-}
+TimerObj::~TimerObj() {}
-void TimerObj::SetTimer(CJS_Timer* pTimer)
-{
- m_pTimer = pTimer;
+void TimerObj::SetTimer(CJS_Timer* pTimer) {
+ m_pTimer = pTimer;
}
-CJS_Timer* TimerObj::GetTimer() const
-{
- return m_pTimer;
+CJS_Timer* TimerObj::GetTimer() const {
+ return m_pTimer;
}
-#define JS_STR_VIEWERTYPE_READER L"Reader"
-#define JS_STR_VIEWERTYPE_STANDARD L"Exchange"
-#define JS_STR_VIEWERVARIATION L"Full"
-#define JS_STR_PLATFORM L"WIN"
-#define JS_STR_LANGUANGE L"ENU"
-#define JS_STR_VIEWERVERSION 8
-#define JS_NUM_FORMSVERSION 7
+#define JS_STR_VIEWERTYPE_READER L"Reader"
+#define JS_STR_VIEWERTYPE_STANDARD L"Exchange"
+#define JS_STR_VIEWERVARIATION L"Full"
+#define JS_STR_PLATFORM L"WIN"
+#define JS_STR_LANGUANGE L"ENU"
+#define JS_STR_VIEWERVERSION 8
+#define JS_NUM_FORMSVERSION 7
-#define JS_FILEPATH_MAXLEN 2000
+#define JS_FILEPATH_MAXLEN 2000
/* ---------------------------- app ---------------------------- */
@@ -79,817 +69,804 @@ BEGIN_JS_STATIC_CONST(CJS_App)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_App)
- JS_STATIC_PROP_ENTRY(activeDocs)
- JS_STATIC_PROP_ENTRY(calculate)
- JS_STATIC_PROP_ENTRY(formsVersion)
- JS_STATIC_PROP_ENTRY(fs)
- JS_STATIC_PROP_ENTRY(fullscreen)
- JS_STATIC_PROP_ENTRY(language)
- JS_STATIC_PROP_ENTRY(media)
- JS_STATIC_PROP_ENTRY(platform)
- JS_STATIC_PROP_ENTRY(runtimeHighlight)
- JS_STATIC_PROP_ENTRY(viewerType)
- JS_STATIC_PROP_ENTRY(viewerVariation)
- JS_STATIC_PROP_ENTRY(viewerVersion)
+JS_STATIC_PROP_ENTRY(activeDocs)
+JS_STATIC_PROP_ENTRY(calculate)
+JS_STATIC_PROP_ENTRY(formsVersion)
+JS_STATIC_PROP_ENTRY(fs)
+JS_STATIC_PROP_ENTRY(fullscreen)
+JS_STATIC_PROP_ENTRY(language)
+JS_STATIC_PROP_ENTRY(media)
+JS_STATIC_PROP_ENTRY(platform)
+JS_STATIC_PROP_ENTRY(runtimeHighlight)
+JS_STATIC_PROP_ENTRY(viewerType)
+JS_STATIC_PROP_ENTRY(viewerVariation)
+JS_STATIC_PROP_ENTRY(viewerVersion)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_App)
- JS_STATIC_METHOD_ENTRY(alert)
- JS_STATIC_METHOD_ENTRY(beep)
- JS_STATIC_METHOD_ENTRY(browseForDoc)
- JS_STATIC_METHOD_ENTRY(clearInterval)
- JS_STATIC_METHOD_ENTRY(clearTimeOut)
- JS_STATIC_METHOD_ENTRY(execDialog)
- JS_STATIC_METHOD_ENTRY(execMenuItem)
- JS_STATIC_METHOD_ENTRY(findComponent)
- JS_STATIC_METHOD_ENTRY(goBack)
- JS_STATIC_METHOD_ENTRY(goForward)
- JS_STATIC_METHOD_ENTRY(launchURL)
- JS_STATIC_METHOD_ENTRY(mailMsg)
- JS_STATIC_METHOD_ENTRY(newFDF)
- JS_STATIC_METHOD_ENTRY(newDoc)
- JS_STATIC_METHOD_ENTRY(openDoc)
- JS_STATIC_METHOD_ENTRY(openFDF)
- JS_STATIC_METHOD_ENTRY(popUpMenuEx)
- JS_STATIC_METHOD_ENTRY(popUpMenu)
- JS_STATIC_METHOD_ENTRY(response)
- JS_STATIC_METHOD_ENTRY(setInterval)
- JS_STATIC_METHOD_ENTRY(setTimeOut)
+JS_STATIC_METHOD_ENTRY(alert)
+JS_STATIC_METHOD_ENTRY(beep)
+JS_STATIC_METHOD_ENTRY(browseForDoc)
+JS_STATIC_METHOD_ENTRY(clearInterval)
+JS_STATIC_METHOD_ENTRY(clearTimeOut)
+JS_STATIC_METHOD_ENTRY(execDialog)
+JS_STATIC_METHOD_ENTRY(execMenuItem)
+JS_STATIC_METHOD_ENTRY(findComponent)
+JS_STATIC_METHOD_ENTRY(goBack)
+JS_STATIC_METHOD_ENTRY(goForward)
+JS_STATIC_METHOD_ENTRY(launchURL)
+JS_STATIC_METHOD_ENTRY(mailMsg)
+JS_STATIC_METHOD_ENTRY(newFDF)
+JS_STATIC_METHOD_ENTRY(newDoc)
+JS_STATIC_METHOD_ENTRY(openDoc)
+JS_STATIC_METHOD_ENTRY(openFDF)
+JS_STATIC_METHOD_ENTRY(popUpMenuEx)
+JS_STATIC_METHOD_ENTRY(popUpMenu)
+JS_STATIC_METHOD_ENTRY(response)
+JS_STATIC_METHOD_ENTRY(setInterval)
+JS_STATIC_METHOD_ENTRY(setTimeOut)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_App,app)
-
-app::app(CJS_Object * pJSObject)
- : CJS_EmbedObj(pJSObject),
- m_bCalculate(true),
- m_bRuntimeHighLight(false)
-{
-}
-
-app::~app(void)
-{
- for (int i=0,sz=m_aTimer.GetSize(); i<sz; i++)
- delete m_aTimer[i];
+IMPLEMENT_JS_CLASS(CJS_App, app)
+
+app::app(CJS_Object* pJSObject)
+ : CJS_EmbedObj(pJSObject), m_bCalculate(true), m_bRuntimeHighLight(false) {}
+
+app::~app(void) {
+ for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++)
+ delete m_aTimer[i];
+
+ m_aTimer.RemoveAll();
+}
+
+FX_BOOL app::activeDocs(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ CPDFDoc_Environment* pApp = pContext->GetReaderApp();
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument();
+ CJS_Array aDocs(pRuntime->GetIsolate());
+ if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) {
+ CJS_Document* pJSDocument = NULL;
+ if (pDoc == pCurDoc) {
+ JSFXObject pObj = JS_GetThisObj(*pRuntime);
+ if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"Document"))
+ pJSDocument =
+ (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(), pObj);
+ } else {
+ JSFXObject pObj = JS_NewFxDynamicObj(
+ *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Document"));
+ pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(), pObj);
+ ASSERT(pJSDocument != NULL);
+ }
+ aDocs.SetElement(0, CJS_Value(pRuntime->GetIsolate(), pJSDocument));
+ }
+ if (aDocs.GetLength() > 0)
+ vp << aDocs;
+ else
+ vp.SetNull();
- m_aTimer.RemoveAll();
+ return TRUE;
}
-FX_BOOL app::activeDocs(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())
- return FALSE;
+FX_BOOL app::calculate(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ bool bVP;
+ vp >> bVP;
+ m_bCalculate = (FX_BOOL)bVP;
- CJS_Context* pContext = (CJS_Context *)cc;
+ CJS_Context* pContext = (CJS_Context*)cc;
CPDFDoc_Environment* pApp = pContext->GetReaderApp();
CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument();
CJS_Array aDocs(pRuntime->GetIsolate());
if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument())
+ pDoc->GetInterForm()->EnableCalculate((FX_BOOL)m_bCalculate);
+ } else {
+ vp << (bool)m_bCalculate;
+ }
+ return TRUE;
+}
+
+FX_BOOL app::formsVersion(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << JS_NUM_FORMSVERSION;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+FX_BOOL app::viewerType(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << L"unknown";
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+FX_BOOL app::viewerVariation(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << JS_STR_VIEWERVARIATION;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+FX_BOOL app::viewerVersion(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << JS_STR_VIEWERVERSION;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+FX_BOOL app::platform(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << JS_STR_PLATFORM;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+FX_BOOL app::language(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsGetting()) {
+ vp << JS_STR_LANGUANGE;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+// creates a new fdf object that contains no data
+// comment: need reader support
+// note:
+// CFDF_Document * CPDFDoc_Environment::NewFDF();
+FX_BOOL app::newFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
+}
+// opens a specified pdf document and returns its document object
+// comment:need reader support
+// note: as defined in js reference, the proto of this function's fourth
+// parmeters, how old an fdf document while do not show it.
+// CFDF_Document * CPDFDoc_Environment::OpenFDF(string strPath,bool bUserConv);
+
+FX_BOOL app::openFDF(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
+}
+
+FX_BOOL app::alert(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ int iSize = params.size();
+ if (iSize < 1)
+ return FALSE;
+
+ CFX_WideString swMsg = L"";
+ CFX_WideString swTitle = L"";
+ int iIcon = 0;
+ int iType = 0;
+
+ v8::Isolate* isolate = GetIsolate(cc);
+
+ if (iSize == 1) {
+ if (params[0].GetType() == VT_object) {
+ JSObject pObj = params[0].ToV8Object();
+ {
+ v8::Local<v8::Value> pValue =
+ JS_GetObjectElement(isolate, pObj, L"cMsg");
+ swMsg = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cTitle");
+ swTitle = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"nIcon");
+ iIcon = CJS_Value(isolate, pValue, VT_unknown).ToInt();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"nType");
+ iType = CJS_Value(isolate, pValue, VT_unknown).ToInt();
+ }
+
+ if (swMsg == L"") {
+ CJS_Array carray(isolate);
+ if (params[0].ConvertToArray(carray)) {
+ int iLenth = carray.GetLength();
+ CJS_Value* pValue = new CJS_Value(isolate);
+ // if (iLenth == 1)
+ // pValue = new
+ //CJS_Value(isolate);
+ // else if (iLenth > 1)
+ // pValue = new
+ //CJS_Value[iLenth];
+
+ for (int i = 0; i < iLenth; i++) {
+ carray.GetElement(i, *pValue);
+ swMsg += (*pValue).ToCFXWideString();
+ if (i < iLenth - 1)
+ swMsg += L", ";
+ }
+
+ delete pValue;
+ }
+ }
+
+ if (swTitle == L"")
+ swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
+ } else if (params[0].GetType() == VT_boolean) {
+ FX_BOOL bGet = params[0].ToBool();
+ if (bGet)
+ swMsg = L"true";
+ else
+ swMsg = L"false";
+
+ swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
+ } else {
+ swMsg = params[0].ToCFXWideString();
+ swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
+ }
+ } else {
+ if (params[0].GetType() == VT_boolean) {
+ FX_BOOL bGet = params[0].ToBool();
+ if (bGet)
+ swMsg = L"true";
+ else
+ swMsg = L"false";
+ } else {
+ swMsg = params[0].ToCFXWideString();
+ }
+ swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
+
+ for (int i = 1; i < iSize; i++) {
+ if (i == 1)
+ iIcon = params[i].ToInt();
+ if (i == 2)
+ iType = params[i].ToInt();
+ if (i == 3)
+ swTitle = params[i].ToCFXWideString();
+ }
+ }
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+ pRuntime->BeginBlock();
+ vRet = MsgBox(pRuntime->GetReaderApp(), JSGetPageView(cc), swMsg.c_str(),
+ swTitle.c_str(), iType, iIcon);
+ pRuntime->EndBlock();
+
+ return TRUE;
+}
+
+FX_BOOL app::beep(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ if (params.size() == 1) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
+ pEnv->JS_appBeep(params[0].ToInt());
+ return TRUE;
+ }
+
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+}
+
+FX_BOOL app::findComponent(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
+}
+
+FX_BOOL app::popUpMenuEx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
+}
+
+FX_BOOL app::fs(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) {
+ return FALSE;
+}
+
+FX_BOOL app::setInterval(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ if (params.size() > 2 || params.size() == 0) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ CFX_WideString script = params.size() > 0 ? params[0].ToCFXWideString() : L"";
+ if (script.IsEmpty()) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE);
+ return TRUE;
+ }
+
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ FX_DWORD dwInterval = params.size() > 1 ? params[1].ToInt() : 1000;
+
+ CPDFDoc_Environment* pApp = pRuntime->GetReaderApp();
+ ASSERT(pApp);
+ CJS_Timer* pTimer = new CJS_Timer(this, pApp);
+ m_aTimer.Add(pTimer);
+
+ pTimer->SetType(0);
+ pTimer->SetRuntime(pRuntime);
+ pTimer->SetJScript(script);
+ pTimer->SetTimeOut(0);
+ // pTimer->SetStartTime(GetTickCount());
+ pTimer->SetJSTimer(dwInterval);
+
+ JSFXObject pRetObj = JS_NewFxDynamicObj(
+ *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
+
+ CJS_TimerObj* pJS_TimerObj =
+ (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
+ ASSERT(pJS_TimerObj != NULL);
+
+ TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
+ ASSERT(pTimerObj != NULL);
+
+ pTimerObj->SetTimer(pTimer);
+
+ vRet = pRetObj;
+
+ return TRUE;
+}
+
+FX_BOOL app::setTimeOut(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ if (params.size() > 2 || params.size() == 0) {
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ CFX_WideString script = params.size() > 0 ? params[0].ToCFXWideString() : L"";
+ if (script.IsEmpty()) {
+ sError =
+ JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE);
+ return TRUE;
+ }
+
+ FX_DWORD dwTimeOut = params.size() > 1 ? params[1].ToInt() : 1000;
+
+ CPDFDoc_Environment* pApp = pRuntime->GetReaderApp();
+ ASSERT(pApp);
+
+ CJS_Timer* pTimer = new CJS_Timer(this, pApp);
+ m_aTimer.Add(pTimer);
+
+ pTimer->SetType(1);
+ pTimer->SetRuntime(pRuntime);
+ pTimer->SetJScript(script);
+ pTimer->SetTimeOut(dwTimeOut);
+ pTimer->SetJSTimer(dwTimeOut);
+
+ JSFXObject pRetObj = JS_NewFxDynamicObj(
+ *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
+
+ CJS_TimerObj* pJS_TimerObj =
+ (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
+ ASSERT(pJS_TimerObj != NULL);
+
+ TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
+ ASSERT(pTimerObj != NULL);
+
+ pTimerObj->SetTimer(pTimer);
+
+ vRet = pRetObj;
+
+ return TRUE;
+}
+
+FX_BOOL app::clearTimeOut(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ if (params[0].GetType() == VT_fxobject) {
+ JSFXObject pObj = params[0].ToV8Object();
{
- CJS_Document* pJSDocument = NULL;
- if (pDoc == pCurDoc)
- {
- JSFXObject pObj = JS_GetThisObj(*pRuntime);
- if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"Document"))
- pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(),pObj);
+ if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) {
+ if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
+ if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
+ if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
+ pTimer->KillJSTimer();
+
+ for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) {
+ if (m_aTimer[i] == pTimer) {
+ m_aTimer.RemoveAt(i);
+ break;
+ }
+ }
+
+ delete pTimer;
+ pTimerObj->SetTimer(NULL);
+ }
+ }
}
- else
- {
- JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime,L"Document"));
- pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(),pObj);
- ASSERT(pJSDocument != NULL);
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+FX_BOOL app::clearInterval(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
+
+ if (params.size() != 1) {
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
+
+ if (params[0].GetType() == VT_fxobject) {
+ JSFXObject pObj = params[0].ToV8Object();
+ {
+ if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) {
+ if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
+ if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
+ if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
+ pTimer->KillJSTimer();
+
+ for (int i = 0, sz = m_aTimer.GetSize(); i < sz; i++) {
+ if (m_aTimer[i] == pTimer) {
+ m_aTimer.RemoveAt(i);
+ break;
+ }
+ }
+
+ delete pTimer;
+ pTimerObj->SetTimer(NULL);
+ }
+ }
}
- aDocs.SetElement(0,CJS_Value(pRuntime->GetIsolate(),pJSDocument));
+ }
}
- if (aDocs.GetLength() > 0)
- vp << aDocs;
- else
- vp.SetNull();
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL app::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting())
- {
- bool bVP;
- vp >> bVP;
- m_bCalculate = (FX_BOOL)bVP;
+FX_BOOL app::execMenuItem(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
+}
+
+void app::TimerProc(CJS_Timer* pTimer) {
+ ASSERT(pTimer != NULL);
- CJS_Context* pContext = (CJS_Context*)cc;
- CPDFDoc_Environment* pApp = pContext->GetReaderApp();
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- CJS_Array aDocs(pRuntime->GetIsolate());
- if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument())
- pDoc->GetInterForm()->EnableCalculate((FX_BOOL)m_bCalculate);
- }
- else
- {
- vp << (bool)m_bCalculate;
- }
- return TRUE;
+ switch (pTimer->GetType()) {
+ case 0: // interval
+ RunJsScript(pTimer->GetRuntime(), pTimer->GetJScript());
+ break;
+ case 1:
+ if (pTimer->GetTimeOut() > 0) {
+ RunJsScript(pTimer->GetRuntime(), pTimer->GetJScript());
+ pTimer->KillJSTimer();
+ }
+ break;
+ }
}
-
-FX_BOOL app::formsVersion(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << JS_NUM_FORMSVERSION;
- return TRUE;
- }
-
- return FALSE;
-}
-
-FX_BOOL app::viewerType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << L"unknown";
- return TRUE;
- }
-
- return FALSE;
-}
-
-FX_BOOL app::viewerVariation(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << JS_STR_VIEWERVARIATION;
- return TRUE;
- }
-
- return FALSE;
-}
-
-FX_BOOL app::viewerVersion(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << JS_STR_VIEWERVERSION;
- return TRUE;
- }
-
- return FALSE;
-}
-
-FX_BOOL app::platform(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << JS_STR_PLATFORM;
- return TRUE;
- }
-
- return FALSE;
-}
-
-FX_BOOL app::language(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsGetting())
- {
- vp << JS_STR_LANGUANGE;
- return TRUE;
- }
-
- return FALSE;
-}
-
-//creates a new fdf object that contains no data
-//comment: need reader support
-//note:
-//CFDF_Document * CPDFDoc_Environment::NewFDF();
-FX_BOOL app::newFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
-}
-//opens a specified pdf document and returns its document object
-//comment:need reader support
-//note: as defined in js reference, the proto of this function's fourth parmeters, how old an fdf document while do not show it.
-//CFDF_Document * CPDFDoc_Environment::OpenFDF(string strPath,bool bUserConv);
-
-FX_BOOL app::openFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
-}
-
-FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- int iSize = params.size();
- if (iSize < 1)
- return FALSE;
-
- CFX_WideString swMsg = L"";
- CFX_WideString swTitle = L"";
- int iIcon = 0;
- int iType = 0;
-
- v8::Isolate* isolate = GetIsolate(cc);
-
- if (iSize == 1)
- {
- if (params[0].GetType() == VT_object)
- {
- JSObject pObj = params[0].ToV8Object();
- {
- v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"cMsg");
- swMsg = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate, pObj, L"cTitle");
- swTitle = CJS_Value(isolate, pValue, VT_unknown).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate, pObj, L"nIcon");
- iIcon = CJS_Value(isolate, pValue, VT_unknown).ToInt();
-
- pValue = JS_GetObjectElement(isolate, pObj, L"nType");
- iType = CJS_Value(isolate, pValue, VT_unknown).ToInt();
- }
-
- if (swMsg == L"")
- {
- CJS_Array carray(isolate);
- if (params[0].ConvertToArray(carray))
- {
- int iLenth = carray.GetLength();
- CJS_Value* pValue = new CJS_Value(isolate);
-// if (iLenth == 1)
-// pValue = new CJS_Value(isolate);
-// else if (iLenth > 1)
-// pValue = new CJS_Value[iLenth];
-
- for(int i = 0; i < iLenth; i++)
- {
- carray.GetElement(i, *pValue);
- swMsg += (*pValue).ToCFXWideString();
- if (i < iLenth - 1)
- swMsg += L", ";
- }
-
- delete pValue;
- }
- }
-
- if (swTitle == L"")
- swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
- }
- else if (params[0].GetType() == VT_boolean)
- {
- FX_BOOL bGet = params[0].ToBool();
- if (bGet)
- swMsg = L"true";
- else
- swMsg = L"false";
-
- swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
- }
- else
- {
- swMsg = params[0].ToCFXWideString();
- swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
- }
- }
- else
- {
- if (params[0].GetType() == VT_boolean)
- {
- FX_BOOL bGet = params[0].ToBool();
- if (bGet)
- swMsg = L"true";
- else
- swMsg = L"false";
- }
- else
- {
- swMsg = params[0].ToCFXWideString();
- }
- swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
-
- for(int i = 1;i<iSize;i++)
- {
- if (i == 1)
- iIcon = params[i].ToInt();
- if (i == 2)
- iType = params[i].ToInt();
- if (i == 3)
- swTitle = params[i].ToCFXWideString();
- }
- }
-
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
- pRuntime->BeginBlock();
- vRet = MsgBox(pRuntime->GetReaderApp(), JSGetPageView(cc), swMsg.c_str(), swTitle.c_str(), iType, iIcon);
- pRuntime->EndBlock();
-
- return TRUE;
-}
-
-
-FX_BOOL app::beep(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- if (params.size() == 1)
- {
- CJS_Context* pContext = (CJS_Context*)cc;
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- CPDFDoc_Environment * pEnv = pRuntime->GetReaderApp();
- pEnv->JS_appBeep(params[0].ToInt());
- return TRUE;
- }
-
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
- return FALSE;
-}
-
-FX_BOOL app::findComponent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
-}
-
-FX_BOOL app::popUpMenuEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
-}
-
-FX_BOOL app::fs(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return FALSE;
-}
-
-FX_BOOL app::setInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- if (params.size() > 2 || params.size() == 0)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- CFX_WideString script = params.size() > 0 ? params[0].ToCFXWideString() : L"";
- if (script.IsEmpty())
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE);
- return TRUE;
- }
-
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- FX_DWORD dwInterval = params.size() > 1 ? params[1].ToInt() : 1000;
-
- CPDFDoc_Environment* pApp = pRuntime->GetReaderApp();
- ASSERT(pApp);
- CJS_Timer* pTimer = new CJS_Timer(this, pApp);
- m_aTimer.Add(pTimer);
-
- pTimer->SetType(0);
- pTimer->SetRuntime(pRuntime);
- pTimer->SetJScript(script);
- pTimer->SetTimeOut(0);
-// pTimer->SetStartTime(GetTickCount());
- pTimer->SetJSTimer(dwInterval);
-
- JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
-
- CJS_TimerObj* pJS_TimerObj = (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(),pRetObj);
- ASSERT(pJS_TimerObj != NULL);
-
- TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
- ASSERT(pTimerObj != NULL);
-
- pTimerObj->SetTimer(pTimer);
-
- vRet = pRetObj;
-
- return TRUE;
-}
-
-FX_BOOL app::setTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- if (params.size() > 2 || params.size() == 0)
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- CFX_WideString script = params.size() > 0 ? params[0].ToCFXWideString() : L"";
- if (script.IsEmpty())
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSAFNUMBER_KEYSTROKE);
- return TRUE;
- }
-
- FX_DWORD dwTimeOut = params.size() > 1 ? params[1].ToInt() : 1000;
-
- CPDFDoc_Environment* pApp = pRuntime->GetReaderApp();
- ASSERT(pApp);
-
- CJS_Timer* pTimer = new CJS_Timer(this, pApp);
- m_aTimer.Add(pTimer);
-
- pTimer->SetType(1);
- pTimer->SetRuntime(pRuntime);
- pTimer->SetJScript(script);
- pTimer->SetTimeOut(dwTimeOut);
- pTimer->SetJSTimer(dwTimeOut);
-
- JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
-
- CJS_TimerObj* pJS_TimerObj = (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(),pRetObj);
- ASSERT(pJS_TimerObj != NULL);
-
- TimerObj* pTimerObj = (TimerObj*)pJS_TimerObj->GetEmbedObject();
- ASSERT(pTimerObj != NULL);
-
- pTimerObj->SetTimer(pTimer);
-
- vRet = pRetObj;
-
- return TRUE;
-}
-
-FX_BOOL app::clearTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- if (params.size() != 1)
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- if (params[0].GetType() == VT_fxobject)
- {
- JSFXObject pObj = params[0].ToV8Object();
- {
- if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj"))
- {
- if (CJS_Object* pJSObj = params[0].ToCJSObject())
- {
- if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject())
- {
- if (CJS_Timer* pTimer = pTimerObj->GetTimer())
- {
- pTimer->KillJSTimer();
-
- for (int i=0,sz=m_aTimer.GetSize(); i<sz; i++)
- {
- if (m_aTimer[i] == pTimer)
- {
- m_aTimer.RemoveAt(i);
- break;
- }
- }
-
- delete pTimer;
- pTimerObj->SetTimer(NULL);
- }
- }
- }
- }
- }
- }
-
- return TRUE;
-}
-
-FX_BOOL app::clearInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
-
- if (params.size() != 1)
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPARAMERROR);
- return FALSE;
- }
-
- if (params[0].GetType() == VT_fxobject)
- {
- JSFXObject pObj = params[0].ToV8Object();
- {
- if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj"))
- {
- if (CJS_Object* pJSObj = params[0].ToCJSObject())
- {
- if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject())
- {
- if (CJS_Timer* pTimer = pTimerObj->GetTimer())
- {
- pTimer->KillJSTimer();
-
- for (int i=0,sz=m_aTimer.GetSize(); i<sz; i++)
- {
- if (m_aTimer[i] == pTimer)
- {
- m_aTimer.RemoveAt(i);
- break;
- }
- }
-
- delete pTimer;
- pTimerObj->SetTimer(NULL);
- }
- }
- }
- }
- }
- }
-
- return TRUE;
-}
-
-FX_BOOL app::execMenuItem(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
-}
-
-void app::TimerProc(CJS_Timer* pTimer)
-{
- ASSERT(pTimer != NULL);
-
- switch (pTimer->GetType())
- {
- case 0: //interval
- RunJsScript(pTimer->GetRuntime(), pTimer->GetJScript());
- break;
- case 1:
- if (pTimer->GetTimeOut() > 0)
- {
- RunJsScript(pTimer->GetRuntime(), pTimer->GetJScript());
- pTimer->KillJSTimer();
- }
- break;
- }
-
-}
-
-void app::RunJsScript(CJS_Runtime* pRuntime,const CFX_WideString& wsScript)
-{
- ASSERT(pRuntime != NULL);
-
- if (!pRuntime->IsBlocking())
- {
- IFXJS_Context* pContext = pRuntime->NewContext();
- ASSERT(pContext != NULL);
- pContext->OnExternal_Exec();
- CFX_WideString wtInfo;
- pContext->RunScript(wsScript,wtInfo);
- pRuntime->ReleaseContext(pContext);
- }
-}
-
-FX_BOOL app::goBack(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+
+void app::RunJsScript(CJS_Runtime* pRuntime, const CFX_WideString& wsScript) {
+ ASSERT(pRuntime != NULL);
+
+ if (!pRuntime->IsBlocking()) {
+ IFXJS_Context* pContext = pRuntime->NewContext();
+ ASSERT(pContext != NULL);
+ pContext->OnExternal_Exec();
+ CFX_WideString wtInfo;
+ pContext->RunScript(wsScript, wtInfo);
+ pRuntime->ReleaseContext(pContext);
+ }
+}
+
+FX_BOOL app::goBack(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Not supported.
return TRUE;
}
-FX_BOOL app::goForward(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL app::goForward(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Not supported.
return TRUE;
}
-FX_BOOL app::mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- v8::Isolate* isolate = GetIsolate(cc);
+FX_BOOL app::mailMsg(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ v8::Isolate* isolate = GetIsolate(cc);
- FX_BOOL bUI = TRUE;
- CFX_WideString cTo = L"";
- CFX_WideString cCc = L"";
- CFX_WideString cBcc = L"";
- CFX_WideString cSubject = L"";
- CFX_WideString cMsg = L"";
+ FX_BOOL bUI = TRUE;
+ CFX_WideString cTo = L"";
+ CFX_WideString cCc = L"";
+ CFX_WideString cBcc = L"";
+ CFX_WideString cSubject = L"";
+ CFX_WideString cMsg = L"";
- if (params.size() < 1)
- return FALSE;
+ if (params.size() < 1)
+ return FALSE;
- if (params[0].GetType() == VT_object)
- {
- JSObject pObj = params[0].ToV8Object();
+ if (params[0].GetType() == VT_object) {
+ JSObject pObj = params[0].ToV8Object();
- v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"bUI");
- bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
+ v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"bUI");
+ bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
- pValue = JS_GetObjectElement(isolate, pObj, L"cTo");
- cTo = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ pValue = JS_GetObjectElement(isolate, pObj, L"cTo");
+ cTo = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- pValue = JS_GetObjectElement(isolate, pObj, L"cCc");
- cCc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ pValue = JS_GetObjectElement(isolate, pObj, L"cCc");
+ cCc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- pValue = JS_GetObjectElement(isolate, pObj, L"cBcc");
- cBcc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ pValue = JS_GetObjectElement(isolate, pObj, L"cBcc");
+ cBcc = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- pValue = JS_GetObjectElement(isolate, pObj, L"cSubject");
- cSubject = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ pValue = JS_GetObjectElement(isolate, pObj, L"cSubject");
+ cSubject =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- pValue = JS_GetObjectElement(isolate, pObj, L"cMsg");
- cMsg = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
- } else {
- if (params.size() < 2)
- return FALSE;
+ pValue = JS_GetObjectElement(isolate, pObj, L"cMsg");
+ cMsg = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+ } else {
+ if (params.size() < 2)
+ return FALSE;
- bUI = params[0].ToBool();
- cTo = params[1].ToCFXWideString();
+ bUI = params[0].ToBool();
+ cTo = params[1].ToCFXWideString();
- if (params.size() >= 3)
- cCc = params[2].ToCFXWideString();
- if (params.size() >= 4)
- cBcc = params[3].ToCFXWideString();
- if (params.size() >= 5)
- cSubject = params[4].ToCFXWideString();
- if (params.size() >= 6)
- cMsg = params[5].ToCFXWideString();
- }
+ if (params.size() >= 3)
+ cCc = params[2].ToCFXWideString();
+ if (params.size() >= 4)
+ cBcc = params[3].ToCFXWideString();
+ if (params.size() >= 5)
+ cSubject = params[4].ToCFXWideString();
+ if (params.size() >= 6)
+ cMsg = params[5].ToCFXWideString();
+ }
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- CPDFDoc_Environment* pApp = pContext->GetReaderApp();
- ASSERT(pApp != NULL);
+ CPDFDoc_Environment* pApp = pContext->GetReaderApp();
+ ASSERT(pApp != NULL);
- pRuntime->BeginBlock();
- pApp->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
- pRuntime->EndBlock();
+ pRuntime->BeginBlock();
+ pApp->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(),
+ cBcc.c_str(), cMsg.c_str());
+ pRuntime->EndBlock();
- return FALSE;
+ return FALSE;
}
-FX_BOOL app::launchURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL app::launchURL(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-FX_BOOL app::runtimeHighlight(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting())
- {
- vp>>m_bRuntimeHighLight;
- }
- else
- {
- vp<<m_bRuntimeHighLight;
- }
+FX_BOOL app::runtimeHighlight(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ vp >> m_bRuntimeHighLight;
+ } else {
+ vp << m_bRuntimeHighLight;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL app::fullscreen(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL app::fullscreen(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL app::popUpMenu(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL app::popUpMenu(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
}
-
-FX_BOOL app::browseForDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL app::browseForDoc(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-CFX_WideString app::SysPathToPDFPath(const CFX_WideString& sOldPath)
-{
- CFX_WideString sRet = L"/";
-
- for (int i=0,sz=sOldPath.GetLength(); i<sz; i++)
- {
- wchar_t c = sOldPath.GetAt(i);
- if (c == L':')
- {
- }
- else
- {
- if (c == L'\\')
- {
- sRet += L"/";
- }
- else
- {
- sRet += c;
- }
- }
- }
-
- return sRet;
-}
-
-FX_BOOL app::newDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
-}
-
-FX_BOOL app::openDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return FALSE;
-}
-
-FX_BOOL app::response(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CFX_WideString swQuestion = L"";
- CFX_WideString swLabel = L"";
- CFX_WideString swTitle = L"PDF";
- CFX_WideString swDefault = L"";
- bool bPassWord = false;
-
- v8::Isolate* isolate = GetIsolate(cc);
-
- int iLength = params.size();
- if (iLength > 0 && params[0].GetType() == VT_object)
- {
- JSObject pObj = params[0].ToV8Object();
- v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate,pObj,L"cQuestion");
- swQuestion = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj,L"cTitle");
- swTitle = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj,L"cDefault");
- swDefault = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj,L"cLabel");
- swLabel = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString();
-
- pValue = JS_GetObjectElement(isolate,pObj,L"bPassword");
- bPassWord = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToBool();
- }
- else
- {
- switch(iLength)
- {
- case 5:
- swLabel = params[4].ToCFXWideString();
- // FALLTHROUGH
- case 4:
- bPassWord = params[3].ToBool();
- // FALLTHROUGH
- case 3:
- swDefault = params[2].ToCFXWideString();
- // FALLTHROUGH
- case 2:
- swTitle = params[1].ToCFXWideString();
- // FALLTHROUGH
- case 1:
- swQuestion = params[0].ToCFXWideString();
- // FALLTHROUGH
- default:
- break;
- }
- }
-
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
-
- CPDFDoc_Environment* pApp = pContext->GetReaderApp();
- ASSERT(pApp != NULL);
-
- const int MAX_INPUT_BYTES = 2048;
- nonstd::unique_ptr<char[]> pBuff(new char[MAX_INPUT_BYTES + 2]);
- memset(pBuff.get(), 0, MAX_INPUT_BYTES + 2);
- int nLengthBytes = pApp->JS_appResponse(swQuestion.c_str(),
- swTitle.c_str(),
- swDefault.c_str(),
- swLabel.c_str(),
- bPassWord,
- pBuff.get(),
- MAX_INPUT_BYTES);
- if (nLengthBytes <= 0) {
- vRet.SetNull();
- return FALSE;
- }
- nLengthBytes = std::min(nLengthBytes, MAX_INPUT_BYTES);
+CFX_WideString app::SysPathToPDFPath(const CFX_WideString& sOldPath) {
+ CFX_WideString sRet = L"/";
- CFX_WideString ret_string =
- CFX_WideString::FromUTF16LE((unsigned short*)pBuff.get(),
- nLengthBytes / sizeof(unsigned short));
- vRet = ret_string.c_str();
- return TRUE;
+ for (int i = 0, sz = sOldPath.GetLength(); i < sz; i++) {
+ wchar_t c = sOldPath.GetAt(i);
+ if (c == L':') {
+ } else {
+ if (c == L'\\') {
+ sRet += L"/";
+ } else {
+ sRet += c;
+ }
+ }
+ }
+
+ return sRet;
+}
+
+FX_BOOL app::newDoc(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
+}
+
+FX_BOOL app::openDoc(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return FALSE;
+}
+
+FX_BOOL app::response(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CFX_WideString swQuestion = L"";
+ CFX_WideString swLabel = L"";
+ CFX_WideString swTitle = L"PDF";
+ CFX_WideString swDefault = L"";
+ bool bPassWord = false;
+
+ v8::Isolate* isolate = GetIsolate(cc);
+
+ int iLength = params.size();
+ if (iLength > 0 && params[0].GetType() == VT_object) {
+ JSObject pObj = params[0].ToV8Object();
+ v8::Local<v8::Value> pValue =
+ JS_GetObjectElement(isolate, pObj, L"cQuestion");
+ swQuestion =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cTitle");
+ swTitle =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cDefault");
+ swDefault =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"cLabel");
+ swLabel =
+ CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
+
+ pValue = JS_GetObjectElement(isolate, pObj, L"bPassword");
+ bPassWord = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
+ } else {
+ switch (iLength) {
+ case 5:
+ swLabel = params[4].ToCFXWideString();
+ // FALLTHROUGH
+ case 4:
+ bPassWord = params[3].ToBool();
+ // FALLTHROUGH
+ case 3:
+ swDefault = params[2].ToCFXWideString();
+ // FALLTHROUGH
+ case 2:
+ swTitle = params[1].ToCFXWideString();
+ // FALLTHROUGH
+ case 1:
+ swQuestion = params[0].ToCFXWideString();
+ // FALLTHROUGH
+ default:
+ break;
+ }
+ }
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+
+ CPDFDoc_Environment* pApp = pContext->GetReaderApp();
+ ASSERT(pApp != NULL);
+
+ const int MAX_INPUT_BYTES = 2048;
+ nonstd::unique_ptr<char[]> pBuff(new char[MAX_INPUT_BYTES + 2]);
+ memset(pBuff.get(), 0, MAX_INPUT_BYTES + 2);
+ int nLengthBytes = pApp->JS_appResponse(
+ swQuestion.c_str(), swTitle.c_str(), swDefault.c_str(), swLabel.c_str(),
+ bPassWord, pBuff.get(), MAX_INPUT_BYTES);
+ if (nLengthBytes <= 0) {
+ vRet.SetNull();
+ return FALSE;
+ }
+ nLengthBytes = std::min(nLengthBytes, MAX_INPUT_BYTES);
+
+ CFX_WideString ret_string = CFX_WideString::FromUTF16LE(
+ (unsigned short*)pBuff.get(), nLengthBytes / sizeof(unsigned short));
+ vRet = ret_string.c_str();
+ return TRUE;
}
-FX_BOOL app::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return FALSE;
+FX_BOOL app::media(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return FALSE;
}
-FX_BOOL app::execDialog(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL app::execDialog(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
diff --git a/fpdfsdk/src/javascript/color.cpp b/fpdfsdk/src/javascript/color.cpp
index a2bbadcd51..0659ab94a4 100644
--- a/fpdfsdk/src/javascript/color.cpp
+++ b/fpdfsdk/src/javascript/color.cpp
@@ -14,15 +14,14 @@
#include "../../include/javascript/JS_Context.h"
#include "../../include/javascript/JS_Runtime.h"
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- return pRuntime->GetIsolate();
+ return pRuntime->GetIsolate();
}
/* -------------------------- color -------------------------- */
@@ -30,149 +29,132 @@ BEGIN_JS_STATIC_CONST(CJS_Color)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_Color)
- JS_STATIC_PROP_ENTRY(black)
- JS_STATIC_PROP_ENTRY(blue)
- JS_STATIC_PROP_ENTRY(cyan)
- JS_STATIC_PROP_ENTRY(dkGray)
- JS_STATIC_PROP_ENTRY(gray)
- JS_STATIC_PROP_ENTRY(green)
- JS_STATIC_PROP_ENTRY(ltGray)
- JS_STATIC_PROP_ENTRY(magenta)
- JS_STATIC_PROP_ENTRY(red)
- JS_STATIC_PROP_ENTRY(transparent)
- JS_STATIC_PROP_ENTRY(white)
- JS_STATIC_PROP_ENTRY(yellow)
+JS_STATIC_PROP_ENTRY(black)
+JS_STATIC_PROP_ENTRY(blue)
+JS_STATIC_PROP_ENTRY(cyan)
+JS_STATIC_PROP_ENTRY(dkGray)
+JS_STATIC_PROP_ENTRY(gray)
+JS_STATIC_PROP_ENTRY(green)
+JS_STATIC_PROP_ENTRY(ltGray)
+JS_STATIC_PROP_ENTRY(magenta)
+JS_STATIC_PROP_ENTRY(red)
+JS_STATIC_PROP_ENTRY(transparent)
+JS_STATIC_PROP_ENTRY(white)
+JS_STATIC_PROP_ENTRY(yellow)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Color)
- JS_STATIC_METHOD_ENTRY(convert)
- JS_STATIC_METHOD_ENTRY(equal)
+JS_STATIC_METHOD_ENTRY(convert)
+JS_STATIC_METHOD_ENTRY(equal)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_Color,color)
-
-color::color(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject)
-{
- m_crTransparent = CPWL_Color(COLORTYPE_TRANSPARENT);
- m_crBlack = CPWL_Color(COLORTYPE_GRAY, 0);
- m_crWhite = CPWL_Color(COLORTYPE_GRAY, 1);
- m_crRed = CPWL_Color(COLORTYPE_RGB, 1, 0 ,0);
- m_crGreen = CPWL_Color(COLORTYPE_RGB, 0, 1 ,0);
- m_crBlue = CPWL_Color(COLORTYPE_RGB, 0, 0 ,1);
- m_crCyan = CPWL_Color(COLORTYPE_CMYK, 1, 0 ,0, 0);
- m_crMagenta = CPWL_Color(COLORTYPE_CMYK, 0, 1 ,0, 0);
- m_crYellow = CPWL_Color(COLORTYPE_CMYK, 0, 0 ,1, 0);
- m_crDKGray = CPWL_Color(COLORTYPE_GRAY, 0.25);
- m_crGray = CPWL_Color(COLORTYPE_GRAY, 0.5);
- m_crLTGray = CPWL_Color(COLORTYPE_GRAY, 0.75);
+IMPLEMENT_JS_CLASS(CJS_Color, color)
+
+color::color(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {
+ m_crTransparent = CPWL_Color(COLORTYPE_TRANSPARENT);
+ m_crBlack = CPWL_Color(COLORTYPE_GRAY, 0);
+ m_crWhite = CPWL_Color(COLORTYPE_GRAY, 1);
+ m_crRed = CPWL_Color(COLORTYPE_RGB, 1, 0, 0);
+ m_crGreen = CPWL_Color(COLORTYPE_RGB, 0, 1, 0);
+ m_crBlue = CPWL_Color(COLORTYPE_RGB, 0, 0, 1);
+ m_crCyan = CPWL_Color(COLORTYPE_CMYK, 1, 0, 0, 0);
+ m_crMagenta = CPWL_Color(COLORTYPE_CMYK, 0, 1, 0, 0);
+ m_crYellow = CPWL_Color(COLORTYPE_CMYK, 0, 0, 1, 0);
+ m_crDKGray = CPWL_Color(COLORTYPE_GRAY, 0.25);
+ m_crGray = CPWL_Color(COLORTYPE_GRAY, 0.5);
+ m_crLTGray = CPWL_Color(COLORTYPE_GRAY, 0.75);
}
-color::~color(void)
-{
+color::~color(void) {}
+
+void color::ConvertPWLColorToArray(const CPWL_Color& color, CJS_Array& array) {
+ switch (color.nColorType) {
+ case COLORTYPE_TRANSPARENT:
+ array.SetElement(0, CJS_Value(array.GetIsolate(), "T"));
+ break;
+ case COLORTYPE_GRAY:
+ array.SetElement(0, CJS_Value(array.GetIsolate(), "G"));
+ array.SetElement(1, CJS_Value(array.GetIsolate(), color.fColor1));
+ break;
+ case COLORTYPE_RGB:
+ array.SetElement(0, CJS_Value(array.GetIsolate(), "RGB"));
+ array.SetElement(1, CJS_Value(array.GetIsolate(), color.fColor1));
+ array.SetElement(2, CJS_Value(array.GetIsolate(), color.fColor2));
+ array.SetElement(3, CJS_Value(array.GetIsolate(), color.fColor3));
+ break;
+ case COLORTYPE_CMYK:
+ array.SetElement(0, CJS_Value(array.GetIsolate(), "CMYK"));
+ array.SetElement(1, CJS_Value(array.GetIsolate(), color.fColor1));
+ array.SetElement(2, CJS_Value(array.GetIsolate(), color.fColor2));
+ array.SetElement(3, CJS_Value(array.GetIsolate(), color.fColor3));
+ array.SetElement(4, CJS_Value(array.GetIsolate(), color.fColor4));
+ break;
+ }
}
-void color::ConvertPWLColorToArray(const CPWL_Color& color, CJS_Array& array)
-{
- switch (color.nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- array.SetElement(0, CJS_Value(array.GetIsolate(), "T"));
- break;
- case COLORTYPE_GRAY:
- array.SetElement(0, CJS_Value(array.GetIsolate(),"G"));
- array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
- break;
- case COLORTYPE_RGB:
- array.SetElement(0, CJS_Value(array.GetIsolate(),"RGB"));
- array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
- array.SetElement(2, CJS_Value(array.GetIsolate(),color.fColor2));
- array.SetElement(3, CJS_Value(array.GetIsolate(),color.fColor3));
- break;
- case COLORTYPE_CMYK:
- array.SetElement(0, CJS_Value(array.GetIsolate(),"CMYK"));
- array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
- array.SetElement(2, CJS_Value(array.GetIsolate(),color.fColor2));
- array.SetElement(3, CJS_Value(array.GetIsolate(),color.fColor3));
- array.SetElement(4, CJS_Value(array.GetIsolate(),color.fColor4));
- break;
- }
+void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) {
+ int nArrayLen = array.GetLength();
+ if (nArrayLen < 1)
+ return;
+
+ CJS_Value value(array.GetIsolate());
+ array.GetElement(0, value);
+ CFX_ByteString sSpace = value.ToCFXByteString();
+
+ double d1 = 0;
+ double d2 = 0;
+ double d3 = 0;
+ double d4 = 0;
+
+ if (nArrayLen > 1) {
+ array.GetElement(1, value);
+ d1 = value.ToDouble();
+ }
+
+ if (nArrayLen > 2) {
+ array.GetElement(2, value);
+ d2 = value.ToDouble();
+ }
+
+ if (nArrayLen > 3) {
+ array.GetElement(3, value);
+ d3 = value.ToDouble();
+ }
+
+ if (nArrayLen > 4) {
+ array.GetElement(4, value);
+ d4 = value.ToDouble();
+ }
+
+ if (sSpace == "T") {
+ color = CPWL_Color(COLORTYPE_TRANSPARENT);
+ } else if (sSpace == "G") {
+ color = CPWL_Color(COLORTYPE_GRAY, (FX_FLOAT)d1);
+ } else if (sSpace == "RGB") {
+ color = CPWL_Color(COLORTYPE_RGB, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3);
+ } else if (sSpace == "CMYK") {
+ color = CPWL_Color(COLORTYPE_CMYK, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3,
+ (FX_FLOAT)d4);
+ }
}
-void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color)
-{
- int nArrayLen = array.GetLength();
- if (nArrayLen < 1) return;
-
- CJS_Value value(array.GetIsolate());
- array.GetElement(0, value);
- CFX_ByteString sSpace = value.ToCFXByteString();
-
- double d1 = 0;
- double d2 = 0;
- double d3 = 0;
- double d4 = 0;
-
- if (nArrayLen > 1)
- {
- array.GetElement(1, value);
- d1 = value.ToDouble();
- }
-
- if (nArrayLen > 2)
- {
- array.GetElement(2, value);
- d2 = value.ToDouble();
- }
-
- if (nArrayLen > 3)
- {
- array.GetElement(3, value);
- d3 = value.ToDouble();
- }
-
- if (nArrayLen > 4)
- {
- array.GetElement(4, value);
- d4 = value.ToDouble();
- }
-
- if (sSpace == "T")
- {
- color = CPWL_Color(COLORTYPE_TRANSPARENT);
- }
- else if (sSpace == "G")
- {
- color = CPWL_Color(COLORTYPE_GRAY, (FX_FLOAT)d1);
- }
- else if (sSpace == "RGB")
- {
- color = CPWL_Color(COLORTYPE_RGB, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3);
- }
- else if (sSpace == "CMYK")
- {
- color = CPWL_Color(COLORTYPE_CMYK, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3, (FX_FLOAT)d4);
- }
-}
-
-#define JS_IMPLEMENT_COLORPROP(prop, var)\
-FX_BOOL color::prop(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)\
-{\
- CJS_Context* pContext = (CJS_Context*)cc;\
- v8::Isolate* isolate = pContext->GetJSRuntime()->GetIsolate();\
- if (vp.IsGetting())\
- {\
- CJS_Array array(isolate);\
- ConvertPWLColorToArray(var, array);\
- vp << array;\
- }\
- else\
- {\
- CJS_Array array(isolate);\
- if (!vp.ConvertToArray(array)) return FALSE;\
- ConvertArrayToPWLColor(array, var);\
- }\
- return TRUE;\
-}
+#define JS_IMPLEMENT_COLORPROP(prop, var) \
+ FX_BOOL color::prop(IFXJS_Context* cc, CJS_PropValue& vp, \
+ CFX_WideString& sError) { \
+ CJS_Context* pContext = (CJS_Context*)cc; \
+ v8::Isolate* isolate = pContext->GetJSRuntime()->GetIsolate(); \
+ if (vp.IsGetting()) { \
+ CJS_Array array(isolate); \
+ ConvertPWLColorToArray(var, array); \
+ vp << array; \
+ } else { \
+ CJS_Array array(isolate); \
+ if (!vp.ConvertToArray(array)) \
+ return FALSE; \
+ ConvertArrayToPWLColor(array, var); \
+ } \
+ return TRUE; \
+ }
JS_IMPLEMENT_COLORPROP(transparent, m_crTransparent)
JS_IMPLEMENT_COLORPROP(black, m_crBlack)
@@ -187,65 +169,66 @@ JS_IMPLEMENT_COLORPROP(dkGray, m_crDKGray)
JS_IMPLEMENT_COLORPROP(gray, m_crGray)
JS_IMPLEMENT_COLORPROP(ltGray, m_crLTGray)
-FX_BOOL color::convert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = GetIsolate(cc);
- int iSize = params.size();
- if (iSize < 2) return FALSE;
- CJS_Array aSource(isolate);
- if (!params[0].ConvertToArray(aSource)) return FALSE;
-
- CPWL_Color crSource;
- ConvertArrayToPWLColor(aSource, crSource);
-
- CFX_ByteString sDestSpace = params[1].ToCFXByteString();
- int nColorType = COLORTYPE_TRANSPARENT;
-
- if (sDestSpace == "T")
- {
- nColorType = COLORTYPE_TRANSPARENT;
- }
- else if (sDestSpace == "G")
- {
- nColorType = COLORTYPE_GRAY;
- }
- else if (sDestSpace == "RGB")
- {
- nColorType = COLORTYPE_RGB;
- }
- else if (sDestSpace == "CMYK")
- {
- nColorType = COLORTYPE_CMYK;
- }
-
- CJS_Array aDest(isolate);
- CPWL_Color crDest = crSource;
- crDest.ConvertColorType(nColorType);
- ConvertPWLColorToArray(crDest, aDest);
- vRet = aDest;
-
- return TRUE;
+FX_BOOL color::convert(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = GetIsolate(cc);
+ int iSize = params.size();
+ if (iSize < 2)
+ return FALSE;
+ CJS_Array aSource(isolate);
+ if (!params[0].ConvertToArray(aSource))
+ return FALSE;
+
+ CPWL_Color crSource;
+ ConvertArrayToPWLColor(aSource, crSource);
+
+ CFX_ByteString sDestSpace = params[1].ToCFXByteString();
+ int nColorType = COLORTYPE_TRANSPARENT;
+
+ if (sDestSpace == "T") {
+ nColorType = COLORTYPE_TRANSPARENT;
+ } else if (sDestSpace == "G") {
+ nColorType = COLORTYPE_GRAY;
+ } else if (sDestSpace == "RGB") {
+ nColorType = COLORTYPE_RGB;
+ } else if (sDestSpace == "CMYK") {
+ nColorType = COLORTYPE_CMYK;
+ }
+
+ CJS_Array aDest(isolate);
+ CPWL_Color crDest = crSource;
+ crDest.ConvertColorType(nColorType);
+ ConvertPWLColorToArray(crDest, aDest);
+ vRet = aDest;
+
+ return TRUE;
}
-FX_BOOL color::equal(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = GetIsolate(cc);
- if (params.size() < 2) return FALSE;
+FX_BOOL color::equal(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = GetIsolate(cc);
+ if (params.size() < 2)
+ return FALSE;
- CJS_Array array1(isolate), array2(isolate);
+ CJS_Array array1(isolate), array2(isolate);
- if (!params[0].ConvertToArray(array1)) return FALSE;
- if (!params[1].ConvertToArray(array2)) return FALSE;
+ if (!params[0].ConvertToArray(array1))
+ return FALSE;
+ if (!params[1].ConvertToArray(array2))
+ return FALSE;
- CPWL_Color color1;
- CPWL_Color color2;
+ CPWL_Color color1;
+ CPWL_Color color2;
- ConvertArrayToPWLColor(array1, color1);
- ConvertArrayToPWLColor(array2, color2);
+ ConvertArrayToPWLColor(array1, color1);
+ ConvertArrayToPWLColor(array2, color2);
- color1.ConvertColorType(color2.nColorType);
+ color1.ConvertColorType(color2.nColorType);
- vRet = color1 == color2;
- return TRUE;
+ vRet = color1 == color2;
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/javascript/console.cpp b/fpdfsdk/src/javascript/console.cpp
index ed9b1fbc56..cc64e1091b 100644
--- a/fpdfsdk/src/javascript/console.cpp
+++ b/fpdfsdk/src/javascript/console.cpp
@@ -22,45 +22,45 @@ BEGIN_JS_STATIC_PROP(CJS_Console)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Console)
- JS_STATIC_METHOD_ENTRY(clear)
- JS_STATIC_METHOD_ENTRY(hide)
- JS_STATIC_METHOD_ENTRY(println)
- JS_STATIC_METHOD_ENTRY(show)
+JS_STATIC_METHOD_ENTRY(clear)
+JS_STATIC_METHOD_ENTRY(hide)
+JS_STATIC_METHOD_ENTRY(println)
+JS_STATIC_METHOD_ENTRY(show)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_Console,console)
+IMPLEMENT_JS_CLASS(CJS_Console, console)
-console::console(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject)
-{
-}
+console::console(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
-console::~console()
-{
-}
+console::~console() {}
-FX_BOOL console::clear(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL console::clear(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL console::hide(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL console::hide(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-FX_BOOL console::println(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- if (params.size() < 1)
- {
- return FALSE;
- }
- return TRUE;
+FX_BOOL console::println(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ if (params.size() < 1) {
+ return FALSE;
+ }
+ return TRUE;
}
-FX_BOOL console::show(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- return TRUE;
+FX_BOOL console::show(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ return TRUE;
}
-
-
-
diff --git a/fpdfsdk/src/javascript/event.cpp b/fpdfsdk/src/javascript/event.cpp
index f57b1fb607..4bcdcce3a0 100644
--- a/fpdfsdk/src/javascript/event.cpp
+++ b/fpdfsdk/src/javascript/event.cpp
@@ -21,359 +21,359 @@ BEGIN_JS_STATIC_CONST(CJS_Event)
END_JS_STATIC_CONST()
BEGIN_JS_STATIC_PROP(CJS_Event)
- JS_STATIC_PROP_ENTRY(change)
- JS_STATIC_PROP_ENTRY(changeEx)
- JS_STATIC_PROP_ENTRY(commitKey)
- JS_STATIC_PROP_ENTRY(fieldFull)
- JS_STATIC_PROP_ENTRY(keyDown)
- JS_STATIC_PROP_ENTRY(modifier)
- JS_STATIC_PROP_ENTRY(name)
- JS_STATIC_PROP_ENTRY(rc)
- JS_STATIC_PROP_ENTRY(richChange)
- JS_STATIC_PROP_ENTRY(richChangeEx)
- JS_STATIC_PROP_ENTRY(richValue)
- JS_STATIC_PROP_ENTRY(selEnd)
- JS_STATIC_PROP_ENTRY(selStart)
- JS_STATIC_PROP_ENTRY(shift)
- JS_STATIC_PROP_ENTRY(source)
- JS_STATIC_PROP_ENTRY(target)
- JS_STATIC_PROP_ENTRY(targetName)
- JS_STATIC_PROP_ENTRY(type)
- JS_STATIC_PROP_ENTRY(value)
- JS_STATIC_PROP_ENTRY(willCommit)
+JS_STATIC_PROP_ENTRY(change)
+JS_STATIC_PROP_ENTRY(changeEx)
+JS_STATIC_PROP_ENTRY(commitKey)
+JS_STATIC_PROP_ENTRY(fieldFull)
+JS_STATIC_PROP_ENTRY(keyDown)
+JS_STATIC_PROP_ENTRY(modifier)
+JS_STATIC_PROP_ENTRY(name)
+JS_STATIC_PROP_ENTRY(rc)
+JS_STATIC_PROP_ENTRY(richChange)
+JS_STATIC_PROP_ENTRY(richChangeEx)
+JS_STATIC_PROP_ENTRY(richValue)
+JS_STATIC_PROP_ENTRY(selEnd)
+JS_STATIC_PROP_ENTRY(selStart)
+JS_STATIC_PROP_ENTRY(shift)
+JS_STATIC_PROP_ENTRY(source)
+JS_STATIC_PROP_ENTRY(target)
+JS_STATIC_PROP_ENTRY(targetName)
+JS_STATIC_PROP_ENTRY(type)
+JS_STATIC_PROP_ENTRY(value)
+JS_STATIC_PROP_ENTRY(willCommit)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Event)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_Event,event)
+IMPLEMENT_JS_CLASS(CJS_Event, event)
-event::event(CJS_Object * pJsObject) : CJS_EmbedObj(pJsObject)
-{
-}
+event::event(CJS_Object* pJsObject) : CJS_EmbedObj(pJsObject) {}
-event::~event(void)
-{
-}
+event::~event(void) {}
-FX_BOOL event::change(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- CFX_WideString &wChange = pEvent->Change();
- if (vp.IsSetting())
- {
- if (vp.GetType() == VT_string)
- vp >> wChange;
- }
- else
- {
- vp << wChange;
- }
- return TRUE;
+FX_BOOL event::change(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ CFX_WideString& wChange = pEvent->Change();
+ if (vp.IsSetting()) {
+ if (vp.GetType() == VT_string)
+ vp >> wChange;
+ } else {
+ vp << wChange;
+ }
+ return TRUE;
}
-FX_BOOL event::changeEx(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::changeEx(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->ChangeEx();
- return TRUE;
+ vp << pEvent->ChangeEx();
+ return TRUE;
}
-FX_BOOL event::commitKey(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::commitKey(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->CommitKey();
- return TRUE;
+ vp << pEvent->CommitKey();
+ return TRUE;
}
-FX_BOOL event::fieldFull(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (!vp.IsGetting() && wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0)
- return FALSE;
-
- if (pEvent->FieldFull())
- vp << TRUE;
- else
- vp << FALSE;
- return TRUE;
+FX_BOOL event::fieldFull(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (!vp.IsGetting() &&
+ wcscmp((const wchar_t*)pEvent->Name(), L"Keystroke") != 0)
+ return FALSE;
+
+ if (pEvent->FieldFull())
+ vp << TRUE;
+ else
+ vp << FALSE;
+ return TRUE;
}
-FX_BOOL event::keyDown(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (pEvent->KeyDown())
- vp << TRUE;
- else
- vp << FALSE;
- return TRUE;
+FX_BOOL event::keyDown(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (pEvent->KeyDown())
+ vp << TRUE;
+ else
+ vp << FALSE;
+ return TRUE;
}
-FX_BOOL event::modifier(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (pEvent->Modifier())
- vp << TRUE;
- else
- vp << FALSE;
- return TRUE;
+FX_BOOL event::modifier(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (pEvent->Modifier())
+ vp << TRUE;
+ else
+ vp << FALSE;
+ return TRUE;
}
-FX_BOOL event::name(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::name(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->Name();
- return TRUE;
+ vp << pEvent->Name();
+ return TRUE;
}
-FX_BOOL event::rc(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- FX_BOOL &bRc = pEvent->Rc();
- if (vp.IsSetting())
- {
- vp>>bRc;
- }
- else
- {
- vp<<bRc;
- }
- return TRUE;
+FX_BOOL event::rc(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ FX_BOOL& bRc = pEvent->Rc();
+ if (vp.IsSetting()) {
+ vp >> bRc;
+ } else {
+ vp << bRc;
+ }
+ return TRUE;
}
-FX_BOOL event::richChange(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
- if (vp.IsSetting())
- {
- }
- else
- {
- ;
- }
- return TRUE;
+FX_BOOL event::richChange(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
+ if (vp.IsSetting()) {
+ } else {
+ ;
+ }
+ return TRUE;
}
-FX_BOOL event::richChangeEx(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
- if (vp.IsSetting())
- {
- }
- else
- {
- ;
- }
- return TRUE;
+FX_BOOL event::richChangeEx(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
+ if (vp.IsSetting()) {
+ } else {
+ ;
+ }
+ return TRUE;
}
-
-FX_BOOL event::richValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- return TRUE;
- if (vp.IsSetting())
- {
- }
- else
- {
- ;
- }
- return TRUE;
+FX_BOOL event::richValue(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ return TRUE;
+ if (vp.IsSetting()) {
+ } else {
+ ;
+ }
+ return TRUE;
}
-FX_BOOL event::selEnd(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0)
- {
- return TRUE;
- }
-
- int &iSelEnd = pEvent->SelEnd();
- if (vp.IsSetting())
- {
- vp >> iSelEnd;
- }
- else
- {
- vp << iSelEnd;
- }
- return TRUE;
+FX_BOOL event::selEnd(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (wcscmp((const wchar_t*)pEvent->Name(), L"Keystroke") != 0) {
+ return TRUE;
+ }
+
+ int& iSelEnd = pEvent->SelEnd();
+ if (vp.IsSetting()) {
+ vp >> iSelEnd;
+ } else {
+ vp << iSelEnd;
+ }
+ return TRUE;
}
-FX_BOOL event::selStart(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (wcscmp((const wchar_t*)pEvent->Name(),L"Keystroke") != 0)
- {
- return TRUE;
- }
- int &iSelStart = pEvent->SelStart();
- if (vp.IsSetting())
- {
- vp >> iSelStart;
- }
- else
- {
- vp << iSelStart;
- }
- return TRUE;
+FX_BOOL event::selStart(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (wcscmp((const wchar_t*)pEvent->Name(), L"Keystroke") != 0) {
+ return TRUE;
+ }
+ int& iSelStart = pEvent->SelStart();
+ if (vp.IsSetting()) {
+ vp >> iSelStart;
+ } else {
+ vp << iSelStart;
+ }
+ return TRUE;
}
-FX_BOOL event::shift(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (pEvent->Shift())
- vp << TRUE;
- else
- vp << FALSE;
- return TRUE;
+FX_BOOL event::shift(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (pEvent->Shift())
+ vp << TRUE;
+ else
+ vp << FALSE;
+ return TRUE;
}
-FX_BOOL event::source(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::source(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->Source()->GetJSObject();
- return TRUE;
+ vp << pEvent->Source()->GetJSObject();
+ return TRUE;
}
-FX_BOOL event::target(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::target(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp<<pEvent->Target_Field()->GetJSObject();
- return TRUE;
+ vp << pEvent->Target_Field()->GetJSObject();
+ return TRUE;
}
-FX_BOOL event::targetName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::targetName(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->TargetName();
- return TRUE;
+ vp << pEvent->TargetName();
+ return TRUE;
}
-FX_BOOL event::type(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
+FX_BOOL event::type(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
- vp << pEvent->Type();
- return TRUE;
+ vp << pEvent->Type();
+ return TRUE;
}
-FX_BOOL event::value(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (wcscmp((const wchar_t*)pEvent->Type(),L"Field") != 0)
- return FALSE;
- if(!pEvent->m_pValue)
- return FALSE;
- CFX_WideString & val = pEvent->Value();
- if (vp.IsSetting())
- {
- vp >> val;
- }
- else
- {
- vp << val;
- }
- return TRUE;
+FX_BOOL event::value(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (wcscmp((const wchar_t*)pEvent->Type(), L"Field") != 0)
+ return FALSE;
+ if (!pEvent->m_pValue)
+ return FALSE;
+ CFX_WideString& val = pEvent->Value();
+ if (vp.IsSetting()) {
+ vp >> val;
+ } else {
+ vp << val;
+ }
+ return TRUE;
}
-FX_BOOL event::willCommit(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (!vp.IsGetting())return FALSE;
-
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
- CJS_EventHandler* pEvent = pContext->GetEventHandler();
- ASSERT(pEvent != NULL);
-
- if (pEvent->WillCommit())
- vp << TRUE;
- else
- vp << FALSE;
- return TRUE;
+FX_BOOL event::willCommit(IFXJS_Context* cc,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (!vp.IsGetting())
+ return FALSE;
+
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
+ CJS_EventHandler* pEvent = pContext->GetEventHandler();
+ ASSERT(pEvent != NULL);
+
+ if (pEvent->WillCommit())
+ vp << TRUE;
+ else
+ vp << FALSE;
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp
index 6965c8c884..ee0591b950 100644
--- a/fpdfsdk/src/javascript/global.cpp
+++ b/fpdfsdk/src/javascript/global.cpp
@@ -39,51 +39,46 @@ struct CHash<ACC, N, Ns...> {
};
extern const unsigned int JSCONST_nStringHash =
- CHash<'s','t','r','i','n','g'>::value;
+ CHash<'s', 't', 'r', 'i', 'n', 'g'>::value;
extern const unsigned int JSCONST_nNumberHash =
- CHash<'n','u','m','b','e','r'>::value;
+ CHash<'n', 'u', 'm', 'b', 'e', 'r'>::value;
extern const unsigned int JSCONST_nBoolHash =
- CHash<'b','o','o','l','e','a','n'>::value;
-extern const unsigned int JSCONST_nDateHash =
- CHash<'d','a','t','e'>::value;
+ CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value;
+extern const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value;
extern const unsigned int JSCONST_nObjectHash =
- CHash<'o','b','j','e','c','t'>::value;
+ CHash<'o', 'b', 'j', 'e', 'c', 't'>::value;
extern const unsigned int JSCONST_nFXobjHash =
- CHash<'f','x','o','b','j'>::value;
-extern const unsigned int JSCONST_nNullHash =
- CHash<'n','u','l','l'>::value;
+ CHash<'f', 'x', 'o', 'b', 'j'>::value;
+extern const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value;
extern const unsigned int JSCONST_nUndefHash =
- CHash<'u','n','d','e','f','i','n','e','d'>::value;
+ CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value;
#ifdef _DEBUG
-class HashVerify
-{
-public:
+class HashVerify {
+ public:
HashVerify();
} g_hashVerify;
-HashVerify::HashVerify()
-{
+HashVerify::HashVerify() {
ASSERT(JSCONST_nStringHash ==
- JS_CalcHash(VALUE_NAME_STRING,wcslen(VALUE_NAME_STRING)));
+ JS_CalcHash(VALUE_NAME_STRING, wcslen(VALUE_NAME_STRING)));
ASSERT(JSCONST_nNumberHash ==
- JS_CalcHash(VALUE_NAME_NUMBER,wcslen(VALUE_NAME_NUMBER)));
+ JS_CalcHash(VALUE_NAME_NUMBER, wcslen(VALUE_NAME_NUMBER)));
ASSERT(JSCONST_nBoolHash ==
- JS_CalcHash(VALUE_NAME_BOOLEAN,wcslen(VALUE_NAME_BOOLEAN)));
+ JS_CalcHash(VALUE_NAME_BOOLEAN, wcslen(VALUE_NAME_BOOLEAN)));
ASSERT(JSCONST_nDateHash ==
- JS_CalcHash(VALUE_NAME_DATE,wcslen(VALUE_NAME_DATE)));
+ JS_CalcHash(VALUE_NAME_DATE, wcslen(VALUE_NAME_DATE)));
ASSERT(JSCONST_nObjectHash ==
- JS_CalcHash(VALUE_NAME_OBJECT,wcslen(VALUE_NAME_OBJECT)));
+ JS_CalcHash(VALUE_NAME_OBJECT, wcslen(VALUE_NAME_OBJECT)));
ASSERT(JSCONST_nFXobjHash ==
- JS_CalcHash(VALUE_NAME_FXOBJ,wcslen(VALUE_NAME_FXOBJ)));
+ JS_CalcHash(VALUE_NAME_FXOBJ, wcslen(VALUE_NAME_FXOBJ)));
ASSERT(JSCONST_nNullHash ==
- JS_CalcHash(VALUE_NAME_NULL,wcslen(VALUE_NAME_NULL)));
+ JS_CalcHash(VALUE_NAME_NULL, wcslen(VALUE_NAME_NULL)));
ASSERT(JSCONST_nUndefHash ==
- JS_CalcHash(VALUE_NAME_UNDEFINED,wcslen(VALUE_NAME_UNDEFINED)));
+ JS_CalcHash(VALUE_NAME_UNDEFINED, wcslen(VALUE_NAME_UNDEFINED)));
}
#endif
-
BEGIN_JS_STATIC_CONST(CJS_Global)
END_JS_STATIC_CONST()
@@ -91,500 +86,464 @@ BEGIN_JS_STATIC_PROP(CJS_Global)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Global)
- JS_STATIC_METHOD_ENTRY(setPersistent)
+JS_STATIC_METHOD_ENTRY(setPersistent)
END_JS_STATIC_METHOD()
IMPLEMENT_SPECIAL_JS_CLASS(CJS_Global, global_alternate, global);
-FX_BOOL CJS_Global::InitInstance(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context*)cc;
- ASSERT(pContext != NULL);
+FX_BOOL CJS_Global::InitInstance(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- global_alternate* pGlobal = (global_alternate*)GetEmbedObject();
- ASSERT(pGlobal != NULL);
+ global_alternate* pGlobal = (global_alternate*)GetEmbedObject();
+ ASSERT(pGlobal != NULL);
- pGlobal->Initial(pContext->GetReaderApp());
+ pGlobal->Initial(pContext->GetReaderApp());
- return TRUE;
+ return TRUE;
};
global_alternate::global_alternate(CJS_Object* pJSObject)
- : CJS_EmbedObj(pJSObject),
- m_pApp(NULL)
-{
-}
+ : CJS_EmbedObj(pJSObject), m_pApp(NULL) {}
-global_alternate::~global_alternate(void)
-{
- DestroyGlobalPersisitentVariables();
- m_pApp->GetRuntimeFactory()->ReleaseGlobalData();
+global_alternate::~global_alternate(void) {
+ DestroyGlobalPersisitentVariables();
+ m_pApp->GetRuntimeFactory()->ReleaseGlobalData();
}
-void global_alternate::Initial(CPDFDoc_Environment* pApp)
-{
- m_pApp = pApp;
- m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp);
- UpdateGlobalPersistentVariables();
+void global_alternate::Initial(CPDFDoc_Environment* pApp) {
+ m_pApp = pApp;
+ m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp);
+ UpdateGlobalPersistentVariables();
}
-FX_BOOL global_alternate::QueryProperty(const FX_WCHAR* propname)
-{
- return CFX_WideString(propname) != L"setPersistent";
+FX_BOOL global_alternate::QueryProperty(const FX_WCHAR* propname) {
+ return CFX_WideString(propname) != L"setPersistent";
}
-FX_BOOL global_alternate::DelProperty(IFXJS_Context* cc, const FX_WCHAR* propname, CFX_WideString& sError)
-{
- js_global_data* pData = NULL;
- CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
+FX_BOOL global_alternate::DelProperty(IFXJS_Context* cc,
+ const FX_WCHAR* propname,
+ CFX_WideString& sError) {
+ js_global_data* pData = NULL;
+ CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
- if (m_mapGlobal.Lookup(sPropName, (void*&)pData))
- {
- pData->bDeleted = TRUE;
- return TRUE;
- }
+ if (m_mapGlobal.Lookup(sPropName, (void*&)pData)) {
+ pData->bDeleted = TRUE;
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, const FX_WCHAR* propname, CJS_PropValue& vp, CFX_WideString& sError)
-{
- if (vp.IsSetting())
- {
- CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
- switch (vp.GetType())
- {
- case VT_number:
- {
- double dData;
- vp >> dData;
- return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, false, "", v8::Local<v8::Object>(), FALSE);
- }
- case VT_boolean:
- {
- bool bData;
- vp >> bData;
- return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, bData, "", v8::Local<v8::Object>(), FALSE);
- }
- case VT_string:
- {
- CFX_ByteString sData;
- vp >> sData;
- return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, false, sData, v8::Local<v8::Object>(), FALSE);
- }
- case VT_object:
- {
- JSObject pData;
- vp >> pData;
- return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "", pData, FALSE);
- }
- case VT_null:
- {
- return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), FALSE);
- }
- case VT_undefined:
- {
- DelProperty(cc, propname, sError);
- return TRUE;
- }
- default:
- break;
- }
+FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc,
+ const FX_WCHAR* propname,
+ CJS_PropValue& vp,
+ CFX_WideString& sError) {
+ if (vp.IsSetting()) {
+ CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
+ switch (vp.GetType()) {
+ case VT_number: {
+ double dData;
+ vp >> dData;
+ return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData,
+ false, "", v8::Local<v8::Object>(), FALSE);
+ }
+ case VT_boolean: {
+ bool bData;
+ vp >> bData;
+ return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0,
+ bData, "", v8::Local<v8::Object>(), FALSE);
+ }
+ case VT_string: {
+ CFX_ByteString sData;
+ vp >> sData;
+ return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0,
+ false, sData, v8::Local<v8::Object>(), FALSE);
+ }
+ case VT_object: {
+ JSObject pData;
+ vp >> pData;
+ return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0,
+ false, "", pData, FALSE);
+ }
+ case VT_null: {
+ return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false,
+ "", v8::Local<v8::Object>(), FALSE);
+ }
+ case VT_undefined: {
+ DelProperty(cc, propname, sError);
+ return TRUE;
+ }
+ default:
+ break;
}
- else
- {
- void* pVoid = nullptr;
- if (!m_mapGlobal.Lookup(CFX_ByteString::FromUnicode(propname), pVoid))
- {
- vp.SetNull();
- return TRUE;
- }
- if (!pVoid)
- {
- vp.SetNull();
- return TRUE;
- }
- js_global_data* pData = (js_global_data*)pVoid;
- if (pData->bDeleted)
- return TRUE;
-
- switch (pData->nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- vp << pData->dData;
- return TRUE;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- vp << pData->bData;
- return TRUE;
- case JS_GLOBALDATA_TYPE_STRING:
- vp << pData->sData;
- return TRUE;
- case JS_GLOBALDATA_TYPE_OBJECT:
- {
- v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(vp.GetIsolate(),pData->pData);
- vp << obj;
- return TRUE;
- }
- case JS_GLOBALDATA_TYPE_NULL:
- vp.SetNull();
- return TRUE;
- default:
- break;
- }
+ } else {
+ void* pVoid = nullptr;
+ if (!m_mapGlobal.Lookup(CFX_ByteString::FromUnicode(propname), pVoid)) {
+ vp.SetNull();
+ return TRUE;
}
- return FALSE;
-}
-
-FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- CJS_Context* pContext = static_cast<CJS_Context*>(cc);
- if (params.size() != 2)
- {
- sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
- return FALSE;
+ if (!pVoid) {
+ vp.SetNull();
+ return TRUE;
}
+ js_global_data* pData = (js_global_data*)pVoid;
+ if (pData->bDeleted)
+ return TRUE;
- CFX_ByteString sName = params[0].ToCFXByteString();
-
- js_global_data* pData = NULL;
- if (m_mapGlobal.Lookup(sName, (void*&)pData))
- {
- if (pData && !pData->bDeleted)
- {
- pData->bPersistent = params[1].ToBool();
- return TRUE;
- }
+ switch (pData->nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER:
+ vp << pData->dData;
+ return TRUE;
+ case JS_GLOBALDATA_TYPE_BOOLEAN:
+ vp << pData->bData;
+ return TRUE;
+ case JS_GLOBALDATA_TYPE_STRING:
+ vp << pData->sData;
+ return TRUE;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ v8::Local<v8::Object> obj =
+ v8::Local<v8::Object>::New(vp.GetIsolate(), pData->pData);
+ vp << obj;
+ return TRUE;
+ }
+ case JS_GLOBALDATA_TYPE_NULL:
+ vp.SetNull();
+ return TRUE;
+ default:
+ break;
}
-
- sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL);
- return FALSE;
+ }
+ return FALSE;
}
-void global_alternate::UpdateGlobalPersistentVariables()
-{
- ASSERT(m_pGlobalData != NULL);
-
- for (int i=0,sz=m_pGlobalData->GetSize(); i<sz; i++)
- {
- CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i);
- ASSERT(pData != NULL);
-
- switch (pData->data.nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, pData->data.dData, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
- JS_PutObjectNumber(NULL,(JSFXObject)(*m_pJSObject),
- pData->data.sKey.UTF8Decode().c_str(), pData->data.dData);
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, (bool)(pData->data.bData == 1), "", v8::Local<v8::Object>(), pData->bPersistent == 1);
- JS_PutObjectBoolean(NULL,(JSFXObject)(*m_pJSObject),
- pData->data.sKey.UTF8Decode().c_str(), (bool)(pData->data.bData == 1));
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, false, pData->data.sData, v8::Local<v8::Object>(), pData->bPersistent == 1);
- JS_PutObjectString(NULL, (JSFXObject)(*m_pJSObject),
- pData->data.sKey.UTF8Decode().c_str(),
- pData->data.sData.UTF8Decode().c_str());
- break;
- case JS_GLOBALDATA_TYPE_OBJECT:
- {
- IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
- v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
+FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ CJS_Context* pContext = static_cast<CJS_Context*>(cc);
+ if (params.size() != 2) {
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
+ return FALSE;
+ }
- PutObjectProperty(pObj, &pData->data);
+ CFX_ByteString sName = params[0].ToCFXByteString();
- SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "",
- (JSObject)pObj, pData->bPersistent == 1);
- JS_PutObjectObject(NULL,(JSFXObject)(*m_pJSObject),
- pData->data.sKey.UTF8Decode().c_str(), (JSObject)pObj);
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
- JS_PutObjectNull(NULL,(JSFXObject)(*m_pJSObject),
- pData->data.sKey.UTF8Decode().c_str());
- break;
- }
+ js_global_data* pData = NULL;
+ if (m_mapGlobal.Lookup(sName, (void*&)pData)) {
+ if (pData && !pData->bDeleted) {
+ pData->bPersistent = params[1].ToBool();
+ return TRUE;
}
-}
+ }
-void global_alternate::CommitGlobalPersisitentVariables()
-{
- ASSERT(m_pGlobalData != NULL);
-
- FX_POSITION pos = m_mapGlobal.GetStartPosition();
- while (pos)
- {
- CFX_ByteString name;
- js_global_data* pData = NULL;
- m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
-
- if (pData)
- {
- if (pData->bDeleted)
- {
- m_pGlobalData->DeleteGlobalVariable(name);
- }
- else
- {
- switch (pData->nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- m_pGlobalData->SetGlobalVariableNumber(name, pData->dData);
- m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- m_pGlobalData->SetGlobalVariableBoolean(name, pData->bData);
- m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- m_pGlobalData->SetGlobalVariableString(name, pData->sData);
- m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
- break;
- case JS_GLOBALDATA_TYPE_OBJECT:
- //if (pData->pData)
- {
- CJS_GlobalVariableArray array;
- v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(GetJSObject()->GetIsolate(),pData->pData);
- ObjectToArray(obj, array);
- m_pGlobalData->SetGlobalVariableObject(name, array);
- m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- m_pGlobalData->SetGlobalVariableNull(name);
- m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
- break;
- }
- }
- }
- }
+ sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL);
+ return FALSE;
}
-void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj, CJS_GlobalVariableArray& array)
-{
- v8::Local<v8::Context> context = pObj->CreationContext();
- v8::Isolate* isolate = context->GetIsolate();
- v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj);
- int nObjElements = pKeyList->Length();
+void global_alternate::UpdateGlobalPersistentVariables() {
+ ASSERT(m_pGlobalData != NULL);
- for (int i=0; i<nObjElements; i++)
- {
-
- CFX_WideString ws = JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i));
- CFX_ByteString sKey = ws.UTF8Encode();
+ for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) {
+ CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i);
+ ASSERT(pData != NULL);
- v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
- FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
- switch (vt)
- {
- case VT_number:
- {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
- pObjElement->sKey = sKey;
- pObjElement->dData = JS_ToNumber(isolate, v);
- array.Add(pObjElement);
- }
- break;
- case VT_boolean:
- {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
- pObjElement->sKey = sKey;
- pObjElement->dData = JS_ToBoolean(isolate, v);
- array.Add(pObjElement);
- }
- break;
- case VT_string:
- {
- CFX_ByteString sValue = CJS_Value(isolate, v, VT_string).ToCFXByteString();
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
- pObjElement->sKey = sKey;
- pObjElement->sData = sValue;
- array.Add(pObjElement);
- }
- break;
- case VT_object:
- {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT;
- pObjElement->sKey = sKey;
- ObjectToArray(JS_ToObject(isolate, v), pObjElement->objData);
- array.Add(pObjElement);
- }
- break;
- case VT_null:
- {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_NULL;
- pObjElement->sKey = sKey;
- array.Add(pObjElement);
- }
- break;
- default:
- break;
- }
+ switch (pData->data.nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER:
+ SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER,
+ pData->data.dData, false, "",
+ v8::Local<v8::Object>(), pData->bPersistent == 1);
+ JS_PutObjectNumber(NULL, (JSFXObject)(*m_pJSObject),
+ pData->data.sKey.UTF8Decode().c_str(),
+ pData->data.dData);
+ break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN:
+ SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0,
+ (bool)(pData->data.bData == 1), "",
+ v8::Local<v8::Object>(), pData->bPersistent == 1);
+ JS_PutObjectBoolean(NULL, (JSFXObject)(*m_pJSObject),
+ pData->data.sKey.UTF8Decode().c_str(),
+ (bool)(pData->data.bData == 1));
+ break;
+ case JS_GLOBALDATA_TYPE_STRING:
+ SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0,
+ false, pData->data.sData, v8::Local<v8::Object>(),
+ pData->bPersistent == 1);
+ JS_PutObjectString(NULL, (JSFXObject)(*m_pJSObject),
+ pData->data.sKey.UTF8Decode().c_str(),
+ pData->data.sData.UTF8Decode().c_str());
+ break;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
+ v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
+
+ PutObjectProperty(pObj, &pData->data);
+
+ SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0,
+ false, "", (JSObject)pObj, pData->bPersistent == 1);
+ JS_PutObjectObject(NULL, (JSFXObject)(*m_pJSObject),
+ pData->data.sKey.UTF8Decode().c_str(),
+ (JSObject)pObj);
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL:
+ SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false,
+ "", v8::Local<v8::Object>(),
+ pData->bPersistent == 1);
+ JS_PutObjectNull(NULL, (JSFXObject)(*m_pJSObject),
+ pData->data.sKey.UTF8Decode().c_str());
+ break;
}
+ }
}
-void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj, CJS_KeyValue* pData)
-{
- ASSERT(pData != NULL);
-
- for (int i=0,sz=pData->objData.Count(); i<sz; i++)
- {
- CJS_KeyValue* pObjData = pData->objData.GetAt(i);
- ASSERT(pObjData != NULL);
+void global_alternate::CommitGlobalPersisitentVariables() {
+ ASSERT(m_pGlobalData != NULL);
- switch (pObjData->nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- JS_PutObjectNumber(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode().c_str(), pObjData->dData);
+ FX_POSITION pos = m_mapGlobal.GetStartPosition();
+ while (pos) {
+ CFX_ByteString name;
+ js_global_data* pData = NULL;
+ m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
+
+ if (pData) {
+ if (pData->bDeleted) {
+ m_pGlobalData->DeleteGlobalVariable(name);
+ } else {
+ switch (pData->nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER:
+ m_pGlobalData->SetGlobalVariableNumber(name, pData->dData);
+ m_pGlobalData->SetGlobalVariablePersistent(name,
+ pData->bPersistent);
break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- JS_PutObjectBoolean(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode().c_str(), (bool)(pObjData->bData == 1));
+ case JS_GLOBALDATA_TYPE_BOOLEAN:
+ m_pGlobalData->SetGlobalVariableBoolean(name, pData->bData);
+ m_pGlobalData->SetGlobalVariablePersistent(name,
+ pData->bPersistent);
break;
- case JS_GLOBALDATA_TYPE_STRING:
- JS_PutObjectString(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode().c_str(), pObjData->sData.UTF8Decode().c_str());
+ case JS_GLOBALDATA_TYPE_STRING:
+ m_pGlobalData->SetGlobalVariableString(name, pData->sData);
+ m_pGlobalData->SetGlobalVariablePersistent(name,
+ pData->bPersistent);
break;
- case JS_GLOBALDATA_TYPE_OBJECT:
+ case JS_GLOBALDATA_TYPE_OBJECT:
+ // if (pData->pData)
{
- IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
- v8::Local<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
- PutObjectProperty(pNewObj, pObjData);
- JS_PutObjectObject(NULL, (JSObject)pObj, pObjData->sKey.UTF8Decode().c_str(), (JSObject)pNewObj);
+ CJS_GlobalVariableArray array;
+ v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(
+ GetJSObject()->GetIsolate(), pData->pData);
+ ObjectToArray(obj, array);
+ m_pGlobalData->SetGlobalVariableObject(name, array);
+ m_pGlobalData->SetGlobalVariablePersistent(name,
+ pData->bPersistent);
}
break;
- case JS_GLOBALDATA_TYPE_NULL:
- JS_PutObjectNull(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode().c_str());
+ case JS_GLOBALDATA_TYPE_NULL:
+ m_pGlobalData->SetGlobalVariableNull(name);
+ m_pGlobalData->SetGlobalVariablePersistent(name,
+ pData->bPersistent);
break;
}
+ }
}
+ }
}
-void global_alternate::DestroyGlobalPersisitentVariables()
-{
- FX_POSITION pos = m_mapGlobal.GetStartPosition();
- while (pos)
- {
- CFX_ByteString name;
- js_global_data* pData = NULL;
- m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
- delete pData;
+void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj,
+ CJS_GlobalVariableArray& array) {
+ v8::Local<v8::Context> context = pObj->CreationContext();
+ v8::Isolate* isolate = context->GetIsolate();
+ v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj);
+ int nObjElements = pKeyList->Length();
+
+ for (int i = 0; i < nObjElements; i++) {
+ CFX_WideString ws =
+ JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i));
+ CFX_ByteString sKey = ws.UTF8Encode();
+
+ v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
+ FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
+ switch (vt) {
+ case VT_number: {
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
+ pObjElement->sKey = sKey;
+ pObjElement->dData = JS_ToNumber(isolate, v);
+ array.Add(pObjElement);
+ } break;
+ case VT_boolean: {
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
+ pObjElement->sKey = sKey;
+ pObjElement->dData = JS_ToBoolean(isolate, v);
+ array.Add(pObjElement);
+ } break;
+ case VT_string: {
+ CFX_ByteString sValue =
+ CJS_Value(isolate, v, VT_string).ToCFXByteString();
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
+ pObjElement->sKey = sKey;
+ pObjElement->sData = sValue;
+ array.Add(pObjElement);
+ } break;
+ case VT_object: {
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT;
+ pObjElement->sKey = sKey;
+ ObjectToArray(JS_ToObject(isolate, v), pObjElement->objData);
+ array.Add(pObjElement);
+ } break;
+ case VT_null: {
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_NULL;
+ pObjElement->sKey = sKey;
+ array.Add(pObjElement);
+ } break;
+ default:
+ break;
}
-
- m_mapGlobal.RemoveAll();
+ }
}
+void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj,
+ CJS_KeyValue* pData) {
+ ASSERT(pData != NULL);
-FX_BOOL global_alternate::SetGlobalVariables(const FX_CHAR* propname, int nType,
- double dData, bool bData, const CFX_ByteString& sData, JSObject pData, bool bDefaultPersistent)
-{
- if (propname == NULL) return FALSE;
+ for (int i = 0, sz = pData->objData.Count(); i < sz; i++) {
+ CJS_KeyValue* pObjData = pData->objData.GetAt(i);
+ ASSERT(pObjData != NULL);
- js_global_data* pTemp = NULL;
- m_mapGlobal.Lookup(propname, (void*&)pTemp);
+ switch (pObjData->nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER:
+ JS_PutObjectNumber(NULL, (JSObject)pObj,
+ pObjData->sKey.UTF8Decode().c_str(),
+ pObjData->dData);
+ break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN:
+ JS_PutObjectBoolean(NULL, (JSObject)pObj,
+ pObjData->sKey.UTF8Decode().c_str(),
+ (bool)(pObjData->bData == 1));
+ break;
+ case JS_GLOBALDATA_TYPE_STRING:
+ JS_PutObjectString(NULL, (JSObject)pObj,
+ pObjData->sKey.UTF8Decode().c_str(),
+ pObjData->sData.UTF8Decode().c_str());
+ break;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
+ v8::Local<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
+ PutObjectProperty(pNewObj, pObjData);
+ JS_PutObjectObject(NULL, (JSObject)pObj,
+ pObjData->sKey.UTF8Decode().c_str(),
+ (JSObject)pNewObj);
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL:
+ JS_PutObjectNull(NULL, (JSObject)pObj,
+ pObjData->sKey.UTF8Decode().c_str());
+ break;
+ }
+ }
+}
- if (pTemp)
- {
- if (pTemp->bDeleted || pTemp->nType != nType)
- {
- pTemp->dData = 0;
- pTemp->bData = 0;
- pTemp->sData = "";
- pTemp->nType = nType;
- }
+void global_alternate::DestroyGlobalPersisitentVariables() {
+ FX_POSITION pos = m_mapGlobal.GetStartPosition();
+ while (pos) {
+ CFX_ByteString name;
+ js_global_data* pData = NULL;
+ m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
+ delete pData;
+ }
- pTemp->bDeleted = FALSE;
+ m_mapGlobal.RemoveAll();
+}
- switch (nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- {
- pTemp->dData = dData;
- }
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- {
- pTemp->bData = bData;
- }
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- {
- pTemp->sData = sData;
- }
- break;
- case JS_GLOBALDATA_TYPE_OBJECT:
- {
- pTemp->pData.Reset(JS_GetRuntime(pData), pData);
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- break;
- default:
- return FALSE;
- }
+FX_BOOL global_alternate::SetGlobalVariables(const FX_CHAR* propname,
+ int nType,
+ double dData,
+ bool bData,
+ const CFX_ByteString& sData,
+ JSObject pData,
+ bool bDefaultPersistent) {
+ if (propname == NULL)
+ return FALSE;
- return TRUE;
- }
+ js_global_data* pTemp = NULL;
+ m_mapGlobal.Lookup(propname, (void*&)pTemp);
- js_global_data* pNewData = NULL;
+ if (pTemp) {
+ if (pTemp->bDeleted || pTemp->nType != nType) {
+ pTemp->dData = 0;
+ pTemp->bData = 0;
+ pTemp->sData = "";
+ pTemp->nType = nType;
+ }
- switch (nType)
- {
- case JS_GLOBALDATA_TYPE_NUMBER:
- {
- pNewData = new js_global_data;
- pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER;
- pNewData->dData = dData;
- pNewData->bPersistent = bDefaultPersistent;
- }
- break;
- case JS_GLOBALDATA_TYPE_BOOLEAN:
- {
- pNewData = new js_global_data;
- pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
- pNewData->bData = bData;
- pNewData->bPersistent = bDefaultPersistent;
- }
- break;
- case JS_GLOBALDATA_TYPE_STRING:
- {
- pNewData = new js_global_data;
- pNewData->nType = JS_GLOBALDATA_TYPE_STRING;
- pNewData->sData = sData;
- pNewData->bPersistent = bDefaultPersistent;
- }
- break;
- case JS_GLOBALDATA_TYPE_OBJECT:
- {
- pNewData = new js_global_data;
- pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT;
- pNewData->pData.Reset(JS_GetRuntime(pData), pData);
- pNewData->bPersistent = bDefaultPersistent;
- }
- break;
- case JS_GLOBALDATA_TYPE_NULL:
- {
- pNewData = new js_global_data;
- pNewData->nType = JS_GLOBALDATA_TYPE_NULL;
- pNewData->bPersistent = bDefaultPersistent;
- }
+ pTemp->bDeleted = FALSE;
+
+ switch (nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER: {
+ pTemp->dData = dData;
+ } break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN: {
+ pTemp->bData = bData;
+ } break;
+ case JS_GLOBALDATA_TYPE_STRING: {
+ pTemp->sData = sData;
+ } break;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ pTemp->pData.Reset(JS_GetRuntime(pData), pData);
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL:
break;
- default:
+ default:
return FALSE;
}
- m_mapGlobal.SetAt(propname, (void*)pNewData);
-
return TRUE;
+ }
+
+ js_global_data* pNewData = NULL;
+
+ switch (nType) {
+ case JS_GLOBALDATA_TYPE_NUMBER: {
+ pNewData = new js_global_data;
+ pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER;
+ pNewData->dData = dData;
+ pNewData->bPersistent = bDefaultPersistent;
+ } break;
+ case JS_GLOBALDATA_TYPE_BOOLEAN: {
+ pNewData = new js_global_data;
+ pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
+ pNewData->bData = bData;
+ pNewData->bPersistent = bDefaultPersistent;
+ } break;
+ case JS_GLOBALDATA_TYPE_STRING: {
+ pNewData = new js_global_data;
+ pNewData->nType = JS_GLOBALDATA_TYPE_STRING;
+ pNewData->sData = sData;
+ pNewData->bPersistent = bDefaultPersistent;
+ } break;
+ case JS_GLOBALDATA_TYPE_OBJECT: {
+ pNewData = new js_global_data;
+ pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT;
+ pNewData->pData.Reset(JS_GetRuntime(pData), pData);
+ pNewData->bPersistent = bDefaultPersistent;
+ } break;
+ case JS_GLOBALDATA_TYPE_NULL: {
+ pNewData = new js_global_data;
+ pNewData->nType = JS_GLOBALDATA_TYPE_NULL;
+ pNewData->bPersistent = bDefaultPersistent;
+ } break;
+ default:
+ return FALSE;
+ }
+
+ m_mapGlobal.SetAt(propname, (void*)pNewData);
+
+ return TRUE;
}
-FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p)
-{
+FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p) {
const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));
if (nHash == JSCONST_nUndefHash)
diff --git a/fpdfsdk/src/javascript/report.cpp b/fpdfsdk/src/javascript/report.cpp
index 1478feb1fa..732ae6d20e 100644
--- a/fpdfsdk/src/javascript/report.cpp
+++ b/fpdfsdk/src/javascript/report.cpp
@@ -20,30 +20,28 @@ BEGIN_JS_STATIC_PROP(CJS_Report)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Report)
- JS_STATIC_METHOD_ENTRY(save)
- JS_STATIC_METHOD_ENTRY(writeText)
+JS_STATIC_METHOD_ENTRY(save)
+JS_STATIC_METHOD_ENTRY(writeText)
END_JS_STATIC_METHOD()
IMPLEMENT_JS_CLASS(CJS_Report, Report)
-Report::Report(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject)
-{
+Report::Report(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
-}
-
-Report::~Report()
-{
-
-}
+Report::~Report() {}
-FX_BOOL Report::writeText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Report::writeText(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
-FX_BOOL Report::save(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
+FX_BOOL Report::save(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
// Unsafe, not supported.
return TRUE;
}
diff --git a/fpdfsdk/src/javascript/resource.cpp b/fpdfsdk/src/javascript/resource.cpp
index 4375da3ff7..5b6bd48703 100644
--- a/fpdfsdk/src/javascript/resource.cpp
+++ b/fpdfsdk/src/javascript/resource.cpp
@@ -6,61 +6,59 @@
#include "../../include/javascript/resource.h"
-CFX_WideString JSGetStringFromID(CJS_Context* pContext, FX_UINT id)
-{
- switch (id)
- {
+CFX_WideString JSGetStringFromID(CJS_Context* pContext, FX_UINT id) {
+ switch (id) {
case IDS_STRING_JSALERT:
- return L"Alert";
+ return L"Alert";
case IDS_STRING_JSPARAMERROR:
- return L"Incorrect number of parameters passed to function.";
+ return L"Incorrect number of parameters passed to function.";
case IDS_STRING_JSAFNUMBER_KEYSTROKE:
- return L"The input value is invalid.";
+ return L"The input value is invalid.";
case IDS_STRING_JSPARAM_TOOLONG:
- return L"The input value is too long.";
+ return L"The input value is too long.";
case IDS_STRING_JSPARSEDATE:
- return L"The input value can't be parsed as a valid date/time (%s).";
+ return L"The input value can't be parsed as a valid date/time (%s).";
case IDS_STRING_JSRANGE1:
- return L"The input value must be greater than or equal to %s"
- L" and less than or equal to %s.";
+ return L"The input value must be greater than or equal to %s"
+ L" and less than or equal to %s.";
case IDS_STRING_JSRANGE2:
- return L"The input value must be greater than or equal to %s.";
+ return L"The input value must be greater than or equal to %s.";
case IDS_STRING_JSRANGE3:
- return L"The input value must be less than or equal to %s.";
+ return L"The input value must be less than or equal to %s.";
case IDS_STRING_NOTSUPPORT:
- return L"Operation not supported.";
+ return L"Operation not supported.";
case IDS_STRING_JSBUSY:
- return L"System is busy.";
+ return L"System is busy.";
case IDS_STRING_JSEVENT:
- return L"Duplicate formfield event found.";
+ return L"Duplicate formfield event found.";
case IDS_STRING_RUN:
- return L"Script ran successfully.";
+ return L"Script ran successfully.";
case IDS_STRING_JSPRINT1:
- return L"The second parameter can't be converted to a Date.";
+ return L"The second parameter can't be converted to a Date.";
case IDS_STRING_JSPRINT2:
- return L"The second parameter is an invalid Date!";
+ return L"The second parameter is an invalid Date!";
case IDS_STRING_JSNOGLOBAL:
- return L"Global value not found.";
+ return L"Global value not found.";
case IDS_STRING_JSREADONLY:
- return L"Cannot assign to readonly property.";
+ return L"Cannot assign to readonly property.";
case IDS_STRING_JSTYPEERROR:
- return L"Incorrect parameter type.";
+ return L"Incorrect parameter type.";
case IDS_STRING_JSVALUEERROR:
- return L"Incorrect parameter value.";
+ return L"Incorrect parameter value.";
default:
- return L"";
- }
+ return L"";
+ }
}
CFX_WideString JSFormatErrorString(const char* class_name,
const char* property_name,
const CFX_WideString& details) {
- CFX_WideString result = CFX_WideString::FromLocal(class_name);
- if (property_name) {
- result += L".";
- result += CFX_WideString::FromLocal(property_name);
- }
- result += L": ";
- result += details;
- return result;
+ CFX_WideString result = CFX_WideString::FromLocal(class_name);
+ if (property_name) {
+ result += L".";
+ result += CFX_WideString::FromLocal(property_name);
+ }
+ result += L": ";
+ result += details;
+ return result;
}
diff --git a/fpdfsdk/src/javascript/util.cpp b/fpdfsdk/src/javascript/util.cpp
index 4083ed58da..858af0079c 100644
--- a/fpdfsdk/src/javascript/util.cpp
+++ b/fpdfsdk/src/javascript/util.cpp
@@ -16,19 +16,18 @@
#include "../../include/javascript/JS_EventHandler.h"
#include "../../include/javascript/JS_Runtime.h"
-#if _FX_OS_ == _FX_ANDROID_
+#if _FX_OS_ == _FX_ANDROID_
#include <ctype.h>
#endif
-static v8::Isolate* GetIsolate(IFXJS_Context* cc)
-{
- CJS_Context* pContext = (CJS_Context *)cc;
- ASSERT(pContext != NULL);
+static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
+ CJS_Context* pContext = (CJS_Context*)cc;
+ ASSERT(pContext != NULL);
- CJS_Runtime* pRuntime = pContext->GetJSRuntime();
- ASSERT(pRuntime != NULL);
+ CJS_Runtime* pRuntime = pContext->GetJSRuntime();
+ ASSERT(pRuntime != NULL);
- return pRuntime->GetIsolate();
+ return pRuntime->GetIsolate();
}
BEGIN_JS_STATIC_CONST(CJS_Util)
@@ -38,350 +37,235 @@ BEGIN_JS_STATIC_PROP(CJS_Util)
END_JS_STATIC_PROP()
BEGIN_JS_STATIC_METHOD(CJS_Util)
- JS_STATIC_METHOD_ENTRY(printd)
- JS_STATIC_METHOD_ENTRY(printf)
- JS_STATIC_METHOD_ENTRY(printx)
- JS_STATIC_METHOD_ENTRY(scand)
- JS_STATIC_METHOD_ENTRY(byteToChar)
+JS_STATIC_METHOD_ENTRY(printd)
+JS_STATIC_METHOD_ENTRY(printf)
+JS_STATIC_METHOD_ENTRY(printx)
+JS_STATIC_METHOD_ENTRY(scand)
+JS_STATIC_METHOD_ENTRY(byteToChar)
END_JS_STATIC_METHOD()
-IMPLEMENT_JS_CLASS(CJS_Util,util)
+IMPLEMENT_JS_CLASS(CJS_Util, util)
-util::util(CJS_Object *pJSObject) : CJS_EmbedObj(pJSObject)
-{
-}
-
-util::~util(void)
-{
-}
+util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
+util::~util(void) {}
-struct stru_TbConvert
-{
- const FX_WCHAR* lpszJSMark;
- const FX_WCHAR* lpszCppMark;
+struct stru_TbConvert {
+ const FX_WCHAR* lpszJSMark;
+ const FX_WCHAR* lpszCppMark;
};
const stru_TbConvert fcTable[] = {
- { L"mmmm", L"%B" },
- { L"mmm", L"%b" },
- { L"mm", L"%m" },
+ {L"mmmm", L"%B"},
+ {L"mmm", L"%b"},
+ {L"mm", L"%m"},
//"m"
- { L"dddd", L"%A" },
- { L"ddd", L"%a" },
- { L"dd", L"%d" },
+ {L"dddd", L"%A"},
+ {L"ddd", L"%a"},
+ {L"dd", L"%d"},
//"d", "%w",
- { L"yyyy", L"%Y" },
- { L"yy", L"%y" },
- { L"HH", L"%H" },
+ {L"yyyy", L"%Y"},
+ {L"yy", L"%y"},
+ {L"HH", L"%H"},
//"H"
- { L"hh", L"%I" },
+ {L"hh", L"%I"},
//"h"
- { L"MM", L"%M" },
+ {L"MM", L"%M"},
//"M"
- { L"ss", L"%S" },
+ {L"ss", L"%S"},
//"s
- { L"TT", L"%p" },
- //"t"
+ {L"TT", L"%p"},
+//"t"
#if defined(_WIN32)
- { L"tt", L"%p" },
- { L"h", L"%#I" },
+ {L"tt", L"%p"},
+ {L"h", L"%#I"},
#else
- { L"tt", L"%P" },
- { L"h", L"%l" },
+ {L"tt", L"%P"},
+ {L"h", L"%l"},
#endif
};
-#define UTIL_INT 0
-#define UTIL_DOUBLE 1
-#define UTIL_STRING 2
-
-int util::ParstDataType(std::wstring* sFormat)
-{
- bool bPercent = FALSE;
- for (size_t i = 0; i < sFormat->length(); ++i)
- {
- wchar_t c = (*sFormat)[i];
- if (c == L'%')
- {
- bPercent = true;
- continue;
- }
+#define UTIL_INT 0
+#define UTIL_DOUBLE 1
+#define UTIL_STRING 2
+
+int util::ParstDataType(std::wstring* sFormat) {
+ bool bPercent = FALSE;
+ for (size_t i = 0; i < sFormat->length(); ++i) {
+ wchar_t c = (*sFormat)[i];
+ if (c == L'%') {
+ bPercent = true;
+ continue;
+ }
- if (bPercent)
- {
- if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' || c == L'u' || c == L'x' || c == L'X')
- {
- return UTIL_INT;
- }
- if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G')
- {
- return UTIL_DOUBLE;
- }
- if (c == L's' || c == L'S')
- {
- // Map s to S since we always deal internally
- // with wchar_t strings.
- (*sFormat)[i] = L'S';
- return UTIL_STRING;
- }
- if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' || CJS_PublicMethods::IsDigit(c))
- {
- continue;
- }
- break;
- }
+ if (bPercent) {
+ if (c == L'c' || c == L'C' || c == L'd' || c == L'i' || c == L'o' ||
+ c == L'u' || c == L'x' || c == L'X') {
+ return UTIL_INT;
+ }
+ if (c == L'e' || c == L'E' || c == L'f' || c == L'g' || c == L'G') {
+ return UTIL_DOUBLE;
+ }
+ if (c == L's' || c == L'S') {
+ // Map s to S since we always deal internally
+ // with wchar_t strings.
+ (*sFormat)[i] = L'S';
+ return UTIL_STRING;
+ }
+ if (c == L'.' || c == L'+' || c == L'-' || c == L'#' || c == L' ' ||
+ CJS_PublicMethods::IsDigit(c)) {
+ continue;
+ }
+ break;
}
+ }
- return -1;
+ return -1;
}
-FX_BOOL util::printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- int iSize = params.size();
- if (iSize < 1)
- return FALSE;
- std::wstring c_ConvChar(params[0].ToCFXWideString().c_str());
- std::vector<std::wstring> c_strConvers;
- int iOffset = 0;
- int iOffend = 0;
- c_ConvChar.insert(c_ConvChar.begin(),L'S');
- while(iOffset != -1)
- {
- iOffend = c_ConvChar.find(L"%",iOffset+1);
- std::wstring strSub;
- if (iOffend == -1)
- strSub = c_ConvChar.substr(iOffset);
- else
- strSub = c_ConvChar.substr(iOffset ,iOffend - iOffset);
- c_strConvers.push_back(strSub);
- iOffset = iOffend ;
+FX_BOOL util::printf(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ int iSize = params.size();
+ if (iSize < 1)
+ return FALSE;
+ std::wstring c_ConvChar(params[0].ToCFXWideString().c_str());
+ std::vector<std::wstring> c_strConvers;
+ int iOffset = 0;
+ int iOffend = 0;
+ c_ConvChar.insert(c_ConvChar.begin(), L'S');
+ while (iOffset != -1) {
+ iOffend = c_ConvChar.find(L"%", iOffset + 1);
+ std::wstring strSub;
+ if (iOffend == -1)
+ strSub = c_ConvChar.substr(iOffset);
+ else
+ strSub = c_ConvChar.substr(iOffset, iOffend - iOffset);
+ c_strConvers.push_back(strSub);
+ iOffset = iOffend;
+ }
+
+ std::wstring c_strResult;
+
+ // for(int iIndex = 1;iIndex < params.size();iIndex++)
+ std::wstring c_strFormat;
+ for (int iIndex = 0; iIndex < (int)c_strConvers.size(); iIndex++) {
+ c_strFormat = c_strConvers[iIndex];
+ if (iIndex == 0) {
+ c_strResult = c_strFormat;
+ continue;
}
- std::wstring c_strResult;
-
- //for(int iIndex = 1;iIndex < params.size();iIndex++)
- std::wstring c_strFormat;
- for(int iIndex = 0;iIndex < (int)c_strConvers.size();iIndex++)
- {
- c_strFormat = c_strConvers[iIndex];
- if (iIndex == 0)
- {
- c_strResult = c_strFormat;
- continue;
- }
-
-
- CFX_WideString strSegment;
- if (iIndex >= iSize) {
- c_strResult += c_strFormat;
- continue;
- }
+ CFX_WideString strSegment;
+ if (iIndex >= iSize) {
+ c_strResult += c_strFormat;
+ continue;
+ }
- switch (ParstDataType(&c_strFormat))
- {
- case UTIL_INT:
- strSegment.Format(c_strFormat.c_str(), params[iIndex].ToInt());
- break;
- case UTIL_DOUBLE:
- strSegment.Format(c_strFormat.c_str(), params[iIndex].ToDouble());
- break;
- case UTIL_STRING:
- strSegment.Format(c_strFormat.c_str(), params[iIndex].ToCFXWideString().c_str());
- break;
- default:
- strSegment.Format(L"%S", c_strFormat.c_str());
- break;
- }
- c_strResult += strSegment.GetBuffer(strSegment.GetLength()+1);
+ switch (ParstDataType(&c_strFormat)) {
+ case UTIL_INT:
+ strSegment.Format(c_strFormat.c_str(), params[iIndex].ToInt());
+ break;
+ case UTIL_DOUBLE:
+ strSegment.Format(c_strFormat.c_str(), params[iIndex].ToDouble());
+ break;
+ case UTIL_STRING:
+ strSegment.Format(c_strFormat.c_str(),
+ params[iIndex].ToCFXWideString().c_str());
+ break;
+ default:
+ strSegment.Format(L"%S", c_strFormat.c_str());
+ break;
}
+ c_strResult += strSegment.GetBuffer(strSegment.GetLength() + 1);
+ }
- c_strResult.erase(c_strResult.begin());
- vRet = c_strResult.c_str();
- return TRUE;
+ c_strResult.erase(c_strResult.begin());
+ vRet = c_strResult.c_str();
+ return TRUE;
}
-FX_BOOL util::printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = GetIsolate(cc);
+FX_BOOL util::printd(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = GetIsolate(cc);
- int iSize = params.size();
- if (iSize < 2)
- return FALSE;
+ int iSize = params.size();
+ if (iSize < 2)
+ return FALSE;
- CJS_Value p1(isolate);
- p1 = params[0];
+ CJS_Value p1(isolate);
+ p1 = params[0];
- CJS_Value p2 = params[1];
- CJS_Date jsDate(isolate);
- if (!p2.ConvertToDate(jsDate))
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT1);
- return FALSE;
- }
+ CJS_Value p2 = params[1];
+ CJS_Date jsDate(isolate);
+ if (!p2.ConvertToDate(jsDate)) {
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT1);
+ return FALSE;
+ }
- if (!jsDate.IsValidDate())
- {
- sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT2);
+ if (!jsDate.IsValidDate()) {
+ sError = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSPRINT2);
+ return FALSE;
+ }
+
+ if (p1.GetType() == VT_number) {
+ int nFormat = p1.ToInt();
+ CFX_WideString swResult;
+
+ switch (nFormat) {
+ case 0:
+ swResult.Format(L"D:%04d%02d%02d%02d%02d%02d", jsDate.GetYear(),
+ jsDate.GetMonth() + 1, jsDate.GetDay(),
+ jsDate.GetHours(), jsDate.GetMinutes(),
+ jsDate.GetSeconds());
+ break;
+ case 1:
+ swResult.Format(L"%04d.%02d.%02d %02d:%02d:%02d", jsDate.GetYear(),
+ jsDate.GetMonth() + 1, jsDate.GetDay(),
+ jsDate.GetHours(), jsDate.GetMinutes(),
+ jsDate.GetSeconds());
+ break;
+ case 2:
+ swResult.Format(L"%04d/%02d/%02d %02d:%02d:%02d", jsDate.GetYear(),
+ jsDate.GetMonth() + 1, jsDate.GetDay(),
+ jsDate.GetHours(), jsDate.GetMinutes(),
+ jsDate.GetSeconds());
+ break;
+ default:
return FALSE;
}
- if (p1.GetType() == VT_number)
- {
- int nFormat = p1.ToInt();
- CFX_WideString swResult;
-
- switch (nFormat)
- {
- case 0:
- swResult.Format(L"D:%04d%02d%02d%02d%02d%02d",
- jsDate.GetYear(),
- jsDate.GetMonth() + 1,
- jsDate.GetDay(),
- jsDate.GetHours(),
- jsDate.GetMinutes(),
- jsDate.GetSeconds());
- break;
- case 1:
- swResult.Format(L"%04d.%02d.%02d %02d:%02d:%02d",
- jsDate.GetYear(),
- jsDate.GetMonth() + 1,
- jsDate.GetDay(),
- jsDate.GetHours(),
- jsDate.GetMinutes(),
- jsDate.GetSeconds());
- break;
- case 2:
- swResult.Format(L"%04d/%02d/%02d %02d:%02d:%02d",
- jsDate.GetYear(),
- jsDate.GetMonth() + 1,
- jsDate.GetDay(),
- jsDate.GetHours(),
- jsDate.GetMinutes(),
- jsDate.GetSeconds());
- break;
- default:
- return FALSE;
- }
-
- vRet = swResult.c_str();
- return TRUE;
- }
- if (p1.GetType() == VT_string)
- {
- std::basic_string<wchar_t> cFormat = p1.ToCFXWideString().c_str();
-
- bool bXFAPicture = false;
- if (iSize > 2)
- {
- bXFAPicture = params[2].ToBool();
- }
-
- if (bXFAPicture)
- {
- return FALSE; //currently, it doesn't support XFAPicture.
- }
-
- int iIndex;
- for(iIndex = 0;iIndex<sizeof(fcTable)/sizeof(stru_TbConvert);iIndex++)
- {
- int iStart = 0;
- int iEnd;
- while((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1)
- {
- cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark), fcTable[iIndex].lpszCppMark);
- iStart = iEnd;
- }
- }
-
- int iYear,iMonth,iDay,iHour,iMin,iSec;
- iYear = jsDate.GetYear();
- iMonth = jsDate.GetMonth();
- iDay = jsDate.GetDay();
- iHour = jsDate.GetHours();
- iMin = jsDate.GetMinutes();
- iSec = jsDate.GetSeconds();
-
- struct tm time = {};
- time.tm_year = iYear-1900;
- time.tm_mon = iMonth;
- time.tm_mday = iDay;
- time.tm_hour = iHour;
- time.tm_min = iMin;
- time.tm_sec = iSec;
-
- struct stru_TbConvertAd
- {
- const FX_WCHAR* lpszJSMark;
- int iValue;
- };
-
- stru_TbConvertAd cTableAd[] ={
- { L"m", iMonth+1 },
- { L"d", iDay },
- { L"H", iHour },
- { L"h", iHour>12?iHour-12:iHour },
- { L"M", iMin },
- { L"s", iSec },
- };
-
- for(iIndex = 0;iIndex<sizeof(cTableAd)/sizeof(stru_TbConvertAd);iIndex++)
- {
- wchar_t tszValue[10];
- CFX_WideString sValue;
- sValue.Format(L"%d",cTableAd[iIndex].iValue);
- memcpy(tszValue, (wchar_t *)sValue.GetBuffer(sValue.GetLength()+1),
- (sValue.GetLength()+1)*sizeof(wchar_t));
-
- int iStart = 0;
- int iEnd;
- while((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1)
- {
- if (iEnd > 0)
- {
- if (cFormat[iEnd-1] == L'%')
- {
- iStart = iEnd+1;
- continue;
- }
- }
- cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark), tszValue);
- iStart = iEnd;
- }
- }
+ vRet = swResult.c_str();
+ return TRUE;
+ }
+ if (p1.GetType() == VT_string) {
+ std::basic_string<wchar_t> cFormat = p1.ToCFXWideString().c_str();
- CFX_WideString strFormat;
- wchar_t buf[64] = {};
- strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
- cFormat = buf;
- vRet = cFormat.c_str();
- return TRUE;
+ bool bXFAPicture = false;
+ if (iSize > 2) {
+ bXFAPicture = params[2].ToBool();
}
- return FALSE;
-}
-void util::printd(const std::wstring &cFormat2, CJS_Date jsDate, bool bXFAPicture, std::wstring &cPurpose)
-{
- std::wstring cFormat = cFormat2;
-
- if (bXFAPicture)
- {
- return ; //currently, it doesn't support XFAPicture.
+ if (bXFAPicture) {
+ return FALSE; // currently, it doesn't support XFAPicture.
}
int iIndex;
- for(iIndex = 0;iIndex<sizeof(fcTable)/sizeof(stru_TbConvert);iIndex++)
- {
- int iStart = 0;
- int iEnd;
- while((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1)
- {
- cFormat.replace(iEnd,FXSYS_wcslen(fcTable[iIndex].lpszJSMark), fcTable[iIndex].lpszCppMark);
- iStart = iEnd;
- }
+ for (iIndex = 0; iIndex < sizeof(fcTable) / sizeof(stru_TbConvert);
+ iIndex++) {
+ int iStart = 0;
+ int iEnd;
+ while ((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1) {
+ cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark),
+ fcTable[iIndex].lpszCppMark);
+ iStart = iEnd;
+ }
}
- int iYear,iMonth,iDay,iHour,iMin,iSec;
+ int iYear, iMonth, iDay, iHour, iMin, iSec;
iYear = jsDate.GetYear();
iMonth = jsDate.GetMonth();
iDay = jsDate.GetDay();
@@ -390,243 +274,309 @@ void util::printd(const std::wstring &cFormat2, CJS_Date jsDate, bool bXFAPictur
iSec = jsDate.GetSeconds();
struct tm time = {};
- time.tm_year = iYear-1900;
+ time.tm_year = iYear - 1900;
time.tm_mon = iMonth;
time.tm_mday = iDay;
time.tm_hour = iHour;
time.tm_min = iMin;
time.tm_sec = iSec;
-// COleDateTime cppTm(iYear,iMonth+1,iDay,iHour,iMin,iSec);
- //CString strFormat = cppTm.Format(cFormat.c_str());
- struct stru_TbConvertAd
- {
- const FX_WCHAR* lpszJSMark;
- int iValue;
+ struct stru_TbConvertAd {
+ const FX_WCHAR* lpszJSMark;
+ int iValue;
};
- stru_TbConvertAd cTableAd[] ={
- { L"m", iMonth+1 },
- { L"d", iDay },
- { L"H", iHour },
- { L"h", iHour>12?iHour-12:iHour },
- { L"M", iMin },
- { L"s", iSec },
+ stru_TbConvertAd cTableAd[] = {
+ {L"m", iMonth + 1}, {L"d", iDay},
+ {L"H", iHour}, {L"h", iHour > 12 ? iHour - 12 : iHour},
+ {L"M", iMin}, {L"s", iSec},
};
- //cFormat = strFormat.GetBuffer(strFormat.GetLength()+1);
- for(iIndex = 0;iIndex<sizeof(cTableAd)/sizeof(stru_TbConvertAd);iIndex++)
- {
- wchar_t tszValue[10];
- //_itot(cTableAd[iIndex].iValue,tszValue,10);
- CFX_WideString sValue;
- sValue.Format(L"%d",cTableAd[iIndex].iValue);
- memcpy(tszValue, (wchar_t *)sValue.GetBuffer(sValue.GetLength()+1),sValue.GetLength()*sizeof(wchar_t));
-
-
- //strFormat.Replace(cTableAd[iIndex].lpszJSMark,"%d");
- //strFormat.Format(strFormat,cTableAd[iIndex].iValue);
- int iStart = 0;
- int iEnd;
- while((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1)
- {
- if (iEnd > 0)
- {
- if (cFormat[iEnd-1] == L'%')
- {
- iStart = iEnd+1;
- continue;
- }
- }
- cFormat.replace(iEnd,FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),tszValue);
- iStart = iEnd;
+ for (iIndex = 0; iIndex < sizeof(cTableAd) / sizeof(stru_TbConvertAd);
+ iIndex++) {
+ wchar_t tszValue[10];
+ CFX_WideString sValue;
+ sValue.Format(L"%d", cTableAd[iIndex].iValue);
+ memcpy(tszValue, (wchar_t*)sValue.GetBuffer(sValue.GetLength() + 1),
+ (sValue.GetLength() + 1) * sizeof(wchar_t));
+
+ int iStart = 0;
+ int iEnd;
+ while ((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1) {
+ if (iEnd > 0) {
+ if (cFormat[iEnd - 1] == L'%') {
+ iStart = iEnd + 1;
+ continue;
+ }
}
+ cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),
+ tszValue);
+ iStart = iEnd;
+ }
}
CFX_WideString strFormat;
wchar_t buf[64] = {};
strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
cFormat = buf;
- cPurpose = cFormat;
+ vRet = cFormat.c_str();
+ return TRUE;
+ }
+ return FALSE;
}
-FX_BOOL util::printx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- int iSize = params.size();
- if (iSize<2)
- return FALSE;
- CFX_WideString sFormat = params[0].ToCFXWideString();
- CFX_WideString sSource = params[1].ToCFXWideString();
- std::string cFormat = CFX_ByteString::FromUnicode(sFormat).c_str();
- std::string cSource = CFX_ByteString::FromUnicode(sSource).c_str();
- std::string cDest;
- printx(cFormat,cSource,cDest);
- vRet = cDest.c_str();
- return TRUE;
+void util::printd(const std::wstring& cFormat2,
+ CJS_Date jsDate,
+ bool bXFAPicture,
+ std::wstring& cPurpose) {
+ std::wstring cFormat = cFormat2;
+
+ if (bXFAPicture) {
+ return; // currently, it doesn't support XFAPicture.
+ }
+
+ int iIndex;
+ for (iIndex = 0; iIndex < sizeof(fcTable) / sizeof(stru_TbConvert);
+ iIndex++) {
+ int iStart = 0;
+ int iEnd;
+ while ((iEnd = cFormat.find(fcTable[iIndex].lpszJSMark, iStart)) != -1) {
+ cFormat.replace(iEnd, FXSYS_wcslen(fcTable[iIndex].lpszJSMark),
+ fcTable[iIndex].lpszCppMark);
+ iStart = iEnd;
+ }
+ }
+
+ int iYear, iMonth, iDay, iHour, iMin, iSec;
+ iYear = jsDate.GetYear();
+ iMonth = jsDate.GetMonth();
+ iDay = jsDate.GetDay();
+ iHour = jsDate.GetHours();
+ iMin = jsDate.GetMinutes();
+ iSec = jsDate.GetSeconds();
+
+ struct tm time = {};
+ time.tm_year = iYear - 1900;
+ time.tm_mon = iMonth;
+ time.tm_mday = iDay;
+ time.tm_hour = iHour;
+ time.tm_min = iMin;
+ time.tm_sec = iSec;
+ // COleDateTime cppTm(iYear,iMonth+1,iDay,iHour,iMin,iSec);
+ // CString strFormat = cppTm.Format(cFormat.c_str());
+
+ struct stru_TbConvertAd {
+ const FX_WCHAR* lpszJSMark;
+ int iValue;
+ };
+
+ stru_TbConvertAd cTableAd[] = {
+ {L"m", iMonth + 1}, {L"d", iDay},
+ {L"H", iHour}, {L"h", iHour > 12 ? iHour - 12 : iHour},
+ {L"M", iMin}, {L"s", iSec},
+ };
+
+ // cFormat = strFormat.GetBuffer(strFormat.GetLength()+1);
+ for (iIndex = 0; iIndex < sizeof(cTableAd) / sizeof(stru_TbConvertAd);
+ iIndex++) {
+ wchar_t tszValue[10];
+ //_itot(cTableAd[iIndex].iValue,tszValue,10);
+ CFX_WideString sValue;
+ sValue.Format(L"%d", cTableAd[iIndex].iValue);
+ memcpy(tszValue, (wchar_t*)sValue.GetBuffer(sValue.GetLength() + 1),
+ sValue.GetLength() * sizeof(wchar_t));
+
+ // strFormat.Replace(cTableAd[iIndex].lpszJSMark,"%d");
+ // strFormat.Format(strFormat,cTableAd[iIndex].iValue);
+ int iStart = 0;
+ int iEnd;
+ while ((iEnd = cFormat.find(cTableAd[iIndex].lpszJSMark, iStart)) != -1) {
+ if (iEnd > 0) {
+ if (cFormat[iEnd - 1] == L'%') {
+ iStart = iEnd + 1;
+ continue;
+ }
+ }
+ cFormat.replace(iEnd, FXSYS_wcslen(cTableAd[iIndex].lpszJSMark),
+ tszValue);
+ iStart = iEnd;
+ }
+ }
+
+ CFX_WideString strFormat;
+ wchar_t buf[64] = {};
+ strFormat = wcsftime(buf, 64, cFormat.c_str(), &time);
+ cFormat = buf;
+ cPurpose = cFormat;
+}
+
+FX_BOOL util::printx(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ int iSize = params.size();
+ if (iSize < 2)
+ return FALSE;
+ CFX_WideString sFormat = params[0].ToCFXWideString();
+ CFX_WideString sSource = params[1].ToCFXWideString();
+ std::string cFormat = CFX_ByteString::FromUnicode(sFormat).c_str();
+ std::string cSource = CFX_ByteString::FromUnicode(sSource).c_str();
+ std::string cDest;
+ printx(cFormat, cSource, cDest);
+ vRet = cDest.c_str();
+ return TRUE;
}
-void util::printx(const std::string &cFormat,const std::string &cSource2,std::string &cPurpose)
-{
- std::string cSource(cSource2);
- if (!cPurpose.empty())
- //cPurpose.clear();
- cPurpose.erase();
- int itSource = 0;
- int iSize = cSource.size();
- for(int iIndex = 0; iIndex < (int)cFormat.size() && itSource<iSize; iIndex++)
- {
- char letter = cFormat[iIndex];
- switch(letter)
- {
- case '?':
- //cPurpose.push_back(cSource[itSource]);
+void util::printx(const std::string& cFormat,
+ const std::string& cSource2,
+ std::string& cPurpose) {
+ std::string cSource(cSource2);
+ if (!cPurpose.empty())
+ // cPurpose.clear();
+ cPurpose.erase();
+ int itSource = 0;
+ int iSize = cSource.size();
+ for (int iIndex = 0; iIndex < (int)cFormat.size() && itSource < iSize;
+ iIndex++) {
+ char letter = cFormat[iIndex];
+ switch (letter) {
+ case '?':
+ // cPurpose.push_back(cSource[itSource]);
+ cPurpose += cSource[itSource];
+ itSource++;
+ break;
+ case 'X': {
+ while (itSource < iSize) {
+ if ((cSource[itSource] >= '0' && cSource[itSource] <= '9') ||
+ (cSource[itSource] >= 'a' && cSource[itSource] <= 'z') ||
+ (cSource[itSource] >= 'A' && cSource[itSource] <= 'Z')) {
+ // cPurpose.push_back(cSource[itSource]);
cPurpose += cSource[itSource];
itSource++;
break;
- case 'X':
- {
- while(itSource < iSize)
- {
- if ((cSource[itSource]>='0'&&cSource[itSource]<='9') || (cSource[itSource]>='a' && cSource[itSource]<='z') || (cSource[itSource]>='A' && cSource[itSource]<='Z'))
- {
- //cPurpose.push_back(cSource[itSource]);
- cPurpose += cSource[itSource];
- itSource++;
- break;
- }
- itSource++;
- }
- break;
- }
- break;
- case 'A':
- {
- while(itSource < iSize)
- {
- if ((cSource[itSource]>='a' && cSource[itSource]<='z') || (cSource[itSource]>='A' && cSource[itSource]<='Z'))
- {
- //cPurpose.push_back(cSource[itSource]);
- cPurpose += cSource[itSource];
- itSource++;
- break;
- }
- itSource++;
- }
- break;
- }
- break;
- case '9':
- {
- while(itSource < iSize)
- {
- if (cSource[itSource]>='0'&&cSource[itSource]<='9')
- {
- //cPurpose.push_back(cSource[itSource]);
- cPurpose += cSource[itSource];
- itSource++;
- break;
- }
- itSource++;
- }
- break;
- }
- case '*':
- {
- cPurpose.append(cSource,itSource,iSize-itSource);
- itSource = iSize-1;
- break;
- }
- case '\\':
- break;
- case '>':
- {
- for(std::string::iterator it = cSource.begin();it != cSource.end(); it++)
- {
- *it = toupper(*it);
- }
- break;
- }
- case '<':
- {
- for(std::string::iterator it = cSource.begin();it != cSource.end(); it++)
- {
- *it = tolower(*it);
- }
- break;
- }
- case '=':
+ }
+ itSource++;
+ }
+ break;
+ } break;
+ case 'A': {
+ while (itSource < iSize) {
+ if ((cSource[itSource] >= 'a' && cSource[itSource] <= 'z') ||
+ (cSource[itSource] >= 'A' && cSource[itSource] <= 'Z')) {
+ // cPurpose.push_back(cSource[itSource]);
+ cPurpose += cSource[itSource];
+ itSource++;
break;
- default:
- //cPurpose.push_back(letter);
- cPurpose += letter;
+ }
+ itSource++;
+ }
+ break;
+ } break;
+ case '9': {
+ while (itSource < iSize) {
+ if (cSource[itSource] >= '0' && cSource[itSource] <= '9') {
+ // cPurpose.push_back(cSource[itSource]);
+ cPurpose += cSource[itSource];
+ itSource++;
break;
+ }
+ itSource++;
}
+ break;
+ }
+ case '*': {
+ cPurpose.append(cSource, itSource, iSize - itSource);
+ itSource = iSize - 1;
+ break;
+ }
+ case '\\':
+ break;
+ case '>': {
+ for (std::string::iterator it = cSource.begin(); it != cSource.end();
+ it++) {
+ *it = toupper(*it);
+ }
+ break;
+ }
+ case '<': {
+ for (std::string::iterator it = cSource.begin(); it != cSource.end();
+ it++) {
+ *it = tolower(*it);
+ }
+ break;
+ }
+ case '=':
+ break;
+ default:
+ // cPurpose.push_back(letter);
+ cPurpose += letter;
+ break;
}
+ }
}
-FX_BOOL util::scand(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- v8::Isolate* isolate = GetIsolate(cc);
- int iSize = params.size();
- if (iSize < 2)
- return FALSE;
-
- CFX_WideString sFormat = params[0].ToCFXWideString();
- CFX_WideString sDate = params[1].ToCFXWideString();
- double dDate = JS_GetDateTime();
- if (sDate.GetLength() > 0)
- {
- FX_BOOL bWrongFormat = FALSE;
- dDate = CJS_PublicMethods::MakeRegularDate(sDate,sFormat,bWrongFormat);
- }
-
- if (!JS_PortIsNan(dDate))
- {
- CJS_Date date(isolate,dDate);
- vRet = date;
- }
- else
- {
- vRet.SetNull();
- }
+FX_BOOL util::scand(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ v8::Isolate* isolate = GetIsolate(cc);
+ int iSize = params.size();
+ if (iSize < 2)
+ return FALSE;
- return TRUE;
+ CFX_WideString sFormat = params[0].ToCFXWideString();
+ CFX_WideString sDate = params[1].ToCFXWideString();
+ double dDate = JS_GetDateTime();
+ if (sDate.GetLength() > 0) {
+ FX_BOOL bWrongFormat = FALSE;
+ dDate = CJS_PublicMethods::MakeRegularDate(sDate, sFormat, bWrongFormat);
+ }
+
+ if (!JS_PortIsNan(dDate)) {
+ CJS_Date date(isolate, dDate);
+ vRet = date;
+ } else {
+ vRet.SetNull();
+ }
+
+ return TRUE;
}
-int64_t FX_atoi64(const char *nptr)
-{
- int c; /* current char */
- int64_t total; /* current total */
- int sign; /* if '-', then negative, otherwise positive */
+int64_t FX_atoi64(const char* nptr) {
+ int c; /* current char */
+ int64_t total; /* current total */
+ int sign; /* if '-', then negative, otherwise positive */
- /* skip whitespace */
- while ( isspace((int)(unsigned char)*nptr) )
- ++nptr;
+ /* skip whitespace */
+ while (isspace((int)(unsigned char)*nptr))
+ ++nptr;
- c = (int)(unsigned char)*nptr++;
- sign = c; /* save sign indication */
- if (c == '-' || c == '+')
- c = (int)(unsigned char)*nptr++; /* skip sign */
+ c = (int)(unsigned char)*nptr++;
+ sign = c; /* save sign indication */
+ if (c == '-' || c == '+')
+ c = (int)(unsigned char)*nptr++; /* skip sign */
- total = 0;
+ total = 0;
- while (isdigit(c)) {
- total = 10 * total + (c - '0'); /* accumulate digit */
- c = (int)(unsigned char)*nptr++; /* get next char */
- }
+ while (isdigit(c)) {
+ total = 10 * total + (c - '0'); /* accumulate digit */
+ c = (int)(unsigned char)*nptr++; /* get next char */
+ }
- return sign == '-' ? -total : total;
+ return sign == '-' ? -total : total;
}
-FX_BOOL util::byteToChar(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
-{
- int iSize = params.size();
- if (iSize == 0)
- return FALSE;
- int nByte = params[0].ToInt();
- unsigned char cByte = (unsigned char)nByte;
- CFX_WideString csValue;
- csValue.Format(L"%c", cByte);
- vRet = csValue.c_str();
- return TRUE;
+FX_BOOL util::byteToChar(IFXJS_Context* cc,
+ const CJS_Parameters& params,
+ CJS_Value& vRet,
+ CFX_WideString& sError) {
+ int iSize = params.size();
+ if (iSize == 0)
+ return FALSE;
+ int nByte = params[0].ToInt();
+ unsigned char cByte = (unsigned char)nByte;
+ CFX_WideString csValue;
+ csValue.Format(L"%c", cByte);
+ vRet = csValue.c_str();
+ return TRUE;
}
diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp
index c4811bf096..b71cee6bcc 100644
--- a/fpdfsdk/src/jsapi/fxjs_v8.cpp
+++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp
@@ -12,772 +12,897 @@
#include <cmath>
#include <limits>
-#define VALUE_NAME_STRING L"string"
-#define VALUE_NAME_NUMBER L"number"
-#define VALUE_NAME_BOOLEAN L"boolean"
-#define VALUE_NAME_DATE L"date"
-#define VALUE_NAME_OBJECT L"object"
-#define VALUE_NAME_FXOBJ L"fxobj"
-#define VALUE_NAME_NULL L"null"
-#define VALUE_NAME_UNDEFINED L"undefined"
-
-const static FX_DWORD g_nan[2] = {0,0x7FF80000 };
-static double GetNan()
-{
+#define VALUE_NAME_STRING L"string"
+#define VALUE_NAME_NUMBER L"number"
+#define VALUE_NAME_BOOLEAN L"boolean"
+#define VALUE_NAME_DATE L"date"
+#define VALUE_NAME_OBJECT L"object"
+#define VALUE_NAME_FXOBJ L"fxobj"
+#define VALUE_NAME_NULL L"null"
+#define VALUE_NAME_UNDEFINED L"undefined"
+
+const static FX_DWORD g_nan[2] = {0, 0x7FF80000};
+static double GetNan() {
return *(double*)g_nan;
}
static unsigned int g_embedderDataSlot = 0u;
-
-class CJS_PrivateData
-{
-public:
- CJS_PrivateData():ObjDefID(-1), pPrivate(NULL) {}
- int ObjDefID;
- void* pPrivate;
+class CJS_PrivateData {
+ public:
+ CJS_PrivateData() : ObjDefID(-1), pPrivate(NULL) {}
+ int ObjDefID;
+ void* pPrivate;
};
-
-class CJS_ObjDefintion
-{
-public:
- CJS_ObjDefintion(v8::Isolate* isolate, const wchar_t* sObjName, FXJSOBJTYPE eObjType, LP_CONSTRUCTOR pConstructor, LP_DESTRUCTOR pDestructor):
- objName(sObjName), objType(eObjType), m_pConstructor(pConstructor), m_pDestructor(pDestructor),m_bSetAsGlobalObject(FALSE)
- {
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- v8::Local<v8::ObjectTemplate> objTemplate = v8::ObjectTemplate::New(isolate);
- objTemplate->SetInternalFieldCount(2);
- m_objTemplate.Reset(isolate, objTemplate);
-
- //Document as the global object.
- if(FXSYS_wcscmp(sObjName, L"Document") == 0)
- {
- m_bSetAsGlobalObject = TRUE;
- }
-
- }
- ~CJS_ObjDefintion()
- {
- m_objTemplate.Reset();
- m_StaticObj.Reset();
- }
-public:
- const wchar_t* objName;
- FXJSOBJTYPE objType;
- LP_CONSTRUCTOR m_pConstructor;
- LP_DESTRUCTOR m_pDestructor;
- FX_BOOL m_bSetAsGlobalObject;
-
- v8::Global<v8::ObjectTemplate> m_objTemplate;
- v8::Global<v8::Object> m_StaticObj;
+class CJS_ObjDefintion {
+ public:
+ CJS_ObjDefintion(v8::Isolate* isolate,
+ const wchar_t* sObjName,
+ FXJSOBJTYPE eObjType,
+ LP_CONSTRUCTOR pConstructor,
+ LP_DESTRUCTOR pDestructor)
+ : objName(sObjName),
+ objType(eObjType),
+ m_pConstructor(pConstructor),
+ m_pDestructor(pDestructor),
+ m_bSetAsGlobalObject(FALSE) {
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ v8::Local<v8::ObjectTemplate> objTemplate =
+ v8::ObjectTemplate::New(isolate);
+ objTemplate->SetInternalFieldCount(2);
+ m_objTemplate.Reset(isolate, objTemplate);
+
+ // Document as the global object.
+ if (FXSYS_wcscmp(sObjName, L"Document") == 0) {
+ m_bSetAsGlobalObject = TRUE;
+ }
+ }
+ ~CJS_ObjDefintion() {
+ m_objTemplate.Reset();
+ m_StaticObj.Reset();
+ }
+
+ public:
+ const wchar_t* objName;
+ FXJSOBJTYPE objType;
+ LP_CONSTRUCTOR m_pConstructor;
+ LP_DESTRUCTOR m_pDestructor;
+ FX_BOOL m_bSetAsGlobalObject;
+
+ v8::Global<v8::ObjectTemplate> m_objTemplate;
+ v8::Global<v8::Object> m_StaticObj;
};
-int JS_DefineObj(IJS_Runtime* pJSRuntime, const wchar_t* sObjName, FXJSOBJTYPE eObjType, LP_CONSTRUCTOR pConstructor, LP_DESTRUCTOR pDestructor)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray)
- {
- pArray = new CFX_PtrArray();
- isolate->SetData(g_embedderDataSlot, pArray);
- }
- CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(isolate, sObjName, eObjType, pConstructor, pDestructor);
- pArray->Add(pObjDef);
- return pArray->GetSize()-1;
-}
-
-int JS_DefineObjMethod(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sMethodName, v8::FunctionCallback pMethodCall)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_WideString ws = CFX_WideString(sMethodName);
- CFX_ByteString bsMethodName = ws.UTF8Encode();
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return 0;
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
- v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
- objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), v8::NewStringType::kNormal).ToLocalChecked(), v8::FunctionTemplate::New(isolate, pMethodCall), v8::ReadOnly);
- pObjDef->m_objTemplate.Reset(isolate,objTemp);
- return 0;
-}
-
-int JS_DefineObjProperty(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sPropName, v8::AccessorGetterCallback pPropGet, v8::AccessorSetterCallback pPropPut)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_WideString ws = CFX_WideString(sPropName);
- CFX_ByteString bsPropertyName = ws.UTF8Encode();
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return 0;
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
- v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
- objTemp->SetAccessor(v8::String::NewFromUtf8(isolate, bsPropertyName.c_str(), v8::NewStringType::kNormal).ToLocalChecked(), pPropGet, pPropPut);
- pObjDef->m_objTemplate.Reset(isolate,objTemp);
- return 0;
-}
-
-int JS_DefineObjAllProperties(IJS_Runtime* pJSRuntime, int nObjDefnID, v8::NamedPropertyQueryCallback pPropQurey, v8::NamedPropertyGetterCallback pPropGet, v8::NamedPropertySetterCallback pPropPut, v8::NamedPropertyDeleterCallback pPropDel)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return 0;
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
- v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
- objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDel);
- pObjDef->m_objTemplate.Reset(isolate,objTemp);
- return 0;
-}
-
-int JS_DefineObjConst(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sConstName, v8::Local<v8::Value> pDefault)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return 0;
-
- CFX_WideString ws = CFX_WideString(sConstName);
- CFX_ByteString bsConstName = ws.UTF8Encode();
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
- v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
- objTemp->Set(isolate, bsConstName.c_str(), pDefault);
- pObjDef->m_objTemplate.Reset(isolate,objTemp);
- return 0;
-}
-
-static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(IJS_Runtime* pJSRuntime)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- ASSERT(pArray != NULL);
- for(int i=0; i<pArray->GetSize(); i++)
- {
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
- if(pObjDef->m_bSetAsGlobalObject)
- return pObjDef->m_objTemplate;
- }
- static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate;
- return gloabalObjectTemplate;
-}
-
-int JS_DefineGlobalMethod(IJS_Runtime* pJSRuntime, const wchar_t* sMethodName, v8::FunctionCallback pMethodCall)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_WideString ws = CFX_WideString(sMethodName);
- CFX_ByteString bsMethodName = ws.UTF8Encode();
-
- v8::Local<v8::FunctionTemplate> funTempl = v8::FunctionTemplate::New(isolate, pMethodCall);
- v8::Local<v8::ObjectTemplate> objTemp;
-
- v8::Global<v8::ObjectTemplate>& globalObjTemp = _getGlobalObjectTemplate(pJSRuntime);
- if(globalObjTemp.IsEmpty())
- objTemp = v8::ObjectTemplate::New(isolate);
- else
- objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp);
- objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), v8::NewStringType::kNormal).ToLocalChecked(), funTempl, v8::ReadOnly);
-
- globalObjTemp.Reset(isolate,objTemp);
-
- return 0;
-}
-
-int JS_DefineGlobalConst(IJS_Runtime* pJSRuntime, const wchar_t* sConstName, v8::Local<v8::Value> pDefault)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- CFX_WideString ws = CFX_WideString(sConstName);
- CFX_ByteString bsConst= ws.UTF8Encode();
-
- v8::Local<v8::ObjectTemplate> objTemp;
-
- v8::Global<v8::ObjectTemplate>& globalObjTemp = _getGlobalObjectTemplate(pJSRuntime);
- if(globalObjTemp.IsEmpty())
- objTemp = v8::ObjectTemplate::New(isolate);
- else
- objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp);
- objTemp->Set(v8::String::NewFromUtf8(isolate, bsConst.c_str(), v8::NewStringType::kNormal).ToLocalChecked(), pDefault, v8::ReadOnly);
-
- globalObjTemp.Reset(isolate,objTemp);
-
- return 0;
-}
-
-
-void JS_InitialRuntime(IJS_Runtime* pJSRuntime,IFXJS_Runtime* pFXRuntime, IFXJS_Context* context, v8::Global<v8::Context>& v8PersistentContext)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
-
- v8::Global<v8::ObjectTemplate>& globalObjTemp = _getGlobalObjectTemplate(pJSRuntime);
- v8::Local<v8::Context> v8Context = v8::Context::New(isolate, NULL, v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp));
- v8::Context::Scope context_scope(v8Context);
-
- v8::Local<v8::External> ptr = v8::External::New(isolate, pFXRuntime);
- v8Context->SetEmbedderData(1, ptr);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return;
-
- for(int i=0; i<pArray->GetSize(); i++)
- {
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
- CFX_WideString ws = CFX_WideString(pObjDef->objName);
- CFX_ByteString bs = ws.UTF8Encode();
- v8::Local<v8::String> objName = v8::String::NewFromUtf8(isolate, bs.c_str(), v8::NewStringType::kNormal, bs.GetLength()).ToLocalChecked();
-
-
- if(pObjDef->objType == JS_DYNAMIC)
- {
- //Document is set as global object, need to construct it first.
- if(ws.Equal(L"Document"))
- {
-
- CJS_PrivateData* pPrivateData = new CJS_PrivateData;
- pPrivateData->ObjDefID = i;
-
- v8Context->Global()->GetPrototype()->ToObject(v8Context).ToLocalChecked()->SetAlignedPointerInInternalField(0, pPrivateData);
-
- if(pObjDef->m_pConstructor)
- pObjDef->m_pConstructor(context, v8Context->Global()->GetPrototype()->ToObject(v8Context).ToLocalChecked(), v8Context->Global()->GetPrototype()->ToObject(v8Context).ToLocalChecked());
- }
- }
- else
- {
- v8::Local<v8::Object> obj = JS_NewFxDynamicObj(pJSRuntime, context, i);
- v8Context->Global()->Set(v8Context, objName, obj).FromJust();
- pObjDef->m_StaticObj.Reset(isolate, obj);
- }
- }
- v8PersistentContext.Reset(isolate, v8Context);
-}
-
-void JS_ReleaseRuntime(IJS_Runtime* pJSRuntime, v8::Global<v8::Context>& v8PersistentContext)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::HandleScope handle_scope(isolate);
- v8::Local<v8::Context> context = v8::Local<v8::Context>::New(isolate, v8PersistentContext);
- v8::Context::Scope context_scope(context);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return ;
-
- for(int i=0; i<pArray->GetSize(); i++)
- {
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
- if(!pObjDef->m_StaticObj.IsEmpty())
- {
- v8::Local<v8::Object> pObj = v8::Local<v8::Object>::New(isolate, pObjDef->m_StaticObj);
- if(pObjDef->m_pDestructor)
- pObjDef->m_pDestructor(pObj);
- JS_FreePrivate(pObj);
- }
- delete pObjDef;
- }
- delete pArray;
- isolate->SetData(g_embedderDataSlot,NULL);
-}
-
-void JS_Initial(unsigned int embedderDataSlot)
-{
- g_embedderDataSlot = embedderDataSlot;
-}
-void JS_Release()
-{
-
-}
-int JS_Parse(IJS_Runtime* pJSRuntime, IFXJS_Context* pJSContext, const wchar_t* script, long length, FXJSErr* perror)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::TryCatch try_catch(isolate);
-
- CFX_WideString wsScript(script);
- CFX_ByteString bsScript = wsScript.UTF8Encode();
-
-
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- v8::Local<v8::Script> compiled_script;
- if (!v8::Script::Compile(context, v8::String::NewFromUtf8(isolate, bsScript.c_str(), v8::NewStringType::kNormal, bsScript.GetLength()).ToLocalChecked()).ToLocal(&compiled_script)) {
- v8::String::Utf8Value error(try_catch.Exception());
- return -1;
- }
- return 0;
-}
-
-int JS_Execute(IJS_Runtime* pJSRuntime, IFXJS_Context* pJSContext, const wchar_t* script, long length, FXJSErr* perror)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::TryCatch try_catch(isolate);
-
- CFX_WideString wsScript(script);
- CFX_ByteString bsScript = wsScript.UTF8Encode();
-
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- v8::Local<v8::Script> compiled_script;
- if (!v8::Script::Compile(context, v8::String::NewFromUtf8(isolate, bsScript.c_str(), v8::NewStringType::kNormal, bsScript.GetLength()).ToLocalChecked()).ToLocal(&compiled_script)) {
- v8::String::Utf8Value error(try_catch.Exception());
- return -1;
- }
+int JS_DefineObj(IJS_Runtime* pJSRuntime,
+ const wchar_t* sObjName,
+ FXJSOBJTYPE eObjType,
+ LP_CONSTRUCTOR pConstructor,
+ LP_DESTRUCTOR pDestructor) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray) {
+ pArray = new CFX_PtrArray();
+ isolate->SetData(g_embedderDataSlot, pArray);
+ }
+ CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(isolate, sObjName, eObjType,
+ pConstructor, pDestructor);
+ pArray->Add(pObjDef);
+ return pArray->GetSize() - 1;
+}
+
+int JS_DefineObjMethod(IJS_Runtime* pJSRuntime,
+ int nObjDefnID,
+ const wchar_t* sMethodName,
+ v8::FunctionCallback pMethodCall) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_WideString ws = CFX_WideString(sMethodName);
+ CFX_ByteString bsMethodName = ws.UTF8Encode();
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return 0;
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return 0;
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+ v8::Local<v8::ObjectTemplate> objTemp =
+ v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
+ objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ v8::FunctionTemplate::New(isolate, pMethodCall), v8::ReadOnly);
+ pObjDef->m_objTemplate.Reset(isolate, objTemp);
+ return 0;
+}
+
+int JS_DefineObjProperty(IJS_Runtime* pJSRuntime,
+ int nObjDefnID,
+ const wchar_t* sPropName,
+ v8::AccessorGetterCallback pPropGet,
+ v8::AccessorSetterCallback pPropPut) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_WideString ws = CFX_WideString(sPropName);
+ CFX_ByteString bsPropertyName = ws.UTF8Encode();
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return 0;
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return 0;
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+ v8::Local<v8::ObjectTemplate> objTemp =
+ v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
+ objTemp->SetAccessor(v8::String::NewFromUtf8(isolate, bsPropertyName.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ pPropGet, pPropPut);
+ pObjDef->m_objTemplate.Reset(isolate, objTemp);
+ return 0;
+}
+
+int JS_DefineObjAllProperties(IJS_Runtime* pJSRuntime,
+ int nObjDefnID,
+ v8::NamedPropertyQueryCallback pPropQurey,
+ v8::NamedPropertyGetterCallback pPropGet,
+ v8::NamedPropertySetterCallback pPropPut,
+ v8::NamedPropertyDeleterCallback pPropDel) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return 0;
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return 0;
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+ v8::Local<v8::ObjectTemplate> objTemp =
+ v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
+ objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDel);
+ pObjDef->m_objTemplate.Reset(isolate, objTemp);
+ return 0;
+}
+
+int JS_DefineObjConst(IJS_Runtime* pJSRuntime,
+ int nObjDefnID,
+ const wchar_t* sConstName,
+ v8::Local<v8::Value> pDefault) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return 0;
+
+ CFX_WideString ws = CFX_WideString(sConstName);
+ CFX_ByteString bsConstName = ws.UTF8Encode();
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return 0;
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+ v8::Local<v8::ObjectTemplate> objTemp =
+ v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
+ objTemp->Set(isolate, bsConstName.c_str(), pDefault);
+ pObjDef->m_objTemplate.Reset(isolate, objTemp);
+ return 0;
+}
+
+static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(
+ IJS_Runtime* pJSRuntime) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ ASSERT(pArray != NULL);
+ for (int i = 0; i < pArray->GetSize(); i++) {
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
+ if (pObjDef->m_bSetAsGlobalObject)
+ return pObjDef->m_objTemplate;
+ }
+ static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate;
+ return gloabalObjectTemplate;
+}
+
+int JS_DefineGlobalMethod(IJS_Runtime* pJSRuntime,
+ const wchar_t* sMethodName,
+ v8::FunctionCallback pMethodCall) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_WideString ws = CFX_WideString(sMethodName);
+ CFX_ByteString bsMethodName = ws.UTF8Encode();
+
+ v8::Local<v8::FunctionTemplate> funTempl =
+ v8::FunctionTemplate::New(isolate, pMethodCall);
+ v8::Local<v8::ObjectTemplate> objTemp;
+
+ v8::Global<v8::ObjectTemplate>& globalObjTemp =
+ _getGlobalObjectTemplate(pJSRuntime);
+ if (globalObjTemp.IsEmpty())
+ objTemp = v8::ObjectTemplate::New(isolate);
+ else
+ objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp);
+ objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ funTempl, v8::ReadOnly);
+
+ globalObjTemp.Reset(isolate, objTemp);
+
+ return 0;
+}
+
+int JS_DefineGlobalConst(IJS_Runtime* pJSRuntime,
+ const wchar_t* sConstName,
+ v8::Local<v8::Value> pDefault) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ CFX_WideString ws = CFX_WideString(sConstName);
+ CFX_ByteString bsConst = ws.UTF8Encode();
+
+ v8::Local<v8::ObjectTemplate> objTemp;
+
+ v8::Global<v8::ObjectTemplate>& globalObjTemp =
+ _getGlobalObjectTemplate(pJSRuntime);
+ if (globalObjTemp.IsEmpty())
+ objTemp = v8::ObjectTemplate::New(isolate);
+ else
+ objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp);
+ objTemp->Set(v8::String::NewFromUtf8(isolate, bsConst.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ pDefault, v8::ReadOnly);
+
+ globalObjTemp.Reset(isolate, objTemp);
+
+ return 0;
+}
+
+void JS_InitialRuntime(IJS_Runtime* pJSRuntime,
+ IFXJS_Runtime* pFXRuntime,
+ IFXJS_Context* context,
+ v8::Global<v8::Context>& v8PersistentContext) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+
+ v8::Global<v8::ObjectTemplate>& globalObjTemp =
+ _getGlobalObjectTemplate(pJSRuntime);
+ v8::Local<v8::Context> v8Context = v8::Context::New(
+ isolate, NULL,
+ v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp));
+ v8::Context::Scope context_scope(v8Context);
+
+ v8::Local<v8::External> ptr = v8::External::New(isolate, pFXRuntime);
+ v8Context->SetEmbedderData(1, ptr);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return;
+
+ for (int i = 0; i < pArray->GetSize(); i++) {
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
+ CFX_WideString ws = CFX_WideString(pObjDef->objName);
+ CFX_ByteString bs = ws.UTF8Encode();
+ v8::Local<v8::String> objName =
+ v8::String::NewFromUtf8(isolate, bs.c_str(), v8::NewStringType::kNormal,
+ bs.GetLength())
+ .ToLocalChecked();
+
+ if (pObjDef->objType == JS_DYNAMIC) {
+ // Document is set as global object, need to construct it first.
+ if (ws.Equal(L"Document")) {
+ CJS_PrivateData* pPrivateData = new CJS_PrivateData;
+ pPrivateData->ObjDefID = i;
+
+ v8Context->Global()
+ ->GetPrototype()
+ ->ToObject(v8Context)
+ .ToLocalChecked()
+ ->SetAlignedPointerInInternalField(0, pPrivateData);
+
+ if (pObjDef->m_pConstructor)
+ pObjDef->m_pConstructor(context, v8Context->Global()
+ ->GetPrototype()
+ ->ToObject(v8Context)
+ .ToLocalChecked(),
+ v8Context->Global()
+ ->GetPrototype()
+ ->ToObject(v8Context)
+ .ToLocalChecked());
+ }
+ } else {
+ v8::Local<v8::Object> obj = JS_NewFxDynamicObj(pJSRuntime, context, i);
+ v8Context->Global()->Set(v8Context, objName, obj).FromJust();
+ pObjDef->m_StaticObj.Reset(isolate, obj);
+ }
+ }
+ v8PersistentContext.Reset(isolate, v8Context);
+}
+
+void JS_ReleaseRuntime(IJS_Runtime* pJSRuntime,
+ v8::Global<v8::Context>& v8PersistentContext) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::HandleScope handle_scope(isolate);
+ v8::Local<v8::Context> context =
+ v8::Local<v8::Context>::New(isolate, v8PersistentContext);
+ v8::Context::Scope context_scope(context);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return;
+
+ for (int i = 0; i < pArray->GetSize(); i++) {
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
+ if (!pObjDef->m_StaticObj.IsEmpty()) {
+ v8::Local<v8::Object> pObj =
+ v8::Local<v8::Object>::New(isolate, pObjDef->m_StaticObj);
+ if (pObjDef->m_pDestructor)
+ pObjDef->m_pDestructor(pObj);
+ JS_FreePrivate(pObj);
+ }
+ delete pObjDef;
+ }
+ delete pArray;
+ isolate->SetData(g_embedderDataSlot, NULL);
+}
+
+void JS_Initial(unsigned int embedderDataSlot) {
+ g_embedderDataSlot = embedderDataSlot;
+}
+void JS_Release() {}
+int JS_Parse(IJS_Runtime* pJSRuntime,
+ IFXJS_Context* pJSContext,
+ const wchar_t* script,
+ long length,
+ FXJSErr* perror) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::TryCatch try_catch(isolate);
+
+ CFX_WideString wsScript(script);
+ CFX_ByteString bsScript = wsScript.UTF8Encode();
+
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ v8::Local<v8::Script> compiled_script;
+ if (!v8::Script::Compile(context,
+ v8::String::NewFromUtf8(isolate, bsScript.c_str(),
+ v8::NewStringType::kNormal,
+ bsScript.GetLength())
+ .ToLocalChecked())
+ .ToLocal(&compiled_script)) {
+ v8::String::Utf8Value error(try_catch.Exception());
+ return -1;
+ }
+ return 0;
+}
+
+int JS_Execute(IJS_Runtime* pJSRuntime,
+ IFXJS_Context* pJSContext,
+ const wchar_t* script,
+ long length,
+ FXJSErr* perror) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::TryCatch try_catch(isolate);
+
+ CFX_WideString wsScript(script);
+ CFX_ByteString bsScript = wsScript.UTF8Encode();
+
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ v8::Local<v8::Script> compiled_script;
+ if (!v8::Script::Compile(context,
+ v8::String::NewFromUtf8(isolate, bsScript.c_str(),
+ v8::NewStringType::kNormal,
+ bsScript.GetLength())
+ .ToLocalChecked())
+ .ToLocal(&compiled_script)) {
+ v8::String::Utf8Value error(try_catch.Exception());
+ return -1;
+ }
+
+ v8::Local<v8::Value> result;
+ if (!compiled_script->Run(context).ToLocal(&result)) {
+ v8::String::Utf8Value error(try_catch.Exception());
+ return -1;
+ }
+ return 0;
+}
+
+v8::Local<v8::Object> JS_NewFxDynamicObj(IJS_Runtime* pJSRuntime,
+ IFXJS_Context* pJSContext,
+ int nObjDefnID) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ if (-1 == nObjDefnID) {
+ v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New(isolate);
+ v8::Local<v8::Object> obj;
+ if (objTempl->NewInstance(context).ToLocal(&obj))
+ return obj;
+ return v8::Local<v8::Object>();
+ }
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return v8::Local<v8::Object>();
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return v8::Local<v8::Object>();
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+
+ v8::Local<v8::ObjectTemplate> objTemp =
+ v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
+ v8::Local<v8::Object> obj;
+ if (!objTemp->NewInstance(context).ToLocal(&obj))
+ return v8::Local<v8::Object>();
+
+ CJS_PrivateData* pPrivateData = new CJS_PrivateData;
+ pPrivateData->ObjDefID = nObjDefnID;
+
+ obj->SetAlignedPointerInInternalField(0, pPrivateData);
+ if (pObjDef->m_pConstructor)
+ pObjDef->m_pConstructor(
+ pJSContext, obj,
+ context->Global()->GetPrototype()->ToObject(context).ToLocalChecked());
+
+ return obj;
+}
+
+v8::Local<v8::Object> JS_GetStaticObj(IJS_Runtime* pJSRuntime, int nObjDefnID) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return v8::Local<v8::Object>();
+
+ if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
+ return v8::Local<v8::Object>();
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
+ v8::Local<v8::Object> obj =
+ v8::Local<v8::Object>::New(isolate, pObjDef->m_StaticObj);
+ return obj;
+}
+
+void JS_SetThisObj(IJS_Runtime* pJSRuntime, int nThisObjID) {
+ // Do nothing.
+}
+v8::Local<v8::Object> JS_GetThisObj(IJS_Runtime* pJSRuntime) {
+ // Return the global object.
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return v8::Local<v8::Object>();
+
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ return context->Global()->GetPrototype()->ToObject(context).ToLocalChecked();
+}
+
+int JS_GetObjDefnID(v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty() || !pObj->InternalFieldCount())
+ return -1;
+ CJS_PrivateData* pPrivateData =
+ (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
+ if (pPrivateData)
+ return pPrivateData->ObjDefID;
+ return -1;
+}
+
+IJS_Runtime* JS_GetRuntime(v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty())
+ return NULL;
+ v8::Local<v8::Context> context = pObj->CreationContext();
+ if (context.IsEmpty())
+ return NULL;
+ return context->GetIsolate();
+}
+
+int JS_GetObjDefnID(IJS_Runtime* pJSRuntime, const wchar_t* pObjName) {
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Isolate::Scope isolate_scope(isolate);
+
+ CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
+ if (!pArray)
+ return -1;
+
+ for (int i = 0; i < pArray->GetSize(); i++) {
+ CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
+ if (FXSYS_wcscmp(pObjDef->objName, pObjName) == 0)
+ return i;
+ }
+ return -1;
+}
+
+void JS_Error(v8::Isolate* isolate, const CFX_WideString& message) {
+ // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t
+ // wide-strings isn't handled by v8, so use UTF8 as a common
+ // intermediate format.
+ CFX_ByteString utf8_message = message.UTF8Encode();
+ isolate->ThrowException(v8::String::NewFromUtf8(isolate, utf8_message.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked());
+}
+
+unsigned JS_CalcHash(const wchar_t* main, unsigned nLen) {
+ return (unsigned)FX_HashCode_String_GetW(main, nLen);
+}
+
+unsigned JS_CalcHash(const wchar_t* main) {
+ return (unsigned)FX_HashCode_String_GetW(main, FXSYS_wcslen(main));
+}
+const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj) {
+ if (pObj.IsEmpty())
+ return NULL;
+ if (pObj->IsString())
+ return VALUE_NAME_STRING;
+ if (pObj->IsNumber())
+ return VALUE_NAME_NUMBER;
+ if (pObj->IsBoolean())
+ return VALUE_NAME_BOOLEAN;
+ if (pObj->IsDate())
+ return VALUE_NAME_DATE;
+ if (pObj->IsObject())
+ return VALUE_NAME_OBJECT;
+ if (pObj->IsNull())
+ return VALUE_NAME_NULL;
+ if (pObj->IsUndefined())
+ return VALUE_NAME_UNDEFINED;
+ return NULL;
+}
+void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p) {
+ JS_SetPrivate(NULL, pObj, p);
+}
+
+void* JS_GetPrivate(v8::Local<v8::Object> pObj) {
+ return JS_GetPrivate(NULL, pObj);
+}
+
+void JS_SetPrivate(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ void* p) {
+ if (pObj.IsEmpty() || !pObj->InternalFieldCount())
+ return;
+ CJS_PrivateData* pPrivateData =
+ (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
+ if (!pPrivateData)
+ return;
+ pPrivateData->pPrivate = p;
+}
+
+void* JS_GetPrivate(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty())
+ return NULL;
+ CJS_PrivateData* pPrivateData = NULL;
+ if (pObj->InternalFieldCount())
+ pPrivateData =
+ (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
+ else {
+ // It could be a global proxy object.
+ v8::Local<v8::Value> v = pObj->GetPrototype();
+ v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ if (v->IsObject())
+ pPrivateData = (CJS_PrivateData*)v->ToObject(context)
+ .ToLocalChecked()
+ ->GetAlignedPointerFromInternalField(0);
+ }
+ if (!pPrivateData)
+ return NULL;
+ return pPrivateData->pPrivate;
+}
+
+void JS_FreePrivate(void* pPrivateData) {
+ delete (CJS_PrivateData*)pPrivateData;
+}
+
+void JS_FreePrivate(v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty() || !pObj->InternalFieldCount())
+ return;
+ JS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0));
+ pObj->SetAlignedPointerInInternalField(0, NULL);
+}
+
+v8::Local<v8::Value> JS_GetObjectValue(v8::Local<v8::Object> pObj) {
+ return pObj;
+}
+
+v8::Local<v8::String> WSToJSString(IJS_Runtime* pJSRuntime,
+ const wchar_t* PropertyName,
+ int Len = -1) {
+ CFX_WideString ws = CFX_WideString(PropertyName, Len);
+ CFX_ByteString bs = ws.UTF8Encode();
+ if (!pJSRuntime)
+ pJSRuntime = v8::Isolate::GetCurrent();
+ return v8::String::NewFromUtf8(pJSRuntime, bs.c_str(),
+ v8::NewStringType::kNormal)
+ .ToLocalChecked();
+}
+
+v8::Local<v8::Value> JS_GetObjectElement(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName) {
+ if (pObj.IsEmpty())
+ return v8::Local<v8::Value>();
+ v8::Local<v8::Value> val;
+ if (!pObj->Get(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName))
+ .ToLocal(&val))
+ return v8::Local<v8::Value>();
+ return val;
+}
+
+v8::Local<v8::Array> JS_GetObjectElementNames(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty())
+ return v8::Local<v8::Array>();
+ v8::Local<v8::Array> val;
+ if (!pObj->GetPropertyNames(pJSRuntime->GetCurrentContext()).ToLocal(&val))
+ return v8::Local<v8::Array>();
+ return val;
+}
+
+void JS_PutObjectString(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ const wchar_t* sValue) // VT_string
+{
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName),
+ WSToJSString(pJSRuntime, sValue))
+ .FromJust();
+}
+
+void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ int nValue) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName),
+ v8::Int32::New(pJSRuntime, nValue))
+ .FromJust();
+}
+
+void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ float fValue) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName),
+ v8::Number::New(pJSRuntime, (double)fValue))
+ .FromJust();
+}
+
+void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ double dValue) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName),
+ v8::Number::New(pJSRuntime, (double)dValue))
+ .FromJust();
+}
- v8::Local<v8::Value> result;
- if (!compiled_script->Run(context).ToLocal(&result)) {
- v8::String::Utf8Value error(try_catch.Exception());
- return -1;
- }
- return 0;
+void JS_PutObjectBoolean(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ bool bValue) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName),
+ v8::Boolean::New(pJSRuntime, bValue))
+ .FromJust();
}
-v8::Local<v8::Object> JS_NewFxDynamicObj(IJS_Runtime* pJSRuntime, IFXJS_Context* pJSContext, int nObjDefnID)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- if(-1 == nObjDefnID)
- {
- v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New(isolate);
- v8::Local<v8::Object> obj;
- if (objTempl->NewInstance(context).ToLocal(&obj)) return obj;
- return v8::Local<v8::Object>();
- }
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return v8::Local<v8::Object>();
-
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8::Object>();
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
-
- v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate);
- v8::Local<v8::Object> obj;
- if (!objTemp->NewInstance(context).ToLocal(&obj)) return v8::Local<v8::Object>();
-
- CJS_PrivateData* pPrivateData = new CJS_PrivateData;
- pPrivateData->ObjDefID = nObjDefnID;
-
- obj->SetAlignedPointerInInternalField(0, pPrivateData);
- if(pObjDef->m_pConstructor)
- pObjDef->m_pConstructor(pJSContext, obj, context->Global()->GetPrototype()->ToObject(context).ToLocalChecked());
-
- return obj;
+void JS_PutObjectObject(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName,
+ v8::Local<v8::Object> pPut) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName), pPut)
+ .FromJust();
}
-v8::Local<v8::Object> JS_GetStaticObj(IJS_Runtime* pJSRuntime, int nObjDefnID)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return v8::Local<v8::Object>();
-
- if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8::Object>();
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
- v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(isolate,pObjDef->m_StaticObj);
- return obj;
+void JS_PutObjectNull(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj,
+ const wchar_t* PropertyName) {
+ if (pObj.IsEmpty())
+ return;
+ pObj->Set(pJSRuntime->GetCurrentContext(),
+ WSToJSString(pJSRuntime, PropertyName), v8::Local<v8::Object>())
+ .FromJust();
}
-void JS_SetThisObj(IJS_Runtime* pJSRuntime, int nThisObjID)
-{
- //Do nothing.
+v8::Local<v8::Array> JS_NewArray(IJS_Runtime* pJSRuntime) {
+ return v8::Array::New(pJSRuntime);
}
-v8::Local<v8::Object> JS_GetThisObj(IJS_Runtime * pJSRuntime)
-{
- //Return the global object.
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return v8::Local<v8::Object>();
-
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- return context->Global()->GetPrototype()->ToObject(context).ToLocalChecked();
+unsigned JS_PutArrayElement(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Array> pArray,
+ unsigned index,
+ v8::Local<v8::Value> pValue,
+ FXJSVALUETYPE eType) {
+ if (pArray.IsEmpty())
+ return 0;
+ if (pArray->Set(pJSRuntime->GetCurrentContext(), index, pValue).IsNothing())
+ return 0;
+ return 1;
}
-int JS_GetObjDefnID(v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return -1;
- CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
- if(pPrivateData)
- return pPrivateData->ObjDefID;
- return -1;
+v8::Local<v8::Value> JS_GetArrayElement(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Array> pArray,
+ unsigned index) {
+ if (pArray.IsEmpty())
+ return v8::Local<v8::Value>();
+ v8::Local<v8::Value> val;
+ if (pArray->Get(pJSRuntime->GetCurrentContext(), index).ToLocal(&val))
+ return v8::Local<v8::Value>();
+ return val;
}
-IJS_Runtime* JS_GetRuntime(v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty()) return NULL;
- v8::Local<v8::Context> context = pObj->CreationContext();
- if(context.IsEmpty()) return NULL;
- return context->GetIsolate();
+unsigned JS_GetArrayLength(v8::Local<v8::Array> pArray) {
+ if (pArray.IsEmpty())
+ return 0;
+ return pArray->Length();
}
-int JS_GetObjDefnID(IJS_Runtime * pJSRuntime, const wchar_t* pObjName)
-{
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Isolate::Scope isolate_scope(isolate);
-
- CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot);
- if(!pArray) return -1;
-
- for(int i=0; i<pArray->GetSize(); i++)
- {
- CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
- if(FXSYS_wcscmp(pObjDef->objName, pObjName) == 0)
- return i;
- }
- return -1;
+v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, int number) {
+ return v8::Int32::New(pJSRuntime, number);
}
-void JS_Error(v8::Isolate* isolate, const CFX_WideString& message)
-{
- // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t
- // wide-strings isn't handled by v8, so use UTF8 as a common
- // intermediate format.
- CFX_ByteString utf8_message = message.UTF8Encode();
- isolate->ThrowException(v8::String::NewFromUtf8(isolate,
- utf8_message.c_str(),
- v8::NewStringType::kNormal).ToLocalChecked());
+v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, double number) {
+ return v8::Number::New(pJSRuntime, number);
}
-unsigned JS_CalcHash(const wchar_t* main, unsigned nLen)
-{
- return (unsigned)FX_HashCode_String_GetW(main, nLen);
+v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, float number) {
+ return v8::Number::New(pJSRuntime, (float)number);
}
-unsigned JS_CalcHash(const wchar_t* main)
-{
- return (unsigned)FX_HashCode_String_GetW(main, FXSYS_wcslen(main));
-}
-const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj)
-{
- if(pObj.IsEmpty()) return NULL;
- if(pObj->IsString())
- return VALUE_NAME_STRING;
- if(pObj->IsNumber())
- return VALUE_NAME_NUMBER;
- if(pObj->IsBoolean())
- return VALUE_NAME_BOOLEAN;
- if(pObj->IsDate())
- return VALUE_NAME_DATE;
- if(pObj->IsObject())
- return VALUE_NAME_OBJECT;
- if(pObj->IsNull())
- return VALUE_NAME_NULL;
- if(pObj->IsUndefined())
- return VALUE_NAME_UNDEFINED;
- return NULL;
-
-}
-void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p)
-{
- JS_SetPrivate(NULL, pObj, p);
+v8::Local<v8::Value> JS_NewBoolean(IJS_Runtime* pJSRuntime, bool b) {
+ return v8::Boolean::New(pJSRuntime, b);
}
-void* JS_GetPrivate(v8::Local<v8::Object> pObj)
-{
- return JS_GetPrivate(NULL,pObj);
+v8::Local<v8::Value> JS_NewObject(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Object> pObj) {
+ if (pObj.IsEmpty())
+ return v8::Local<v8::Value>();
+ return pObj->Clone();
}
-void JS_SetPrivate(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj, void* p)
-{
- if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return;
- CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
- if(!pPrivateData) return;
- pPrivateData->pPrivate = p;
+v8::Local<v8::Value> JS_NewObject2(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Array> pObj) {
+ if (pObj.IsEmpty())
+ return v8::Local<v8::Value>();
+ return pObj->Clone();
}
-void* JS_GetPrivate(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty()) return NULL;
- CJS_PrivateData* pPrivateData = NULL;
- if(pObj->InternalFieldCount())
- pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
- else
- {
- //It could be a global proxy object.
- v8::Local<v8::Value> v = pObj->GetPrototype();
- v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- if(v->IsObject())
- pPrivateData = (CJS_PrivateData*)v->ToObject(context).ToLocalChecked()->GetAlignedPointerFromInternalField(0);
- }
- if(!pPrivateData) return NULL;
- return pPrivateData->pPrivate;
-}
-
-void JS_FreePrivate(void* pPrivateData)
-{
- delete (CJS_PrivateData*)pPrivateData;
+v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime,
+ const wchar_t* string) {
+ return WSToJSString(pJSRuntime, string);
}
-void JS_FreePrivate(v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return;
- JS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0));
- pObj->SetAlignedPointerInInternalField(0, NULL);
+v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime,
+ const wchar_t* string,
+ unsigned nLen) {
+ return WSToJSString(pJSRuntime, string, nLen);
}
-
-v8::Local<v8::Value> JS_GetObjectValue(v8::Local<v8::Object> pObj)
-{
- return pObj;
+v8::Local<v8::Value> JS_NewNull() {
+ return v8::Local<v8::Value>();
}
-v8::Local<v8::String> WSToJSString(IJS_Runtime* pJSRuntime, const wchar_t* PropertyName, int Len = -1)
-{
- CFX_WideString ws = CFX_WideString(PropertyName,Len);
- CFX_ByteString bs = ws.UTF8Encode();
- if(!pJSRuntime) pJSRuntime = v8::Isolate::GetCurrent();
- return v8::String::NewFromUtf8(pJSRuntime, bs.c_str(), v8::NewStringType::kNormal).ToLocalChecked();
+v8::Local<v8::Value> JS_NewDate(IJS_Runtime* pJSRuntime, double d) {
+ return v8::Date::New(pJSRuntime->GetCurrentContext(), d).ToLocalChecked();
}
-v8::Local<v8::Value> JS_GetObjectElement(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj,const wchar_t* PropertyName)
-{
- if(pObj.IsEmpty()) return v8::Local<v8::Value>();
- v8::Local<v8::Value> val;
- if (!pObj->Get(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName)).ToLocal(&val)) return v8::Local<v8::Value>();
- return val;
+v8::Local<v8::Value> JS_NewValue(IJS_Runtime* pJSRuntime) {
+ return v8::Local<v8::Value>();
}
-v8::Local<v8::Array> JS_GetObjectElementNames(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty()) return v8::Local<v8::Array>();
- v8::Local<v8::Array> val;
- if (!pObj->GetPropertyNames(pJSRuntime->GetCurrentContext()).ToLocal(&val)) return v8::Local<v8::Array>();
+v8::Local<v8::Value> JS_GetListValue(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Value> pList,
+ int index) {
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ if (!pList.IsEmpty() && pList->IsObject()) {
+ v8::Local<v8::Object> obj;
+ if (pList->ToObject(context).ToLocal(&obj)) {
+ v8::Local<v8::Value> val;
+ if (obj->Get(context, index).ToLocal(&val))
return val;
+ }
+ }
+ return v8::Local<v8::Value>();
}
-void JS_PutObjectString(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, const wchar_t* sValue) //VT_string
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime, PropertyName), WSToJSString(pJSRuntime, sValue)).FromJust();
+int JS_ToInt32(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return 0;
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ return pValue->ToInt32(context).ToLocalChecked()->Value();
}
-void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, int nValue)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),v8::Int32::New(pJSRuntime, nValue)).FromJust();
+bool JS_ToBoolean(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return false;
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ return pValue->ToBoolean(context).ToLocalChecked()->Value();
}
-void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, float fValue)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),v8::Number::New(pJSRuntime, (double)fValue)).FromJust();
+double JS_ToNumber(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return 0.0;
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ return pValue->ToNumber(context).ToLocalChecked()->Value();
}
-void JS_PutObjectNumber(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, double dValue)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),v8::Number::New(pJSRuntime, (double)dValue)).FromJust();
+v8::Local<v8::Object> JS_ToObject(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return v8::Local<v8::Object>();
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ return pValue->ToObject(context).ToLocalChecked();
}
-void JS_PutObjectBoolean(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, bool bValue)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),v8::Boolean::New(pJSRuntime, bValue)).FromJust();
+CFX_WideString JS_ToString(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return L"";
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked());
+ return CFX_WideString::FromUTF8(*s, s.length());
}
-void JS_PutObjectObject(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName, v8::Local<v8::Object> pPut)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),pPut).FromJust();
-}
-
-void JS_PutObjectNull(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj, const wchar_t* PropertyName)
-{
- if(pObj.IsEmpty()) return;
- pObj->Set(pJSRuntime->GetCurrentContext(), WSToJSString(pJSRuntime,PropertyName),v8::Local<v8::Object>()).FromJust();
-}
-
-v8::Local<v8::Array> JS_NewArray(IJS_Runtime* pJSRuntime)
-{
- return v8::Array::New(pJSRuntime);
+v8::Local<v8::Array> JS_ToArray(IJS_Runtime* pJSRuntime,
+ v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty())
+ return v8::Local<v8::Array>();
+ v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
+ return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked());
}
-unsigned JS_PutArrayElement(IJS_Runtime* pJSRuntime, v8::Local<v8::Array> pArray,unsigned index,v8::Local<v8::Value> pValue,FXJSVALUETYPE eType)
-{
- if(pArray.IsEmpty()) return 0;
- if (pArray->Set(pJSRuntime->GetCurrentContext(), index, pValue).IsNothing()) return 0;
- return 1;
+void JS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) {
+ pTo = pFrom;
}
-v8::Local<v8::Value> JS_GetArrayElement(IJS_Runtime* pJSRuntime, v8::Local<v8::Array> pArray,unsigned index)
-{
- if(pArray.IsEmpty()) return v8::Local<v8::Value>();
- v8::Local<v8::Value> val;
- if (pArray->Get(pJSRuntime->GetCurrentContext(), index).ToLocal(&val)) return v8::Local<v8::Value>();
- return val;
-}
-
-unsigned JS_GetArrayLength(v8::Local<v8::Array> pArray)
-{
- if(pArray.IsEmpty()) return 0;
- return pArray->Length();
-}
+// JavaScript time implement begin.
-v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime,int number)
-{
- return v8::Int32::New(pJSRuntime, number);
-}
-
-v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime,double number)
-{
- return v8::Number::New(pJSRuntime, number);
-}
-
-v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime,float number)
-{
- return v8::Number::New(pJSRuntime, (float)number);
-}
-
-v8::Local<v8::Value> JS_NewBoolean(IJS_Runtime* pJSRuntime,bool b)
-{
- return v8::Boolean::New(pJSRuntime, b);
-}
-
-v8::Local<v8::Value> JS_NewObject(IJS_Runtime* pJSRuntime,v8::Local<v8::Object> pObj)
-{
- if(pObj.IsEmpty()) return v8::Local<v8::Value>();
- return pObj->Clone();
-}
-
-v8::Local<v8::Value> JS_NewObject2(IJS_Runtime* pJSRuntime,v8::Local<v8::Array> pObj)
-{
- if(pObj.IsEmpty()) return v8::Local<v8::Value>();
- return pObj->Clone();
-}
-
-
-v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime,const wchar_t* string)
-{
- return WSToJSString(pJSRuntime, string);
-}
-
-v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime,const wchar_t* string, unsigned nLen)
-{
- return WSToJSString(pJSRuntime, string, nLen);
-}
-
-v8::Local<v8::Value> JS_NewNull()
-{
- return v8::Local<v8::Value>();
-}
-
-v8::Local<v8::Value> JS_NewDate(IJS_Runtime* pJSRuntime,double d)
-{
- return v8::Date::New(pJSRuntime->GetCurrentContext(), d).ToLocalChecked();
-}
-
-v8::Local<v8::Value> JS_NewValue(IJS_Runtime* pJSRuntime)
-{
- return v8::Local<v8::Value>();
-}
-
-v8::Local<v8::Value> JS_GetListValue(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pList, int index)
-{
-
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- if(!pList.IsEmpty() && pList->IsObject())
- {
- v8::Local<v8::Object> obj;
- if (pList->ToObject(context).ToLocal(&obj))
- {
- v8::Local<v8::Value> val;
- if (obj->Get(context, index).ToLocal(&val)) return val;
- }
- }
- return v8::Local<v8::Value>();
-}
-
-int JS_ToInt32(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return 0;
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- return pValue->ToInt32(context).ToLocalChecked()->Value();
-}
-
-bool JS_ToBoolean(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return false;
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- return pValue->ToBoolean(context).ToLocalChecked()->Value();
-}
-
-double JS_ToNumber(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return 0.0;
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- return pValue->ToNumber(context).ToLocalChecked()->Value();
-}
-
-v8::Local<v8::Object> JS_ToObject(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return v8::Local<v8::Object>();
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- return pValue->ToObject(context).ToLocalChecked();
-}
-
-CFX_WideString JS_ToString(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return L"";
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked());
- return CFX_WideString::FromUTF8(*s, s.length());
-}
-
-v8::Local<v8::Array> JS_ToArray(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue)
-{
- if(pValue.IsEmpty()) return v8::Local<v8::Array>();
- v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext();
- return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked());
-}
-
-void JS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom)
-{
- pTo = pFrom;
-}
-
-
-//JavaScript time implement begin.
-
-double _getLocalTZA()
-{
- if(!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
- return 0;
- time_t t = 0;
- time(&t);
- localtime(&t);
+double _getLocalTZA() {
+ if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
+ return 0;
+ time_t t = 0;
+ time(&t);
+ localtime(&t);
#if _MSC_VER >= 1900
// In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
// variable declared in time.h. That variable was deprecated and in VS 2015
@@ -785,286 +910,272 @@ double _getLocalTZA()
long timezone = 0;
_get_timezone(&timezone);
#endif
- return (double)(-(timezone * 1000));
+ return (double)(-(timezone * 1000));
}
-int _getDaylightSavingTA(double d)
-{
- if(!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
- return 0;
- time_t t = (time_t)(d/1000);
- struct tm * tmp = localtime(&t);
- if (tmp == NULL)
- return 0;
- if (tmp->tm_isdst > 0)
- //One hour.
- return (int)60*60*1000;
- return 0;
-}
-
-double _Mod(double x, double y)
-{
- double r = fmod(x, y);
- if (r < 0) r += y;
- return r;
+int _getDaylightSavingTA(double d) {
+ if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
+ return 0;
+ time_t t = (time_t)(d / 1000);
+ struct tm* tmp = localtime(&t);
+ if (tmp == NULL)
+ return 0;
+ if (tmp->tm_isdst > 0)
+ // One hour.
+ return (int)60 * 60 * 1000;
+ return 0;
}
-int _isfinite(double v)
-{
+double _Mod(double x, double y) {
+ double r = fmod(x, y);
+ if (r < 0)
+ r += y;
+ return r;
+}
+
+int _isfinite(double v) {
#if _MSC_VER
- return ::_finite(v);
+ return ::_finite(v);
#else
- return std::fabs(v) < std::numeric_limits<double>::max();
+ return std::fabs(v) < std::numeric_limits<double>::max();
#endif
}
-double _toInteger(double n)
-{
- return (n >= 0)? FXSYS_floor(n): -FXSYS_floor(-n);
-}
-
-bool _isLeapYear(int year)
-{
- return (year%4==0)&&((year%100!=0)||(year%400!=0));
-}
-
-int _DayFromYear(int y)
-{
- return (int)(365*(y - 1970.0) + FXSYS_floor((y - 1969.0)/4) - FXSYS_floor((y - 1901.0)/100)+FXSYS_floor((y - 1601.0)/400));
-}
-
-double _TimeFromYear(int y)
-{
- return ((double)86400000) * _DayFromYear(y);
-}
-
-double _TimeFromYearMonth(int y, int m)
-{
- static int daysMonth[12] ={ 0,31,59,90,120,151,181,212,243,273,304,334};
- static int leapDaysMonth[12] = { 0,31,60,91,121,152,182,213,244,274,305,335};
- int* pMonth = daysMonth;
- if(_isLeapYear(y))
- pMonth = leapDaysMonth;
- return _TimeFromYear(y) + ((double)pMonth[m])*86400000;
-}
-
-int _Day(double t)
-{
- return (int)FXSYS_floor(t / 86400000);
-}
-
-int _YearFromTime(double t)
-{
- //estimate the time.
- int y = 1970 +(int)(t/(365.0*86400000));
- if (_TimeFromYear(y) <= t)
- {
- while(_TimeFromYear(y+1) <= t) y++;
- }
- else
- while(_TimeFromYear(y-1) > t) y--;
- return y;
-}
-
-int _DayWithinYear(double t)
-{
- int year = _YearFromTime(t);
- int day = _Day(t);
- return day-_DayFromYear(year);
-}
-
-int _MonthFromTime(double t)
-{
- int day = _DayWithinYear(t);
- int year = _YearFromTime(t);
- if(0<=day && day <31)
- return 0;
- if(31<=day && day< 59+_isLeapYear(year))
- return 1;
- if((59+_isLeapYear(year))<=day && day<(90+_isLeapYear(year)))
- return 2;
- if((90+_isLeapYear(year))<=day && day<(120+_isLeapYear(year)))
- return 3;
- if((120+_isLeapYear(year))<=day && day<(151+_isLeapYear(year)))
- return 4;
- if((151+_isLeapYear(year))<=day && day<(181+_isLeapYear(year)))
- return 5;
- if((181+_isLeapYear(year))<=day && day<(212+_isLeapYear(year)))
- return 6;
- if((212+_isLeapYear(year))<=day && day<(243+_isLeapYear(year)))
- return 7;
- if((243+_isLeapYear(year))<=day && day<(273+_isLeapYear(year)))
- return 8;
- if((273+_isLeapYear(year))<=day && day<(304+_isLeapYear(year)))
- return 9;
- if((304+_isLeapYear(year))<=day && day<(334+_isLeapYear(year)))
- return 10;
- if((334+_isLeapYear(year))<=day && day<(365+_isLeapYear(year)))
- return 11;
-
- return -1;
-}
-
-int _DateFromTime(double t)
-{
- int day = _DayWithinYear(t);
- int year = _YearFromTime(t);
- bool leap = _isLeapYear(year);
- int month = _MonthFromTime(t);
- switch (month)
- {
- case 0:
- return day+1;
- case 1:
- return day-30;
- case 2:
- return day-58-leap;
- case 3:
- return day-89-leap;
- case 4:
- return day-119-leap;
- case 5:
- return day-150-leap;
- case 6:
- return day-180-leap;
- case 7:
- return day-211-leap;
- case 8:
- return day-242-leap;
- case 9:
- return day-272-leap;
- case 10:
- return day-303-leap;
- case 11:
- return day-333-leap;
- default:
- return 0;
- }
-}
-
-double JS_GetDateTime()
-{
- if(!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
- return 0;
- time_t t = time(NULL);
- struct tm* pTm = localtime(&t);
-
- int year = pTm->tm_year+1900;
- double t1 = _TimeFromYear(year);
+double _toInteger(double n) {
+ return (n >= 0) ? FXSYS_floor(n) : -FXSYS_floor(-n);
+}
+
+bool _isLeapYear(int year) {
+ return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 != 0));
+}
+
+int _DayFromYear(int y) {
+ return (int)(365 * (y - 1970.0) + FXSYS_floor((y - 1969.0) / 4) -
+ FXSYS_floor((y - 1901.0) / 100) +
+ FXSYS_floor((y - 1601.0) / 400));
+}
+
+double _TimeFromYear(int y) {
+ return ((double)86400000) * _DayFromYear(y);
+}
+
+double _TimeFromYearMonth(int y, int m) {
+ static int daysMonth[12] = {0, 31, 59, 90, 120, 151,
+ 181, 212, 243, 273, 304, 334};
+ static int leapDaysMonth[12] = {0, 31, 60, 91, 121, 152,
+ 182, 213, 244, 274, 305, 335};
+ int* pMonth = daysMonth;
+ if (_isLeapYear(y))
+ pMonth = leapDaysMonth;
+ return _TimeFromYear(y) + ((double)pMonth[m]) * 86400000;
+}
+
+int _Day(double t) {
+ return (int)FXSYS_floor(t / 86400000);
+}
+
+int _YearFromTime(double t) {
+ // estimate the time.
+ int y = 1970 + (int)(t / (365.0 * 86400000));
+ if (_TimeFromYear(y) <= t) {
+ while (_TimeFromYear(y + 1) <= t)
+ y++;
+ } else
+ while (_TimeFromYear(y - 1) > t)
+ y--;
+ return y;
+}
+
+int _DayWithinYear(double t) {
+ int year = _YearFromTime(t);
+ int day = _Day(t);
+ return day - _DayFromYear(year);
+}
+
+int _MonthFromTime(double t) {
+ int day = _DayWithinYear(t);
+ int year = _YearFromTime(t);
+ if (0 <= day && day < 31)
+ return 0;
+ if (31 <= day && day < 59 + _isLeapYear(year))
+ return 1;
+ if ((59 + _isLeapYear(year)) <= day && day < (90 + _isLeapYear(year)))
+ return 2;
+ if ((90 + _isLeapYear(year)) <= day && day < (120 + _isLeapYear(year)))
+ return 3;
+ if ((120 + _isLeapYear(year)) <= day && day < (151 + _isLeapYear(year)))
+ return 4;
+ if ((151 + _isLeapYear(year)) <= day && day < (181 + _isLeapYear(year)))
+ return 5;
+ if ((181 + _isLeapYear(year)) <= day && day < (212 + _isLeapYear(year)))
+ return 6;
+ if ((212 + _isLeapYear(year)) <= day && day < (243 + _isLeapYear(year)))
+ return 7;
+ if ((243 + _isLeapYear(year)) <= day && day < (273 + _isLeapYear(year)))
+ return 8;
+ if ((273 + _isLeapYear(year)) <= day && day < (304 + _isLeapYear(year)))
+ return 9;
+ if ((304 + _isLeapYear(year)) <= day && day < (334 + _isLeapYear(year)))
+ return 10;
+ if ((334 + _isLeapYear(year)) <= day && day < (365 + _isLeapYear(year)))
+ return 11;
+
+ return -1;
+}
+
+int _DateFromTime(double t) {
+ int day = _DayWithinYear(t);
+ int year = _YearFromTime(t);
+ bool leap = _isLeapYear(year);
+ int month = _MonthFromTime(t);
+ switch (month) {
+ case 0:
+ return day + 1;
+ case 1:
+ return day - 30;
+ case 2:
+ return day - 58 - leap;
+ case 3:
+ return day - 89 - leap;
+ case 4:
+ return day - 119 - leap;
+ case 5:
+ return day - 150 - leap;
+ case 6:
+ return day - 180 - leap;
+ case 7:
+ return day - 211 - leap;
+ case 8:
+ return day - 242 - leap;
+ case 9:
+ return day - 272 - leap;
+ case 10:
+ return day - 303 - leap;
+ case 11:
+ return day - 333 - leap;
+ default:
+ return 0;
+ }
+}
+
+double JS_GetDateTime() {
+ if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
+ return 0;
+ time_t t = time(NULL);
+ struct tm* pTm = localtime(&t);
+
+ int year = pTm->tm_year + 1900;
+ double t1 = _TimeFromYear(year);
+
+ return t1 + pTm->tm_yday * 86400000.0 + pTm->tm_hour * 3600000.0 +
+ pTm->tm_min * 60000.0 + pTm->tm_sec * 1000.0;
+}
+
+int JS_GetYearFromTime(double dt) {
+ return _YearFromTime(dt);
+}
+
+int JS_GetMonthFromTime(double dt) {
+ return _MonthFromTime(dt);
+}
+
+int JS_GetDayFromTime(double dt) {
+ return _DateFromTime(dt);
+}
+
+int JS_GetHourFromTime(double dt) {
+ return (int)_Mod(FXSYS_floor((double)(dt / (60 * 60 * 1000))), 24);
+}
+
+int JS_GetMinFromTime(double dt) {
+ return (int)_Mod(FXSYS_floor((double)(dt / (60 * 1000))), 60);
+}
+
+int JS_GetSecFromTime(double dt) {
+ return (int)_Mod(FXSYS_floor((double)(dt / 1000)), 60);
+}
+
+double JS_DateParse(const wchar_t* string) {
+ v8::Isolate* pIsolate = v8::Isolate::GetCurrent();
+ v8::Isolate::Scope isolate_scope(pIsolate);
+ v8::HandleScope scope(pIsolate);
+
+ v8::Local<v8::Context> context = pIsolate->GetCurrentContext();
+
+ // Use the built-in object method.
+ v8::Local<v8::Value> v =
+ context->Global()
+ ->Get(context, v8::String::NewFromUtf8(pIsolate, "Date",
+ v8::NewStringType::kNormal)
+ .ToLocalChecked())
+ .ToLocalChecked();
+ if (v->IsObject()) {
+ v8::Local<v8::Object> o = v->ToObject(context).ToLocalChecked();
+ v = o->Get(context, v8::String::NewFromUtf8(pIsolate, "parse",
+ v8::NewStringType::kNormal)
+ .ToLocalChecked())
+ .ToLocalChecked();
+ if (v->IsFunction()) {
+ v8::Local<v8::Function> funC = v8::Local<v8::Function>::Cast(v);
- return t1 + pTm->tm_yday*86400000.0 + pTm->tm_hour*3600000.0+pTm->tm_min*60000.0+pTm->tm_sec*1000.0;
+ const int argc = 1;
+ v8::Local<v8::String> timeStr = WSToJSString(pIsolate, string);
+ v8::Local<v8::Value> argv[argc] = {timeStr};
+ v = funC->Call(context, context->Global(), argc, argv).ToLocalChecked();
+ if (v->IsNumber()) {
+ double date = v->ToNumber(context).ToLocalChecked()->Value();
+ if (!_isfinite(date))
+ return date;
+ return date + _getLocalTZA() + _getDaylightSavingTA(date);
+ }
+ }
+ }
+ return 0;
}
-int JS_GetYearFromTime(double dt)
-{
- return _YearFromTime(dt);
-}
+double JS_MakeDay(int nYear, int nMonth, int nDate) {
+ if (!_isfinite(nYear) || !_isfinite(nMonth) || !_isfinite(nDate))
+ return GetNan();
+ double y = _toInteger(nYear);
+ double m = _toInteger(nMonth);
+ double dt = _toInteger(nDate);
+ double ym = y + FXSYS_floor((double)m / 12);
+ double mn = _Mod(m, 12);
-int JS_GetMonthFromTime(double dt)
-{
- return _MonthFromTime(dt);
-}
+ double t = _TimeFromYearMonth((int)ym, (int)mn);
-int JS_GetDayFromTime(double dt)
-{
- return _DateFromTime(dt);
+ if (_YearFromTime(t) != ym || _MonthFromTime(t) != mn ||
+ _DateFromTime(t) != 1)
+ return GetNan();
+ return _Day(t) + dt - 1;
}
-int JS_GetHourFromTime(double dt)
-{
- return (int)_Mod(FXSYS_floor((double)(dt/(60*60*1000))), 24);
-}
+double JS_MakeTime(int nHour, int nMin, int nSec, int nMs) {
+ if (!_isfinite(nHour) || !_isfinite(nMin) || !_isfinite(nSec) ||
+ !_isfinite(nMs))
+ return GetNan();
-int JS_GetMinFromTime(double dt)
-{
- return (int)_Mod(FXSYS_floor((double)(dt/(60*1000))), 60);
-}
+ double h = _toInteger(nHour);
+ double m = _toInteger(nMin);
+ double s = _toInteger(nSec);
+ double milli = _toInteger(nMs);
-int JS_GetSecFromTime(double dt)
-{
- return (int)_Mod(FXSYS_floor((double)(dt/1000)), 60);
+ return h * 3600000 + m * 60000 + s * 1000 + milli;
}
-double JS_DateParse(const wchar_t* string)
-{
- v8::Isolate* pIsolate = v8::Isolate::GetCurrent();
- v8::Isolate::Scope isolate_scope(pIsolate);
- v8::HandleScope scope(pIsolate);
-
- v8::Local<v8::Context> context = pIsolate->GetCurrentContext();
-
- //Use the built-in object method.
- v8::Local<v8::Value> v = context->Global()->Get(context, v8::String::NewFromUtf8(pIsolate, "Date", v8::NewStringType::kNormal).ToLocalChecked()).ToLocalChecked();
- if(v->IsObject())
- {
- v8::Local<v8::Object> o = v->ToObject(context).ToLocalChecked();
- v = o->Get(context,v8::String::NewFromUtf8(pIsolate, "parse", v8::NewStringType::kNormal).ToLocalChecked()).ToLocalChecked();
- if(v->IsFunction())
- {
- v8::Local<v8::Function> funC = v8::Local<v8::Function>::Cast(v);
-
- const int argc = 1;
- v8::Local<v8::String> timeStr = WSToJSString(pIsolate, string);
- v8::Local<v8::Value> argv[argc] = {timeStr};
- v = funC->Call(context, context->Global(), argc, argv).ToLocalChecked();
- if(v->IsNumber())
- {
- double date = v->ToNumber(context).ToLocalChecked()->Value();
- if(!_isfinite(date)) return date;
- return date + _getLocalTZA() + _getDaylightSavingTA(date);
- }
-
- }
- }
- return 0;
-}
-
-double JS_MakeDay(int nYear, int nMonth, int nDate)
-{
- if (!_isfinite(nYear) || !_isfinite(nMonth) ||!_isfinite(nDate))
- return GetNan();
- double y = _toInteger(nYear);
- double m = _toInteger(nMonth);
- double dt = _toInteger(nDate);
- double ym = y + FXSYS_floor((double)m/12);
- double mn = _Mod(m ,12);
-
- double t = _TimeFromYearMonth((int)ym,(int)mn);
-
- if (_YearFromTime(t) != ym || _MonthFromTime(t) != mn ||_DateFromTime(t) != 1)
- return GetNan();
- return _Day(t)+dt-1;
-}
-
-double JS_MakeTime(int nHour, int nMin, int nSec, int nMs)
-{
- if (!_isfinite(nHour) ||!_isfinite(nMin) ||!_isfinite(nSec) ||!_isfinite(nMs))
- return GetNan();
+double JS_MakeDate(double day, double time) {
+ if (!_isfinite(day) || !_isfinite(time))
+ return GetNan();
- double h = _toInteger(nHour);
- double m = _toInteger(nMin);
- double s = _toInteger(nSec);
- double milli = _toInteger(nMs);
-
- return h * 3600000 + m * 60000 + s * 1000 + milli;
+ return day * 86400000 + time;
}
-double JS_MakeDate(double day, double time)
-{
- if (!_isfinite(day) ||!_isfinite(time))
- return GetNan();
-
- return day * 86400000 + time;
+bool JS_PortIsNan(double d) {
+ return d != d;
}
-bool JS_PortIsNan(double d)
-{
- return d != d;
-}
-
-double JS_LocalTime(double d)
-{
- return JS_GetDateTime() + _getDaylightSavingTA(d);
+double JS_LocalTime(double d) {
+ return JS_GetDateTime() + _getDaylightSavingTA(d);
}
-//JavaScript time implement End.
+// JavaScript time implement End.
diff --git a/fpdfsdk/src/pdfwindow/PWL_Button.cpp b/fpdfsdk/src/pdfwindow/PWL_Button.cpp
index 84962285c4..9eca10c90d 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Button.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Button.cpp
@@ -9,45 +9,37 @@
#include "../../include/pdfwindow/PWL_Button.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-/* ------------------------------- CPWL_Button ---------------------------------- */
+/* ------------------------------- CPWL_Button
+ * ---------------------------------- */
-CPWL_Button::CPWL_Button() :
- m_bMouseDown(FALSE)
-{
-}
+CPWL_Button::CPWL_Button() : m_bMouseDown(FALSE) {}
-CPWL_Button::~CPWL_Button()
-{
-// PWL_TRACE("~CPWL_Button\n");
+CPWL_Button::~CPWL_Button() {
+ // PWL_TRACE("~CPWL_Button\n");
}
-CFX_ByteString CPWL_Button::GetClassName() const
-{
- return "CPWL_Button";
+CFX_ByteString CPWL_Button::GetClassName() const {
+ return "CPWL_Button";
}
-void CPWL_Button::OnCreate(PWL_CREATEPARAM & cp)
-{
- cp.eCursorType = FXCT_HAND;
+void CPWL_Button::OnCreate(PWL_CREATEPARAM& cp) {
+ cp.eCursorType = FXCT_HAND;
}
-FX_BOOL CPWL_Button::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point, nFlag);
+FX_BOOL CPWL_Button::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
- m_bMouseDown = TRUE;
- SetCapture();
+ m_bMouseDown = TRUE;
+ SetCapture();
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_Button::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point, nFlag);
+FX_BOOL CPWL_Button::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
- ReleaseCapture();
- m_bMouseDown = FALSE;
+ ReleaseCapture();
+ m_bMouseDown = FALSE;
- return TRUE;
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_Caret.cpp b/fpdfsdk/src/pdfwindow/PWL_Caret.cpp
index 84a8b3d186..f35385e7f7 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Caret.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Caret.cpp
@@ -9,189 +9,157 @@
#include "../../include/pdfwindow/PWL_Caret.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-#define PWL_CARET_FLASHINTERVAL 500
+#define PWL_CARET_FLASHINTERVAL 500
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
-CPWL_Caret::CPWL_Caret() :
- m_bFlash(FALSE),
- m_ptHead(0,0),
- m_ptFoot(0,0),
- m_fWidth(0.4f),
- m_nDelay(0)
-{
-}
+CPWL_Caret::CPWL_Caret()
+ : m_bFlash(FALSE),
+ m_ptHead(0, 0),
+ m_ptFoot(0, 0),
+ m_fWidth(0.4f),
+ m_nDelay(0) {}
-CPWL_Caret::~CPWL_Caret()
-{
-}
+CPWL_Caret::~CPWL_Caret() {}
-CFX_ByteString CPWL_Caret::GetClassName() const
-{
- return "CPWL_Caret";
+CFX_ByteString CPWL_Caret::GetClassName() const {
+ return "CPWL_Caret";
}
-void CPWL_Caret::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- GetCaretApp(sAppStream,CPDF_Point(0.0f,0.0f));
+void CPWL_Caret::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ GetCaretApp(sAppStream, CPDF_Point(0.0f, 0.0f));
}
-void CPWL_Caret::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- if (IsVisible() && m_bFlash)
- {
- CPDF_Rect rcRect = GetCaretRect();
- CPDF_Rect rcClip = GetClipRect();
-
- CFX_PathData path;
-
- path.SetPointCount(2);
-
- FX_FLOAT fCaretX = rcRect.left + m_fWidth * 0.5f;
- FX_FLOAT fCaretTop = rcRect.top;
- FX_FLOAT fCaretBottom = rcRect.bottom;
-
- if (!rcClip.IsEmpty())
- {
- rcRect.Intersect(rcClip);
- if (!rcRect.IsEmpty())
- {
- fCaretTop = rcRect.top;
- fCaretBottom = rcRect.bottom;
- path.SetPoint(0, fCaretX, fCaretBottom, FXPT_MOVETO);
- path.SetPoint(1, fCaretX, fCaretTop, FXPT_LINETO);
- }
- else
- {
- return;
- }
- }
- else
- {
- path.SetPoint(0, fCaretX, fCaretBottom, FXPT_MOVETO);
- path.SetPoint(1, fCaretX, fCaretTop, FXPT_LINETO);
- }
-
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = m_fWidth;
-
- pDevice->DrawPath(&path, pUser2Device, &gsd,0, ArgbEncode(255,0,0,0), FXFILL_ALTERNATE);
- }
+void CPWL_Caret::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ if (IsVisible() && m_bFlash) {
+ CPDF_Rect rcRect = GetCaretRect();
+ CPDF_Rect rcClip = GetClipRect();
+
+ CFX_PathData path;
+
+ path.SetPointCount(2);
+
+ FX_FLOAT fCaretX = rcRect.left + m_fWidth * 0.5f;
+ FX_FLOAT fCaretTop = rcRect.top;
+ FX_FLOAT fCaretBottom = rcRect.bottom;
+
+ if (!rcClip.IsEmpty()) {
+ rcRect.Intersect(rcClip);
+ if (!rcRect.IsEmpty()) {
+ fCaretTop = rcRect.top;
+ fCaretBottom = rcRect.bottom;
+ path.SetPoint(0, fCaretX, fCaretBottom, FXPT_MOVETO);
+ path.SetPoint(1, fCaretX, fCaretTop, FXPT_LINETO);
+ } else {
+ return;
+ }
+ } else {
+ path.SetPoint(0, fCaretX, fCaretBottom, FXPT_MOVETO);
+ path.SetPoint(1, fCaretX, fCaretTop, FXPT_LINETO);
+ }
+
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = m_fWidth;
+
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0, ArgbEncode(255, 0, 0, 0),
+ FXFILL_ALTERNATE);
+ }
}
-void CPWL_Caret::GetCaretApp(CFX_ByteTextBuf & sAppStream,const CPDF_Point & ptOffset)
-{
- if (IsVisible() && m_bFlash)
- {
- CFX_ByteTextBuf sCaret;
-
- CPDF_Rect rcRect = GetCaretRect();
- CPDF_Rect rcClip = GetClipRect();
-
- rcRect = CPWL_Utils::OffsetRect(rcRect,ptOffset.x,ptOffset.y);
- rcClip = CPWL_Utils::OffsetRect(rcClip,ptOffset.x,ptOffset.y);
-
- sCaret << "q\n";
- if (!rcClip.IsEmpty())
- {
- sCaret << rcClip.left << " " << rcClip.bottom + 2.5f << " "
- << rcClip.right - rcClip.left << " " << rcClip.top - rcClip.bottom - 4.5f << " re W n\n";
- }
- sCaret << m_fWidth << " w\n0 G\n";
- sCaret << rcRect.left + m_fWidth/2 << " " << rcRect.bottom << " m\n";
- sCaret << rcRect.left + m_fWidth/2 << " " << rcRect.top << " l S\nQ\n";
-
- sAppStream << sCaret;
- }
+void CPWL_Caret::GetCaretApp(CFX_ByteTextBuf& sAppStream,
+ const CPDF_Point& ptOffset) {
+ if (IsVisible() && m_bFlash) {
+ CFX_ByteTextBuf sCaret;
+
+ CPDF_Rect rcRect = GetCaretRect();
+ CPDF_Rect rcClip = GetClipRect();
+
+ rcRect = CPWL_Utils::OffsetRect(rcRect, ptOffset.x, ptOffset.y);
+ rcClip = CPWL_Utils::OffsetRect(rcClip, ptOffset.x, ptOffset.y);
+
+ sCaret << "q\n";
+ if (!rcClip.IsEmpty()) {
+ sCaret << rcClip.left << " " << rcClip.bottom + 2.5f << " "
+ << rcClip.right - rcClip.left << " "
+ << rcClip.top - rcClip.bottom - 4.5f << " re W n\n";
+ }
+ sCaret << m_fWidth << " w\n0 G\n";
+ sCaret << rcRect.left + m_fWidth / 2 << " " << rcRect.bottom << " m\n";
+ sCaret << rcRect.left + m_fWidth / 2 << " " << rcRect.top << " l S\nQ\n";
+
+ sAppStream << sCaret;
+ }
}
-CFX_ByteString CPWL_Caret::GetCaretAppearanceStream(const CPDF_Point & ptOffset)
-{
- CFX_ByteTextBuf sCaret;
- GetCaretApp(sCaret,ptOffset);
- return sCaret.GetByteString();
+CFX_ByteString CPWL_Caret::GetCaretAppearanceStream(
+ const CPDF_Point& ptOffset) {
+ CFX_ByteTextBuf sCaret;
+ GetCaretApp(sCaret, ptOffset);
+ return sCaret.GetByteString();
}
-void CPWL_Caret::TimerProc()
-{
- if (m_nDelay > 0)
- {
- m_nDelay--;
- }
- else
- {
- m_bFlash = !m_bFlash;
- InvalidateRect();
- }
+void CPWL_Caret::TimerProc() {
+ if (m_nDelay > 0) {
+ m_nDelay--;
+ } else {
+ m_bFlash = !m_bFlash;
+ InvalidateRect();
+ }
}
-CPDF_Rect CPWL_Caret::GetCaretRect() const
-{
- return CPDF_Rect(m_ptFoot.x,
- m_ptFoot.y,
- m_ptHead.x + m_fWidth,
- m_ptHead.y);
+CPDF_Rect CPWL_Caret::GetCaretRect() const {
+ return CPDF_Rect(m_ptFoot.x, m_ptFoot.y, m_ptHead.x + m_fWidth, m_ptHead.y);
}
-void CPWL_Caret::SetCaret(FX_BOOL bVisible, const CPDF_Point & ptHead, const CPDF_Point & ptFoot)
-{
- if (bVisible)
- {
- if (IsVisible())
- {
- if (m_ptHead.x != ptHead.x || m_ptHead.y != ptHead.y ||
- m_ptFoot.x != ptFoot.x || m_ptFoot.y != ptFoot.y)
- {
- m_ptHead = ptHead;
- m_ptFoot = ptFoot;
-
- m_bFlash = TRUE;
- //Move(GetCaretRect(),FALSE,TRUE);
- Move(m_rcInvalid, FALSE, TRUE);
- }
- }
- else
- {
- m_ptHead = ptHead;
- m_ptFoot = ptFoot;
-
- EndTimer();
- BeginTimer(PWL_CARET_FLASHINTERVAL);
-
- CPWL_Wnd::SetVisible(TRUE);
- m_bFlash = TRUE;
-
- //Move(GetCaretRect(),FALSE,TRUE);
- Move(m_rcInvalid, FALSE, TRUE);
- }
- }
- else
- {
- m_ptHead = CPDF_Point(0, 0);
- m_ptFoot = CPDF_Point(0, 0);
-
- m_bFlash = FALSE;
- if (IsVisible())
- {
- EndTimer();
- CPWL_Wnd::SetVisible(FALSE);
- }
- }
+void CPWL_Caret::SetCaret(FX_BOOL bVisible,
+ const CPDF_Point& ptHead,
+ const CPDF_Point& ptFoot) {
+ if (bVisible) {
+ if (IsVisible()) {
+ if (m_ptHead.x != ptHead.x || m_ptHead.y != ptHead.y ||
+ m_ptFoot.x != ptFoot.x || m_ptFoot.y != ptFoot.y) {
+ m_ptHead = ptHead;
+ m_ptFoot = ptFoot;
+
+ m_bFlash = TRUE;
+ // Move(GetCaretRect(),FALSE,TRUE);
+ Move(m_rcInvalid, FALSE, TRUE);
+ }
+ } else {
+ m_ptHead = ptHead;
+ m_ptFoot = ptFoot;
+
+ EndTimer();
+ BeginTimer(PWL_CARET_FLASHINTERVAL);
+
+ CPWL_Wnd::SetVisible(TRUE);
+ m_bFlash = TRUE;
+
+ // Move(GetCaretRect(),FALSE,TRUE);
+ Move(m_rcInvalid, FALSE, TRUE);
+ }
+ } else {
+ m_ptHead = CPDF_Point(0, 0);
+ m_ptFoot = CPDF_Point(0, 0);
+
+ m_bFlash = FALSE;
+ if (IsVisible()) {
+ EndTimer();
+ CPWL_Wnd::SetVisible(FALSE);
+ }
+ }
}
-void CPWL_Caret::InvalidateRect(CPDF_Rect * pRect)
-{
- if (pRect)
- {
- CPDF_Rect rcRefresh = CPWL_Utils::InflateRect(*pRect,0.5f);
- rcRefresh.top += 1;
- rcRefresh.bottom -= 1;
-
- CPWL_Wnd::InvalidateRect(&rcRefresh);
- }
- else
- CPWL_Wnd::InvalidateRect(pRect);
-}
+void CPWL_Caret::InvalidateRect(CPDF_Rect* pRect) {
+ if (pRect) {
+ CPDF_Rect rcRefresh = CPWL_Utils::InflateRect(*pRect, 0.5f);
+ rcRefresh.top += 1;
+ rcRefresh.bottom -= 1;
+ CPWL_Wnd::InvalidateRect(&rcRefresh);
+ } else
+ CPWL_Wnd::InvalidateRect(pRect);
+}
diff --git a/fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp b/fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp
index f5c8a815d4..2043da5bff 100644
--- a/fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_ComboBox.cpp
@@ -12,643 +12,601 @@
#include "../../include/pdfwindow/PWL_ComboBox.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-#define PWLCB_DEFAULTFONTSIZE 12.0f
-
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define PWLCB_DEFAULTFONTSIZE 12.0f
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
/* ---------------------------- CPWL_CBListBox ---------------------------- */
-FX_BOOL CPWL_CBListBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point,nFlag);
-
- if (m_bMouseDown)
- {
- ReleaseCapture();
- m_bMouseDown = FALSE;
-
- if (ClientHitTest(point))
- {
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this,PNM_LBUTTONUP,0,PWL_MAKEDWORD(point.x,point.y));
- }
-
- FX_BOOL bExit = FALSE;
- OnNotifySelChanged(FALSE,bExit, nFlag);
- if (bExit) return FALSE;
- }
+FX_BOOL CPWL_CBListBox::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
+
+ if (m_bMouseDown) {
+ ReleaseCapture();
+ m_bMouseDown = FALSE;
+
+ if (ClientHitTest(point)) {
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_LBUTTONUP, 0,
+ PWL_MAKEDWORD(point.x, point.y));
+ }
+
+ FX_BOOL bExit = FALSE;
+ OnNotifySelChanged(FALSE, bExit, nFlag);
+ if (bExit)
+ return FALSE;
}
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_CBListBox::OnKeyDownWithExit(FX_WORD nChar, FX_BOOL & bExit, FX_DWORD nFlag)
-{
- if (!m_pList) return FALSE;
+FX_BOOL CPWL_CBListBox::OnKeyDownWithExit(FX_WORD nChar,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_pList)
+ return FALSE;
- switch (nChar)
- {
+ switch (nChar) {
default:
- return FALSE;
+ return FALSE;
case FWL_VKEY_Up:
case FWL_VKEY_Down:
case FWL_VKEY_Home:
case FWL_VKEY_Left:
case FWL_VKEY_End:
case FWL_VKEY_Right:
- break;
- }
+ break;
+ }
- switch (nChar)
- {
+ switch (nChar) {
case FWL_VKEY_Up:
- m_pList->OnVK_UP(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_UP(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_Down:
- m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_Home:
- m_pList->OnVK_HOME(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_HOME(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_Left:
- m_pList->OnVK_LEFT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_LEFT(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_End:
- m_pList->OnVK_END(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_END(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_Right:
- m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
+ m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
case FWL_VKEY_Delete:
- break;
- }
+ break;
+ }
- OnNotifySelChanged(TRUE,bExit, nFlag);
+ OnNotifySelChanged(TRUE, bExit, nFlag);
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_CBListBox::OnCharWithExit(FX_WORD nChar, FX_BOOL & bExit, FX_DWORD nFlag)
-{
- if (!m_pList) return FALSE;
+FX_BOOL CPWL_CBListBox::OnCharWithExit(FX_WORD nChar,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (!m_pList)
+ return FALSE;
- if (!m_pList->OnChar(nChar,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag))) return FALSE;
+ if (!m_pList->OnChar(nChar, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag)))
+ return FALSE;
- if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetParentWindow())
- {
- pComboBox->SetSelectText();
- }
+ if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetParentWindow()) {
+ pComboBox->SetSelectText();
+ }
- OnNotifySelChanged(TRUE,bExit,nFlag);
+ OnNotifySelChanged(TRUE, bExit, nFlag);
- return TRUE;
+ return TRUE;
}
/* ---------------------------- CPWL_CBButton ---------------------------- */
-void CPWL_CBButton::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+void CPWL_CBButton::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
- CPDF_Rect rectWnd = CPWL_Wnd::GetWindowRect();
+ CPDF_Rect rectWnd = CPWL_Wnd::GetWindowRect();
- if (IsVisible() && !rectWnd.IsEmpty())
- {
- CFX_ByteTextBuf sButton;
+ if (IsVisible() && !rectWnd.IsEmpty()) {
+ CFX_ByteTextBuf sButton;
- CPDF_Point ptCenter = GetCenterPoint();
+ CPDF_Point ptCenter = GetCenterPoint();
- CPDF_Point pt1(ptCenter.x - PWL_CBBUTTON_TRIANGLE_HALFLEN,ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt2(ptCenter.x + PWL_CBBUTTON_TRIANGLE_HALFLEN,ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt3(ptCenter.x,ptCenter.y - PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt1(ptCenter.x - PWL_CBBUTTON_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt2(ptCenter.x + PWL_CBBUTTON_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt3(ptCenter.x,
+ ptCenter.y - PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- if (IsFloatBigger(rectWnd.right - rectWnd.left,PWL_CBBUTTON_TRIANGLE_HALFLEN * 2)
- &&
- IsFloatBigger(rectWnd.top - rectWnd.bottom,PWL_CBBUTTON_TRIANGLE_HALFLEN)
- )
- {
- sButton << "0 g\n";
- sButton << pt1.x << " " << pt1.y << " m\n";
- sButton << pt2.x << " " << pt2.y << " l\n";
- sButton << pt3.x << " " << pt3.y << " l\n";
- sButton << pt1.x << " " << pt1.y << " l f\n";
+ if (IsFloatBigger(rectWnd.right - rectWnd.left,
+ PWL_CBBUTTON_TRIANGLE_HALFLEN * 2) &&
+ IsFloatBigger(rectWnd.top - rectWnd.bottom,
+ PWL_CBBUTTON_TRIANGLE_HALFLEN)) {
+ sButton << "0 g\n";
+ sButton << pt1.x << " " << pt1.y << " m\n";
+ sButton << pt2.x << " " << pt2.y << " l\n";
+ sButton << pt3.x << " " << pt3.y << " l\n";
+ sButton << pt1.x << " " << pt1.y << " l f\n";
- sAppStream << "q\n" << sButton << "Q\n";
- }
+ sAppStream << "q\n" << sButton << "Q\n";
}
+ }
}
-void CPWL_CBButton::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
+void CPWL_CBButton::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
- CPDF_Rect rectWnd = CPWL_Wnd::GetWindowRect();
+ CPDF_Rect rectWnd = CPWL_Wnd::GetWindowRect();
- if (IsVisible() && !rectWnd.IsEmpty())
- {
- CPDF_Point ptCenter = GetCenterPoint();
+ if (IsVisible() && !rectWnd.IsEmpty()) {
+ CPDF_Point ptCenter = GetCenterPoint();
- CPDF_Point pt1(ptCenter.x - PWL_CBBUTTON_TRIANGLE_HALFLEN,ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt2(ptCenter.x + PWL_CBBUTTON_TRIANGLE_HALFLEN,ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt3(ptCenter.x,ptCenter.y - PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt1(ptCenter.x - PWL_CBBUTTON_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt2(ptCenter.x + PWL_CBBUTTON_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt3(ptCenter.x,
+ ptCenter.y - PWL_CBBUTTON_TRIANGLE_HALFLEN * 0.5f);
- if (IsFloatBigger(rectWnd.right - rectWnd.left,PWL_CBBUTTON_TRIANGLE_HALFLEN * 2)
- &&
- IsFloatBigger(rectWnd.top - rectWnd.bottom,PWL_CBBUTTON_TRIANGLE_HALFLEN)
- )
- {
- CFX_PathData path;
+ if (IsFloatBigger(rectWnd.right - rectWnd.left,
+ PWL_CBBUTTON_TRIANGLE_HALFLEN * 2) &&
+ IsFloatBigger(rectWnd.top - rectWnd.bottom,
+ PWL_CBBUTTON_TRIANGLE_HALFLEN)) {
+ CFX_PathData path;
- path.SetPointCount(4);
- path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
- path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
- path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
- path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
+ path.SetPointCount(4);
+ path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
+ path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
+ path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
+ path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
- pDevice->DrawPath(&path, pUser2Device, NULL,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_BLACKCOLOR,GetTransparency()),
- 0, FXFILL_ALTERNATE);
- }
+ pDevice->DrawPath(&path, pUser2Device, NULL,
+ CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_BLACKCOLOR,
+ GetTransparency()),
+ 0, FXFILL_ALTERNATE);
}
+ }
}
-FX_BOOL CPWL_CBButton::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
+FX_BOOL CPWL_CBButton::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
- SetCapture();
+ SetCapture();
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this,PNM_LBUTTONDOWN,0,PWL_MAKEDWORD(point.x,point.y));
- }
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_LBUTTONDOWN, 0,
+ PWL_MAKEDWORD(point.x, point.y));
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_CBButton::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point, nFlag);
+FX_BOOL CPWL_CBButton::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
- ReleaseCapture();
+ ReleaseCapture();
- return TRUE;
+ return TRUE;
}
/* ---------------------------- CPWL_ComboBox ---------------------------- */
-CPWL_ComboBox::CPWL_ComboBox() : m_pEdit(NULL),
- m_pButton(NULL),
- m_pList(NULL),
- m_bPopup(FALSE),
- m_nPopupWhere(0),
- m_nSelectItem(-1),
- m_pFillerNotify(NULL)
-{
-}
+CPWL_ComboBox::CPWL_ComboBox()
+ : m_pEdit(NULL),
+ m_pButton(NULL),
+ m_pList(NULL),
+ m_bPopup(FALSE),
+ m_nPopupWhere(0),
+ m_nSelectItem(-1),
+ m_pFillerNotify(NULL) {}
-CFX_ByteString CPWL_ComboBox::GetClassName() const
-{
- return "CPWL_ComboBox";
+CFX_ByteString CPWL_ComboBox::GetClassName() const {
+ return "CPWL_ComboBox";
}
-void CPWL_ComboBox::OnCreate(PWL_CREATEPARAM & cp)
-{
- cp.dwFlags &= ~PWS_HSCROLL;
- cp.dwFlags &= ~PWS_VSCROLL;
+void CPWL_ComboBox::OnCreate(PWL_CREATEPARAM& cp) {
+ cp.dwFlags &= ~PWS_HSCROLL;
+ cp.dwFlags &= ~PWS_VSCROLL;
}
-void CPWL_ComboBox::SetFocus()
-{
- if (m_pEdit)
- m_pEdit->SetFocus();
+void CPWL_ComboBox::SetFocus() {
+ if (m_pEdit)
+ m_pEdit->SetFocus();
}
-void CPWL_ComboBox::KillFocus()
-{
- SetPopup(FALSE);
- CPWL_Wnd::KillFocus();
+void CPWL_ComboBox::KillFocus() {
+ SetPopup(FALSE);
+ CPWL_Wnd::KillFocus();
}
-CFX_WideString CPWL_ComboBox::GetText() const
-{
- if (m_pEdit)
- {
- return m_pEdit->GetText();
- }
- return CFX_WideString();
+CFX_WideString CPWL_ComboBox::GetText() const {
+ if (m_pEdit) {
+ return m_pEdit->GetText();
+ }
+ return CFX_WideString();
}
-void CPWL_ComboBox::SetText(const FX_WCHAR* text)
-{
- if (m_pEdit)
- m_pEdit->SetText(text);
+void CPWL_ComboBox::SetText(const FX_WCHAR* text) {
+ if (m_pEdit)
+ m_pEdit->SetText(text);
}
-void CPWL_ComboBox::AddString(const FX_WCHAR* string)
-{
- if (m_pList)
- m_pList->AddString(string);
+void CPWL_ComboBox::AddString(const FX_WCHAR* string) {
+ if (m_pList)
+ m_pList->AddString(string);
}
-int32_t CPWL_ComboBox::GetSelect() const
-{
- return m_nSelectItem;
+int32_t CPWL_ComboBox::GetSelect() const {
+ return m_nSelectItem;
}
-void CPWL_ComboBox::SetSelect(int32_t nItemIndex)
-{
- if (m_pList)
- m_pList->Select(nItemIndex);
+void CPWL_ComboBox::SetSelect(int32_t nItemIndex) {
+ if (m_pList)
+ m_pList->Select(nItemIndex);
- m_pEdit->SetText(m_pList->GetText().c_str());
+ m_pEdit->SetText(m_pList->GetText().c_str());
- m_nSelectItem = nItemIndex;
+ m_nSelectItem = nItemIndex;
}
-void CPWL_ComboBox::SetEditSel(int32_t nStartChar,int32_t nEndChar)
-{
- if (m_pEdit)
- {
- m_pEdit->SetSel(nStartChar,nEndChar);
- }
+void CPWL_ComboBox::SetEditSel(int32_t nStartChar, int32_t nEndChar) {
+ if (m_pEdit) {
+ m_pEdit->SetSel(nStartChar, nEndChar);
+ }
}
-void CPWL_ComboBox::GetEditSel(int32_t & nStartChar, int32_t & nEndChar) const
-{
- nStartChar = -1;
- nEndChar = -1;
+void CPWL_ComboBox::GetEditSel(int32_t& nStartChar, int32_t& nEndChar) const {
+ nStartChar = -1;
+ nEndChar = -1;
- if (m_pEdit)
- {
- m_pEdit->GetSel(nStartChar,nEndChar);
- }
+ if (m_pEdit) {
+ m_pEdit->GetSel(nStartChar, nEndChar);
+ }
}
-void CPWL_ComboBox::Clear()
-{
- if (m_pEdit)
- {
- m_pEdit->Clear();
- }
+void CPWL_ComboBox::Clear() {
+ if (m_pEdit) {
+ m_pEdit->Clear();
+ }
}
-void CPWL_ComboBox::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- CreateEdit(cp);
- CreateButton(cp);
- CreateListBox(cp);
+void CPWL_ComboBox::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ CreateEdit(cp);
+ CreateButton(cp);
+ CreateListBox(cp);
}
-void CPWL_ComboBox::CreateEdit(const PWL_CREATEPARAM & cp)
-{
- if (!m_pEdit)
- {
- m_pEdit = new CPWL_CBEdit;
- m_pEdit->AttachFFLData(m_pFormFiller);
+void CPWL_ComboBox::CreateEdit(const PWL_CREATEPARAM& cp) {
+ if (!m_pEdit) {
+ m_pEdit = new CPWL_CBEdit;
+ m_pEdit->AttachFFLData(m_pFormFiller);
- PWL_CREATEPARAM ecp = cp;
- ecp.pParentWnd = this;
- ecp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PES_CENTER | PES_AUTOSCROLL | PES_UNDO;
+ PWL_CREATEPARAM ecp = cp;
+ ecp.pParentWnd = this;
+ ecp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PES_CENTER |
+ PES_AUTOSCROLL | PES_UNDO;
- if (HasFlag(PWS_AUTOFONTSIZE))
- ecp.dwFlags |= PWS_AUTOFONTSIZE;
+ if (HasFlag(PWS_AUTOFONTSIZE))
+ ecp.dwFlags |= PWS_AUTOFONTSIZE;
- if (!HasFlag(PCBS_ALLOWCUSTOMTEXT))
- ecp.dwFlags |= PWS_READONLY;
+ if (!HasFlag(PCBS_ALLOWCUSTOMTEXT))
+ ecp.dwFlags |= PWS_READONLY;
- ecp.rcRectWnd = CPDF_Rect(0,0,0,0);
- ecp.dwBorderWidth = 0;
- ecp.nBorderStyle = PBS_SOLID;
+ ecp.rcRectWnd = CPDF_Rect(0, 0, 0, 0);
+ ecp.dwBorderWidth = 0;
+ ecp.nBorderStyle = PBS_SOLID;
- m_pEdit->Create(ecp);
- }
+ m_pEdit->Create(ecp);
+ }
}
-void CPWL_ComboBox::CreateButton(const PWL_CREATEPARAM & cp)
-{
- if (!m_pButton)
- {
- m_pButton = new CPWL_CBButton;
+void CPWL_ComboBox::CreateButton(const PWL_CREATEPARAM& cp) {
+ if (!m_pButton) {
+ m_pButton = new CPWL_CBButton;
- PWL_CREATEPARAM bcp = cp;
- bcp.pParentWnd = this;
- bcp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PWS_BACKGROUND;
- bcp.sBackgroundColor = PWL_SCROLLBAR_BKCOLOR;
- bcp.sBorderColor = PWL_DEFAULT_BLACKCOLOR;
- bcp.dwBorderWidth = 2;
- bcp.nBorderStyle = PBS_BEVELED;
- bcp.eCursorType = FXCT_ARROW;
+ PWL_CREATEPARAM bcp = cp;
+ bcp.pParentWnd = this;
+ bcp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PWS_BACKGROUND;
+ bcp.sBackgroundColor = PWL_SCROLLBAR_BKCOLOR;
+ bcp.sBorderColor = PWL_DEFAULT_BLACKCOLOR;
+ bcp.dwBorderWidth = 2;
+ bcp.nBorderStyle = PBS_BEVELED;
+ bcp.eCursorType = FXCT_ARROW;
- m_pButton->Create(bcp);
- }
+ m_pButton->Create(bcp);
+ }
}
-void CPWL_ComboBox::CreateListBox(const PWL_CREATEPARAM & cp)
-{
- if (!m_pList)
- {
- m_pList = new CPWL_CBListBox;
- m_pList->AttachFFLData(m_pFormFiller);
- PWL_CREATEPARAM lcp = cp;
- lcp.pParentWnd = this;
- lcp.dwFlags = PWS_CHILD | PWS_BORDER | PWS_BACKGROUND | PLBS_HOVERSEL | PWS_VSCROLL;
- lcp.nBorderStyle = PBS_SOLID;
- lcp.dwBorderWidth = 1;
- lcp.eCursorType = FXCT_ARROW;
- lcp.rcRectWnd = CPDF_Rect(0,0,0,0);
-
- if (cp.dwFlags & PWS_AUTOFONTSIZE)
- lcp.fFontSize = PWLCB_DEFAULTFONTSIZE;
- else
- lcp.fFontSize = cp.fFontSize;
-
- if (cp.sBorderColor.nColorType == COLORTYPE_TRANSPARENT)
- lcp.sBorderColor = PWL_DEFAULT_BLACKCOLOR;
-
- if (cp.sBackgroundColor.nColorType == COLORTYPE_TRANSPARENT)
- lcp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
-
- m_pList->Create(lcp);
- }
+void CPWL_ComboBox::CreateListBox(const PWL_CREATEPARAM& cp) {
+ if (!m_pList) {
+ m_pList = new CPWL_CBListBox;
+ m_pList->AttachFFLData(m_pFormFiller);
+ PWL_CREATEPARAM lcp = cp;
+ lcp.pParentWnd = this;
+ lcp.dwFlags =
+ PWS_CHILD | PWS_BORDER | PWS_BACKGROUND | PLBS_HOVERSEL | PWS_VSCROLL;
+ lcp.nBorderStyle = PBS_SOLID;
+ lcp.dwBorderWidth = 1;
+ lcp.eCursorType = FXCT_ARROW;
+ lcp.rcRectWnd = CPDF_Rect(0, 0, 0, 0);
+
+ if (cp.dwFlags & PWS_AUTOFONTSIZE)
+ lcp.fFontSize = PWLCB_DEFAULTFONTSIZE;
+ else
+ lcp.fFontSize = cp.fFontSize;
+
+ if (cp.sBorderColor.nColorType == COLORTYPE_TRANSPARENT)
+ lcp.sBorderColor = PWL_DEFAULT_BLACKCOLOR;
+
+ if (cp.sBackgroundColor.nColorType == COLORTYPE_TRANSPARENT)
+ lcp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
+
+ m_pList->Create(lcp);
+ }
}
-void CPWL_ComboBox::RePosChildWnd()
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_ComboBox::RePosChildWnd() {
+ CPDF_Rect rcClient = GetClientRect();
- if (m_bPopup)
- {
- CPDF_Rect rclient = GetClientRect();
- CPDF_Rect rcButton = rclient;
- CPDF_Rect rcEdit = rcClient;
- CPDF_Rect rcList = CPWL_Wnd::GetWindowRect();
+ if (m_bPopup) {
+ CPDF_Rect rclient = GetClientRect();
+ CPDF_Rect rcButton = rclient;
+ CPDF_Rect rcEdit = rcClient;
+ CPDF_Rect rcList = CPWL_Wnd::GetWindowRect();
- FX_FLOAT fOldWindowHeight = m_rcOldWindow.Height();
- FX_FLOAT fOldClientHeight = fOldWindowHeight - GetBorderWidth() * 2;
+ FX_FLOAT fOldWindowHeight = m_rcOldWindow.Height();
+ FX_FLOAT fOldClientHeight = fOldWindowHeight - GetBorderWidth() * 2;
- switch (m_nPopupWhere)
- {
- case 0:
- rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
+ switch (m_nPopupWhere) {
+ case 0:
+ rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
- if (rcButton.left < rclient.left)
- rcButton.left = rclient.left;
+ if (rcButton.left < rclient.left)
+ rcButton.left = rclient.left;
- rcButton.bottom = rcButton.top - fOldClientHeight;
+ rcButton.bottom = rcButton.top - fOldClientHeight;
- rcEdit.right = rcButton.left - 1.0f;
+ rcEdit.right = rcButton.left - 1.0f;
- if (rcEdit.left < rclient.left)
- rcEdit.left = rclient.left;
+ if (rcEdit.left < rclient.left)
+ rcEdit.left = rclient.left;
- if (rcEdit.right < rcEdit.left)
- rcEdit.right = rcEdit.left;
+ if (rcEdit.right < rcEdit.left)
+ rcEdit.right = rcEdit.left;
- rcEdit.bottom = rcEdit.top - fOldClientHeight;
+ rcEdit.bottom = rcEdit.top - fOldClientHeight;
- rcList.top -= fOldWindowHeight;
+ rcList.top -= fOldWindowHeight;
- break;
- case 1:
- rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
+ break;
+ case 1:
+ rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
- if (rcButton.left < rclient.left)
- rcButton.left = rclient.left;
+ if (rcButton.left < rclient.left)
+ rcButton.left = rclient.left;
- rcButton.top = rcButton.bottom + fOldClientHeight;
+ rcButton.top = rcButton.bottom + fOldClientHeight;
- rcEdit.right = rcButton.left - 1.0f;
+ rcEdit.right = rcButton.left - 1.0f;
- if (rcEdit.left < rclient.left)
- rcEdit.left = rclient.left;
+ if (rcEdit.left < rclient.left)
+ rcEdit.left = rclient.left;
- if (rcEdit.right < rcEdit.left)
- rcEdit.right = rcEdit.left;
+ if (rcEdit.right < rcEdit.left)
+ rcEdit.right = rcEdit.left;
- rcEdit.top = rcEdit.bottom + fOldClientHeight;
+ rcEdit.top = rcEdit.bottom + fOldClientHeight;
- rcList.bottom += fOldWindowHeight;
+ rcList.bottom += fOldWindowHeight;
- break;
- }
+ break;
+ }
- if (m_pButton)
- m_pButton->Move(rcButton,TRUE,FALSE);
+ if (m_pButton)
+ m_pButton->Move(rcButton, TRUE, FALSE);
- if (m_pEdit)
- m_pEdit->Move(rcEdit,TRUE,FALSE);
+ if (m_pEdit)
+ m_pEdit->Move(rcEdit, TRUE, FALSE);
- if (m_pList)
- {
- m_pList->SetVisible(TRUE);
- m_pList->Move(rcList,TRUE,FALSE);
- m_pList->ScrollToListItem(m_nSelectItem);
- }
+ if (m_pList) {
+ m_pList->SetVisible(TRUE);
+ m_pList->Move(rcList, TRUE, FALSE);
+ m_pList->ScrollToListItem(m_nSelectItem);
}
- else
- {
- CPDF_Rect rcButton = rcClient;
+ } else {
+ CPDF_Rect rcButton = rcClient;
- rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
+ rcButton.left = rcButton.right - PWL_COMBOBOX_BUTTON_WIDTH;
- if (rcButton.left < rcClient.left)
- rcButton.left = rcClient.left;
+ if (rcButton.left < rcClient.left)
+ rcButton.left = rcClient.left;
- if (m_pButton)
- m_pButton->Move(rcButton,TRUE,FALSE);
+ if (m_pButton)
+ m_pButton->Move(rcButton, TRUE, FALSE);
- CPDF_Rect rcEdit = rcClient;
- rcEdit.right = rcButton.left - 1.0f;
+ CPDF_Rect rcEdit = rcClient;
+ rcEdit.right = rcButton.left - 1.0f;
- if (rcEdit.left < rcClient.left)
- rcEdit.left = rcClient.left;
+ if (rcEdit.left < rcClient.left)
+ rcEdit.left = rcClient.left;
- if (rcEdit.right < rcEdit.left)
- rcEdit.right = rcEdit.left;
+ if (rcEdit.right < rcEdit.left)
+ rcEdit.right = rcEdit.left;
- if (m_pEdit)
- m_pEdit->Move(rcEdit,TRUE,FALSE);
+ if (m_pEdit)
+ m_pEdit->Move(rcEdit, TRUE, FALSE);
- if (m_pList)
- m_pList->SetVisible(FALSE);
- }
+ if (m_pList)
+ m_pList->SetVisible(FALSE);
+ }
}
-void CPWL_ComboBox::SelectAll()
-{
- if (m_pEdit && HasFlag(PCBS_ALLOWCUSTOMTEXT))
- m_pEdit->SelectAll();
-}
-
-CPDF_Rect CPWL_ComboBox::GetFocusRect() const
-{
- return CPDF_Rect();
-}
-
-void CPWL_ComboBox::SetPopup(FX_BOOL bPopup)
-{
- if (!m_pList) return;
- if (bPopup == m_bPopup) return;
- FX_FLOAT fListHeight = m_pList->GetContentRect().Height();
- if (!IsFloatBigger(fListHeight,0.0f)) return;
-
- if (bPopup)
- {
- if (m_pFillerNotify)
- {
- int32_t nWhere = 0;
- FX_FLOAT fPopupRet = 0.0f;
- FX_FLOAT fPopupMin = 0.0f;
- if (m_pList->GetCount() > 3)
- fPopupMin = m_pList->GetFirstHeight() * 3 + m_pList->GetBorderWidth() * 2;
- FX_FLOAT fPopupMax = fListHeight + m_pList->GetBorderWidth() * 2;
- m_pFillerNotify->QueryWherePopup(GetAttachedData(), fPopupMin,fPopupMax,nWhere,fPopupRet);
-
- if (IsFloatBigger(fPopupRet,0.0f))
- {
- m_bPopup = bPopup;
-
- CPDF_Rect rcWindow = CPWL_Wnd::GetWindowRect();
- m_rcOldWindow = rcWindow;
- switch (nWhere)
- {
- default:
- case 0:
- rcWindow.bottom -= fPopupRet;
- break;
- case 1:
- rcWindow.top += fPopupRet;
- break;
- }
-
- m_nPopupWhere = nWhere;
- Move(rcWindow, TRUE, TRUE);
- }
- }
- }
- else
- {
+void CPWL_ComboBox::SelectAll() {
+ if (m_pEdit && HasFlag(PCBS_ALLOWCUSTOMTEXT))
+ m_pEdit->SelectAll();
+}
+
+CPDF_Rect CPWL_ComboBox::GetFocusRect() const {
+ return CPDF_Rect();
+}
+
+void CPWL_ComboBox::SetPopup(FX_BOOL bPopup) {
+ if (!m_pList)
+ return;
+ if (bPopup == m_bPopup)
+ return;
+ FX_FLOAT fListHeight = m_pList->GetContentRect().Height();
+ if (!IsFloatBigger(fListHeight, 0.0f))
+ return;
+
+ if (bPopup) {
+ if (m_pFillerNotify) {
+ int32_t nWhere = 0;
+ FX_FLOAT fPopupRet = 0.0f;
+ FX_FLOAT fPopupMin = 0.0f;
+ if (m_pList->GetCount() > 3)
+ fPopupMin =
+ m_pList->GetFirstHeight() * 3 + m_pList->GetBorderWidth() * 2;
+ FX_FLOAT fPopupMax = fListHeight + m_pList->GetBorderWidth() * 2;
+ m_pFillerNotify->QueryWherePopup(GetAttachedData(), fPopupMin, fPopupMax,
+ nWhere, fPopupRet);
+
+ if (IsFloatBigger(fPopupRet, 0.0f)) {
m_bPopup = bPopup;
- Move(m_rcOldWindow, TRUE, TRUE);
+
+ CPDF_Rect rcWindow = CPWL_Wnd::GetWindowRect();
+ m_rcOldWindow = rcWindow;
+ switch (nWhere) {
+ default:
+ case 0:
+ rcWindow.bottom -= fPopupRet;
+ break;
+ case 1:
+ rcWindow.top += fPopupRet;
+ break;
+ }
+
+ m_nPopupWhere = nWhere;
+ Move(rcWindow, TRUE, TRUE);
+ }
}
+ } else {
+ m_bPopup = bPopup;
+ Move(m_rcOldWindow, TRUE, TRUE);
+ }
}
-FX_BOOL CPWL_ComboBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (!m_pList) return FALSE;
- if (!m_pEdit) return FALSE;
+FX_BOOL CPWL_ComboBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) {
+ if (!m_pList)
+ return FALSE;
+ if (!m_pEdit)
+ return FALSE;
- m_nSelectItem = -1;
+ m_nSelectItem = -1;
- switch (nChar)
- {
+ switch (nChar) {
case FWL_VKEY_Up:
- if (m_pList->GetCurSel() > 0)
- {
- FX_BOOL bExit = FALSE;
- if (m_pList->OnKeyDownWithExit(nChar,bExit,nFlag))
- {
- if (bExit) return FALSE;
- SetSelectText();
- }
+ if (m_pList->GetCurSel() > 0) {
+ FX_BOOL bExit = FALSE;
+ if (m_pList->OnKeyDownWithExit(nChar, bExit, nFlag)) {
+ if (bExit)
+ return FALSE;
+ SetSelectText();
}
- return TRUE;
+ }
+ return TRUE;
case FWL_VKEY_Down:
- if (m_pList->GetCurSel() < m_pList->GetCount() - 1)
- {
- FX_BOOL bExit = FALSE;
- if (m_pList->OnKeyDownWithExit(nChar,bExit,nFlag))
- {
- if (bExit) return FALSE;
- SetSelectText();
- }
+ if (m_pList->GetCurSel() < m_pList->GetCount() - 1) {
+ FX_BOOL bExit = FALSE;
+ if (m_pList->OnKeyDownWithExit(nChar, bExit, nFlag)) {
+ if (bExit)
+ return FALSE;
+ SetSelectText();
}
- return TRUE;
- }
+ }
+ return TRUE;
+ }
- if (HasFlag(PCBS_ALLOWCUSTOMTEXT))
- return m_pEdit->OnKeyDown(nChar,nFlag);
+ if (HasFlag(PCBS_ALLOWCUSTOMTEXT))
+ return m_pEdit->OnKeyDown(nChar, nFlag);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_ComboBox::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (!m_pList)
- return FALSE;
+FX_BOOL CPWL_ComboBox::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ if (!m_pList)
+ return FALSE;
- if (!m_pEdit)
- return FALSE;
+ if (!m_pEdit)
+ return FALSE;
- m_nSelectItem = -1;
- if (HasFlag(PCBS_ALLOWCUSTOMTEXT))
- return m_pEdit->OnChar(nChar,nFlag);
+ m_nSelectItem = -1;
+ if (HasFlag(PCBS_ALLOWCUSTOMTEXT))
+ return m_pEdit->OnChar(nChar, nFlag);
- FX_BOOL bExit = FALSE;
- return m_pList->OnCharWithExit(nChar,bExit,nFlag) ? bExit : FALSE;
+ FX_BOOL bExit = FALSE;
+ return m_pList->OnCharWithExit(nChar, bExit, nFlag) ? bExit : FALSE;
}
-void CPWL_ComboBox::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- switch (msg)
- {
+void CPWL_ComboBox::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ switch (msg) {
case PNM_LBUTTONDOWN:
- if (pWnd == m_pButton)
- {
- SetPopup(!m_bPopup);
- return;
- }
- break;
+ if (pWnd == m_pButton) {
+ SetPopup(!m_bPopup);
+ return;
+ }
+ break;
case PNM_LBUTTONUP:
- if (m_pEdit && m_pList)
- {
- if (pWnd == m_pList)
- {
- SetSelectText();
- SelectAll();
- m_pEdit->SetFocus();
- SetPopup(FALSE);
- return;
- }
+ if (m_pEdit && m_pList) {
+ if (pWnd == m_pList) {
+ SetSelectText();
+ SelectAll();
+ m_pEdit->SetFocus();
+ SetPopup(FALSE);
+ return;
}
- }
+ }
+ }
- CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam);
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
}
-FX_BOOL CPWL_ComboBox::IsPopup() const
-{
- return m_bPopup;
+FX_BOOL CPWL_ComboBox::IsPopup() const {
+ return m_bPopup;
}
-void CPWL_ComboBox::SetSelectText()
-{
- CFX_WideString swText = m_pList->GetText();
- m_pEdit->SelectAll();
- m_pEdit->ReplaceSel(m_pList->GetText().c_str());
- m_pEdit->SelectAll();
+void CPWL_ComboBox::SetSelectText() {
+ CFX_WideString swText = m_pList->GetText();
+ m_pEdit->SelectAll();
+ m_pEdit->ReplaceSel(m_pList->GetText().c_str());
+ m_pEdit->SelectAll();
- m_nSelectItem = m_pList->GetCurSel();
+ m_nSelectItem = m_pList->GetCurSel();
}
-FX_BOOL CPWL_ComboBox::IsModified() const
-{
- return m_pEdit->IsModified();
+FX_BOOL CPWL_ComboBox::IsModified() const {
+ return m_pEdit->IsModified();
}
-void CPWL_ComboBox::SetFillerNotify(IPWL_Filler_Notify* pNotify)
-{
- m_pFillerNotify = pNotify;
+void CPWL_ComboBox::SetFillerNotify(IPWL_Filler_Notify* pNotify) {
+ m_pFillerNotify = pNotify;
- if (m_pEdit)
- m_pEdit->SetFillerNotify(pNotify);
+ if (m_pEdit)
+ m_pEdit->SetFillerNotify(pNotify);
- if (m_pList)
- m_pList->SetFillerNotify(pNotify);
+ if (m_pList)
+ m_pList->SetFillerNotify(pNotify);
}
diff --git a/fpdfsdk/src/pdfwindow/PWL_Edit.cpp b/fpdfsdk/src/pdfwindow/PWL_Edit.cpp
index 58d8a79da1..edefd7ecd2 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Edit.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Edit.cpp
@@ -17,1301 +17,1209 @@
/* ---------------------------- CPWL_Edit ------------------------------ */
-CPWL_Edit::CPWL_Edit() : m_pFillerNotify(NULL),
- m_pSpellCheck(NULL),
- m_bFocus(FALSE)
-{
- m_pFormFiller = NULL;
+CPWL_Edit::CPWL_Edit()
+ : m_pFillerNotify(NULL), m_pSpellCheck(NULL), m_bFocus(FALSE) {
+ m_pFormFiller = NULL;
}
-CPWL_Edit::~CPWL_Edit()
-{
- ASSERT(m_bFocus == FALSE);
+CPWL_Edit::~CPWL_Edit() {
+ ASSERT(m_bFocus == FALSE);
}
-CFX_ByteString CPWL_Edit::GetClassName() const
-{
- return PWL_CLASSNAME_EDIT;
+CFX_ByteString CPWL_Edit::GetClassName() const {
+ return PWL_CLASSNAME_EDIT;
}
-void CPWL_Edit::OnDestroy()
-{
-}
+void CPWL_Edit::OnDestroy() {}
+
+void CPWL_Edit::SetText(const FX_WCHAR* csText) {
+ CFX_WideString swText = csText;
+
+ if (HasFlag(PES_RICH)) {
+ CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText);
+
+ if (CXML_Element* pXML =
+ CXML_Element::Parse(sValue.c_str(), sValue.GetLength())) {
+ int32_t nCount = pXML->CountChildren();
+ FX_BOOL bFirst = TRUE;
+
+ swText.Empty();
+
+ for (int32_t i = 0; i < nCount; i++) {
+ if (CXML_Element* pSubElement = pXML->GetElement(i)) {
+ CFX_ByteString tag = pSubElement->GetTagName();
+ if (tag.EqualNoCase("p")) {
+ int nChild = pSubElement->CountChildren();
+ CFX_WideString swSection;
+ for (int32_t j = 0; j < nChild; j++) {
+ swSection += pSubElement->GetContent(j);
+ }
+
+ if (bFirst)
+ bFirst = FALSE;
+ else
+ swText += FWL_VKEY_Return;
+ swText += swSection;
+ }
+ }
+ }
+
+ delete pXML;
+ }
+ }
-void CPWL_Edit::SetText(const FX_WCHAR* csText)
-{
- CFX_WideString swText = csText;
-
- if (HasFlag(PES_RICH))
- {
- CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText);
-
- if (CXML_Element * pXML = CXML_Element::Parse(sValue.c_str(), sValue.GetLength()))
- {
- int32_t nCount = pXML->CountChildren();
- FX_BOOL bFirst = TRUE;
-
- swText.Empty();
-
- for (int32_t i=0; i<nCount; i++)
- {
- if (CXML_Element * pSubElement = pXML->GetElement(i))
- {
- CFX_ByteString tag=pSubElement->GetTagName();
- if (tag.EqualNoCase("p"))
- {
- int nChild = pSubElement->CountChildren();
- CFX_WideString swSection;
- for(int32_t j=0; j<nChild; j++)
- {
- swSection += pSubElement->GetContent(j);
- }
-
- if (bFirst)bFirst = FALSE;
- else
- swText += FWL_VKEY_Return;
- swText += swSection;
- }
- }
- }
-
- delete pXML;
- }
- }
-
- m_pEdit->SetText(swText.c_str());
+ m_pEdit->SetText(swText.c_str());
}
-void CPWL_Edit::RePosChildWnd()
-{
- if (CPWL_ScrollBar * pVSB = GetVScrollBar()) {
- CPDF_Rect rcWindow = m_rcOldWindow;
- CPDF_Rect rcVScroll = CPDF_Rect(rcWindow.right,
- rcWindow.bottom,
- rcWindow.right + PWL_SCROLLBAR_WIDTH,
- rcWindow.top);
- pVSB->Move(rcVScroll, TRUE, FALSE);
- }
+void CPWL_Edit::RePosChildWnd() {
+ if (CPWL_ScrollBar* pVSB = GetVScrollBar()) {
+ CPDF_Rect rcWindow = m_rcOldWindow;
+ CPDF_Rect rcVScroll =
+ CPDF_Rect(rcWindow.right, rcWindow.bottom,
+ rcWindow.right + PWL_SCROLLBAR_WIDTH, rcWindow.top);
+ pVSB->Move(rcVScroll, TRUE, FALSE);
+ }
- if (m_pEditCaret && !HasFlag(PES_TEXTOVERFLOW))
- m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(GetClientRect(),1.0f)); //+1 for caret beside border
+ if (m_pEditCaret && !HasFlag(PES_TEXTOVERFLOW))
+ m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(
+ GetClientRect(), 1.0f)); //+1 for caret beside border
- CPWL_EditCtrl::RePosChildWnd();
+ CPWL_EditCtrl::RePosChildWnd();
}
-CPDF_Rect CPWL_Edit::GetClientRect() const
-{
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth()));
+CPDF_Rect CPWL_Edit::GetClientRect() const {
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(
+ GetWindowRect(), (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
- if (CPWL_ScrollBar * pVSB = GetVScrollBar())
- {
- if (pVSB->IsVisible())
- {
- rcClient.right -= PWL_SCROLLBAR_WIDTH;
- }
- }
+ if (CPWL_ScrollBar* pVSB = GetVScrollBar()) {
+ if (pVSB->IsVisible()) {
+ rcClient.right -= PWL_SCROLLBAR_WIDTH;
+ }
+ }
- return rcClient;
+ return rcClient;
}
-void CPWL_Edit::SetAlignFormatH(PWL_EDIT_ALIGNFORMAT_H nFormat, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pEdit->SetAlignmentH((int32_t)nFormat, bPaint);
+void CPWL_Edit::SetAlignFormatH(PWL_EDIT_ALIGNFORMAT_H nFormat,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pEdit->SetAlignmentH((int32_t)nFormat, bPaint);
}
-void CPWL_Edit::SetAlignFormatV(PWL_EDIT_ALIGNFORMAT_V nFormat, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pEdit->SetAlignmentV((int32_t)nFormat, bPaint);
+void CPWL_Edit::SetAlignFormatV(PWL_EDIT_ALIGNFORMAT_V nFormat,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pEdit->SetAlignmentV((int32_t)nFormat, bPaint);
}
-FX_BOOL CPWL_Edit::CanSelectAll() const
-{
- return GetSelectWordRange() != m_pEdit->GetWholeWordRange();
+FX_BOOL CPWL_Edit::CanSelectAll() const {
+ return GetSelectWordRange() != m_pEdit->GetWholeWordRange();
}
-FX_BOOL CPWL_Edit::CanClear() const
-{
- return !IsReadOnly() && m_pEdit->IsSelected();
+FX_BOOL CPWL_Edit::CanClear() const {
+ return !IsReadOnly() && m_pEdit->IsSelected();
}
-FX_BOOL CPWL_Edit::CanCopy() const
-{
- return !HasFlag(PES_PASSWORD) && !HasFlag(PES_NOREAD) && m_pEdit->IsSelected();
+FX_BOOL CPWL_Edit::CanCopy() const {
+ return !HasFlag(PES_PASSWORD) && !HasFlag(PES_NOREAD) &&
+ m_pEdit->IsSelected();
}
-FX_BOOL CPWL_Edit::CanCut() const
-{
- return CanCopy() && !IsReadOnly();
+FX_BOOL CPWL_Edit::CanCut() const {
+ return CanCopy() && !IsReadOnly();
}
-FX_BOOL CPWL_Edit::CanPaste() const
-{
- if (IsReadOnly()) return FALSE;
+FX_BOOL CPWL_Edit::CanPaste() const {
+ if (IsReadOnly())
+ return FALSE;
- CFX_WideString swClipboard;
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- swClipboard = pSH->GetClipboardText(GetAttachedHWnd());
+ CFX_WideString swClipboard;
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ swClipboard = pSH->GetClipboardText(GetAttachedHWnd());
- return !swClipboard.IsEmpty();
+ return !swClipboard.IsEmpty();
}
-void CPWL_Edit::CopyText()
-{
- if (!CanCopy()) return;
+void CPWL_Edit::CopyText() {
+ if (!CanCopy())
+ return;
- CFX_WideString str = m_pEdit->GetSelText();
+ CFX_WideString str = m_pEdit->GetSelText();
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- pSH->SetClipboardText(GetAttachedHWnd(), str);
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ pSH->SetClipboardText(GetAttachedHWnd(), str);
}
-void CPWL_Edit::PasteText()
-{
- if (!CanPaste()) return;
-
- CFX_WideString swClipboard;
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- swClipboard = pSH->GetClipboardText(GetAttachedHWnd());
-
- if (m_pFillerNotify)
- {
- FX_BOOL bRC = TRUE;
- FX_BOOL bExit = FALSE;
- CFX_WideString strChangeEx;
- int nSelStart = 0;
- int nSelEnd = 0;
- GetSel(nSelStart, nSelEnd);
- m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), 0 , swClipboard, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, 0);
- if (!bRC) return;
- if (bExit) return;
- }
-
- if (swClipboard.GetLength() > 0)
- {
- Clear();
- InsertText(swClipboard.c_str());
- }
-
- if (m_pFillerNotify)
- {
- FX_BOOL bExit = FALSE;
- m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,0);
- if (bExit) return;
- }
+void CPWL_Edit::PasteText() {
+ if (!CanPaste())
+ return;
+
+ CFX_WideString swClipboard;
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ swClipboard = pSH->GetClipboardText(GetAttachedHWnd());
+
+ if (m_pFillerNotify) {
+ FX_BOOL bRC = TRUE;
+ FX_BOOL bExit = FALSE;
+ CFX_WideString strChangeEx;
+ int nSelStart = 0;
+ int nSelEnd = 0;
+ GetSel(nSelStart, nSelEnd);
+ m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), 0, swClipboard,
+ strChangeEx, nSelStart, nSelEnd, TRUE,
+ bRC, bExit, 0);
+ if (!bRC)
+ return;
+ if (bExit)
+ return;
+ }
+
+ if (swClipboard.GetLength() > 0) {
+ Clear();
+ InsertText(swClipboard.c_str());
+ }
+
+ if (m_pFillerNotify) {
+ FX_BOOL bExit = FALSE;
+ m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit, 0);
+ if (bExit)
+ return;
+ }
}
-void CPWL_Edit::CutText()
-{
- if (!CanCut()) return;
+void CPWL_Edit::CutText() {
+ if (!CanCut())
+ return;
- CFX_WideString str = m_pEdit->GetSelText();
+ CFX_WideString str = m_pEdit->GetSelText();
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- pSH->SetClipboardText(GetAttachedHWnd(), str);
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ pSH->SetClipboardText(GetAttachedHWnd(), str);
- m_pEdit->Clear();
+ m_pEdit->Clear();
}
-void CPWL_Edit::OnCreated()
-{
- CPWL_EditCtrl::OnCreated();
+void CPWL_Edit::OnCreated() {
+ CPWL_EditCtrl::OnCreated();
- if (CPWL_ScrollBar * pScroll = GetVScrollBar())
- {
- pScroll->RemoveFlag(PWS_AUTOTRANSPARENT);
- pScroll->SetTransparency(255);
- }
+ if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
+ pScroll->RemoveFlag(PWS_AUTOTRANSPARENT);
+ pScroll->SetTransparency(255);
+ }
- SetParamByFlag();
+ SetParamByFlag();
- m_rcOldWindow = GetWindowRect();
+ m_rcOldWindow = GetWindowRect();
- m_pEdit->SetOprNotify(this);
- m_pEdit->EnableOprNotify(TRUE);
+ m_pEdit->SetOprNotify(this);
+ m_pEdit->EnableOprNotify(TRUE);
}
-void CPWL_Edit::SetParamByFlag()
-{
- if (HasFlag(PES_RIGHT))
- {
- m_pEdit->SetAlignmentH(2, FALSE);
- }
- else if (HasFlag(PES_MIDDLE))
- {
- m_pEdit->SetAlignmentH(1, FALSE);
- }
- else
- {
- m_pEdit->SetAlignmentH(0, FALSE);
- }
-
- if (HasFlag(PES_BOTTOM))
- {
- m_pEdit->SetAlignmentV(2, FALSE);
- }
- else if (HasFlag(PES_CENTER))
- {
- m_pEdit->SetAlignmentV(1, FALSE);
- }
- else
- {
- m_pEdit->SetAlignmentV(0, FALSE);
- }
-
- if (HasFlag(PES_PASSWORD))
- {
- m_pEdit->SetPasswordChar('*', FALSE);
- }
-
- m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE), FALSE);
- m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN), FALSE);
- m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE), FALSE);
- m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL), FALSE);
- m_pEdit->EnableUndo(HasFlag(PES_UNDO));
-
- if (HasFlag(PES_TEXTOVERFLOW))
- {
- SetClipRect(CPDF_Rect(0.0f,0.0f,0.0f,0.0f));
- m_pEdit->SetTextOverflow(TRUE, FALSE);
- }
- else
- {
- if (m_pEditCaret)
- {
- m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(GetClientRect(),1.0f)); //+1 for caret beside border
- }
- }
-
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pSpellCheck = GetCreationParam().pSpellCheck;
- }
+void CPWL_Edit::SetParamByFlag() {
+ if (HasFlag(PES_RIGHT)) {
+ m_pEdit->SetAlignmentH(2, FALSE);
+ } else if (HasFlag(PES_MIDDLE)) {
+ m_pEdit->SetAlignmentH(1, FALSE);
+ } else {
+ m_pEdit->SetAlignmentH(0, FALSE);
+ }
+
+ if (HasFlag(PES_BOTTOM)) {
+ m_pEdit->SetAlignmentV(2, FALSE);
+ } else if (HasFlag(PES_CENTER)) {
+ m_pEdit->SetAlignmentV(1, FALSE);
+ } else {
+ m_pEdit->SetAlignmentV(0, FALSE);
+ }
+
+ if (HasFlag(PES_PASSWORD)) {
+ m_pEdit->SetPasswordChar('*', FALSE);
+ }
+
+ m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE), FALSE);
+ m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN), FALSE);
+ m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE), FALSE);
+ m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL), FALSE);
+ m_pEdit->EnableUndo(HasFlag(PES_UNDO));
+
+ if (HasFlag(PES_TEXTOVERFLOW)) {
+ SetClipRect(CPDF_Rect(0.0f, 0.0f, 0.0f, 0.0f));
+ m_pEdit->SetTextOverflow(TRUE, FALSE);
+ } else {
+ if (m_pEditCaret) {
+ m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(
+ GetClientRect(), 1.0f)); //+1 for caret beside border
+ }
+ }
+
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pSpellCheck = GetCreationParam().pSpellCheck;
+ }
}
-void CPWL_Edit::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
-
- CPDF_Rect rcClient = GetClientRect();
- CFX_ByteTextBuf sLine;
-
- int32_t nCharArray = m_pEdit->GetCharArray();
-
- if (nCharArray > 0)
- {
- switch (GetBorderStyle())
- {
- case PBS_SOLID:
- {
- sLine << "q\n" << GetBorderWidth() << " w\n"
- << CPWL_Utils::GetColorAppStream(GetBorderColor(),FALSE) << " 2 J 0 j\n";
-
- for (int32_t i=1;i<nCharArray;i++)
- {
- sLine << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " "
- << rcClient.bottom << " m\n"
- << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " "
- << rcClient.top << " l S\n";
- }
-
- sLine << "Q\n";
- }
- break;
- case PBS_DASH:
- {
- sLine << "q\n" << GetBorderWidth() << " w\n"
- << CPWL_Utils::GetColorAppStream(GetBorderColor(),FALSE) << " 2 J 0 j\n"
- << "[" << GetBorderDash().nDash << " "
- << GetBorderDash().nGap << "] "
- << GetBorderDash().nPhase << " d\n";
-
- for (int32_t i=1;i<nCharArray;i++)
- {
- sLine << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " "
- << rcClient.bottom << " m\n"
- << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " "
- << rcClient.top << " l S\n";
- }
-
- sLine << "Q\n";
- }
- break;
- }
- }
-
- sAppStream << sLine;
-
- CFX_ByteTextBuf sText;
-
- CPDF_Point ptOffset = CPDF_Point(0.0f,0.0f);
-
- CPVT_WordRange wrWhole = m_pEdit->GetWholeWordRange();
- CPVT_WordRange wrSelect = GetSelectWordRange();
- CPVT_WordRange wrVisible = (HasFlag(PES_TEXTOVERFLOW) ? wrWhole : m_pEdit->GetVisibleWordRange());
- CPVT_WordRange wrSelBefore(wrWhole.BeginPos,wrSelect.BeginPos);
- CPVT_WordRange wrSelAfter(wrSelect.EndPos,wrWhole.EndPos);
-
- CPVT_WordRange wrTemp = CPWL_Utils::OverlapWordRange(GetSelectWordRange(),wrVisible);
- CFX_ByteString sEditSel = CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset,
- &wrTemp);
-
- if (sEditSel.GetLength() > 0)
- sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR) << sEditSel ;
-
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelBefore);
- CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset,
- &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar());
-
- if (sEditBefore.GetLength() > 0)
- sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEditBefore << "ET\n";
-
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelect);
- CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset,
- &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar());
-
- if (sEditMid.GetLength() > 0)
- sText << "BT\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY,1)) << sEditMid << "ET\n";
-
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelAfter);
- CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset,
- &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar());
-
- if (sEditAfter.GetLength() > 0)
- sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEditAfter<< "ET\n";
-
- if (HasFlag(PES_SPELLCHECK))
- {
- CFX_ByteString sSpellCheck = CPWL_Utils::GetSpellCheckAppStream(m_pEdit, m_pSpellCheck, ptOffset, &wrVisible);
- if (sSpellCheck.GetLength() > 0)
- sText << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,1,0,0),FALSE) << sSpellCheck;
- }
-
- if (sText.GetLength() > 0)
- {
- CPDF_Rect rcClient = GetClientRect();
- sAppStream << "q\n/Tx BMC\n";
-
- if (!HasFlag(PES_TEXTOVERFLOW))
- sAppStream << rcClient.left << " " << rcClient.bottom << " "
- << rcClient.right - rcClient.left << " " << rcClient.top - rcClient.bottom << " re W n\n";
-
- sAppStream << sText;
-
- sAppStream << "EMC\nQ\n";
- }
+void CPWL_Edit::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+
+ CPDF_Rect rcClient = GetClientRect();
+ CFX_ByteTextBuf sLine;
+
+ int32_t nCharArray = m_pEdit->GetCharArray();
+
+ if (nCharArray > 0) {
+ switch (GetBorderStyle()) {
+ case PBS_SOLID: {
+ sLine << "q\n" << GetBorderWidth() << " w\n"
+ << CPWL_Utils::GetColorAppStream(GetBorderColor(), FALSE)
+ << " 2 J 0 j\n";
+
+ for (int32_t i = 1; i < nCharArray; i++) {
+ sLine << rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * i
+ << " " << rcClient.bottom << " m\n"
+ << rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * i
+ << " " << rcClient.top << " l S\n";
+ }
+
+ sLine << "Q\n";
+ } break;
+ case PBS_DASH: {
+ sLine << "q\n" << GetBorderWidth() << " w\n"
+ << CPWL_Utils::GetColorAppStream(GetBorderColor(), FALSE)
+ << " 2 J 0 j\n"
+ << "[" << GetBorderDash().nDash << " " << GetBorderDash().nGap
+ << "] " << GetBorderDash().nPhase << " d\n";
+
+ for (int32_t i = 1; i < nCharArray; i++) {
+ sLine << rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * i
+ << " " << rcClient.bottom << " m\n"
+ << rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * i
+ << " " << rcClient.top << " l S\n";
+ }
+
+ sLine << "Q\n";
+ } break;
+ }
+ }
+
+ sAppStream << sLine;
+
+ CFX_ByteTextBuf sText;
+
+ CPDF_Point ptOffset = CPDF_Point(0.0f, 0.0f);
+
+ CPVT_WordRange wrWhole = m_pEdit->GetWholeWordRange();
+ CPVT_WordRange wrSelect = GetSelectWordRange();
+ CPVT_WordRange wrVisible =
+ (HasFlag(PES_TEXTOVERFLOW) ? wrWhole : m_pEdit->GetVisibleWordRange());
+ CPVT_WordRange wrSelBefore(wrWhole.BeginPos, wrSelect.BeginPos);
+ CPVT_WordRange wrSelAfter(wrSelect.EndPos, wrWhole.EndPos);
+
+ CPVT_WordRange wrTemp =
+ CPWL_Utils::OverlapWordRange(GetSelectWordRange(), wrVisible);
+ CFX_ByteString sEditSel =
+ CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset, &wrTemp);
+
+ if (sEditSel.GetLength() > 0)
+ sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR)
+ << sEditSel;
+
+ wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelBefore);
+ CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream(
+ m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
+ m_pEdit->GetPasswordChar());
+
+ if (sEditBefore.GetLength() > 0)
+ sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor())
+ << sEditBefore << "ET\n";
+
+ wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelect);
+ CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream(
+ m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
+ m_pEdit->GetPasswordChar());
+
+ if (sEditMid.GetLength() > 0)
+ sText << "BT\n"
+ << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY, 1))
+ << sEditMid << "ET\n";
+
+ wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelAfter);
+ CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream(
+ m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
+ m_pEdit->GetPasswordChar());
+
+ if (sEditAfter.GetLength() > 0)
+ sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor())
+ << sEditAfter << "ET\n";
+
+ if (HasFlag(PES_SPELLCHECK)) {
+ CFX_ByteString sSpellCheck = CPWL_Utils::GetSpellCheckAppStream(
+ m_pEdit, m_pSpellCheck, ptOffset, &wrVisible);
+ if (sSpellCheck.GetLength() > 0)
+ sText << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB, 1, 0, 0),
+ FALSE)
+ << sSpellCheck;
+ }
+
+ if (sText.GetLength() > 0) {
+ CPDF_Rect rcClient = GetClientRect();
+ sAppStream << "q\n/Tx BMC\n";
+
+ if (!HasFlag(PES_TEXTOVERFLOW))
+ sAppStream << rcClient.left << " " << rcClient.bottom << " "
+ << rcClient.right - rcClient.left << " "
+ << rcClient.top - rcClient.bottom << " re W n\n";
+
+ sAppStream << sText;
+
+ sAppStream << "EMC\nQ\n";
+ }
}
-void CPWL_Edit::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
-
- CPDF_Rect rcClient = GetClientRect();
- CFX_ByteTextBuf sLine;
-
- int32_t nCharArray = m_pEdit->GetCharArray();
- FX_SAFE_INT32 nCharArraySafe = nCharArray;
- nCharArraySafe -= 1;
- nCharArraySafe *= 2;
-
- if (nCharArray > 0 && nCharArraySafe.IsValid())
- {
- switch (GetBorderStyle())
- {
- case PBS_SOLID:
- {
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth();
-
- CFX_PathData path;
- path.SetPointCount(nCharArraySafe.ValueOrDie());
-
- for (int32_t i=0; i<nCharArray-1; i++)
- {
- path.SetPoint(i*2, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1),
- rcClient.bottom, FXPT_MOVETO);
- path.SetPoint(i*2+1, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1),
- rcClient.top, FXPT_LINETO);
- }
- if (path.GetPointCount() > 0)
- pDevice->DrawPath(&path, pUser2Device, &gsd,0,
- CPWL_Utils::PWLColorToFXColor(GetBorderColor(),255), FXFILL_ALTERNATE);
- }
- break;
- case PBS_DASH:
- {
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth();
-
- gsd.SetDashCount(2);
- gsd.m_DashArray[0] = (FX_FLOAT)GetBorderDash().nDash;
- gsd.m_DashArray[1] = (FX_FLOAT)GetBorderDash().nGap;
- gsd.m_DashPhase = (FX_FLOAT)GetBorderDash().nPhase;
-
- CFX_PathData path;
- path.SetPointCount(nCharArraySafe.ValueOrDie());
-
- for (int32_t i=0; i<nCharArray-1; i++)
- {
- path.SetPoint(i*2, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1),
- rcClient.bottom, FXPT_MOVETO);
- path.SetPoint(i*2+1, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1),
- rcClient.top, FXPT_LINETO);
- }
- if (path.GetPointCount() > 0)
- pDevice->DrawPath(&path, pUser2Device, &gsd,0,
- CPWL_Utils::PWLColorToFXColor(GetBorderColor(),255), FXFILL_ALTERNATE);
- }
- break;
- }
- }
-
- CPDF_Rect rcClip;
- CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange();
- CPVT_WordRange* pRange = NULL;
-
- if (!HasFlag(PES_TEXTOVERFLOW))
- {
- rcClip = GetClientRect();
- pRange = &wrRange;
- }
-IFX_SystemHandler* pSysHandler = GetSystemHandler();
- IFX_Edit::DrawEdit(pDevice,pUser2Device,m_pEdit,
- CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
- CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()),
- rcClip,CPDF_Point(0.0f,0.0f),pRange, pSysHandler, m_pFormFiller);
-
- if (HasFlag(PES_SPELLCHECK))
- {
- CPWL_Utils::DrawEditSpellCheck(pDevice,pUser2Device,m_pEdit,rcClip,
- CPDF_Point(0.0f,0.0f),pRange, GetCreationParam().pSpellCheck);
- }
+void CPWL_Edit::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+
+ CPDF_Rect rcClient = GetClientRect();
+ CFX_ByteTextBuf sLine;
+
+ int32_t nCharArray = m_pEdit->GetCharArray();
+ FX_SAFE_INT32 nCharArraySafe = nCharArray;
+ nCharArraySafe -= 1;
+ nCharArraySafe *= 2;
+
+ if (nCharArray > 0 && nCharArraySafe.IsValid()) {
+ switch (GetBorderStyle()) {
+ case PBS_SOLID: {
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth();
+
+ CFX_PathData path;
+ path.SetPointCount(nCharArraySafe.ValueOrDie());
+
+ for (int32_t i = 0; i < nCharArray - 1; i++) {
+ path.SetPoint(
+ i * 2,
+ rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * (i + 1),
+ rcClient.bottom, FXPT_MOVETO);
+ path.SetPoint(
+ i * 2 + 1,
+ rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * (i + 1),
+ rcClient.top, FXPT_LINETO);
+ }
+ if (path.GetPointCount() > 0)
+ pDevice->DrawPath(
+ &path, pUser2Device, &gsd, 0,
+ CPWL_Utils::PWLColorToFXColor(GetBorderColor(), 255),
+ FXFILL_ALTERNATE);
+ } break;
+ case PBS_DASH: {
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth();
+
+ gsd.SetDashCount(2);
+ gsd.m_DashArray[0] = (FX_FLOAT)GetBorderDash().nDash;
+ gsd.m_DashArray[1] = (FX_FLOAT)GetBorderDash().nGap;
+ gsd.m_DashPhase = (FX_FLOAT)GetBorderDash().nPhase;
+
+ CFX_PathData path;
+ path.SetPointCount(nCharArraySafe.ValueOrDie());
+
+ for (int32_t i = 0; i < nCharArray - 1; i++) {
+ path.SetPoint(
+ i * 2,
+ rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * (i + 1),
+ rcClient.bottom, FXPT_MOVETO);
+ path.SetPoint(
+ i * 2 + 1,
+ rcClient.left +
+ ((rcClient.right - rcClient.left) / nCharArray) * (i + 1),
+ rcClient.top, FXPT_LINETO);
+ }
+ if (path.GetPointCount() > 0)
+ pDevice->DrawPath(
+ &path, pUser2Device, &gsd, 0,
+ CPWL_Utils::PWLColorToFXColor(GetBorderColor(), 255),
+ FXFILL_ALTERNATE);
+ } break;
+ }
+ }
+
+ CPDF_Rect rcClip;
+ CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange();
+ CPVT_WordRange* pRange = NULL;
+
+ if (!HasFlag(PES_TEXTOVERFLOW)) {
+ rcClip = GetClientRect();
+ pRange = &wrRange;
+ }
+ IFX_SystemHandler* pSysHandler = GetSystemHandler();
+ IFX_Edit::DrawEdit(
+ pDevice, pUser2Device, m_pEdit,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()),
+ rcClip, CPDF_Point(0.0f, 0.0f), pRange, pSysHandler, m_pFormFiller);
+
+ if (HasFlag(PES_SPELLCHECK)) {
+ CPWL_Utils::DrawEditSpellCheck(pDevice, pUser2Device, m_pEdit, rcClip,
+ CPDF_Point(0.0f, 0.0f), pRange,
+ GetCreationParam().pSpellCheck);
+ }
}
-FX_BOOL CPWL_Edit::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
+FX_BOOL CPWL_Edit::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
- if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point))
- {
- if (m_bMouseDown)
- InvalidateRect();
+ if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) {
+ if (m_bMouseDown)
+ InvalidateRect();
- m_bMouseDown = TRUE;
- SetCapture();
+ m_bMouseDown = TRUE;
+ SetCapture();
- m_pEdit->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
+ m_pEdit->OnMouseDown(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_Edit::OnLButtonDblClk(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDblClk(point, nFlag);
+FX_BOOL CPWL_Edit::OnLButtonDblClk(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDblClk(point, nFlag);
- if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point))
- {
- m_pEdit->SelectAll();
- }
+ if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) {
+ m_pEdit->SelectAll();
+ }
- return TRUE;
+ return TRUE;
}
-#define WM_PWLEDIT_UNDO 0x01
-#define WM_PWLEDIT_REDO 0x02
-#define WM_PWLEDIT_CUT 0x03
-#define WM_PWLEDIT_COPY 0x04
-#define WM_PWLEDIT_PASTE 0x05
-#define WM_PWLEDIT_DELETE 0x06
-#define WM_PWLEDIT_SELECTALL 0x07
-#define WM_PWLEDIT_SUGGEST 0x08
-
-FX_BOOL CPWL_Edit::OnRButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (m_bMouseDown) return FALSE;
-
- CPWL_Wnd::OnRButtonUp(point, nFlag);
-
- if (!HasFlag(PES_TEXTOVERFLOW) && !ClientHitTest(point)) return TRUE;
-
- IFX_SystemHandler* pSH = GetSystemHandler();
- if (!pSH) return FALSE;
-
- SetFocus();
-
- CPVT_WordRange wrLatin = GetLatinWordsRange(point);
- CFX_WideString swLatin = m_pEdit->GetRangeText(wrLatin);
-
- FX_HMENU hPopup = pSH->CreatePopupMenu();
- if (!hPopup) return FALSE;
-
- CFX_ByteStringArray sSuggestWords;
- CPDF_Point ptPopup = point;
-
- if (!IsReadOnly())
- {
- if (HasFlag(PES_SPELLCHECK) && !swLatin.IsEmpty())
- {
- if (m_pSpellCheck)
- {
- CFX_ByteString sLatin = CFX_ByteString::FromUnicode(swLatin);
-
- if (!m_pSpellCheck->CheckWord(sLatin))
- {
- m_pSpellCheck->SuggestWords(sLatin,sSuggestWords);
-
- int32_t nSuggest = sSuggestWords.GetSize();
-
- for (int32_t nWord=0; nWord<nSuggest; nWord++)
- {
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_SUGGEST+nWord, sSuggestWords[nWord].UTF8Decode());
- }
-
- if (nSuggest > 0)
- pSH->AppendMenuItem(hPopup, 0, L"");
-
- ptPopup = GetWordRightBottomPoint(wrLatin.EndPos);
- }
- }
- }
- }
-
- IPWL_Provider* pProvider = GetProvider();
-
- if (HasFlag(PES_UNDO))
- {
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_UNDO,
- pProvider ? pProvider->LoadPopupMenuString(0) : L"&Undo");
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_REDO,
- pProvider ? pProvider->LoadPopupMenuString(1) : L"&Redo");
- pSH->AppendMenuItem(hPopup, 0, L"");
-
- if (!m_pEdit->CanUndo())
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_UNDO, FALSE);
- if (!m_pEdit->CanRedo())
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_REDO, FALSE);
- }
-
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_CUT,
- pProvider ? pProvider->LoadPopupMenuString(2) : L"Cu&t");
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_COPY,
- pProvider ? pProvider->LoadPopupMenuString(3) : L"&Copy");
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_PASTE,
- pProvider ? pProvider->LoadPopupMenuString(4) : L"&Paste");
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_DELETE,
- pProvider ? pProvider->LoadPopupMenuString(5) : L"&Delete");
-
- CFX_WideString swText = pSH->GetClipboardText(GetAttachedHWnd());
- if (swText.IsEmpty())
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE);
-
- if (!m_pEdit->IsSelected())
- {
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE);
- }
-
- if (IsReadOnly())
- {
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE);
- }
-
- if (HasFlag(PES_PASSWORD))
- {
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
- }
-
- if (HasFlag(PES_NOREAD))
- {
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
- }
-
- pSH->AppendMenuItem(hPopup, 0, L"");
- pSH->AppendMenuItem(hPopup, WM_PWLEDIT_SELECTALL,
- pProvider ? pProvider->LoadPopupMenuString(6) : L"&Select All");
-
- if (m_pEdit->GetTotalWords() == 0)
- {
- pSH->EnableMenuItem(hPopup, WM_PWLEDIT_SELECTALL, FALSE);
- }
-
- int32_t x, y;
- PWLtoWnd(ptPopup, x, y);
- pSH->ClientToScreen(GetAttachedHWnd(), x, y);
- pSH->SetCursor(FXCT_ARROW);
- int32_t nCmd = pSH->TrackPopupMenu(hPopup,
- x,
- y,
- GetAttachedHWnd());
-
-
- switch (nCmd)
- {
- case WM_PWLEDIT_UNDO:
- Undo();
- break;
- case WM_PWLEDIT_REDO:
- Redo();
- break;
- case WM_PWLEDIT_CUT:
- CutText();
- break;
- case WM_PWLEDIT_COPY:
- CopyText();
- break;
- case WM_PWLEDIT_PASTE:
- PasteText();
- break;
- case WM_PWLEDIT_DELETE:
- Clear();
- break;
- case WM_PWLEDIT_SELECTALL:
- SelectAll();
- break;
- case WM_PWLEDIT_SUGGEST + 0:
- SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
- ReplaceSel(sSuggestWords[0].UTF8Decode().c_str());
- break;
- case WM_PWLEDIT_SUGGEST + 1:
- SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
- ReplaceSel(sSuggestWords[1].UTF8Decode().c_str());
- break;
- case WM_PWLEDIT_SUGGEST + 2:
- SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
- ReplaceSel(sSuggestWords[2].UTF8Decode().c_str());
- break;
- case WM_PWLEDIT_SUGGEST + 3:
- SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
- ReplaceSel(sSuggestWords[3].UTF8Decode().c_str());
- break;
- case WM_PWLEDIT_SUGGEST + 4:
- SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
- ReplaceSel(sSuggestWords[4].UTF8Decode().c_str());
- break;
- default:
- break;
- }
-
- pSH->DestroyMenu(hPopup);
-
- return TRUE;
+#define WM_PWLEDIT_UNDO 0x01
+#define WM_PWLEDIT_REDO 0x02
+#define WM_PWLEDIT_CUT 0x03
+#define WM_PWLEDIT_COPY 0x04
+#define WM_PWLEDIT_PASTE 0x05
+#define WM_PWLEDIT_DELETE 0x06
+#define WM_PWLEDIT_SELECTALL 0x07
+#define WM_PWLEDIT_SUGGEST 0x08
+
+FX_BOOL CPWL_Edit::OnRButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (m_bMouseDown)
+ return FALSE;
+
+ CPWL_Wnd::OnRButtonUp(point, nFlag);
+
+ if (!HasFlag(PES_TEXTOVERFLOW) && !ClientHitTest(point))
+ return TRUE;
+
+ IFX_SystemHandler* pSH = GetSystemHandler();
+ if (!pSH)
+ return FALSE;
+
+ SetFocus();
+
+ CPVT_WordRange wrLatin = GetLatinWordsRange(point);
+ CFX_WideString swLatin = m_pEdit->GetRangeText(wrLatin);
+
+ FX_HMENU hPopup = pSH->CreatePopupMenu();
+ if (!hPopup)
+ return FALSE;
+
+ CFX_ByteStringArray sSuggestWords;
+ CPDF_Point ptPopup = point;
+
+ if (!IsReadOnly()) {
+ if (HasFlag(PES_SPELLCHECK) && !swLatin.IsEmpty()) {
+ if (m_pSpellCheck) {
+ CFX_ByteString sLatin = CFX_ByteString::FromUnicode(swLatin);
+
+ if (!m_pSpellCheck->CheckWord(sLatin)) {
+ m_pSpellCheck->SuggestWords(sLatin, sSuggestWords);
+
+ int32_t nSuggest = sSuggestWords.GetSize();
+
+ for (int32_t nWord = 0; nWord < nSuggest; nWord++) {
+ pSH->AppendMenuItem(hPopup, WM_PWLEDIT_SUGGEST + nWord,
+ sSuggestWords[nWord].UTF8Decode());
+ }
+
+ if (nSuggest > 0)
+ pSH->AppendMenuItem(hPopup, 0, L"");
+
+ ptPopup = GetWordRightBottomPoint(wrLatin.EndPos);
+ }
+ }
+ }
+ }
+
+ IPWL_Provider* pProvider = GetProvider();
+
+ if (HasFlag(PES_UNDO)) {
+ pSH->AppendMenuItem(
+ hPopup, WM_PWLEDIT_UNDO,
+ pProvider ? pProvider->LoadPopupMenuString(0) : L"&Undo");
+ pSH->AppendMenuItem(
+ hPopup, WM_PWLEDIT_REDO,
+ pProvider ? pProvider->LoadPopupMenuString(1) : L"&Redo");
+ pSH->AppendMenuItem(hPopup, 0, L"");
+
+ if (!m_pEdit->CanUndo())
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_UNDO, FALSE);
+ if (!m_pEdit->CanRedo())
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_REDO, FALSE);
+ }
+
+ pSH->AppendMenuItem(hPopup, WM_PWLEDIT_CUT,
+ pProvider ? pProvider->LoadPopupMenuString(2) : L"Cu&t");
+ pSH->AppendMenuItem(hPopup, WM_PWLEDIT_COPY,
+ pProvider ? pProvider->LoadPopupMenuString(3) : L"&Copy");
+ pSH->AppendMenuItem(
+ hPopup, WM_PWLEDIT_PASTE,
+ pProvider ? pProvider->LoadPopupMenuString(4) : L"&Paste");
+ pSH->AppendMenuItem(
+ hPopup, WM_PWLEDIT_DELETE,
+ pProvider ? pProvider->LoadPopupMenuString(5) : L"&Delete");
+
+ CFX_WideString swText = pSH->GetClipboardText(GetAttachedHWnd());
+ if (swText.IsEmpty())
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE);
+
+ if (!m_pEdit->IsSelected()) {
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE);
+ }
+
+ if (IsReadOnly()) {
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE);
+ }
+
+ if (HasFlag(PES_PASSWORD)) {
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
+ }
+
+ if (HasFlag(PES_NOREAD)) {
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE);
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE);
+ }
+
+ pSH->AppendMenuItem(hPopup, 0, L"");
+ pSH->AppendMenuItem(
+ hPopup, WM_PWLEDIT_SELECTALL,
+ pProvider ? pProvider->LoadPopupMenuString(6) : L"&Select All");
+
+ if (m_pEdit->GetTotalWords() == 0) {
+ pSH->EnableMenuItem(hPopup, WM_PWLEDIT_SELECTALL, FALSE);
+ }
+
+ int32_t x, y;
+ PWLtoWnd(ptPopup, x, y);
+ pSH->ClientToScreen(GetAttachedHWnd(), x, y);
+ pSH->SetCursor(FXCT_ARROW);
+ int32_t nCmd = pSH->TrackPopupMenu(hPopup, x, y, GetAttachedHWnd());
+
+ switch (nCmd) {
+ case WM_PWLEDIT_UNDO:
+ Undo();
+ break;
+ case WM_PWLEDIT_REDO:
+ Redo();
+ break;
+ case WM_PWLEDIT_CUT:
+ CutText();
+ break;
+ case WM_PWLEDIT_COPY:
+ CopyText();
+ break;
+ case WM_PWLEDIT_PASTE:
+ PasteText();
+ break;
+ case WM_PWLEDIT_DELETE:
+ Clear();
+ break;
+ case WM_PWLEDIT_SELECTALL:
+ SelectAll();
+ break;
+ case WM_PWLEDIT_SUGGEST + 0:
+ SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),
+ m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
+ ReplaceSel(sSuggestWords[0].UTF8Decode().c_str());
+ break;
+ case WM_PWLEDIT_SUGGEST + 1:
+ SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),
+ m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
+ ReplaceSel(sSuggestWords[1].UTF8Decode().c_str());
+ break;
+ case WM_PWLEDIT_SUGGEST + 2:
+ SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),
+ m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
+ ReplaceSel(sSuggestWords[2].UTF8Decode().c_str());
+ break;
+ case WM_PWLEDIT_SUGGEST + 3:
+ SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),
+ m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
+ ReplaceSel(sSuggestWords[3].UTF8Decode().c_str());
+ break;
+ case WM_PWLEDIT_SUGGEST + 4:
+ SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),
+ m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos));
+ ReplaceSel(sSuggestWords[4].UTF8Decode().c_str());
+ break;
+ default:
+ break;
+ }
+
+ pSH->DestroyMenu(hPopup);
+
+ return TRUE;
}
-void CPWL_Edit::OnSetFocus()
-{
- SetEditCaret(TRUE);
+void CPWL_Edit::OnSetFocus() {
+ SetEditCaret(TRUE);
- if (!IsReadOnly())
- {
- if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler())
- pFocusHandler->OnSetFocus(this);
- }
+ if (!IsReadOnly()) {
+ if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler())
+ pFocusHandler->OnSetFocus(this);
+ }
- m_bFocus = TRUE;
+ m_bFocus = TRUE;
}
-void CPWL_Edit::OnKillFocus()
-{
- ShowVScrollBar(FALSE);
+void CPWL_Edit::OnKillFocus() {
+ ShowVScrollBar(FALSE);
- m_pEdit->SelectNone();
- SetCaret(FALSE, CPDF_Point(0.0f,0.0f), CPDF_Point(0.0f,0.0f));
+ m_pEdit->SelectNone();
+ SetCaret(FALSE, CPDF_Point(0.0f, 0.0f), CPDF_Point(0.0f, 0.0f));
- SetCharSet(0);
+ SetCharSet(0);
- if (!IsReadOnly())
- {
- if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler())
- pFocusHandler->OnKillFocus(this);
- }
+ if (!IsReadOnly()) {
+ if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler())
+ pFocusHandler->OnKillFocus(this);
+ }
- m_bFocus = FALSE;
+ m_bFocus = FALSE;
}
-void CPWL_Edit::SetHorzScale(int32_t nHorzScale, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pEdit->SetHorzScale(nHorzScale, bPaint);
+void CPWL_Edit::SetHorzScale(int32_t nHorzScale, FX_BOOL bPaint /* = TRUE*/) {
+ m_pEdit->SetHorzScale(nHorzScale, bPaint);
}
-void CPWL_Edit::SetCharSpace(FX_FLOAT fCharSpace, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pEdit->SetCharSpace(fCharSpace, bPaint);
+void CPWL_Edit::SetCharSpace(FX_FLOAT fCharSpace, FX_BOOL bPaint /* = TRUE*/) {
+ m_pEdit->SetCharSpace(fCharSpace, bPaint);
}
-void CPWL_Edit::SetLineLeading(FX_FLOAT fLineLeading, FX_BOOL bPaint/* = TRUE*/)
-{
- m_pEdit->SetLineLeading(fLineLeading, bPaint);
+void CPWL_Edit::SetLineLeading(FX_FLOAT fLineLeading,
+ FX_BOOL bPaint /* = TRUE*/) {
+ m_pEdit->SetLineLeading(fLineLeading, bPaint);
}
-CFX_ByteString CPWL_Edit::GetSelectAppearanceStream(const CPDF_Point & ptOffset) const
-{
- CPVT_WordRange wr = GetSelectWordRange();
- return CPWL_Utils::GetEditSelAppStream(m_pEdit,ptOffset,&wr);
+CFX_ByteString CPWL_Edit::GetSelectAppearanceStream(
+ const CPDF_Point& ptOffset) const {
+ CPVT_WordRange wr = GetSelectWordRange();
+ return CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset, &wr);
}
-CPVT_WordRange CPWL_Edit::GetSelectWordRange() const
-{
- if (m_pEdit->IsSelected())
- {
- int32_t nStart = -1;
- int32_t nEnd = -1;
+CPVT_WordRange CPWL_Edit::GetSelectWordRange() const {
+ if (m_pEdit->IsSelected()) {
+ int32_t nStart = -1;
+ int32_t nEnd = -1;
- m_pEdit->GetSel(nStart, nEnd);
+ m_pEdit->GetSel(nStart, nEnd);
- CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart);
- CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd);
+ CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart);
+ CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd);
- return CPVT_WordRange(wpStart,wpEnd);
- }
+ return CPVT_WordRange(wpStart, wpEnd);
+ }
- return CPVT_WordRange();
+ return CPVT_WordRange();
}
-CFX_ByteString CPWL_Edit::GetTextAppearanceStream(const CPDF_Point & ptOffset) const
-{
- CFX_ByteTextBuf sRet;
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit,ptOffset);
+CFX_ByteString CPWL_Edit::GetTextAppearanceStream(
+ const CPDF_Point& ptOffset) const {
+ CFX_ByteTextBuf sRet;
+ CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset);
- if (sEdit.GetLength() > 0)
- {
- sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEdit << "ET\n";
- }
+ if (sEdit.GetLength() > 0) {
+ sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEdit
+ << "ET\n";
+ }
- return sRet.GetByteString();
+ return sRet.GetByteString();
}
-CFX_ByteString CPWL_Edit::GetCaretAppearanceStream(const CPDF_Point & ptOffset) const
-{
- if (m_pEditCaret)
- return m_pEditCaret->GetCaretAppearanceStream(ptOffset);
+CFX_ByteString CPWL_Edit::GetCaretAppearanceStream(
+ const CPDF_Point& ptOffset) const {
+ if (m_pEditCaret)
+ return m_pEditCaret->GetCaretAppearanceStream(ptOffset);
- return CFX_ByteString();
+ return CFX_ByteString();
}
-CPDF_Point CPWL_Edit::GetWordRightBottomPoint(const CPVT_WordPlace& wpWord)
-{
- CPDF_Point pt(0.0f, 0.0f);
+CPDF_Point CPWL_Edit::GetWordRightBottomPoint(const CPVT_WordPlace& wpWord) {
+ CPDF_Point pt(0.0f, 0.0f);
- if (IFX_Edit_Iterator * pIterator = m_pEdit->GetIterator())
- {
- CPVT_WordPlace wpOld = pIterator->GetAt();
- pIterator->SetAt(wpWord);
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- pt = CPDF_Point(word.ptWord.x + word.fWidth, word.ptWord.y + word.fDescent);
- }
+ if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) {
+ CPVT_WordPlace wpOld = pIterator->GetAt();
+ pIterator->SetAt(wpWord);
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ pt = CPDF_Point(word.ptWord.x + word.fWidth,
+ word.ptWord.y + word.fDescent);
+ }
- pIterator->SetAt(wpOld);
- }
+ pIterator->SetAt(wpOld);
+ }
- return pt;
+ return pt;
}
-FX_BOOL CPWL_Edit::IsTextFull() const
-{
- return m_pEdit->IsTextFull();
+FX_BOOL CPWL_Edit::IsTextFull() const {
+ return m_pEdit->IsTextFull();
}
-FX_FLOAT CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont, const CPDF_Rect& rcPlate, int32_t nCharArray)
-{
- if (pFont && !pFont->IsStandardFont())
- {
- FX_RECT rcBBox;
- pFont->GetFontBBox(rcBBox);
+FX_FLOAT CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont,
+ const CPDF_Rect& rcPlate,
+ int32_t nCharArray) {
+ if (pFont && !pFont->IsStandardFont()) {
+ FX_RECT rcBBox;
+ pFont->GetFontBBox(rcBBox);
- CPDF_Rect rcCell = rcPlate;
- FX_FLOAT xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width();
- FX_FLOAT ydiv = - rcCell.Height() * 1000.0f / rcBBox.Height();
+ CPDF_Rect rcCell = rcPlate;
+ FX_FLOAT xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width();
+ FX_FLOAT ydiv = -rcCell.Height() * 1000.0f / rcBBox.Height();
- return xdiv < ydiv ? xdiv : ydiv;
- }
+ return xdiv < ydiv ? xdiv : ydiv;
+ }
- return 0.0f;
+ return 0.0f;
}
-void CPWL_Edit::SetCharArray(int32_t nCharArray)
-{
- if (HasFlag(PES_CHARARRAY) && nCharArray > 0)
- {
- m_pEdit->SetCharArray(nCharArray);
- m_pEdit->SetTextOverflow(TRUE);
-
- if (HasFlag(PWS_AUTOFONTSIZE))
- {
- if (IFX_Edit_FontMap* pFontMap = GetFontMap())
- {
- FX_FLOAT fFontSize = GetCharArrayAutoFontSize(pFontMap->GetPDFFont(0), GetClientRect(), nCharArray);
- if (fFontSize > 0.0f)
- {
- m_pEdit->SetAutoFontSize(FALSE);
- m_pEdit->SetFontSize(fFontSize);
- }
- }
- }
- }
+void CPWL_Edit::SetCharArray(int32_t nCharArray) {
+ if (HasFlag(PES_CHARARRAY) && nCharArray > 0) {
+ m_pEdit->SetCharArray(nCharArray);
+ m_pEdit->SetTextOverflow(TRUE);
+
+ if (HasFlag(PWS_AUTOFONTSIZE)) {
+ if (IFX_Edit_FontMap* pFontMap = GetFontMap()) {
+ FX_FLOAT fFontSize = GetCharArrayAutoFontSize(
+ pFontMap->GetPDFFont(0), GetClientRect(), nCharArray);
+ if (fFontSize > 0.0f) {
+ m_pEdit->SetAutoFontSize(FALSE);
+ m_pEdit->SetFontSize(fFontSize);
+ }
+ }
+ }
+ }
}
-void CPWL_Edit::SetLimitChar(int32_t nLimitChar)
-{
- m_pEdit->SetLimitChar(nLimitChar);
+void CPWL_Edit::SetLimitChar(int32_t nLimitChar) {
+ m_pEdit->SetLimitChar(nLimitChar);
}
-void CPWL_Edit::ReplaceSel(const FX_WCHAR* csText)
-{
- m_pEdit->Clear();
- m_pEdit->InsertText(csText);
+void CPWL_Edit::ReplaceSel(const FX_WCHAR* csText) {
+ m_pEdit->Clear();
+ m_pEdit->InsertText(csText);
}
-CPDF_Rect CPWL_Edit::GetFocusRect() const
-{
- return CPDF_Rect();
+CPDF_Rect CPWL_Edit::GetFocusRect() const {
+ return CPDF_Rect();
}
-void CPWL_Edit::ShowVScrollBar(FX_BOOL bShow)
-{
- if (CPWL_ScrollBar * pScroll = GetVScrollBar())
- {
- if (bShow)
- {
- if (!pScroll->IsVisible())
- {
- pScroll->SetVisible(TRUE);
- CPDF_Rect rcWindow = GetWindowRect();
- m_rcOldWindow = rcWindow;
- rcWindow.right += PWL_SCROLLBAR_WIDTH;
- Move(rcWindow, TRUE, TRUE);
- }
- }
- else
- {
- if (pScroll->IsVisible())
- {
- pScroll->SetVisible(FALSE);
- Move(m_rcOldWindow, TRUE, TRUE);
- }
- }
- }
+void CPWL_Edit::ShowVScrollBar(FX_BOOL bShow) {
+ if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
+ if (bShow) {
+ if (!pScroll->IsVisible()) {
+ pScroll->SetVisible(TRUE);
+ CPDF_Rect rcWindow = GetWindowRect();
+ m_rcOldWindow = rcWindow;
+ rcWindow.right += PWL_SCROLLBAR_WIDTH;
+ Move(rcWindow, TRUE, TRUE);
+ }
+ } else {
+ if (pScroll->IsVisible()) {
+ pScroll->SetVisible(FALSE);
+ Move(m_rcOldWindow, TRUE, TRUE);
+ }
+ }
+ }
}
-FX_BOOL CPWL_Edit::IsVScrollBarVisible() const
-{
- if (CPWL_ScrollBar * pScroll = GetVScrollBar())
- {
- return pScroll->IsVisible();
- }
+FX_BOOL CPWL_Edit::IsVScrollBarVisible() const {
+ if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
+ return pScroll->IsVisible();
+ }
- return FALSE;
+ return FALSE;
}
-void CPWL_Edit::EnableSpellCheck(FX_BOOL bEnabled)
-{
- if (bEnabled)
- AddFlag(PES_SPELLCHECK);
- else
- RemoveFlag(PES_SPELLCHECK);
+void CPWL_Edit::EnableSpellCheck(FX_BOOL bEnabled) {
+ if (bEnabled)
+ AddFlag(PES_SPELLCHECK);
+ else
+ RemoveFlag(PES_SPELLCHECK);
}
-FX_BOOL CPWL_Edit::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (m_bMouseDown) return TRUE;
-
- if (nChar == FWL_VKEY_Delete)
- {
- if (m_pFillerNotify)
- {
- FX_BOOL bRC = TRUE;
- FX_BOOL bExit = FALSE;
- CFX_WideString strChange;
- CFX_WideString strChangeEx;
-
- int nSelStart = 0;
- int nSelEnd = 0;
- GetSel(nSelStart, nSelEnd);
-
- if (nSelStart == nSelEnd)
- nSelEnd = nSelStart + 1;
- m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), FWL_VKEY_Delete, strChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag);
- if (!bRC) return FALSE;
- if (bExit) return FALSE;
- }
- }
-
- FX_BOOL bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag);
-
- if (nChar == FWL_VKEY_Delete)
- {
- if (m_pFillerNotify)
- {
- FX_BOOL bExit = FALSE;
- m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,nFlag);
- if (bExit) return FALSE;
- }
- }
-
- //In case of implementation swallow the OnKeyDown event.
- if(IsProceedtoOnChar(nChar, nFlag))
- return TRUE;
-
- return bRet;
+FX_BOOL CPWL_Edit::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) {
+ if (m_bMouseDown)
+ return TRUE;
+
+ if (nChar == FWL_VKEY_Delete) {
+ if (m_pFillerNotify) {
+ FX_BOOL bRC = TRUE;
+ FX_BOOL bExit = FALSE;
+ CFX_WideString strChange;
+ CFX_WideString strChangeEx;
+
+ int nSelStart = 0;
+ int nSelEnd = 0;
+ GetSel(nSelStart, nSelEnd);
+
+ if (nSelStart == nSelEnd)
+ nSelEnd = nSelStart + 1;
+ m_pFillerNotify->OnBeforeKeyStroke(
+ TRUE, GetAttachedData(), FWL_VKEY_Delete, strChange, strChangeEx,
+ nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag);
+ if (!bRC)
+ return FALSE;
+ if (bExit)
+ return FALSE;
+ }
+ }
+
+ FX_BOOL bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag);
+
+ if (nChar == FWL_VKEY_Delete) {
+ if (m_pFillerNotify) {
+ FX_BOOL bExit = FALSE;
+ m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit, nFlag);
+ if (bExit)
+ return FALSE;
+ }
+ }
+
+ // In case of implementation swallow the OnKeyDown event.
+ if (IsProceedtoOnChar(nChar, nFlag))
+ return TRUE;
+
+ return bRet;
}
/**
*In case of implementation swallow the OnKeyDown event.
-*If the event is swallowed, implementation may do other unexpected things, which is not the control means to do.
+*If the event is swallowed, implementation may do other unexpected things, which
+*is not the control means to do.
*/
-FX_BOOL CPWL_Edit::IsProceedtoOnChar(FX_WORD nKeyCode, FX_DWORD nFlag)
-{
-
- FX_BOOL bCtrl = IsCTRLpressed(nFlag);
- FX_BOOL bAlt = IsALTpressed(nFlag);
- if(bCtrl && !bAlt)
- {
- //hot keys for edit control.
- switch(nKeyCode)
- {
- case 'C':
- case 'V':
- case 'X':
- case 'A':
- case 'Z':
- return TRUE;
- default:
- break;
- }
- }
- //control characters.
- switch(nKeyCode)
- {
- case FWL_VKEY_Escape:
- case FWL_VKEY_Back:
- case FWL_VKEY_Return:
- case FWL_VKEY_Space:
- return TRUE;
- default:
- break;
- }
- return FALSE;
-
+FX_BOOL CPWL_Edit::IsProceedtoOnChar(FX_WORD nKeyCode, FX_DWORD nFlag) {
+ FX_BOOL bCtrl = IsCTRLpressed(nFlag);
+ FX_BOOL bAlt = IsALTpressed(nFlag);
+ if (bCtrl && !bAlt) {
+ // hot keys for edit control.
+ switch (nKeyCode) {
+ case 'C':
+ case 'V':
+ case 'X':
+ case 'A':
+ case 'Z':
+ return TRUE;
+ default:
+ break;
+ }
+ }
+ // control characters.
+ switch (nKeyCode) {
+ case FWL_VKEY_Escape:
+ case FWL_VKEY_Back:
+ case FWL_VKEY_Return:
+ case FWL_VKEY_Space:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
}
-FX_BOOL CPWL_Edit::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (m_bMouseDown) return TRUE;
-
- FX_BOOL bRC = TRUE;
- FX_BOOL bExit = FALSE;
-
- FX_BOOL bCtrl = IsCTRLpressed(nFlag);
- if (!bCtrl)
- {
- if (m_pFillerNotify)
- {
- CFX_WideString swChange;
- int32_t nKeyCode;
-
- int nSelStart = 0;
- int nSelEnd = 0;
- GetSel(nSelStart, nSelEnd);
-
- switch (nChar)
- {
- case FWL_VKEY_Back:
- nKeyCode = nChar;
- if (nSelStart == nSelEnd)
- nSelStart = nSelEnd - 1;
- break;
- case FWL_VKEY_Return:
- nKeyCode = nChar;
- break;
- default:
- nKeyCode = 0;
- swChange += nChar;
- break;
- }
-
- CFX_WideString strChangeEx;
- m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), nKeyCode, swChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag);
- }
- }
-
- if (!bRC) return TRUE;
- if (bExit) return FALSE;
-
- if (IFX_Edit_FontMap * pFontMap = GetFontMap())
- {
- int32_t nOldCharSet = GetCharSet();
- int32_t nNewCharSet = pFontMap->CharSetFromUnicode(nChar, DEFAULT_CHARSET);
- if(nOldCharSet != nNewCharSet)
- {
- SetCharSet(nNewCharSet);
- }
- }
- FX_BOOL bRet = CPWL_EditCtrl::OnChar(nChar,nFlag);
-
- if (!bCtrl)
- {
- if (m_pFillerNotify)
- {
- m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,nFlag);
- if (bExit) return FALSE;
- }
- }
-
- return bRet;
-}
+FX_BOOL CPWL_Edit::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ if (m_bMouseDown)
+ return TRUE;
+
+ FX_BOOL bRC = TRUE;
+ FX_BOOL bExit = FALSE;
+
+ FX_BOOL bCtrl = IsCTRLpressed(nFlag);
+ if (!bCtrl) {
+ if (m_pFillerNotify) {
+ CFX_WideString swChange;
+ int32_t nKeyCode;
+
+ int nSelStart = 0;
+ int nSelEnd = 0;
+ GetSel(nSelStart, nSelEnd);
+
+ switch (nChar) {
+ case FWL_VKEY_Back:
+ nKeyCode = nChar;
+ if (nSelStart == nSelEnd)
+ nSelStart = nSelEnd - 1;
+ break;
+ case FWL_VKEY_Return:
+ nKeyCode = nChar;
+ break;
+ default:
+ nKeyCode = 0;
+ swChange += nChar;
+ break;
+ }
+
+ CFX_WideString strChangeEx;
+ m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), nKeyCode,
+ swChange, strChangeEx, nSelStart,
+ nSelEnd, TRUE, bRC, bExit, nFlag);
+ }
+ }
+
+ if (!bRC)
+ return TRUE;
+ if (bExit)
+ return FALSE;
+
+ if (IFX_Edit_FontMap* pFontMap = GetFontMap()) {
+ int32_t nOldCharSet = GetCharSet();
+ int32_t nNewCharSet = pFontMap->CharSetFromUnicode(nChar, DEFAULT_CHARSET);
+ if (nOldCharSet != nNewCharSet) {
+ SetCharSet(nNewCharSet);
+ }
+ }
+ FX_BOOL bRet = CPWL_EditCtrl::OnChar(nChar, nFlag);
+
+ if (!bCtrl) {
+ if (m_pFillerNotify) {
+ m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit, nFlag);
+ if (bExit)
+ return FALSE;
+ }
+ }
-FX_BOOL CPWL_Edit::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (HasFlag(PES_MULTILINE))
- {
- CPDF_Point ptScroll = GetScrollPos();
-
- if (zDelta > 0)
- {
- ptScroll.y += GetFontSize();
- }
- else
- {
- ptScroll.y -= GetFontSize();
- }
- SetScrollPos(ptScroll);
-
- return TRUE;
- }
-
- return FALSE;
+ return bRet;
}
-void CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnInsertReturn(place, oldplace);
- }
-}
+FX_BOOL CPWL_Edit::OnMouseWheel(short zDelta,
+ const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ if (HasFlag(PES_MULTILINE)) {
+ CPDF_Point ptScroll = GetScrollPos();
+
+ if (zDelta > 0) {
+ ptScroll.y += GetFontSize();
+ } else {
+ ptScroll.y -= GetFontSize();
+ }
+ SetScrollPos(ptScroll);
+
+ return TRUE;
+ }
-void CPWL_Edit::OnBackSpace(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnBackSpace(place, oldplace);
- }
+ return FALSE;
}
-void CPWL_Edit::OnDelete(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnDelete(place, oldplace);
- }
+void CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnInsertReturn(place, oldplace);
+ }
}
-void CPWL_Edit::OnClear(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnClear(place, oldplace);
- }
+void CPWL_Edit::OnBackSpace(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnBackSpace(place, oldplace);
+ }
}
-void CPWL_Edit::OnInsertWord(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnInsertWord(place, oldplace);
- }
+void CPWL_Edit::OnDelete(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnDelete(place, oldplace);
+ }
}
-void CPWL_Edit::OnSetText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
+void CPWL_Edit::OnClear(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnClear(place, oldplace);
+ }
}
-void CPWL_Edit::OnInsertText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace)
-{
- if (HasFlag(PES_SPELLCHECK))
- {
- m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place)));
- }
-
- if (m_pEditNotify)
- {
- m_pEditNotify->OnInsertText(place, oldplace);
- }
+void CPWL_Edit::OnInsertWord(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnInsertWord(place, oldplace);
+ }
}
-void CPWL_Edit::OnAddUndo(IFX_Edit_UndoItem* pUndoItem)
-{
- if (m_pEditNotify)
- {
- m_pEditNotify->OnAddUndo(this);
- }
+void CPWL_Edit::OnSetText(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {}
+
+void CPWL_Edit::OnInsertText(const CPVT_WordPlace& place,
+ const CPVT_WordPlace& oldplace) {
+ if (HasFlag(PES_SPELLCHECK)) {
+ m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
+ GetLatinWordsRange(place)));
+ }
+
+ if (m_pEditNotify) {
+ m_pEditNotify->OnInsertText(place, oldplace);
+ }
}
-CPVT_WordRange CPWL_Edit::CombineWordRange(const CPVT_WordRange& wr1, const CPVT_WordRange& wr2)
-{
- CPVT_WordRange wrRet;
-
- if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0)
- {
- wrRet.BeginPos = wr1.BeginPos;
- }
- else
- {
- wrRet.BeginPos = wr2.BeginPos;
- }
-
- if (wr1.EndPos.WordCmp(wr2.EndPos) < 0)
- {
- wrRet.EndPos = wr2.EndPos;
- }
- else
- {
- wrRet.EndPos = wr1.EndPos;
- }
-
- return wrRet;
+void CPWL_Edit::OnAddUndo(IFX_Edit_UndoItem* pUndoItem) {
+ if (m_pEditNotify) {
+ m_pEditNotify->OnAddUndo(this);
+ }
}
-CPVT_WordRange CPWL_Edit::GetLatinWordsRange(const CPDF_Point& point) const
-{
- return GetSameWordsRange(m_pEdit->SearchWordPlace(point), TRUE, FALSE);
+CPVT_WordRange CPWL_Edit::CombineWordRange(const CPVT_WordRange& wr1,
+ const CPVT_WordRange& wr2) {
+ CPVT_WordRange wrRet;
+
+ if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) {
+ wrRet.BeginPos = wr1.BeginPos;
+ } else {
+ wrRet.BeginPos = wr2.BeginPos;
+ }
+
+ if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) {
+ wrRet.EndPos = wr2.EndPos;
+ } else {
+ wrRet.EndPos = wr1.EndPos;
+ }
+
+ return wrRet;
}
-CPVT_WordRange CPWL_Edit::GetLatinWordsRange(const CPVT_WordPlace & place) const
-{
- return GetSameWordsRange(place, TRUE, FALSE);
+CPVT_WordRange CPWL_Edit::GetLatinWordsRange(const CPDF_Point& point) const {
+ return GetSameWordsRange(m_pEdit->SearchWordPlace(point), TRUE, FALSE);
}
-CPVT_WordRange CPWL_Edit::GetArabicWordsRange(const CPVT_WordPlace & place) const
-{
- return GetSameWordsRange(place, FALSE, TRUE);
+CPVT_WordRange CPWL_Edit::GetLatinWordsRange(
+ const CPVT_WordPlace& place) const {
+ return GetSameWordsRange(place, TRUE, FALSE);
}
-#define PWL_ISARABICWORD(word) ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC))
-
-CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace & place, FX_BOOL bLatin, FX_BOOL bArabic) const
-{
- CPVT_WordRange range;
-
- if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator())
- {
- CPVT_Word wordinfo;
- CPVT_WordPlace wpStart(place),wpEnd(place);
- pIterator->SetAt(place);
-
- if (bLatin)
- {
- while (pIterator->NextWord())
- {
- if (pIterator->GetWord(wordinfo) && FX_EDIT_ISLATINWORD(wordinfo.Word))
- {
- wpEnd = pIterator->GetAt();
- continue;
- }
- else
- break;
- };
- }
- else if (bArabic)
- {
- while (pIterator->NextWord())
- {
- if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word))
- {
- wpEnd = pIterator->GetAt();
- continue;
- }
- else
- break;
- };
- }
-
- pIterator->SetAt(place);
-
- if (bLatin)
- {
- do
- {
- if (pIterator->GetWord(wordinfo) && FX_EDIT_ISLATINWORD(wordinfo.Word))
- {
- continue;
- }
- else
- {
- wpStart = pIterator->GetAt();
- break;
- }
- }
- while (pIterator->PrevWord());
- }
- else if (bArabic)
- {
- do
- {
- if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word))
- {
- continue;
- }
- else
- {
- wpStart = pIterator->GetAt();
- break;
- }
- }
- while (pIterator->PrevWord());
- }
-
- range.Set(wpStart,wpEnd);
- }
-
- return range;
+CPVT_WordRange CPWL_Edit::GetArabicWordsRange(
+ const CPVT_WordPlace& place) const {
+ return GetSameWordsRange(place, FALSE, TRUE);
}
-void CPWL_Edit::AjustArabicWords(const CPVT_WordRange& wr)
-{
+#define PWL_ISARABICWORD(word) \
+ ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC))
+
+CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace& place,
+ FX_BOOL bLatin,
+ FX_BOOL bArabic) const {
+ CPVT_WordRange range;
+
+ if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) {
+ CPVT_Word wordinfo;
+ CPVT_WordPlace wpStart(place), wpEnd(place);
+ pIterator->SetAt(place);
+
+ if (bLatin) {
+ while (pIterator->NextWord()) {
+ if (pIterator->GetWord(wordinfo) &&
+ FX_EDIT_ISLATINWORD(wordinfo.Word)) {
+ wpEnd = pIterator->GetAt();
+ continue;
+ } else
+ break;
+ };
+ } else if (bArabic) {
+ while (pIterator->NextWord()) {
+ if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word)) {
+ wpEnd = pIterator->GetAt();
+ continue;
+ } else
+ break;
+ };
+ }
+
+ pIterator->SetAt(place);
+
+ if (bLatin) {
+ do {
+ if (pIterator->GetWord(wordinfo) &&
+ FX_EDIT_ISLATINWORD(wordinfo.Word)) {
+ continue;
+ } else {
+ wpStart = pIterator->GetAt();
+ break;
+ }
+ } while (pIterator->PrevWord());
+ } else if (bArabic) {
+ do {
+ if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word)) {
+ continue;
+ } else {
+ wpStart = pIterator->GetAt();
+ break;
+ }
+ } while (pIterator->PrevWord());
+ }
+
+ range.Set(wpStart, wpEnd);
+ }
+
+ return range;
}
-void CPWL_Edit::GeneratePageObjects(CPDF_PageObjects* pPageObjects,
- const CPDF_Point& ptOffset, CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray)
-{
- IFX_Edit::GeneratePageObjects(pPageObjects, m_pEdit, ptOffset, NULL, CPWL_Utils::PWLColorToFXColor(GetTextColor(),GetTransparency()), ObjArray);
+void CPWL_Edit::AjustArabicWords(const CPVT_WordRange& wr) {}
+
+void CPWL_Edit::GeneratePageObjects(
+ CPDF_PageObjects* pPageObjects,
+ const CPDF_Point& ptOffset,
+ CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) {
+ IFX_Edit::GeneratePageObjects(
+ pPageObjects, m_pEdit, ptOffset, NULL,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ ObjArray);
}
void CPWL_Edit::GeneratePageObjects(CPDF_PageObjects* pPageObjects,
- const CPDF_Point& ptOffset)
-{
- CFX_ArrayTemplate<CPDF_TextObject*> ObjArray;
- IFX_Edit::GeneratePageObjects(pPageObjects, m_pEdit, ptOffset, NULL, CPWL_Utils::PWLColorToFXColor(GetTextColor(),GetTransparency()), ObjArray);
+ const CPDF_Point& ptOffset) {
+ CFX_ArrayTemplate<CPDF_TextObject*> ObjArray;
+ IFX_Edit::GeneratePageObjects(
+ pPageObjects, m_pEdit, ptOffset, NULL,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ ObjArray);
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_EditCtrl.cpp b/fpdfsdk/src/pdfwindow/PWL_EditCtrl.cpp
index 0d14587f66..eb6324ee7e 100644
--- a/fpdfsdk/src/pdfwindow/PWL_EditCtrl.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_EditCtrl.cpp
@@ -12,172 +12,146 @@
#include "../../include/pdfwindow/PWL_Caret.h"
#include "../../include/pdfwindow/PWL_FontMap.h"
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
/* ---------------------------- CPWL_EditCtrl ------------------------------ */
-CPWL_EditCtrl::CPWL_EditCtrl() :
- m_pEdit(NULL),
- m_pEditCaret(NULL),
- m_bMouseDown(FALSE),
- m_pEditNotify(NULL),
- m_nCharSet(DEFAULT_CHARSET),
- m_nCodePage(0)
-{
- m_pEdit = IFX_Edit::NewEdit();
- ASSERT(m_pEdit != NULL);
+CPWL_EditCtrl::CPWL_EditCtrl()
+ : m_pEdit(NULL),
+ m_pEditCaret(NULL),
+ m_bMouseDown(FALSE),
+ m_pEditNotify(NULL),
+ m_nCharSet(DEFAULT_CHARSET),
+ m_nCodePage(0) {
+ m_pEdit = IFX_Edit::NewEdit();
+ ASSERT(m_pEdit != NULL);
}
-CPWL_EditCtrl::~CPWL_EditCtrl()
-{
- IFX_Edit::DelEdit(m_pEdit);
+CPWL_EditCtrl::~CPWL_EditCtrl() {
+ IFX_Edit::DelEdit(m_pEdit);
}
-void CPWL_EditCtrl::OnCreate(PWL_CREATEPARAM& cp)
-{
- cp.eCursorType = FXCT_VBEAM;
+void CPWL_EditCtrl::OnCreate(PWL_CREATEPARAM& cp) {
+ cp.eCursorType = FXCT_VBEAM;
}
-void CPWL_EditCtrl::OnCreated()
-{
- SetFontSize(GetCreationParam().fFontSize);
+void CPWL_EditCtrl::OnCreated() {
+ SetFontSize(GetCreationParam().fFontSize);
- m_pEdit->SetFontMap(GetFontMap());
- m_pEdit->SetNotify(this);
- m_pEdit->Initialize();
+ m_pEdit->SetFontMap(GetFontMap());
+ m_pEdit->SetNotify(this);
+ m_pEdit->Initialize();
}
-FX_BOOL CPWL_EditCtrl::IsWndHorV()
-{
- CPDF_Matrix mt = GetWindowMatrix();
- CPDF_Point point1(0,1);
- CPDF_Point point2(1,1);
+FX_BOOL CPWL_EditCtrl::IsWndHorV() {
+ CPDF_Matrix mt = GetWindowMatrix();
+ CPDF_Point point1(0, 1);
+ CPDF_Point point2(1, 1);
- mt.Transform(point1.x, point1.y);
- mt.Transform(point2.x, point2.y);
+ mt.Transform(point1.x, point1.y);
+ mt.Transform(point2.x, point2.y);
- return point2.y == point1.y;
+ return point2.y == point1.y;
}
-void CPWL_EditCtrl::SetCursor()
-{
- if (IsValid())
- {
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- {
- if (IsWndHorV())
- pSH->SetCursor(FXCT_VBEAM);
- else
- pSH->SetCursor(FXCT_HBEAM);
- }
+void CPWL_EditCtrl::SetCursor() {
+ if (IsValid()) {
+ if (IFX_SystemHandler* pSH = GetSystemHandler()) {
+ if (IsWndHorV())
+ pSH->SetCursor(FXCT_VBEAM);
+ else
+ pSH->SetCursor(FXCT_HBEAM);
}
-}
-
-void CPWL_EditCtrl::RePosChildWnd()
-{
- m_pEdit->SetPlateRect(GetClientRect());
-}
-
-void CPWL_EditCtrl::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam);
-
- switch (msg)
- {
- case PNM_SETSCROLLINFO:
- switch (wParam)
- {
- case SBT_VSCROLL:
- if (CPWL_Wnd * pChild = GetVScrollBar())
- {
- pChild->OnNotify(pWnd,PNM_SETSCROLLINFO,wParam,lParam);
- }
- break;
- }
- break;
- case PNM_SETSCROLLPOS:
- switch (wParam)
- {
- case SBT_VSCROLL:
- if (CPWL_Wnd * pChild = GetVScrollBar())
- {
- pChild->OnNotify(pWnd,PNM_SETSCROLLPOS,wParam,lParam);
- }
- break;
- }
- break;
- case PNM_SCROLLWINDOW:
- {
- FX_FLOAT fPos = *(FX_FLOAT*)lParam;
- switch (wParam)
- {
- case SBT_VSCROLL:
- m_pEdit->SetScrollPos(CPDF_Point(m_pEdit->GetScrollPos().x,fPos));
- break;
- }
- }
- break;
- case PNM_SETCARETINFO:
- {
- if (PWL_CARET_INFO * pCaretInfo = (PWL_CARET_INFO *)wParam)
- {
- SetCaret(pCaretInfo->bVisible,
- pCaretInfo->ptHead,
- pCaretInfo->ptFoot);
- }
- }
- break;
- }
-}
-
-void CPWL_EditCtrl::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- if (!IsReadOnly())
- CreateEditCaret(cp);
-}
-
-void CPWL_EditCtrl::CreateEditCaret(const PWL_CREATEPARAM & cp)
-{
- if (!m_pEditCaret)
- {
- m_pEditCaret = new CPWL_Caret;
- m_pEditCaret->SetInvalidRect(GetClientRect());
-
- PWL_CREATEPARAM ecp = cp;
- ecp.pParentWnd = this;
- ecp.dwFlags = PWS_CHILD | PWS_NOREFRESHCLIP;
- ecp.dwBorderWidth = 0;
- ecp.nBorderStyle = PBS_SOLID;
- ecp.rcRectWnd = CPDF_Rect(0,0,0,0);
-
- m_pEditCaret->Create(ecp);
- }
-}
-
-void CPWL_EditCtrl::SetFontSize(FX_FLOAT fFontSize)
-{
- m_pEdit->SetFontSize(fFontSize);
-}
-
-FX_FLOAT CPWL_EditCtrl::GetFontSize() const
-{
- return m_pEdit->GetFontSize();
-}
-
-FX_BOOL CPWL_EditCtrl::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (m_bMouseDown) return TRUE;
+ }
+}
+
+void CPWL_EditCtrl::RePosChildWnd() {
+ m_pEdit->SetPlateRect(GetClientRect());
+}
+
+void CPWL_EditCtrl::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+
+ switch (msg) {
+ case PNM_SETSCROLLINFO:
+ switch (wParam) {
+ case SBT_VSCROLL:
+ if (CPWL_Wnd* pChild = GetVScrollBar()) {
+ pChild->OnNotify(pWnd, PNM_SETSCROLLINFO, wParam, lParam);
+ }
+ break;
+ }
+ break;
+ case PNM_SETSCROLLPOS:
+ switch (wParam) {
+ case SBT_VSCROLL:
+ if (CPWL_Wnd* pChild = GetVScrollBar()) {
+ pChild->OnNotify(pWnd, PNM_SETSCROLLPOS, wParam, lParam);
+ }
+ break;
+ }
+ break;
+ case PNM_SCROLLWINDOW: {
+ FX_FLOAT fPos = *(FX_FLOAT*)lParam;
+ switch (wParam) {
+ case SBT_VSCROLL:
+ m_pEdit->SetScrollPos(CPDF_Point(m_pEdit->GetScrollPos().x, fPos));
+ break;
+ }
+ } break;
+ case PNM_SETCARETINFO: {
+ if (PWL_CARET_INFO* pCaretInfo = (PWL_CARET_INFO*)wParam) {
+ SetCaret(pCaretInfo->bVisible, pCaretInfo->ptHead, pCaretInfo->ptFoot);
+ }
+ } break;
+ }
+}
+
+void CPWL_EditCtrl::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ if (!IsReadOnly())
+ CreateEditCaret(cp);
+}
+
+void CPWL_EditCtrl::CreateEditCaret(const PWL_CREATEPARAM& cp) {
+ if (!m_pEditCaret) {
+ m_pEditCaret = new CPWL_Caret;
+ m_pEditCaret->SetInvalidRect(GetClientRect());
+
+ PWL_CREATEPARAM ecp = cp;
+ ecp.pParentWnd = this;
+ ecp.dwFlags = PWS_CHILD | PWS_NOREFRESHCLIP;
+ ecp.dwBorderWidth = 0;
+ ecp.nBorderStyle = PBS_SOLID;
+ ecp.rcRectWnd = CPDF_Rect(0, 0, 0, 0);
+
+ m_pEditCaret->Create(ecp);
+ }
+}
+
+void CPWL_EditCtrl::SetFontSize(FX_FLOAT fFontSize) {
+ m_pEdit->SetFontSize(fFontSize);
+}
+
+FX_FLOAT CPWL_EditCtrl::GetFontSize() const {
+ return m_pEdit->GetFontSize();
+}
+
+FX_BOOL CPWL_EditCtrl::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) {
+ if (m_bMouseDown)
+ return TRUE;
- FX_BOOL bRet = CPWL_Wnd::OnKeyDown(nChar,nFlag);
+ FX_BOOL bRet = CPWL_Wnd::OnKeyDown(nChar, nFlag);
- //FILTER
- switch (nChar)
- {
+ // FILTER
+ switch (nChar) {
default:
- return FALSE;
+ return FALSE;
case FWL_VKEY_Delete:
case FWL_VKEY_Up:
case FWL_VKEY_Down:
@@ -196,527 +170,460 @@ FX_BOOL CPWL_EditCtrl::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
case 'x':
case 'a':
case 'z':
- break;
- }
+ break;
+ }
- if (nChar == FWL_VKEY_Delete)
- {
- if (m_pEdit->IsSelected())
- nChar = FWL_VKEY_Unknown;
- }
+ if (nChar == FWL_VKEY_Delete) {
+ if (m_pEdit->IsSelected())
+ nChar = FWL_VKEY_Unknown;
+ }
- switch (nChar)
- {
- case FWL_VKEY_Delete:
- Delete();
- return TRUE;
- case FWL_VKEY_Insert:
- if (IsSHIFTpressed(nFlag))
- PasteText();
- return TRUE;
- case FWL_VKEY_Up:
- m_pEdit->OnVK_UP(IsSHIFTpressed(nFlag),FALSE);
- return TRUE;
- case FWL_VKEY_Down:
- m_pEdit->OnVK_DOWN(IsSHIFTpressed(nFlag),FALSE);
- return TRUE;
- case FWL_VKEY_Left:
- m_pEdit->OnVK_LEFT(IsSHIFTpressed(nFlag),FALSE);
- return TRUE;
- case FWL_VKEY_Right:
- m_pEdit->OnVK_RIGHT(IsSHIFTpressed(nFlag),FALSE);
- return TRUE;
- case FWL_VKEY_Home:
- m_pEdit->OnVK_HOME(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- return TRUE;
- case FWL_VKEY_End:
- m_pEdit->OnVK_END(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- return TRUE;
- case FWL_VKEY_Unknown:
- if (!IsSHIFTpressed(nFlag))
- Clear();
- else
- CutText();
- return TRUE;
- default:
- break;
- }
+ switch (nChar) {
+ case FWL_VKEY_Delete:
+ Delete();
+ return TRUE;
+ case FWL_VKEY_Insert:
+ if (IsSHIFTpressed(nFlag))
+ PasteText();
+ return TRUE;
+ case FWL_VKEY_Up:
+ m_pEdit->OnVK_UP(IsSHIFTpressed(nFlag), FALSE);
+ return TRUE;
+ case FWL_VKEY_Down:
+ m_pEdit->OnVK_DOWN(IsSHIFTpressed(nFlag), FALSE);
+ return TRUE;
+ case FWL_VKEY_Left:
+ m_pEdit->OnVK_LEFT(IsSHIFTpressed(nFlag), FALSE);
+ return TRUE;
+ case FWL_VKEY_Right:
+ m_pEdit->OnVK_RIGHT(IsSHIFTpressed(nFlag), FALSE);
+ return TRUE;
+ case FWL_VKEY_Home:
+ m_pEdit->OnVK_HOME(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ return TRUE;
+ case FWL_VKEY_End:
+ m_pEdit->OnVK_END(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ return TRUE;
+ case FWL_VKEY_Unknown:
+ if (!IsSHIFTpressed(nFlag))
+ Clear();
+ else
+ CutText();
+ return TRUE;
+ default:
+ break;
+ }
- return bRet;
+ return bRet;
}
-FX_BOOL CPWL_EditCtrl::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- if (m_bMouseDown) return TRUE;
-
- CPWL_Wnd::OnChar(nChar,nFlag);
+FX_BOOL CPWL_EditCtrl::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ if (m_bMouseDown)
+ return TRUE;
- //FILTER
- switch (nChar)
- {
- case 0x0A:
- case 0x1B:
- return FALSE;
- default:
- break;
- }
+ CPWL_Wnd::OnChar(nChar, nFlag);
- FX_BOOL bCtrl = IsCTRLpressed(nFlag);
- FX_BOOL bAlt = IsALTpressed(nFlag);
- FX_BOOL bShift = IsSHIFTpressed(nFlag);
-
- FX_WORD word = nChar;
-
- if (bCtrl && !bAlt)
- {
- switch (nChar)
- {
- case 'C' - 'A' + 1:
- CopyText();
- return TRUE;
- case 'V' - 'A' + 1:
- PasteText();
- return TRUE;
- case 'X' - 'A' + 1:
- CutText();
- return TRUE;
- case 'A' - 'A' + 1:
- SelectAll();
- return TRUE;
- case 'Z' - 'A' + 1:
- if (bShift)
- Redo();
- else
- Undo();
- return TRUE;
- default:
- if (nChar < 32)
- return FALSE;
- }
+ // FILTER
+ switch (nChar) {
+ case 0x0A:
+ case 0x1B:
+ return FALSE;
+ default:
+ break;
+ }
+
+ FX_BOOL bCtrl = IsCTRLpressed(nFlag);
+ FX_BOOL bAlt = IsALTpressed(nFlag);
+ FX_BOOL bShift = IsSHIFTpressed(nFlag);
+
+ FX_WORD word = nChar;
+
+ if (bCtrl && !bAlt) {
+ switch (nChar) {
+ case 'C' - 'A' + 1:
+ CopyText();
+ return TRUE;
+ case 'V' - 'A' + 1:
+ PasteText();
+ return TRUE;
+ case 'X' - 'A' + 1:
+ CutText();
+ return TRUE;
+ case 'A' - 'A' + 1:
+ SelectAll();
+ return TRUE;
+ case 'Z' - 'A' + 1:
+ if (bShift)
+ Redo();
+ else
+ Undo();
+ return TRUE;
+ default:
+ if (nChar < 32)
+ return FALSE;
}
+ }
- if (IsReadOnly()) return TRUE;
+ if (IsReadOnly())
+ return TRUE;
- if (m_pEdit->IsSelected() && word == FWL_VKEY_Back)
- word = FWL_VKEY_Unknown;
+ if (m_pEdit->IsSelected() && word == FWL_VKEY_Back)
+ word = FWL_VKEY_Unknown;
- Clear();
+ Clear();
- switch (word)
- {
+ switch (word) {
case FWL_VKEY_Back:
- Backspace();
- break;
+ Backspace();
+ break;
case FWL_VKEY_Return:
- InsertReturn();
- break;
+ InsertReturn();
+ break;
case FWL_VKEY_Unknown:
- break;
+ break;
default:
- if (IsINSERTpressed(nFlag))
- Delete();
- InsertWord(word, GetCharSet());
- break;
- }
+ if (IsINSERTpressed(nFlag))
+ Delete();
+ InsertWord(word, GetCharSet());
+ break;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_EditCtrl::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
+FX_BOOL CPWL_EditCtrl::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
- if (ClientHitTest(point))
- {
- if (m_bMouseDown)
- InvalidateRect();
+ if (ClientHitTest(point)) {
+ if (m_bMouseDown)
+ InvalidateRect();
- m_bMouseDown = TRUE;
- SetCapture();
+ m_bMouseDown = TRUE;
+ SetCapture();
- m_pEdit->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
+ m_pEdit->OnMouseDown(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_EditCtrl::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point,nFlag);
+FX_BOOL CPWL_EditCtrl::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
- if (m_bMouseDown)
- {
- //can receive keybord message
- if (ClientHitTest(point) && !IsFocused())
- SetFocus();
+ if (m_bMouseDown) {
+ // can receive keybord message
+ if (ClientHitTest(point) && !IsFocused())
+ SetFocus();
- ReleaseCapture();
- m_bMouseDown = FALSE;
- }
+ ReleaseCapture();
+ m_bMouseDown = FALSE;
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_EditCtrl::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnMouseMove(point,nFlag);
+FX_BOOL CPWL_EditCtrl::OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnMouseMove(point, nFlag);
- if (m_bMouseDown)
- m_pEdit->OnMouseMove(point,FALSE,FALSE);
+ if (m_bMouseDown)
+ m_pEdit->OnMouseMove(point, FALSE, FALSE);
- return TRUE;
+ return TRUE;
}
-CPDF_Rect CPWL_EditCtrl::GetContentRect() const
-{
- return m_pEdit->GetContentRect();
+CPDF_Rect CPWL_EditCtrl::GetContentRect() const {
+ return m_pEdit->GetContentRect();
}
-void CPWL_EditCtrl::SetEditCaret(FX_BOOL bVisible)
-{
- CPDF_Point ptHead(0,0),ptFoot(0,0);
+void CPWL_EditCtrl::SetEditCaret(FX_BOOL bVisible) {
+ CPDF_Point ptHead(0, 0), ptFoot(0, 0);
- if (bVisible)
- {
- GetCaretInfo(ptHead,ptFoot);
- }
+ if (bVisible) {
+ GetCaretInfo(ptHead, ptFoot);
+ }
- CPVT_WordPlace wpTemp = m_pEdit->GetCaretWordPlace();
- IOnSetCaret(bVisible,ptHead,ptFoot,wpTemp);
-}
-
-void CPWL_EditCtrl::GetCaretInfo(CPDF_Point & ptHead, CPDF_Point & ptFoot) const
-{
- if (IFX_Edit_Iterator * pIterator = m_pEdit->GetIterator())
- {
- pIterator->SetAt(m_pEdit->GetCaret());
- CPVT_Word word;
- CPVT_Line line;
- if (pIterator->GetWord(word))
- {
- ptHead.x = word.ptWord.x + word.fWidth;
- ptHead.y = word.ptWord.y + word.fAscent;
- ptFoot.x = word.ptWord.x + word.fWidth;
- ptFoot.y = word.ptWord.y + word.fDescent;
- }
- else if (pIterator->GetLine(line))
- {
- ptHead.x = line.ptLine.x;
- ptHead.y = line.ptLine.y + line.fLineAscent;
- ptFoot.x = line.ptLine.x;
- ptFoot.y = line.ptLine.y + line.fLineDescent;
- }
+ CPVT_WordPlace wpTemp = m_pEdit->GetCaretWordPlace();
+ IOnSetCaret(bVisible, ptHead, ptFoot, wpTemp);
+}
+
+void CPWL_EditCtrl::GetCaretInfo(CPDF_Point& ptHead, CPDF_Point& ptFoot) const {
+ if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) {
+ pIterator->SetAt(m_pEdit->GetCaret());
+ CPVT_Word word;
+ CPVT_Line line;
+ if (pIterator->GetWord(word)) {
+ ptHead.x = word.ptWord.x + word.fWidth;
+ ptHead.y = word.ptWord.y + word.fAscent;
+ ptFoot.x = word.ptWord.x + word.fWidth;
+ ptFoot.y = word.ptWord.y + word.fDescent;
+ } else if (pIterator->GetLine(line)) {
+ ptHead.x = line.ptLine.x;
+ ptHead.y = line.ptLine.y + line.fLineAscent;
+ ptFoot.x = line.ptLine.x;
+ ptFoot.y = line.ptLine.y + line.fLineDescent;
}
+ }
}
-void CPWL_EditCtrl::GetCaretPos(int32_t& x, int32_t& y) const
-{
- CPDF_Point ptHead(0,0), ptFoot(0,0);
+void CPWL_EditCtrl::GetCaretPos(int32_t& x, int32_t& y) const {
+ CPDF_Point ptHead(0, 0), ptFoot(0, 0);
- GetCaretInfo(ptHead,ptFoot);
+ GetCaretInfo(ptHead, ptFoot);
- PWLtoWnd(ptHead, x, y);
+ PWLtoWnd(ptHead, x, y);
}
-void CPWL_EditCtrl::SetCaret(FX_BOOL bVisible, const CPDF_Point & ptHead, const CPDF_Point & ptFoot)
-{
- if (m_pEditCaret)
- {
- if (!IsFocused() || m_pEdit->IsSelected())
- bVisible = FALSE;
+void CPWL_EditCtrl::SetCaret(FX_BOOL bVisible,
+ const CPDF_Point& ptHead,
+ const CPDF_Point& ptFoot) {
+ if (m_pEditCaret) {
+ if (!IsFocused() || m_pEdit->IsSelected())
+ bVisible = FALSE;
- m_pEditCaret->SetCaret(bVisible, ptHead, ptFoot);
- }
+ m_pEditCaret->SetCaret(bVisible, ptHead, ptFoot);
+ }
}
-FX_BOOL CPWL_EditCtrl::IsModified() const
-{
- return m_pEdit->IsModified();
+FX_BOOL CPWL_EditCtrl::IsModified() const {
+ return m_pEdit->IsModified();
}
-CFX_WideString CPWL_EditCtrl::GetText() const
-{
- return m_pEdit->GetText();
+CFX_WideString CPWL_EditCtrl::GetText() const {
+ return m_pEdit->GetText();
}
-void CPWL_EditCtrl::SetSel(int32_t nStartChar,int32_t nEndChar)
-{
- m_pEdit->SetSel(nStartChar, nEndChar);
+void CPWL_EditCtrl::SetSel(int32_t nStartChar, int32_t nEndChar) {
+ m_pEdit->SetSel(nStartChar, nEndChar);
}
-void CPWL_EditCtrl::GetSel(int32_t & nStartChar, int32_t & nEndChar ) const
-{
- m_pEdit->GetSel(nStartChar, nEndChar);
+void CPWL_EditCtrl::GetSel(int32_t& nStartChar, int32_t& nEndChar) const {
+ m_pEdit->GetSel(nStartChar, nEndChar);
}
-void CPWL_EditCtrl::Clear()
-{
- if (!IsReadOnly())
- m_pEdit->Clear();
+void CPWL_EditCtrl::Clear() {
+ if (!IsReadOnly())
+ m_pEdit->Clear();
}
-void CPWL_EditCtrl::SelectAll()
-{
- m_pEdit->SelectAll();
+void CPWL_EditCtrl::SelectAll() {
+ m_pEdit->SelectAll();
}
-void CPWL_EditCtrl::Paint()
-{
- if (m_pEdit)
- m_pEdit->Paint();
+void CPWL_EditCtrl::Paint() {
+ if (m_pEdit)
+ m_pEdit->Paint();
}
-void CPWL_EditCtrl::EnableRefresh(FX_BOOL bRefresh)
-{
- if (m_pEdit)
- m_pEdit->EnableRefresh(bRefresh);
+void CPWL_EditCtrl::EnableRefresh(FX_BOOL bRefresh) {
+ if (m_pEdit)
+ m_pEdit->EnableRefresh(bRefresh);
}
-int32_t CPWL_EditCtrl::GetCaret() const
-{
- if (m_pEdit)
- return m_pEdit->GetCaret();
+int32_t CPWL_EditCtrl::GetCaret() const {
+ if (m_pEdit)
+ return m_pEdit->GetCaret();
- return -1;
+ return -1;
}
-void CPWL_EditCtrl::SetCaret(int32_t nPos)
-{
- if (m_pEdit)
- m_pEdit->SetCaret(nPos);
+void CPWL_EditCtrl::SetCaret(int32_t nPos) {
+ if (m_pEdit)
+ m_pEdit->SetCaret(nPos);
}
-int32_t CPWL_EditCtrl::GetTotalWords() const
-{
- if (m_pEdit)
- return m_pEdit->GetTotalWords();
+int32_t CPWL_EditCtrl::GetTotalWords() const {
+ if (m_pEdit)
+ return m_pEdit->GetTotalWords();
- return 0;
+ return 0;
}
-void CPWL_EditCtrl::SetScrollPos(const CPDF_Point& point)
-{
- if (m_pEdit)
- m_pEdit->SetScrollPos(point);
+void CPWL_EditCtrl::SetScrollPos(const CPDF_Point& point) {
+ if (m_pEdit)
+ m_pEdit->SetScrollPos(point);
}
-CPDF_Point CPWL_EditCtrl::GetScrollPos() const
-{
- if (m_pEdit)
- return m_pEdit->GetScrollPos();
+CPDF_Point CPWL_EditCtrl::GetScrollPos() const {
+ if (m_pEdit)
+ return m_pEdit->GetScrollPos();
- return CPDF_Point(0.0f, 0.0f);
+ return CPDF_Point(0.0f, 0.0f);
}
-CPDF_Font * CPWL_EditCtrl::GetCaretFont() const
-{
- int32_t nFontIndex = 0;
+CPDF_Font* CPWL_EditCtrl::GetCaretFont() const {
+ int32_t nFontIndex = 0;
- if (IFX_Edit_Iterator * pIterator = m_pEdit->GetIterator())
- {
- pIterator->SetAt(m_pEdit->GetCaret());
- CPVT_Word word;
- CPVT_Section section;
- if (pIterator->GetWord(word))
- {
- nFontIndex = word.nFontIndex;
- }
- else if (HasFlag(PES_RICH))
- {
- if (pIterator->GetSection(section))
- {
- nFontIndex = section.WordProps.nFontIndex;
- }
- }
+ if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) {
+ pIterator->SetAt(m_pEdit->GetCaret());
+ CPVT_Word word;
+ CPVT_Section section;
+ if (pIterator->GetWord(word)) {
+ nFontIndex = word.nFontIndex;
+ } else if (HasFlag(PES_RICH)) {
+ if (pIterator->GetSection(section)) {
+ nFontIndex = section.WordProps.nFontIndex;
+ }
}
+ }
- if (IFX_Edit_FontMap* pFontMap = GetFontMap())
- return pFontMap->GetPDFFont(nFontIndex);
-
- return NULL;
-}
-
-FX_FLOAT CPWL_EditCtrl::GetCaretFontSize() const
-{
- FX_FLOAT fFontSize = GetFontSize();
-
- if (IFX_Edit_Iterator * pIterator = m_pEdit->GetIterator())
- {
- pIterator->SetAt(m_pEdit->GetCaret());
- CPVT_Word word;
- CPVT_Section section;
- if (pIterator->GetWord(word))
- {
- fFontSize = word.fFontSize;
- }
- else if (HasFlag(PES_RICH))
- {
- if (pIterator->GetSection(section))
- {
- fFontSize = section.WordProps.fFontSize;
- }
- }
- }
+ if (IFX_Edit_FontMap* pFontMap = GetFontMap())
+ return pFontMap->GetPDFFont(nFontIndex);
- return fFontSize;
+ return NULL;
}
-void CPWL_EditCtrl::SetText(const FX_WCHAR* csText)
-{
- m_pEdit->SetText(csText);
-}
+FX_FLOAT CPWL_EditCtrl::GetCaretFontSize() const {
+ FX_FLOAT fFontSize = GetFontSize();
-void CPWL_EditCtrl::CopyText()
-{
-}
+ if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) {
+ pIterator->SetAt(m_pEdit->GetCaret());
+ CPVT_Word word;
+ CPVT_Section section;
+ if (pIterator->GetWord(word)) {
+ fFontSize = word.fFontSize;
+ } else if (HasFlag(PES_RICH)) {
+ if (pIterator->GetSection(section)) {
+ fFontSize = section.WordProps.fFontSize;
+ }
+ }
+ }
-void CPWL_EditCtrl::PasteText()
-{
+ return fFontSize;
}
-void CPWL_EditCtrl::CutText()
-{
+void CPWL_EditCtrl::SetText(const FX_WCHAR* csText) {
+ m_pEdit->SetText(csText);
}
-void CPWL_EditCtrl::ShowVScrollBar(FX_BOOL bShow)
-{
-}
+void CPWL_EditCtrl::CopyText() {}
+
+void CPWL_EditCtrl::PasteText() {}
-void CPWL_EditCtrl::InsertText(const FX_WCHAR* csText)
-{
- if (!IsReadOnly())
- m_pEdit->InsertText(csText);
+void CPWL_EditCtrl::CutText() {}
+
+void CPWL_EditCtrl::ShowVScrollBar(FX_BOOL bShow) {}
+
+void CPWL_EditCtrl::InsertText(const FX_WCHAR* csText) {
+ if (!IsReadOnly())
+ m_pEdit->InsertText(csText);
}
-void CPWL_EditCtrl::InsertWord(FX_WORD word, int32_t nCharset)
-{
- if (!IsReadOnly())
- m_pEdit->InsertWord(word, nCharset);
+void CPWL_EditCtrl::InsertWord(FX_WORD word, int32_t nCharset) {
+ if (!IsReadOnly())
+ m_pEdit->InsertWord(word, nCharset);
}
-void CPWL_EditCtrl::InsertReturn()
-{
- if (!IsReadOnly())
- m_pEdit->InsertReturn();
+void CPWL_EditCtrl::InsertReturn() {
+ if (!IsReadOnly())
+ m_pEdit->InsertReturn();
}
-void CPWL_EditCtrl::Delete()
-{
- if (!IsReadOnly())
- m_pEdit->Delete();
+void CPWL_EditCtrl::Delete() {
+ if (!IsReadOnly())
+ m_pEdit->Delete();
}
-void CPWL_EditCtrl::Backspace()
-{
- if (!IsReadOnly())
- m_pEdit->Backspace();
+void CPWL_EditCtrl::Backspace() {
+ if (!IsReadOnly())
+ m_pEdit->Backspace();
}
-FX_BOOL CPWL_EditCtrl::CanUndo() const
-{
- return !IsReadOnly() && m_pEdit->CanUndo();
+FX_BOOL CPWL_EditCtrl::CanUndo() const {
+ return !IsReadOnly() && m_pEdit->CanUndo();
}
-FX_BOOL CPWL_EditCtrl::CanRedo() const
-{
- return !IsReadOnly() && m_pEdit->CanRedo();
+FX_BOOL CPWL_EditCtrl::CanRedo() const {
+ return !IsReadOnly() && m_pEdit->CanRedo();
}
-void CPWL_EditCtrl::Redo()
-{
- if (CanRedo())
- m_pEdit->Redo();
+void CPWL_EditCtrl::Redo() {
+ if (CanRedo())
+ m_pEdit->Redo();
}
-void CPWL_EditCtrl::Undo()
-{
- if (CanUndo())
- m_pEdit->Undo();
+void CPWL_EditCtrl::Undo() {
+ if (CanUndo())
+ m_pEdit->Undo();
}
-void CPWL_EditCtrl::IOnSetScrollInfoY(FX_FLOAT fPlateMin, FX_FLOAT fPlateMax,
- FX_FLOAT fContentMin, FX_FLOAT fContentMax,
- FX_FLOAT fSmallStep, FX_FLOAT fBigStep)
-{
- PWL_SCROLL_INFO Info;
+void CPWL_EditCtrl::IOnSetScrollInfoY(FX_FLOAT fPlateMin,
+ FX_FLOAT fPlateMax,
+ FX_FLOAT fContentMin,
+ FX_FLOAT fContentMax,
+ FX_FLOAT fSmallStep,
+ FX_FLOAT fBigStep) {
+ PWL_SCROLL_INFO Info;
- Info.fPlateWidth = fPlateMax - fPlateMin;
- Info.fContentMin = fContentMin;
- Info.fContentMax = fContentMax;
- Info.fSmallStep = fSmallStep;
- Info.fBigStep = fBigStep;
+ Info.fPlateWidth = fPlateMax - fPlateMin;
+ Info.fContentMin = fContentMin;
+ Info.fContentMax = fContentMax;
+ Info.fSmallStep = fSmallStep;
+ Info.fBigStep = fBigStep;
- OnNotify(this,PNM_SETSCROLLINFO,SBT_VSCROLL,(intptr_t)&Info);
+ OnNotify(this, PNM_SETSCROLLINFO, SBT_VSCROLL, (intptr_t)&Info);
- if (IsFloatBigger(Info.fPlateWidth,Info.fContentMax-Info.fContentMin)
- || IsFloatEqual(Info.fPlateWidth,Info.fContentMax-Info.fContentMin))
- {
- ShowVScrollBar(FALSE);
- }
- else
- {
- ShowVScrollBar(TRUE);
- }
+ if (IsFloatBigger(Info.fPlateWidth, Info.fContentMax - Info.fContentMin) ||
+ IsFloatEqual(Info.fPlateWidth, Info.fContentMax - Info.fContentMin)) {
+ ShowVScrollBar(FALSE);
+ } else {
+ ShowVScrollBar(TRUE);
+ }
}
-void CPWL_EditCtrl::IOnSetScrollPosY(FX_FLOAT fy)
-{
- OnNotify(this, PNM_SETSCROLLPOS,SBT_VSCROLL, (intptr_t)&fy);
+void CPWL_EditCtrl::IOnSetScrollPosY(FX_FLOAT fy) {
+ OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&fy);
}
-void CPWL_EditCtrl::IOnSetCaret(FX_BOOL bVisible, const CPDF_Point & ptHead, const CPDF_Point & ptFoot, const CPVT_WordPlace& place)
-{
- PWL_CARET_INFO cInfo;
- cInfo.bVisible = bVisible;
- cInfo.ptHead = ptHead;
- cInfo.ptFoot = ptFoot;
+void CPWL_EditCtrl::IOnSetCaret(FX_BOOL bVisible,
+ const CPDF_Point& ptHead,
+ const CPDF_Point& ptFoot,
+ const CPVT_WordPlace& place) {
+ PWL_CARET_INFO cInfo;
+ cInfo.bVisible = bVisible;
+ cInfo.ptHead = ptHead;
+ cInfo.ptFoot = ptFoot;
- OnNotify(this, PNM_SETCARETINFO, (intptr_t)&cInfo, (intptr_t)NULL);
+ OnNotify(this, PNM_SETCARETINFO, (intptr_t)&cInfo, (intptr_t)NULL);
}
-void CPWL_EditCtrl::IOnCaretChange(const CPVT_SecProps & secProps, const CPVT_WordProps & wordProps)
-{
-}
+void CPWL_EditCtrl::IOnCaretChange(const CPVT_SecProps& secProps,
+ const CPVT_WordProps& wordProps) {}
-void CPWL_EditCtrl::IOnContentChange(const CPDF_Rect& rcContent)
-{
- if (IsValid())
- {
- if (m_pEditNotify)
- {
- m_pEditNotify->OnContentChange(rcContent);
- }
+void CPWL_EditCtrl::IOnContentChange(const CPDF_Rect& rcContent) {
+ if (IsValid()) {
+ if (m_pEditNotify) {
+ m_pEditNotify->OnContentChange(rcContent);
}
+ }
}
-void CPWL_EditCtrl::IOnInvalidateRect(CPDF_Rect * pRect)
-{
- InvalidateRect(pRect);
+void CPWL_EditCtrl::IOnInvalidateRect(CPDF_Rect* pRect) {
+ InvalidateRect(pRect);
}
-int32_t CPWL_EditCtrl::GetCharSet() const
-{
- return m_nCharSet < 0 ? DEFAULT_CHARSET : m_nCharSet;
+int32_t CPWL_EditCtrl::GetCharSet() const {
+ return m_nCharSet < 0 ? DEFAULT_CHARSET : m_nCharSet;
}
-void CPWL_EditCtrl::GetTextRange(const CPDF_Rect& rect, int32_t & nStartChar, int32_t & nEndChar) const
-{
- nStartChar = m_pEdit->WordPlaceToWordIndex(m_pEdit->SearchWordPlace(CPDF_Point(rect.left, rect.top)));
- nEndChar = m_pEdit->WordPlaceToWordIndex(m_pEdit->SearchWordPlace(CPDF_Point(rect.right, rect.bottom)));
+void CPWL_EditCtrl::GetTextRange(const CPDF_Rect& rect,
+ int32_t& nStartChar,
+ int32_t& nEndChar) const {
+ nStartChar = m_pEdit->WordPlaceToWordIndex(
+ m_pEdit->SearchWordPlace(CPDF_Point(rect.left, rect.top)));
+ nEndChar = m_pEdit->WordPlaceToWordIndex(
+ m_pEdit->SearchWordPlace(CPDF_Point(rect.right, rect.bottom)));
}
-CFX_WideString CPWL_EditCtrl::GetText(int32_t & nStartChar, int32_t & nEndChar) const
-{
- CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStartChar);
- CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEndChar);
- return m_pEdit->GetRangeText(CPVT_WordRange(wpStart, wpEnd));
+CFX_WideString CPWL_EditCtrl::GetText(int32_t& nStartChar,
+ int32_t& nEndChar) const {
+ CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStartChar);
+ CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEndChar);
+ return m_pEdit->GetRangeText(CPVT_WordRange(wpStart, wpEnd));
}
-void CPWL_EditCtrl::SetReadyToInput()
-{
- if (m_bMouseDown)
- {
- ReleaseCapture();
- m_bMouseDown = FALSE;
- }
+void CPWL_EditCtrl::SetReadyToInput() {
+ if (m_bMouseDown) {
+ ReleaseCapture();
+ m_bMouseDown = FALSE;
+ }
}
diff --git a/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp b/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
index 50b321dfac..06ddeeb2a2 100644
--- a/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
@@ -8,191 +8,158 @@
#include "../../include/pdfwindow/PWL_Wnd.h"
#include "../../include/pdfwindow/PWL_FontMap.h"
-#define DEFAULT_FONT_NAME "Helvetica"
+#define DEFAULT_FONT_NAME "Helvetica"
/* ------------------------------ CPWL_FontMap ------------------------------ */
-CPWL_FontMap::CPWL_FontMap(IFX_SystemHandler* pSystemHandler) :
- m_pPDFDoc(NULL),
- m_pSystemHandler(pSystemHandler)
-{
- ASSERT(m_pSystemHandler != NULL);
+CPWL_FontMap::CPWL_FontMap(IFX_SystemHandler* pSystemHandler)
+ : m_pPDFDoc(NULL), m_pSystemHandler(pSystemHandler) {
+ ASSERT(m_pSystemHandler != NULL);
}
-CPWL_FontMap::~CPWL_FontMap()
-{
- delete m_pPDFDoc;
- m_pPDFDoc = NULL;
+CPWL_FontMap::~CPWL_FontMap() {
+ delete m_pPDFDoc;
+ m_pPDFDoc = NULL;
- Empty();
+ Empty();
}
-void CPWL_FontMap::SetSystemHandler(IFX_SystemHandler* pSystemHandler)
-{
- m_pSystemHandler = pSystemHandler;
+void CPWL_FontMap::SetSystemHandler(IFX_SystemHandler* pSystemHandler) {
+ m_pSystemHandler = pSystemHandler;
}
-CPDF_Document* CPWL_FontMap::GetDocument()
-{
- if (!m_pPDFDoc)
- {
- if (CPDF_ModuleMgr::Get())
- {
- m_pPDFDoc = new CPDF_Document;
- m_pPDFDoc->CreateNewDoc();
- }
+CPDF_Document* CPWL_FontMap::GetDocument() {
+ if (!m_pPDFDoc) {
+ if (CPDF_ModuleMgr::Get()) {
+ m_pPDFDoc = new CPDF_Document;
+ m_pPDFDoc->CreateNewDoc();
}
+ }
- return m_pPDFDoc;
+ return m_pPDFDoc;
}
-CPDF_Font* CPWL_FontMap::GetPDFFont(int32_t nFontIndex)
-{
- if (nFontIndex >=0 && nFontIndex < m_aData.GetSize())
- {
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex))
- {
- return pData->pFont;
- }
+CPDF_Font* CPWL_FontMap::GetPDFFont(int32_t nFontIndex) {
+ if (nFontIndex >= 0 && nFontIndex < m_aData.GetSize()) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) {
+ return pData->pFont;
}
+ }
- return NULL;
-}
-
-CFX_ByteString CPWL_FontMap::GetPDFFontAlias(int32_t nFontIndex)
-{
- if (nFontIndex >=0 && nFontIndex < m_aData.GetSize())
- {
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex))
- {
- return pData->sFontName;
- }
- }
-
- return "";
+ return NULL;
}
-FX_BOOL CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word)
-{
- if (nFontIndex >=0 && nFontIndex < m_aData.GetSize())
- {
- if (m_aData.GetAt(nFontIndex))
- {
- return CharCodeFromUnicode(nFontIndex, word) >= 0;
- }
+CFX_ByteString CPWL_FontMap::GetPDFFontAlias(int32_t nFontIndex) {
+ if (nFontIndex >= 0 && nFontIndex < m_aData.GetSize()) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) {
+ return pData->sFontName;
}
+ }
- return FALSE;
+ return "";
}
-int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word, int32_t nCharset, int32_t nFontIndex)
-{
- if (nFontIndex > 0)
- {
- if (KnowWord(nFontIndex, word))
- return nFontIndex;
+FX_BOOL CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word) {
+ if (nFontIndex >= 0 && nFontIndex < m_aData.GetSize()) {
+ if (m_aData.GetAt(nFontIndex)) {
+ return CharCodeFromUnicode(nFontIndex, word) >= 0;
}
- else
- {
- if (const CPWL_FontMap_Data* pData = GetFontMapData(0))
- {
- if (nCharset == DEFAULT_CHARSET ||
- pData->nCharset == SYMBOL_CHARSET ||
- nCharset == pData->nCharset)
- {
- if (KnowWord(0, word))
- return 0;
- }
- }
+ }
+
+ return FALSE;
+}
+
+int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word,
+ int32_t nCharset,
+ int32_t nFontIndex) {
+ if (nFontIndex > 0) {
+ if (KnowWord(nFontIndex, word))
+ return nFontIndex;
+ } else {
+ if (const CPWL_FontMap_Data* pData = GetFontMapData(0)) {
+ if (nCharset == DEFAULT_CHARSET || pData->nCharset == SYMBOL_CHARSET ||
+ nCharset == pData->nCharset) {
+ if (KnowWord(0, word))
+ return 0;
+ }
}
-
- int32_t nNewFontIndex = GetFontIndex(GetNativeFontName(nCharset), nCharset, TRUE);
- if (nNewFontIndex >= 0)
- {
- if (KnowWord(nNewFontIndex, word))
- return nNewFontIndex;
- }
- nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, FALSE);
- if (nNewFontIndex >= 0)
- {
- if (KnowWord(nNewFontIndex, word))
- return nNewFontIndex;
- }
- return -1;
-}
-
-int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word)
-{
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex))
- {
- if (pData->pFont)
- {
- if (pData->pFont->IsUnicodeCompatible())
- {
- int nCharCode = pData->pFont->CharCodeFromUnicode(word);
- pData->pFont->GlyphFromCharCode(nCharCode);
- return nCharCode;
- }
- if (word < 0xFF)
- return word;
- }
+ }
+
+ int32_t nNewFontIndex =
+ GetFontIndex(GetNativeFontName(nCharset), nCharset, TRUE);
+ if (nNewFontIndex >= 0) {
+ if (KnowWord(nNewFontIndex, word))
+ return nNewFontIndex;
+ }
+ nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, FALSE);
+ if (nNewFontIndex >= 0) {
+ if (KnowWord(nNewFontIndex, word))
+ return nNewFontIndex;
+ }
+ return -1;
+}
+
+int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) {
+ if (pData->pFont) {
+ if (pData->pFont->IsUnicodeCompatible()) {
+ int nCharCode = pData->pFont->CharCodeFromUnicode(word);
+ pData->pFont->GlyphFromCharCode(nCharCode);
+ return nCharCode;
+ }
+ if (word < 0xFF)
+ return word;
}
- return -1;
+ }
+ return -1;
}
-CFX_ByteString CPWL_FontMap::GetNativeFontName(int32_t nCharset)
-{
- //searching native font is slow, so we must save time
- for (int32_t i=0,sz=m_aNativeFont.GetSize(); i<sz; i++)
- {
- if (CPWL_FontMap_Native* pData = m_aNativeFont.GetAt(i))
- {
- if (pData->nCharset == nCharset)
- return pData->sFontName;
- }
+CFX_ByteString CPWL_FontMap::GetNativeFontName(int32_t nCharset) {
+ // searching native font is slow, so we must save time
+ for (int32_t i = 0, sz = m_aNativeFont.GetSize(); i < sz; i++) {
+ if (CPWL_FontMap_Native* pData = m_aNativeFont.GetAt(i)) {
+ if (pData->nCharset == nCharset)
+ return pData->sFontName;
}
+ }
- CFX_ByteString sNew = GetNativeFont(nCharset);
+ CFX_ByteString sNew = GetNativeFont(nCharset);
- if (!sNew.IsEmpty())
- {
- CPWL_FontMap_Native* pNewData = new CPWL_FontMap_Native;
- pNewData->nCharset = nCharset;
- pNewData->sFontName = sNew;
+ if (!sNew.IsEmpty()) {
+ CPWL_FontMap_Native* pNewData = new CPWL_FontMap_Native;
+ pNewData->nCharset = nCharset;
+ pNewData->sFontName = sNew;
- m_aNativeFont.Add(pNewData);
- }
+ m_aNativeFont.Add(pNewData);
+ }
- return sNew;
+ return sNew;
}
-void CPWL_FontMap::Empty()
-{
- {
- for (int32_t i=0, sz=m_aData.GetSize(); i<sz; i++)
- delete m_aData.GetAt(i);
+void CPWL_FontMap::Empty() {
+ {
+ for (int32_t i = 0, sz = m_aData.GetSize(); i < sz; i++)
+ delete m_aData.GetAt(i);
- m_aData.RemoveAll();
- }
- {
- for (int32_t i=0, sz=m_aNativeFont.GetSize(); i<sz; i++)
- delete m_aNativeFont.GetAt(i);
+ m_aData.RemoveAll();
+ }
+ {
+ for (int32_t i = 0, sz = m_aNativeFont.GetSize(); i < sz; i++)
+ delete m_aNativeFont.GetAt(i);
- m_aNativeFont.RemoveAll();
- }
+ m_aNativeFont.RemoveAll();
+ }
}
-void CPWL_FontMap::Initial(const FX_CHAR* fontname)
-{
- CFX_ByteString sFontName = fontname;
+void CPWL_FontMap::Initial(const FX_CHAR* fontname) {
+ CFX_ByteString sFontName = fontname;
- if (sFontName.IsEmpty())
- sFontName = DEFAULT_FONT_NAME;
+ if (sFontName.IsEmpty())
+ sFontName = DEFAULT_FONT_NAME;
- GetFontIndex(sFontName, ANSI_CHARSET, FALSE);
+ GetFontIndex(sFontName, ANSI_CHARSET, FALSE);
}
-
/*
List of currently supported standard fonts:
Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique
@@ -201,368 +168,350 @@ Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic
Symbol, ZapfDingbats
*/
-const char* g_sDEStandardFontName[] = {"Courier", "Courier-Bold", "Courier-BoldOblique", "Courier-Oblique",
- "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique",
- "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic",
- "Symbol", "ZapfDingbats"};
-
-FX_BOOL CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName)
-{
- for (int32_t i=0; i<14; i++)
- {
- if (sFontName == g_sDEStandardFontName[i])
- return TRUE;
+const char* g_sDEStandardFontName[] = {"Courier",
+ "Courier-Bold",
+ "Courier-BoldOblique",
+ "Courier-Oblique",
+ "Helvetica",
+ "Helvetica-Bold",
+ "Helvetica-BoldOblique",
+ "Helvetica-Oblique",
+ "Times-Roman",
+ "Times-Bold",
+ "Times-Italic",
+ "Times-BoldItalic",
+ "Symbol",
+ "ZapfDingbats"};
+
+FX_BOOL CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) {
+ for (int32_t i = 0; i < 14; i++) {
+ if (sFontName == g_sDEStandardFontName[i])
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName,
+ int32_t nCharset) {
+ for (int32_t i = 0, sz = m_aData.GetSize(); i < sz; i++) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) {
+ if (nCharset == DEFAULT_CHARSET || nCharset == pData->nCharset) {
+ if (sFontName.IsEmpty() || pData->sFontName == sFontName)
+ return i;
+ }
}
+ }
- return FALSE;
+ return -1;
}
-int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName, int32_t nCharset)
-{
- for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++)
- {
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(i))
- {
- if (nCharset == DEFAULT_CHARSET || nCharset == pData->nCharset)
- {
- if (sFontName.IsEmpty() || pData->sFontName == sFontName)
- return i;
- }
- }
- }
+int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName,
+ int32_t nCharset,
+ FX_BOOL bFind) {
+ int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCharset);
+ if (nFontIndex >= 0)
+ return nFontIndex;
- return -1;
-}
+ CFX_ByteString sAlias;
+ CPDF_Font* pFont = NULL;
+ if (bFind)
+ pFont = FindFontSameCharset(sAlias, nCharset);
-int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName, int32_t nCharset, FX_BOOL bFind)
-{
- int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCharset);
- if (nFontIndex >= 0)
- return nFontIndex;
-
- CFX_ByteString sAlias;
- CPDF_Font* pFont = NULL;
- if (bFind)
- pFont = FindFontSameCharset(sAlias, nCharset);
-
- if (!pFont)
- {
- CFX_ByteString sTemp = sFontName;
- pFont = AddFontToDocument(GetDocument(), sTemp, nCharset);
- sAlias = EncodeFontAlias(sTemp, nCharset);
- }
- AddedFont(pFont, sAlias);
- return AddFontData(pFont, sAlias, nCharset);
+ if (!pFont) {
+ CFX_ByteString sTemp = sFontName;
+ pFont = AddFontToDocument(GetDocument(), sTemp, nCharset);
+ sAlias = EncodeFontAlias(sTemp, nCharset);
+ }
+ AddedFont(pFont, sAlias);
+ return AddFontData(pFont, sAlias, nCharset);
}
-int32_t CPWL_FontMap::GetPWLFontIndex(FX_WORD word, int32_t nCharset)
-{
- int32_t nFind = -1;
-
- for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++)
- {
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(i))
- {
- if (pData->nCharset == nCharset)
- {
- nFind = i;
- break;
- }
- }
+int32_t CPWL_FontMap::GetPWLFontIndex(FX_WORD word, int32_t nCharset) {
+ int32_t nFind = -1;
+
+ for (int32_t i = 0, sz = m_aData.GetSize(); i < sz; i++) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) {
+ if (pData->nCharset == nCharset) {
+ nFind = i;
+ break;
+ }
}
+ }
- CPDF_Font* pNewFont = GetPDFFont(nFind);
+ CPDF_Font* pNewFont = GetPDFFont(nFind);
- if (!pNewFont) return -1;
+ if (!pNewFont)
+ return -1;
- /*
- if (CPDF_Font* pFont = GetPDFFont(nFind))
- {
- PWLFont.AddWordToFontDict(pFontDict, word);
- }
- */
+ /*
+ if (CPDF_Font* pFont = GetPDFFont(nFind))
+ {
+ PWLFont.AddWordToFontDict(pFontDict, word);
+ }
+ */
- CFX_ByteString sAlias = EncodeFontAlias("Arial_Chrome", nCharset);
- AddedFont(pNewFont, sAlias);
+ CFX_ByteString sAlias = EncodeFontAlias("Arial_Chrome", nCharset);
+ AddedFont(pNewFont, sAlias);
- return AddFontData(pNewFont, sAlias, nCharset);
+ return AddFontData(pNewFont, sAlias, nCharset);
}
-CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, int32_t nCharset)
-{
- return NULL;
+CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias,
+ int32_t nCharset) {
+ return NULL;
}
-int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont, const CFX_ByteString& sFontAlias, int32_t nCharset)
-{
- CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data;
- pNewData->pFont = pFont;
- pNewData->sFontName = sFontAlias;
- pNewData->nCharset = nCharset;
+int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont,
+ const CFX_ByteString& sFontAlias,
+ int32_t nCharset) {
+ CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data;
+ pNewData->pFont = pFont;
+ pNewData->sFontName = sFontAlias;
+ pNewData->nCharset = nCharset;
- m_aData.Add(pNewData);
+ m_aData.Add(pNewData);
- return m_aData.GetSize() -1;
+ return m_aData.GetSize() - 1;
}
-void CPWL_FontMap::AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias)
-{
-}
+void CPWL_FontMap::AddedFont(CPDF_Font* pFont,
+ const CFX_ByteString& sFontAlias) {}
-CFX_ByteString CPWL_FontMap::GetFontName(int32_t nFontIndex)
-{
- if (nFontIndex >=0 && nFontIndex < m_aData.GetSize())
- {
- if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex))
- {
- return pData->sFontName;
- }
+CFX_ByteString CPWL_FontMap::GetFontName(int32_t nFontIndex) {
+ if (nFontIndex >= 0 && nFontIndex < m_aData.GetSize()) {
+ if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) {
+ return pData->sFontName;
}
+ }
- return "";
+ return "";
}
-CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset)
-{
-
- if (nCharset == DEFAULT_CHARSET)
- nCharset = GetNativeCharset();
+CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset) {
+ if (nCharset == DEFAULT_CHARSET)
+ nCharset = GetNativeCharset();
- CFX_ByteString sFontName = GetDefaultFontByCharset(nCharset);
- if (m_pSystemHandler)
- {
- if (m_pSystemHandler->FindNativeTrueTypeFont(nCharset, sFontName))
- return sFontName;
+ CFX_ByteString sFontName = GetDefaultFontByCharset(nCharset);
+ if (m_pSystemHandler) {
+ if (m_pSystemHandler->FindNativeTrueTypeFont(nCharset, sFontName))
+ return sFontName;
- sFontName = m_pSystemHandler->GetNativeTrueTypeFont(nCharset);
- }
- return sFontName;
+ sFontName = m_pSystemHandler->GetNativeTrueTypeFont(nCharset);
+ }
+ return sFontName;
}
-CPDF_Font* CPWL_FontMap::AddFontToDocument(CPDF_Document* pDoc, CFX_ByteString& sFontName, uint8_t nCharset)
-{
- if (IsStandardFont(sFontName))
- return AddStandardFont(pDoc, sFontName);
-
- return AddSystemFont(pDoc, sFontName, nCharset);
-}
-
-CPDF_Font* CPWL_FontMap::AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sFontName)
-{
- if (!pDoc) return NULL;
-
- CPDF_Font* pFont = NULL;
-
- if (sFontName == "ZapfDingbats")
- pFont = pDoc->AddStandardFont(sFontName, NULL);
- else
- {
- CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
- pFont = pDoc->AddStandardFont(sFontName, &fe);
- }
+CPDF_Font* CPWL_FontMap::AddFontToDocument(CPDF_Document* pDoc,
+ CFX_ByteString& sFontName,
+ uint8_t nCharset) {
+ if (IsStandardFont(sFontName))
+ return AddStandardFont(pDoc, sFontName);
- return pFont;
+ return AddSystemFont(pDoc, sFontName, nCharset);
}
-CPDF_Font* CPWL_FontMap::AddSystemFont(CPDF_Document* pDoc, CFX_ByteString& sFontName, uint8_t nCharset)
-{
- if (!pDoc) return NULL;
-
- if (sFontName.IsEmpty()) sFontName = GetNativeFont(nCharset);
- if (nCharset == DEFAULT_CHARSET) nCharset = GetNativeCharset();
-
- if (m_pSystemHandler)
- return m_pSystemHandler->AddNativeTrueTypeFontToPDF(pDoc, sFontName, nCharset);
-
+CPDF_Font* CPWL_FontMap::AddStandardFont(CPDF_Document* pDoc,
+ CFX_ByteString& sFontName) {
+ if (!pDoc)
return NULL;
-}
-CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName, int32_t nCharset)
-{
- CFX_ByteString sPostfix;
- sPostfix.Format("_%02X", nCharset);
- return EncodeFontAlias(sFontName) + sPostfix;
-}
+ CPDF_Font* pFont = NULL;
-CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName)
-{
- CFX_ByteString sRet = sFontName;
- sRet.Remove(' ');
- return sRet;
-}
+ if (sFontName == "ZapfDingbats")
+ pFont = pDoc->AddStandardFont(sFontName, NULL);
+ else {
+ CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
+ pFont = pDoc->AddStandardFont(sFontName, &fe);
+ }
-int32_t CPWL_FontMap::GetFontMapCount() const
-{
- return m_aData.GetSize();
+ return pFont;
}
-const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const
-{
- if (nIndex >=0 && nIndex < m_aData.GetSize())
- {
- return m_aData.GetAt(nIndex);
- }
-
+CPDF_Font* CPWL_FontMap::AddSystemFont(CPDF_Document* pDoc,
+ CFX_ByteString& sFontName,
+ uint8_t nCharset) {
+ if (!pDoc)
return NULL;
-}
-int32_t CPWL_FontMap::GetNativeCharset()
-{
- uint8_t nCharset = ANSI_CHARSET;
- int32_t iCodePage = FXSYS_GetACP();
- switch (iCodePage)
- {
- case 932://Japan
- nCharset = SHIFTJIS_CHARSET;
- break;
- case 936://Chinese (PRC, Singapore)
- nCharset = GB2312_CHARSET;
- break;
- case 950://Chinese (Taiwan; Hong Kong SAR, PRC)
- nCharset = GB2312_CHARSET;
- break;
- case 1252://Windows 3.1 Latin 1 (US, Western Europe)
- nCharset = ANSI_CHARSET;
- break;
- case 874://Thai
- nCharset = THAI_CHARSET;
- break;
- case 949://Korean
- nCharset = HANGUL_CHARSET;
- break;
- case 1200://Unicode (BMP of ISO 10646)
- nCharset = ANSI_CHARSET;
- break;
- case 1250://Windows 3.1 Eastern European
- nCharset = EASTEUROPE_CHARSET;
- break;
- case 1251://Windows 3.1 Cyrillic
- nCharset = RUSSIAN_CHARSET;
- break;
- case 1253://Windows 3.1 Greek
- nCharset = GREEK_CHARSET;
- break;
- case 1254://Windows 3.1 Turkish
- nCharset = TURKISH_CHARSET;
- break;
- case 1255://Hebrew
- nCharset = HEBREW_CHARSET;
- break;
- case 1256://Arabic
- nCharset = ARABIC_CHARSET;
- break;
- case 1257://Baltic
- nCharset = BALTIC_CHARSET;
- break;
- case 1258://Vietnamese
- nCharset = VIETNAMESE_CHARSET;
- break;
- case 1361://Korean(Johab)
- nCharset = JOHAB_CHARSET;
- break;
- }
- return nCharset;
+ if (sFontName.IsEmpty())
+ sFontName = GetNativeFont(nCharset);
+ if (nCharset == DEFAULT_CHARSET)
+ nCharset = GetNativeCharset();
+
+ if (m_pSystemHandler)
+ return m_pSystemHandler->AddNativeTrueTypeFontToPDF(pDoc, sFontName,
+ nCharset);
+
+ return NULL;
+}
+
+CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName,
+ int32_t nCharset) {
+ CFX_ByteString sPostfix;
+ sPostfix.Format("_%02X", nCharset);
+ return EncodeFontAlias(sFontName) + sPostfix;
+}
+
+CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName) {
+ CFX_ByteString sRet = sFontName;
+ sRet.Remove(' ');
+ return sRet;
+}
+
+int32_t CPWL_FontMap::GetFontMapCount() const {
+ return m_aData.GetSize();
+}
+
+const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const {
+ if (nIndex >= 0 && nIndex < m_aData.GetSize()) {
+ return m_aData.GetAt(nIndex);
+ }
+
+ return NULL;
+}
+
+int32_t CPWL_FontMap::GetNativeCharset() {
+ uint8_t nCharset = ANSI_CHARSET;
+ int32_t iCodePage = FXSYS_GetACP();
+ switch (iCodePage) {
+ case 932: // Japan
+ nCharset = SHIFTJIS_CHARSET;
+ break;
+ case 936: // Chinese (PRC, Singapore)
+ nCharset = GB2312_CHARSET;
+ break;
+ case 950: // Chinese (Taiwan; Hong Kong SAR, PRC)
+ nCharset = GB2312_CHARSET;
+ break;
+ case 1252: // Windows 3.1 Latin 1 (US, Western Europe)
+ nCharset = ANSI_CHARSET;
+ break;
+ case 874: // Thai
+ nCharset = THAI_CHARSET;
+ break;
+ case 949: // Korean
+ nCharset = HANGUL_CHARSET;
+ break;
+ case 1200: // Unicode (BMP of ISO 10646)
+ nCharset = ANSI_CHARSET;
+ break;
+ case 1250: // Windows 3.1 Eastern European
+ nCharset = EASTEUROPE_CHARSET;
+ break;
+ case 1251: // Windows 3.1 Cyrillic
+ nCharset = RUSSIAN_CHARSET;
+ break;
+ case 1253: // Windows 3.1 Greek
+ nCharset = GREEK_CHARSET;
+ break;
+ case 1254: // Windows 3.1 Turkish
+ nCharset = TURKISH_CHARSET;
+ break;
+ case 1255: // Hebrew
+ nCharset = HEBREW_CHARSET;
+ break;
+ case 1256: // Arabic
+ nCharset = ARABIC_CHARSET;
+ break;
+ case 1257: // Baltic
+ nCharset = BALTIC_CHARSET;
+ break;
+ case 1258: // Vietnamese
+ nCharset = VIETNAMESE_CHARSET;
+ break;
+ case 1361: // Korean(Johab)
+ nCharset = JOHAB_CHARSET;
+ break;
+ }
+ return nCharset;
}
const CPWL_FontMap::CharsetFontMap CPWL_FontMap::defaultTTFMap[] = {
- { ANSI_CHARSET, "Helvetica" },
- { GB2312_CHARSET, "SimSun" },
- { CHINESEBIG5_CHARSET, "MingLiU" },
- { SHIFTJIS_CHARSET, "MS Gothic" },
- { HANGUL_CHARSET, "Batang" },
- { RUSSIAN_CHARSET, "Arial" },
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
- { EASTEUROPE_CHARSET, "Arial" },
+ {ANSI_CHARSET, "Helvetica"}, {GB2312_CHARSET, "SimSun"},
+ {CHINESEBIG5_CHARSET, "MingLiU"}, {SHIFTJIS_CHARSET, "MS Gothic"},
+ {HANGUL_CHARSET, "Batang"}, {RUSSIAN_CHARSET, "Arial"},
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \
+ _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ {EASTEUROPE_CHARSET, "Arial"},
#else
- { EASTEUROPE_CHARSET, "Tahoma" },
+ {EASTEUROPE_CHARSET, "Tahoma"},
#endif
- { ARABIC_CHARSET, "Arial" },
- { -1, NULL }
-};
-
-CFX_ByteString CPWL_FontMap::GetDefaultFontByCharset(int32_t nCharset)
-{
- int i = 0;
- while (defaultTTFMap[i].charset != -1) {
- if (nCharset == defaultTTFMap[i].charset)
- return defaultTTFMap[i].fontname;
- ++i;
- }
- return "";
-}
+ {ARABIC_CHARSET, "Arial"}, {-1, NULL}};
+
+CFX_ByteString CPWL_FontMap::GetDefaultFontByCharset(int32_t nCharset) {
+ int i = 0;
+ while (defaultTTFMap[i].charset != -1) {
+ if (nCharset == defaultTTFMap[i].charset)
+ return defaultTTFMap[i].fontname;
+ ++i;
+ }
+ return "";
+}
+
+int32_t CPWL_FontMap::CharSetFromUnicode(FX_WORD word, int32_t nOldCharset) {
+ if (m_pSystemHandler && (-1 != m_pSystemHandler->GetCharSet()))
+ return m_pSystemHandler->GetCharSet();
+ // to avoid CJK Font to show ASCII
+ if (word < 0x7F)
+ return ANSI_CHARSET;
+ // follow the old charset
+ if (nOldCharset != DEFAULT_CHARSET)
+ return nOldCharset;
-int32_t CPWL_FontMap::CharSetFromUnicode(FX_WORD word, int32_t nOldCharset)
-{
- if(m_pSystemHandler && (-1 != m_pSystemHandler->GetCharSet()))
- return m_pSystemHandler->GetCharSet();
- //to avoid CJK Font to show ASCII
- if (word < 0x7F) return ANSI_CHARSET;
- //follow the old charset
- if (nOldCharset != DEFAULT_CHARSET) return nOldCharset;
-
- //find new charset
- if ((word >= 0x4E00 && word <= 0x9FA5) ||
- (word >= 0xE7C7 && word <= 0xE7F3) ||
- (word >= 0x3000 && word <= 0x303F) ||
- (word >= 0x2000 && word <= 0x206F))
- {
- return GB2312_CHARSET;
- }
+ // find new charset
+ if ((word >= 0x4E00 && word <= 0x9FA5) ||
+ (word >= 0xE7C7 && word <= 0xE7F3) ||
+ (word >= 0x3000 && word <= 0x303F) ||
+ (word >= 0x2000 && word <= 0x206F)) {
+ return GB2312_CHARSET;
+ }
- if (((word >= 0x3040) && (word <= 0x309F)) ||
- ((word >= 0x30A0) && (word <= 0x30FF)) ||
- ((word >= 0x31F0) && (word <= 0x31FF)) ||
- ((word >= 0xFF00) && (word <= 0xFFEF)) )
- {
- return SHIFTJIS_CHARSET;
- }
+ if (((word >= 0x3040) && (word <= 0x309F)) ||
+ ((word >= 0x30A0) && (word <= 0x30FF)) ||
+ ((word >= 0x31F0) && (word <= 0x31FF)) ||
+ ((word >= 0xFF00) && (word <= 0xFFEF))) {
+ return SHIFTJIS_CHARSET;
+ }
- if (((word >= 0xAC00) && (word <= 0xD7AF)) ||
- ((word >= 0x1100) && (word <= 0x11FF)) ||
- ((word >= 0x3130) && (word <= 0x318F)))
- {
- return HANGUL_CHARSET;
- }
+ if (((word >= 0xAC00) && (word <= 0xD7AF)) ||
+ ((word >= 0x1100) && (word <= 0x11FF)) ||
+ ((word >= 0x3130) && (word <= 0x318F))) {
+ return HANGUL_CHARSET;
+ }
- if (word >= 0x0E00 && word <= 0x0E7F)
- return THAI_CHARSET;
+ if (word >= 0x0E00 && word <= 0x0E7F)
+ return THAI_CHARSET;
- if ((word >= 0x0370 && word <= 0x03FF) ||
- (word >= 0x1F00 && word <= 0x1FFF))
- return GREEK_CHARSET;
+ if ((word >= 0x0370 && word <= 0x03FF) || (word >= 0x1F00 && word <= 0x1FFF))
+ return GREEK_CHARSET;
- if ((word >= 0x0600 && word <= 0x06FF) ||
- (word >= 0xFB50 && word <= 0xFEFC))
- return ARABIC_CHARSET;
+ if ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC))
+ return ARABIC_CHARSET;
- if (word >= 0x0590 && word <= 0x05FF)
- return HEBREW_CHARSET;
+ if (word >= 0x0590 && word <= 0x05FF)
+ return HEBREW_CHARSET;
- if (word >= 0x0400 && word <= 0x04FF)
- return RUSSIAN_CHARSET;
+ if (word >= 0x0400 && word <= 0x04FF)
+ return RUSSIAN_CHARSET;
- if (word >= 0x0100 && word <= 0x024F)
- return EASTEUROPE_CHARSET;
+ if (word >= 0x0100 && word <= 0x024F)
+ return EASTEUROPE_CHARSET;
- if (word >= 0x1E00 && word <= 0x1EFF)
- return VIETNAMESE_CHARSET;
+ if (word >= 0x1E00 && word <= 0x1EFF)
+ return VIETNAMESE_CHARSET;
- return ANSI_CHARSET;
+ return ANSI_CHARSET;
}
/* ------------------------ CPWL_DocFontMap ------------------------ */
-CPWL_DocFontMap::CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, CPDF_Document* pAttachedDoc)
- : CPWL_FontMap(pSystemHandler),
- m_pAttachedDoc(pAttachedDoc)
-{
-}
+CPWL_DocFontMap::CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler,
+ CPDF_Document* pAttachedDoc)
+ : CPWL_FontMap(pSystemHandler), m_pAttachedDoc(pAttachedDoc) {}
-CPWL_DocFontMap::~CPWL_DocFontMap()
-{
-}
+CPWL_DocFontMap::~CPWL_DocFontMap() {}
-CPDF_Document* CPWL_DocFontMap::GetDocument()
-{
- return m_pAttachedDoc;
+CPDF_Document* CPWL_DocFontMap::GetDocument() {
+ return m_pAttachedDoc;
}
diff --git a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
index 71174dfb0a..29e0aa86f5 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Icon.cpp
@@ -9,254 +9,222 @@
#include "../../include/pdfwindow/PWL_Icon.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-/* ------------------------------- CPWL_Image ---------------------------------- */
+/* ------------------------------- CPWL_Image ----------------------------------
+ */
-CPWL_Image::CPWL_Image() : m_pPDFStream(NULL)
-{
-}
+CPWL_Image::CPWL_Image() : m_pPDFStream(NULL) {}
-CPWL_Image::~CPWL_Image()
-{
-}
+CPWL_Image::~CPWL_Image() {}
-CFX_ByteString CPWL_Image::GetImageAppStream()
-{
- CFX_ByteTextBuf sAppStream;
+CFX_ByteString CPWL_Image::GetImageAppStream() {
+ CFX_ByteTextBuf sAppStream;
- CFX_ByteString sAlias = GetImageAlias();
- CPDF_Rect rcPlate = GetClientRect();
- CPDF_Matrix mt;
- mt.SetReverse(GetImageMatrix());
+ CFX_ByteString sAlias = GetImageAlias();
+ CPDF_Rect rcPlate = GetClientRect();
+ CPDF_Matrix mt;
+ mt.SetReverse(GetImageMatrix());
- FX_FLOAT fHScale = 1.0f;
- FX_FLOAT fVScale = 1.0f;
- GetScale(fHScale,fVScale);
+ FX_FLOAT fHScale = 1.0f;
+ FX_FLOAT fVScale = 1.0f;
+ GetScale(fHScale, fVScale);
- FX_FLOAT fx = 0.0f;
- FX_FLOAT fy = 0.0f;
- GetImageOffset(fx,fy);
+ FX_FLOAT fx = 0.0f;
+ FX_FLOAT fy = 0.0f;
+ GetImageOffset(fx, fy);
- if (m_pPDFStream && sAlias.GetLength()>0)
- {
- sAppStream << "q\n";
- sAppStream << rcPlate.left << " " << rcPlate.bottom << " "
- << rcPlate.right - rcPlate.left << " " << rcPlate.top - rcPlate.bottom << " re W n\n";
+ if (m_pPDFStream && sAlias.GetLength() > 0) {
+ sAppStream << "q\n";
+ sAppStream << rcPlate.left << " " << rcPlate.bottom << " "
+ << rcPlate.right - rcPlate.left << " "
+ << rcPlate.top - rcPlate.bottom << " re W n\n";
- sAppStream << fHScale << " 0 0 " << fVScale << " " << rcPlate.left + fx << " " << rcPlate.bottom + fy << " cm\n";
- sAppStream << mt.GetA() << " " << mt.GetB() << " " << mt.GetC() << " " << mt.GetD() << " " << mt.GetE() << " " << mt.GetF() << " cm\n";
+ sAppStream << fHScale << " 0 0 " << fVScale << " " << rcPlate.left + fx
+ << " " << rcPlate.bottom + fy << " cm\n";
+ sAppStream << mt.GetA() << " " << mt.GetB() << " " << mt.GetC() << " "
+ << mt.GetD() << " " << mt.GetE() << " " << mt.GetF() << " cm\n";
- sAppStream << "0 g 0 G 1 w /" << sAlias << " Do\n" << "Q\n";
- }
+ sAppStream << "0 g 0 G 1 w /" << sAlias << " Do\n"
+ << "Q\n";
+ }
- return sAppStream.GetByteString();
+ return sAppStream.GetByteString();
}
-void CPWL_Image::SetPDFStream(CPDF_Stream * pStream)
-{
- m_pPDFStream = pStream;
+void CPWL_Image::SetPDFStream(CPDF_Stream* pStream) {
+ m_pPDFStream = pStream;
}
-CPDF_Stream * CPWL_Image::GetPDFStream()
-{
- return m_pPDFStream;
+CPDF_Stream* CPWL_Image::GetPDFStream() {
+ return m_pPDFStream;
}
-void CPWL_Image::GetImageSize(FX_FLOAT & fWidth,FX_FLOAT & fHeight)
-{
- fWidth = 0.0f;
- fHeight = 0.0f;
-
- if (m_pPDFStream)
- {
- if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
- {
- CPDF_Rect rect = pDict->GetRect("BBox");
-
- fWidth = rect.right - rect.left;
- fHeight = rect.top - rect.bottom;
- }
- }
-}
+void CPWL_Image::GetImageSize(FX_FLOAT& fWidth, FX_FLOAT& fHeight) {
+ fWidth = 0.0f;
+ fHeight = 0.0f;
-CPDF_Matrix CPWL_Image::GetImageMatrix()
-{
- if (m_pPDFStream)
- {
- if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
- {
- return pDict->GetMatrix("Matrix");
- }
- }
-
- return CPDF_Matrix();
-}
+ if (m_pPDFStream) {
+ if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
+ CPDF_Rect rect = pDict->GetRect("BBox");
-CFX_ByteString CPWL_Image::GetImageAlias()
-{
- if (m_sImageAlias.IsEmpty())
- {
- if (m_pPDFStream)
- {
- if (CPDF_Dictionary * pDict = m_pPDFStream->GetDict())
- {
- return pDict->GetString("Name");
- }
- }
- }
- else
- return m_sImageAlias;
-
- return CFX_ByteString();
+ fWidth = rect.right - rect.left;
+ fHeight = rect.top - rect.bottom;
+ }
+ }
}
-void CPWL_Image::SetImageAlias(const FX_CHAR* sImageAlias)
-{
- m_sImageAlias = sImageAlias;
-}
+CPDF_Matrix CPWL_Image::GetImageMatrix() {
+ if (m_pPDFStream) {
+ if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
+ return pDict->GetMatrix("Matrix");
+ }
+ }
-void CPWL_Image::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale)
-{
- fHScale = 1.0f;
- fVScale = 1.0f;
+ return CPDF_Matrix();
}
+CFX_ByteString CPWL_Image::GetImageAlias() {
+ if (m_sImageAlias.IsEmpty()) {
+ if (m_pPDFStream) {
+ if (CPDF_Dictionary* pDict = m_pPDFStream->GetDict()) {
+ return pDict->GetString("Name");
+ }
+ }
+ } else
+ return m_sImageAlias;
-void CPWL_Image::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y)
-{
- x = 0.0f;
- y = 0.0f;
+ return CFX_ByteString();
}
-/* ------------------------------- CPWL_Icon ---------------------------------- */
+void CPWL_Image::SetImageAlias(const FX_CHAR* sImageAlias) {
+ m_sImageAlias = sImageAlias;
+}
-CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL)
-{
+void CPWL_Image::GetScale(FX_FLOAT& fHScale, FX_FLOAT& fVScale) {
+ fHScale = 1.0f;
+ fVScale = 1.0f;
}
-CPWL_Icon::~CPWL_Icon()
-{
+void CPWL_Image::GetImageOffset(FX_FLOAT& x, FX_FLOAT& y) {
+ x = 0.0f;
+ y = 0.0f;
}
-int32_t CPWL_Icon::GetScaleMethod()
-{
- if (m_pIconFit)
- return m_pIconFit->GetScaleMethod();
+/* ------------------------------- CPWL_Icon ----------------------------------
+ */
- return 0;
-}
+CPWL_Icon::CPWL_Icon() : m_pIconFit(NULL) {}
-FX_BOOL CPWL_Icon::IsProportionalScale()
-{
- if (m_pIconFit)
- return m_pIconFit->IsProportionalScale();
+CPWL_Icon::~CPWL_Icon() {}
- return FALSE;
-}
+int32_t CPWL_Icon::GetScaleMethod() {
+ if (m_pIconFit)
+ return m_pIconFit->GetScaleMethod();
-void CPWL_Icon::GetIconPosition(FX_FLOAT & fLeft, FX_FLOAT & fBottom)
-{
- if (m_pIconFit)
- {
- //m_pIconFit->GetIconPosition(fLeft,fBottom);
- fLeft = 0.0f;
- fBottom = 0.0f;
- CPDF_Array* pA = m_pIconFit->m_pDict ? m_pIconFit->m_pDict->GetArray("A") : NULL;
- if (pA != NULL)
- {
- FX_DWORD dwCount = pA->GetCount();
- if (dwCount > 0) fLeft = pA->GetNumber(0);
- if (dwCount > 1) fBottom = pA->GetNumber(1);
- }
- }
- else
- {
- fLeft = 0.0f;
- fBottom = 0.0f;
- }
+ return 0;
}
-FX_BOOL CPWL_Icon::GetFittingBounds()
-{
- if (m_pIconFit)
- return m_pIconFit->GetFittingBounds();
+FX_BOOL CPWL_Icon::IsProportionalScale() {
+ if (m_pIconFit)
+ return m_pIconFit->IsProportionalScale();
- return FALSE;
+ return FALSE;
}
-void CPWL_Icon::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale)
-{
- fHScale = 1.0f;
- fVScale = 1.0f;
-
- if (m_pPDFStream)
- {
- FX_FLOAT fImageWidth,fImageHeight;
- FX_FLOAT fPlateWidth,fPlateHeight;
-
- CPDF_Rect rcPlate = GetClientRect();
- fPlateWidth = rcPlate.right - rcPlate.left;
- fPlateHeight = rcPlate.top - rcPlate.bottom;
-
- GetImageSize(fImageWidth,fImageHeight);
-
- int32_t nScaleMethod = GetScaleMethod();
-
- switch (nScaleMethod)
- {
- default:
- case 0:
- fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
- fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
- break;
- case 1:
- if (fPlateWidth < fImageWidth)
- fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
- if (fPlateHeight < fImageHeight)
- fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
- break;
- case 2:
- if (fPlateWidth > fImageWidth)
- fHScale = fPlateWidth / PWL_MAX(fImageWidth,1.0f);
- if (fPlateHeight > fImageHeight)
- fVScale = fPlateHeight / PWL_MAX(fImageHeight,1.0f);
- break;
- case 3:
- break;
- }
-
- FX_FLOAT fMinScale;
- if (IsProportionalScale())
- {
- fMinScale = PWL_MIN(fHScale,fVScale);
- fHScale = fMinScale;
- fVScale = fMinScale;
- }
- }
+void CPWL_Icon::GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom) {
+ if (m_pIconFit) {
+ // m_pIconFit->GetIconPosition(fLeft,fBottom);
+ fLeft = 0.0f;
+ fBottom = 0.0f;
+ CPDF_Array* pA =
+ m_pIconFit->m_pDict ? m_pIconFit->m_pDict->GetArray("A") : NULL;
+ if (pA != NULL) {
+ FX_DWORD dwCount = pA->GetCount();
+ if (dwCount > 0)
+ fLeft = pA->GetNumber(0);
+ if (dwCount > 1)
+ fBottom = pA->GetNumber(1);
+ }
+ } else {
+ fLeft = 0.0f;
+ fBottom = 0.0f;
+ }
}
-void CPWL_Icon::GetImageOffset(FX_FLOAT & x,FX_FLOAT & y)
-{
- FX_FLOAT fLeft,fBottom;
+FX_BOOL CPWL_Icon::GetFittingBounds() {
+ if (m_pIconFit)
+ return m_pIconFit->GetFittingBounds();
- GetIconPosition(fLeft, fBottom);
- x = 0.0f;
- y = 0.0f;
+ return FALSE;
+}
+
+void CPWL_Icon::GetScale(FX_FLOAT& fHScale, FX_FLOAT& fVScale) {
+ fHScale = 1.0f;
+ fVScale = 1.0f;
- FX_FLOAT fImageWidth,fImageHeight;
- GetImageSize(fImageWidth,fImageHeight);
+ if (m_pPDFStream) {
+ FX_FLOAT fImageWidth, fImageHeight;
+ FX_FLOAT fPlateWidth, fPlateHeight;
- FX_FLOAT fHScale,fVScale;
- GetScale(fHScale,fVScale);
+ CPDF_Rect rcPlate = GetClientRect();
+ fPlateWidth = rcPlate.right - rcPlate.left;
+ fPlateHeight = rcPlate.top - rcPlate.bottom;
- FX_FLOAT fImageFactWidth = fImageWidth * fHScale;
- FX_FLOAT fImageFactHeight = fImageHeight * fVScale;
+ GetImageSize(fImageWidth, fImageHeight);
- FX_FLOAT fPlateWidth,fPlateHeight;
- CPDF_Rect rcPlate = GetClientRect();
- fPlateWidth = rcPlate.right - rcPlate.left;
- fPlateHeight = rcPlate.top - rcPlate.bottom;
+ int32_t nScaleMethod = GetScaleMethod();
- x = (fPlateWidth - fImageFactWidth) * fLeft;
- y = (fPlateHeight - fImageFactHeight) * fBottom;
+ switch (nScaleMethod) {
+ default:
+ case 0:
+ fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
+ fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
+ break;
+ case 1:
+ if (fPlateWidth < fImageWidth)
+ fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
+ if (fPlateHeight < fImageHeight)
+ fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
+ break;
+ case 2:
+ if (fPlateWidth > fImageWidth)
+ fHScale = fPlateWidth / PWL_MAX(fImageWidth, 1.0f);
+ if (fPlateHeight > fImageHeight)
+ fVScale = fPlateHeight / PWL_MAX(fImageHeight, 1.0f);
+ break;
+ case 3:
+ break;
+ }
+
+ FX_FLOAT fMinScale;
+ if (IsProportionalScale()) {
+ fMinScale = PWL_MIN(fHScale, fVScale);
+ fHScale = fMinScale;
+ fVScale = fMinScale;
+ }
+ }
}
+void CPWL_Icon::GetImageOffset(FX_FLOAT& x, FX_FLOAT& y) {
+ FX_FLOAT fLeft, fBottom;
+
+ GetIconPosition(fLeft, fBottom);
+ x = 0.0f;
+ y = 0.0f;
+
+ FX_FLOAT fImageWidth, fImageHeight;
+ GetImageSize(fImageWidth, fImageHeight);
+
+ FX_FLOAT fHScale, fVScale;
+ GetScale(fHScale, fVScale);
+
+ FX_FLOAT fImageFactWidth = fImageWidth * fHScale;
+ FX_FLOAT fImageFactHeight = fImageHeight * fVScale;
+
+ FX_FLOAT fPlateWidth, fPlateHeight;
+ CPDF_Rect rcPlate = GetClientRect();
+ fPlateWidth = rcPlate.right - rcPlate.left;
+ fPlateHeight = rcPlate.top - rcPlate.bottom;
+
+ x = (fPlateWidth - fImageFactWidth) * fLeft;
+ y = (fPlateHeight - fImageFactHeight) * fBottom;
+}
diff --git a/fpdfsdk/src/pdfwindow/PWL_IconList.cpp b/fpdfsdk/src/pdfwindow/PWL_IconList.cpp
index 157eba633d..24d2dad5fa 100644
--- a/fpdfsdk/src/pdfwindow/PWL_IconList.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_IconList.cpp
@@ -12,581 +12,494 @@
#include "../../include/pdfwindow/PWL_ScrollBar.h"
#include "../../include/pdfwindow/PWL_Label.h"
-#define PWL_IconList_ITEM_ICON_LEFTMARGIN 10.0f
-#define PWL_IconList_ITEM_WIDTH 20.0f
-#define PWL_IconList_ITEM_HEIGHT 20.0f
-#define PWL_IconList_ITEM_SPACE 4.0f
+#define PWL_IconList_ITEM_ICON_LEFTMARGIN 10.0f
+#define PWL_IconList_ITEM_WIDTH 20.0f
+#define PWL_IconList_ITEM_HEIGHT 20.0f
+#define PWL_IconList_ITEM_SPACE 4.0f
/* ------------------ CPWL_IconList_Item ------------------- */
-CPWL_IconList_Item::CPWL_IconList_Item() :
- m_nIconIndex(-1),
- m_pData(NULL),
- m_bSelected(FALSE),
- m_pText(NULL)
-{
-}
+CPWL_IconList_Item::CPWL_IconList_Item()
+ : m_nIconIndex(-1), m_pData(NULL), m_bSelected(FALSE), m_pText(NULL) {}
+
+CPWL_IconList_Item::~CPWL_IconList_Item() {}
-CPWL_IconList_Item::~CPWL_IconList_Item()
-{
+CFX_ByteString CPWL_IconList_Item::GetClassName() const {
+ return "CPWL_IconList_Item";
}
-CFX_ByteString CPWL_IconList_Item::GetClassName() const
-{
- return "CPWL_IconList_Item";
+FX_FLOAT CPWL_IconList_Item::GetItemHeight(FX_FLOAT fLimitWidth) {
+ return PWL_IconList_ITEM_HEIGHT;
}
-FX_FLOAT CPWL_IconList_Item::GetItemHeight(FX_FLOAT fLimitWidth)
-{
- return PWL_IconList_ITEM_HEIGHT;
+void CPWL_IconList_Item::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPDF_Rect rcClient = GetClientRect();
+
+ if (m_bSelected) {
+ if (IsEnabled()) {
+ CPWL_Utils::DrawFillRect(
+ pDevice, pUser2Device, rcClient,
+ CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_SELBACKCOLOR,
+ GetTransparency()));
+ } else {
+ CPWL_Utils::DrawFillRect(
+ pDevice, pUser2Device, rcClient,
+ CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_LIGHTGRAYCOLOR,
+ GetTransparency()));
+ }
+ }
+
+ CPDF_Rect rcIcon = rcClient;
+ rcIcon.left += PWL_IconList_ITEM_ICON_LEFTMARGIN;
+ rcIcon.right = rcIcon.left + PWL_IconList_ITEM_WIDTH;
+
+ CPWL_Utils::DrawIconAppStream(pDevice, pUser2Device, m_nIconIndex, rcIcon,
+ m_crIcon, m_pText->GetTextColor(),
+ GetTransparency());
}
-void CPWL_IconList_Item::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_IconList_Item::SetSelect(FX_BOOL bSelected) {
+ m_bSelected = bSelected;
+
+ if (bSelected)
+ m_pText->SetTextColor(PWL_DEFAULT_WHITECOLOR);
+ else
+ m_pText->SetTextColor(PWL_DEFAULT_BLACKCOLOR);
+}
- if (m_bSelected)
- {
- if (IsEnabled())
- {
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcClient,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_SELBACKCOLOR, GetTransparency()));
- }
- else
- {
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcClient,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_LIGHTGRAYCOLOR, GetTransparency()));
- }
- }
+FX_BOOL CPWL_IconList_Item::IsSelected() const {
+ return m_bSelected;
+}
- CPDF_Rect rcIcon = rcClient;
- rcIcon.left += PWL_IconList_ITEM_ICON_LEFTMARGIN;
- rcIcon.right = rcIcon.left + PWL_IconList_ITEM_WIDTH;
+void CPWL_IconList_Item::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ m_pText = new CPWL_Label;
- CPWL_Utils::DrawIconAppStream(pDevice, pUser2Device, m_nIconIndex, rcIcon,
- m_crIcon, m_pText->GetTextColor(), GetTransparency());
+ PWL_CREATEPARAM lcp = cp;
+ lcp.pParentWnd = this;
+ lcp.dwFlags = PWS_CHILD | PWS_VISIBLE | PES_LEFT | PES_CENTER;
+ lcp.sTextColor = PWL_DEFAULT_BLACKCOLOR;
+ lcp.fFontSize = 12;
+ m_pText->Create(lcp);
}
-void CPWL_IconList_Item::SetSelect(FX_BOOL bSelected)
-{
- m_bSelected = bSelected;
+void CPWL_IconList_Item::SetData(void* pData) {
+ m_pData = pData;
+}
- if (bSelected)
- m_pText->SetTextColor(PWL_DEFAULT_WHITECOLOR);
- else
- m_pText->SetTextColor(PWL_DEFAULT_BLACKCOLOR);
+void CPWL_IconList_Item::SetIcon(int32_t nIconIndex) {
+ m_nIconIndex = nIconIndex;
+}
+void CPWL_IconList_Item::SetText(const CFX_WideString& str) {
+ m_pText->SetText(str.c_str());
}
-FX_BOOL CPWL_IconList_Item::IsSelected() const
-{
- return m_bSelected;
+CFX_WideString CPWL_IconList_Item::GetText() const {
+ return m_pText->GetText();
}
-void CPWL_IconList_Item::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- m_pText = new CPWL_Label;
+void CPWL_IconList_Item::RePosChildWnd() {
+ CPDF_Rect rcClient = GetClientRect();
- PWL_CREATEPARAM lcp = cp;
- lcp.pParentWnd = this;
- lcp.dwFlags = PWS_CHILD | PWS_VISIBLE | PES_LEFT | PES_CENTER;
- lcp.sTextColor = PWL_DEFAULT_BLACKCOLOR;
- lcp.fFontSize = 12;
- m_pText->Create(lcp);
+ rcClient.left +=
+ (PWL_IconList_ITEM_ICON_LEFTMARGIN + PWL_IconList_ITEM_WIDTH +
+ PWL_IconList_ITEM_ICON_LEFTMARGIN);
+
+ m_pText->Move(rcClient, TRUE, FALSE);
}
-void CPWL_IconList_Item::SetData(void* pData)
-{
- m_pData = pData;
+void CPWL_IconList_Item::SetIconFillColor(const CPWL_Color& color) {
+ m_crIcon = color;
}
-void CPWL_IconList_Item::SetIcon(int32_t nIconIndex)
-{
- m_nIconIndex = nIconIndex;
+void CPWL_IconList_Item::OnEnabled() {
+ if (m_bSelected)
+ m_pText->SetTextColor(PWL_DEFAULT_WHITECOLOR);
+ else
+ m_pText->SetTextColor(PWL_DEFAULT_BLACKCOLOR);
+
+ InvalidateRect();
}
-void CPWL_IconList_Item::SetText(const CFX_WideString& str)
-{
- m_pText->SetText(str.c_str());
+void CPWL_IconList_Item::OnDisabled() {
+ m_pText->SetTextColor(PWL_DEFAULT_HEAVYGRAYCOLOR);
+
+ InvalidateRect();
}
-CFX_WideString CPWL_IconList_Item::GetText() const
-{
- return m_pText->GetText();
+/* ----------------- CPWL_IconList_Content ----------------- */
+
+CPWL_IconList_Content::CPWL_IconList_Content(int32_t nListCount)
+ : m_nSelectIndex(-1),
+ m_pNotify(NULL),
+ m_bEnableNotify(TRUE),
+ m_bMouseDown(FALSE),
+ m_nListCount(nListCount) {}
+
+CPWL_IconList_Content::~CPWL_IconList_Content() {}
+
+void CPWL_IconList_Content::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ for (int32_t i = 0; i < m_nListCount; i++) {
+ CPWL_IconList_Item* pNewItem = new CPWL_IconList_Item();
+
+ PWL_CREATEPARAM icp = cp;
+ icp.pParentWnd = this;
+ icp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_NOREFRESHCLIP;
+ pNewItem->Create(icp);
+ }
+
+ SetItemSpace(PWL_IconList_ITEM_SPACE);
+ ResetContent(0);
+
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ CPDF_Rect rcScroll = GetScrollArea();
+ GetScrollPos();
+
+ PWL_SCROLL_INFO sInfo;
+ sInfo.fContentMin = rcScroll.bottom;
+ sInfo.fContentMax = rcScroll.top;
+ sInfo.fPlateWidth = GetClientRect().Height();
+ sInfo.fSmallStep = 13.0f;
+ sInfo.fBigStep = sInfo.fPlateWidth;
+
+ pParent->OnNotify(this, PNM_SETSCROLLINFO, SBT_VSCROLL, (intptr_t)&sInfo);
+ }
}
-void CPWL_IconList_Item::RePosChildWnd()
-{
- CPDF_Rect rcClient = GetClientRect();
+FX_BOOL CPWL_IconList_Content::OnLButtonDown(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ SetFocus();
+
+ SetCapture();
+ m_bMouseDown = TRUE;
+
+ int32_t nItemIndex = FindItemIndex(point);
+ SetSelect(nItemIndex);
+ ScrollToItem(nItemIndex);
- rcClient.left += (PWL_IconList_ITEM_ICON_LEFTMARGIN + PWL_IconList_ITEM_WIDTH + PWL_IconList_ITEM_ICON_LEFTMARGIN);
+ return TRUE;
+}
+
+FX_BOOL CPWL_IconList_Content::OnLButtonUp(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ m_bMouseDown = FALSE;
+ ReleaseCapture();
- m_pText->Move(rcClient, TRUE, FALSE);
+ return TRUE;
}
-void CPWL_IconList_Item::SetIconFillColor(const CPWL_Color& color)
-{
- m_crIcon = color;
+FX_BOOL CPWL_IconList_Content::OnMouseMove(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ if (m_bMouseDown) {
+ int32_t nItemIndex = FindItemIndex(point);
+ SetSelect(nItemIndex);
+ ScrollToItem(nItemIndex);
+ }
+
+ return TRUE;
}
-void CPWL_IconList_Item::OnEnabled()
-{
- if (m_bSelected)
- m_pText->SetTextColor(PWL_DEFAULT_WHITECOLOR);
- else
- m_pText->SetTextColor(PWL_DEFAULT_BLACKCOLOR);
+FX_BOOL CPWL_IconList_Content::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) {
+ switch (nChar) {
+ case FWL_VKEY_Up:
+ if (m_nSelectIndex > 0) {
+ int32_t nItemIndex = m_nSelectIndex - 1;
+ SetSelect(nItemIndex);
+ ScrollToItem(nItemIndex);
+ }
+ return TRUE;
+ case FWL_VKEY_Down:
+ if (m_nSelectIndex < m_nListCount - 1) {
+ int32_t nItemIndex = m_nSelectIndex + 1;
+ SetSelect(nItemIndex);
+ ScrollToItem(nItemIndex);
+ }
+ return TRUE;
+ }
- InvalidateRect();
+ return FALSE;
}
-void CPWL_IconList_Item::OnDisabled()
-{
- m_pText->SetTextColor(PWL_DEFAULT_HEAVYGRAYCOLOR);
+int32_t CPWL_IconList_Content::FindItemIndex(const CPDF_Point& point) {
+ int32_t nIndex = 0;
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ CPDF_Rect rcWnd = pChild->ChildToParent(pChild->GetWindowRect());
+
+ if (point.y < rcWnd.top) {
+ nIndex = i;
+ }
+ }
+ }
- InvalidateRect();
+ return nIndex;
}
-/* ----------------- CPWL_IconList_Content ----------------- */
+void CPWL_IconList_Content::ScrollToItem(int32_t nItemIndex) {
+ CPDF_Rect rcClient = GetClientRect();
+
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex)) {
+ CPDF_Rect rcOrigin = pItem->GetWindowRect();
+ CPDF_Rect rcWnd = pItem->ChildToParent(rcOrigin);
+
+ if (!(rcWnd.bottom > rcClient.bottom && rcWnd.top < rcClient.top)) {
+ CPDF_Point ptScroll = GetScrollPos();
+
+ if (rcWnd.top > rcClient.top) {
+ ptScroll.y = rcOrigin.top;
+ } else if (rcWnd.bottom < rcClient.bottom) {
+ ptScroll.y = rcOrigin.bottom + rcClient.Height();
+ }
-CPWL_IconList_Content::CPWL_IconList_Content(int32_t nListCount) :
- m_nSelectIndex(-1),
- m_pNotify(NULL),
- m_bEnableNotify(TRUE),
- m_bMouseDown(FALSE),
- m_nListCount(nListCount)
-{
-}
-
-CPWL_IconList_Content::~CPWL_IconList_Content()
-{
-}
-
-void CPWL_IconList_Content::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- for (int32_t i=0; i<m_nListCount; i++)
- {
- CPWL_IconList_Item* pNewItem = new CPWL_IconList_Item();
-
- PWL_CREATEPARAM icp = cp;
- icp.pParentWnd = this;
- icp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_NOREFRESHCLIP;
- pNewItem->Create(icp);
- }
-
- SetItemSpace(PWL_IconList_ITEM_SPACE);
- ResetContent(0);
-
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- CPDF_Rect rcScroll = GetScrollArea();
- GetScrollPos();
-
- PWL_SCROLL_INFO sInfo;
- sInfo.fContentMin = rcScroll.bottom;
- sInfo.fContentMax = rcScroll.top;
- sInfo.fPlateWidth = GetClientRect().Height();
- sInfo.fSmallStep = 13.0f;
- sInfo.fBigStep = sInfo.fPlateWidth;
-
- pParent->OnNotify(this, PNM_SETSCROLLINFO, SBT_VSCROLL, (intptr_t)&sInfo);
- }
-}
-
-FX_BOOL CPWL_IconList_Content::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- SetFocus();
-
- SetCapture();
- m_bMouseDown = TRUE;
-
- int32_t nItemIndex = FindItemIndex(point);
- SetSelect(nItemIndex);
- ScrollToItem(nItemIndex);
-
- return TRUE;
-}
-
-FX_BOOL CPWL_IconList_Content::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- m_bMouseDown = FALSE;
- ReleaseCapture();
-
- return TRUE;
-}
-
-FX_BOOL CPWL_IconList_Content::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (m_bMouseDown)
- {
- int32_t nItemIndex = FindItemIndex(point);
- SetSelect(nItemIndex);
- ScrollToItem(nItemIndex);
- }
-
- return TRUE;
-}
-
-FX_BOOL CPWL_IconList_Content::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
-{
- switch (nChar)
- {
- case FWL_VKEY_Up:
- if (m_nSelectIndex > 0)
- {
- int32_t nItemIndex = m_nSelectIndex - 1;
- SetSelect(nItemIndex);
- ScrollToItem(nItemIndex);
- }
- return TRUE;
- case FWL_VKEY_Down:
- if (m_nSelectIndex < m_nListCount-1)
- {
- int32_t nItemIndex = m_nSelectIndex + 1;
- SetSelect(nItemIndex);
- ScrollToItem(nItemIndex);
- }
- return TRUE;
- }
-
- return FALSE;
-}
-
-int32_t CPWL_IconList_Content::FindItemIndex(const CPDF_Point& point)
-{
- int32_t nIndex = 0;
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- CPDF_Rect rcWnd = pChild->ChildToParent(pChild->GetWindowRect());
-
- if (point.y < rcWnd.top)
- {
- nIndex = i;
- }
- }
- }
-
- return nIndex;
-}
-
-void CPWL_IconList_Content::ScrollToItem(int32_t nItemIndex)
-{
- CPDF_Rect rcClient = GetClientRect();
-
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- {
- CPDF_Rect rcOrigin = pItem->GetWindowRect();
- CPDF_Rect rcWnd = pItem->ChildToParent(rcOrigin);
-
- if (!(rcWnd.bottom > rcClient.bottom && rcWnd.top < rcClient.top))
- {
- CPDF_Point ptScroll = GetScrollPos();
-
- if (rcWnd.top > rcClient.top)
- {
- ptScroll.y = rcOrigin.top;
- }
- else if (rcWnd.bottom < rcClient.bottom)
- {
- ptScroll.y = rcOrigin.bottom + rcClient.Height();
- }
+ SetScrollPos(ptScroll);
+ ResetFace();
+ InvalidateRect();
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptScroll.y);
+ }
+ }
+ }
+}
+
+void CPWL_IconList_Content::SetSelect(int32_t nIndex) {
+ if (m_nSelectIndex != nIndex) {
+ SelectItem(m_nSelectIndex, FALSE);
+ SelectItem(nIndex, TRUE);
+ m_nSelectIndex = nIndex;
- SetScrollPos(ptScroll);
- ResetFace();
- InvalidateRect();
- if (CPWL_Wnd* pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptScroll.y);
- }
- }
- }
-}
-
-void CPWL_IconList_Content::SetSelect(int32_t nIndex)
-{
- if (m_nSelectIndex != nIndex)
- {
- SelectItem(m_nSelectIndex, FALSE);
- SelectItem(nIndex, TRUE);
- m_nSelectIndex = nIndex;
-
- if (IPWL_IconList_Notify* pNotify = GetNotify())
- pNotify->OnNoteListSelChanged(nIndex);
- }
-}
-
-int32_t CPWL_IconList_Content::GetSelect() const
-{
- return m_nSelectIndex;
-}
-
-IPWL_IconList_Notify* CPWL_IconList_Content::GetNotify() const
-{
- if (m_bEnableNotify)
- return m_pNotify;
- return NULL;
-}
-
-void CPWL_IconList_Content::SetNotify(IPWL_IconList_Notify* pNotify)
-{
- m_pNotify = pNotify;
-}
-
-void CPWL_IconList_Content::EnableNotify(FX_BOOL bNotify)
-{
- m_bEnableNotify = bNotify;
-}
-
-void CPWL_IconList_Content::SelectItem(int32_t nItemIndex, FX_BOOL bSelect)
-{
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- {
- pItem->SetSelect(bSelect);
- pItem->InvalidateRect();
- }
+ if (IPWL_IconList_Notify* pNotify = GetNotify())
+ pNotify->OnNoteListSelChanged(nIndex);
+ }
}
-CPWL_IconList_Item* CPWL_IconList_Content::GetListItem(int32_t nItemIndex) const
-{
- if (nItemIndex >= 0 && nItemIndex<m_aChildren.GetSize())
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(nItemIndex))
- {
- if (pChild->GetClassName() == "CPWL_IconList_Item")
- {
- return (CPWL_IconList_Item*)pChild;
- }
- }
- }
+int32_t CPWL_IconList_Content::GetSelect() const {
+ return m_nSelectIndex;
+}
- return NULL;
+IPWL_IconList_Notify* CPWL_IconList_Content::GetNotify() const {
+ if (m_bEnableNotify)
+ return m_pNotify;
+ return NULL;
}
-void CPWL_IconList_Content::SetListData(int32_t nItemIndex, void* pData)
-{
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- pItem->SetData(pData);
+void CPWL_IconList_Content::SetNotify(IPWL_IconList_Notify* pNotify) {
+ m_pNotify = pNotify;
}
-void CPWL_IconList_Content::SetListIcon(int32_t nItemIndex, int32_t nIconIndex)
-{
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- pItem->SetIcon(nIconIndex);
+void CPWL_IconList_Content::EnableNotify(FX_BOOL bNotify) {
+ m_bEnableNotify = bNotify;
}
-void CPWL_IconList_Content::SetListString(int32_t nItemIndex, const CFX_WideString& str)
-{
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- pItem->SetText(str);
+void CPWL_IconList_Content::SelectItem(int32_t nItemIndex, FX_BOOL bSelect) {
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex)) {
+ pItem->SetSelect(bSelect);
+ pItem->InvalidateRect();
+ }
}
-CFX_WideString CPWL_IconList_Content::GetListString(int32_t nItemIndex) const
-{
- if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
- return pItem->GetText();
+CPWL_IconList_Item* CPWL_IconList_Content::GetListItem(
+ int32_t nItemIndex) const {
+ if (nItemIndex >= 0 && nItemIndex < m_aChildren.GetSize()) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(nItemIndex)) {
+ if (pChild->GetClassName() == "CPWL_IconList_Item") {
+ return (CPWL_IconList_Item*)pChild;
+ }
+ }
+ }
+
+ return NULL;
+}
- return L"";
+void CPWL_IconList_Content::SetListData(int32_t nItemIndex, void* pData) {
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
+ pItem->SetData(pData);
}
-void CPWL_IconList_Content::SetIconFillColor(const CPWL_Color& color)
-{
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- if (pChild->GetClassName() == "CPWL_IconList_Item")
- {
- CPWL_IconList_Item* pItem = (CPWL_IconList_Item*)pChild;
- pItem->SetIconFillColor(color);
- pItem->InvalidateRect();
- }
- }
- }
+void CPWL_IconList_Content::SetListIcon(int32_t nItemIndex,
+ int32_t nIconIndex) {
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
+ pItem->SetIcon(nIconIndex);
+}
+void CPWL_IconList_Content::SetListString(int32_t nItemIndex,
+ const CFX_WideString& str) {
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
+ pItem->SetText(str);
}
-/* -------------------- CPWL_IconList --------------------- */
+CFX_WideString CPWL_IconList_Content::GetListString(int32_t nItemIndex) const {
+ if (CPWL_IconList_Item* pItem = GetListItem(nItemIndex))
+ return pItem->GetText();
+
+ return L"";
+}
-CPWL_IconList::CPWL_IconList(int32_t nListCount) :
- m_pListContent(NULL),
- m_nListCount(nListCount)
-{
-}
-
-CPWL_IconList::~CPWL_IconList()
-{
-}
-
-void CPWL_IconList::RePosChildWnd()
-{
- CPWL_Wnd::RePosChildWnd();
-
- if (m_pListContent)
- m_pListContent->Move(GetClientRect(), TRUE, FALSE);
-}
-
-void CPWL_IconList::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- m_pListContent = new CPWL_IconList_Content(m_nListCount);
-
- PWL_CREATEPARAM ccp = cp;
- ccp.pParentWnd = this;
- ccp.dwFlags = PWS_CHILD | PWS_VISIBLE;
- m_pListContent->Create(ccp);
-}
-
-void CPWL_IconList::OnCreated()
-{
- if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
- {
- pScrollBar->RemoveFlag(PWS_AUTOTRANSPARENT);
- pScrollBar->SetTransparency(255);
- pScrollBar->SetNotifyForever(TRUE);
- }
+void CPWL_IconList_Content::SetIconFillColor(const CPWL_Color& color) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (pChild->GetClassName() == "CPWL_IconList_Item") {
+ CPWL_IconList_Item* pItem = (CPWL_IconList_Item*)pChild;
+ pItem->SetIconFillColor(color);
+ pItem->InvalidateRect();
+ }
+ }
+ }
}
-void CPWL_IconList::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+/* -------------------- CPWL_IconList --------------------- */
+
+CPWL_IconList::CPWL_IconList(int32_t nListCount)
+ : m_pListContent(NULL), m_nListCount(nListCount) {}
+
+CPWL_IconList::~CPWL_IconList() {}
- if (wParam == SBT_VSCROLL)
- {
- switch (msg)
- {
- case PNM_SETSCROLLINFO:
- if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam)
- {
- if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
- {
- if (pInfo->fContentMax - pInfo->fContentMin > pInfo->fPlateWidth)
- {
- if (!pScrollBar->IsVisible())
- {
- pScrollBar->SetVisible(TRUE);
- RePosChildWnd();
- }
- else
- {
- }
- }
- else
- {
- if (pScrollBar->IsVisible())
- {
- pScrollBar->SetVisible(FALSE);
- RePosChildWnd();
- }
+void CPWL_IconList::RePosChildWnd() {
+ CPWL_Wnd::RePosChildWnd();
- if (m_pListContent)
- m_pListContent->SetScrollPos(CPDF_Point(0.0f,0.0f));
- }
+ if (m_pListContent)
+ m_pListContent->Move(GetClientRect(), TRUE, FALSE);
+}
+
+void CPWL_IconList::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ m_pListContent = new CPWL_IconList_Content(m_nListCount);
- pScrollBar->OnNotify(pWnd,PNM_SETSCROLLINFO,wParam,lParam);
- }
- }
- return;
- case PNM_SCROLLWINDOW:
- if (m_pListContent)
- {
- m_pListContent->SetScrollPos(CPDF_Point(0.0f, *(FX_FLOAT*)lParam));
- m_pListContent->ResetFace();
- m_pListContent->InvalidateRect(NULL);
- }
- return;
- case PNM_SETSCROLLPOS:
- if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
- pScrollBar->OnNotify(pWnd,PNM_SETSCROLLPOS,wParam,lParam);
- return;
- }
- }
+ PWL_CREATEPARAM ccp = cp;
+ ccp.pParentWnd = this;
+ ccp.dwFlags = PWS_CHILD | PWS_VISIBLE;
+ m_pListContent->Create(ccp);
}
-void CPWL_IconList::SetSelect(int32_t nIndex)
-{
- m_pListContent->SetSelect(nIndex);
+void CPWL_IconList::OnCreated() {
+ if (CPWL_ScrollBar* pScrollBar = GetVScrollBar()) {
+ pScrollBar->RemoveFlag(PWS_AUTOTRANSPARENT);
+ pScrollBar->SetTransparency(255);
+ pScrollBar->SetNotifyForever(TRUE);
+ }
}
-void CPWL_IconList::SetTopItem(int32_t nIndex)
-{
- m_pListContent->ScrollToItem(nIndex);
+void CPWL_IconList::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+
+ if (wParam == SBT_VSCROLL) {
+ switch (msg) {
+ case PNM_SETSCROLLINFO:
+ if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam) {
+ if (CPWL_ScrollBar* pScrollBar = GetVScrollBar()) {
+ if (pInfo->fContentMax - pInfo->fContentMin > pInfo->fPlateWidth) {
+ if (!pScrollBar->IsVisible()) {
+ pScrollBar->SetVisible(TRUE);
+ RePosChildWnd();
+ } else {
+ }
+ } else {
+ if (pScrollBar->IsVisible()) {
+ pScrollBar->SetVisible(FALSE);
+ RePosChildWnd();
+ }
+
+ if (m_pListContent)
+ m_pListContent->SetScrollPos(CPDF_Point(0.0f, 0.0f));
+ }
+
+ pScrollBar->OnNotify(pWnd, PNM_SETSCROLLINFO, wParam, lParam);
+ }
+ }
+ return;
+ case PNM_SCROLLWINDOW:
+ if (m_pListContent) {
+ m_pListContent->SetScrollPos(CPDF_Point(0.0f, *(FX_FLOAT*)lParam));
+ m_pListContent->ResetFace();
+ m_pListContent->InvalidateRect(NULL);
+ }
+ return;
+ case PNM_SETSCROLLPOS:
+ if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
+ pScrollBar->OnNotify(pWnd, PNM_SETSCROLLPOS, wParam, lParam);
+ return;
+ }
+ }
}
-int32_t CPWL_IconList::GetSelect() const
-{
- return m_pListContent->GetSelect();
+void CPWL_IconList::SetSelect(int32_t nIndex) {
+ m_pListContent->SetSelect(nIndex);
}
-void CPWL_IconList::SetNotify(IPWL_IconList_Notify* pNotify)
-{
- m_pListContent->SetNotify(pNotify);
+void CPWL_IconList::SetTopItem(int32_t nIndex) {
+ m_pListContent->ScrollToItem(nIndex);
}
-void CPWL_IconList::EnableNotify(FX_BOOL bNotify)
-{
- m_pListContent->EnableNotify(bNotify);
-}
-
-void CPWL_IconList::SetListData(int32_t nItemIndex, void* pData)
-{
- m_pListContent->SetListData(nItemIndex, pData);
-}
-
-void CPWL_IconList::SetListIcon(int32_t nItemIndex, int32_t nIconIndex)
-{
- m_pListContent->SetListIcon(nItemIndex, nIconIndex);
-}
-
-void CPWL_IconList::SetListString(int32_t nItemIndex, const CFX_WideString& str)
-{
- m_pListContent->SetListString(nItemIndex, str);
-}
-
-CFX_WideString CPWL_IconList::GetListString(int32_t nItemIndex) const
-{
- return m_pListContent->GetListString(nItemIndex);
-}
-
-void CPWL_IconList::SetIconFillColor(const CPWL_Color& color)
-{
- m_pListContent->SetIconFillColor(color);
-}
-
-FX_BOOL CPWL_IconList::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPDF_Point ptScroll = m_pListContent->GetScrollPos();
- CPDF_Rect rcScroll = m_pListContent->GetScrollArea();
- CPDF_Rect rcContents = m_pListContent->GetClientRect();
+int32_t CPWL_IconList::GetSelect() const {
+ return m_pListContent->GetSelect();
+}
- if (rcScroll.top - rcScroll.bottom > rcContents.Height())
- {
- CPDF_Point ptNew = ptScroll;
+void CPWL_IconList::SetNotify(IPWL_IconList_Notify* pNotify) {
+ m_pListContent->SetNotify(pNotify);
+}
- if (zDelta > 0)
- ptNew.y += 30;
- else
- ptNew.y -= 30;
+void CPWL_IconList::EnableNotify(FX_BOOL bNotify) {
+ m_pListContent->EnableNotify(bNotify);
+}
- if (ptNew.y > rcScroll.top)
- ptNew.y = rcScroll.top;
- if (ptNew.y < rcScroll.bottom + rcContents.Height())
- ptNew.y = rcScroll.bottom + rcContents.Height();
- if (ptNew.y < rcScroll.bottom)
- ptNew.y = rcScroll.bottom;
+void CPWL_IconList::SetListData(int32_t nItemIndex, void* pData) {
+ m_pListContent->SetListData(nItemIndex, pData);
+}
- if (ptNew.y != ptScroll.y)
- {
- m_pListContent->SetScrollPos(ptNew);
- m_pListContent->ResetFace();
- m_pListContent->InvalidateRect(NULL);
+void CPWL_IconList::SetListIcon(int32_t nItemIndex, int32_t nIconIndex) {
+ m_pListContent->SetListIcon(nItemIndex, nIconIndex);
+}
- if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
- pScrollBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptNew.y);
+void CPWL_IconList::SetListString(int32_t nItemIndex,
+ const CFX_WideString& str) {
+ m_pListContent->SetListString(nItemIndex, str);
+}
- return TRUE;
- }
- }
+CFX_WideString CPWL_IconList::GetListString(int32_t nItemIndex) const {
+ return m_pListContent->GetListString(nItemIndex);
+}
- return FALSE;
+void CPWL_IconList::SetIconFillColor(const CPWL_Color& color) {
+ m_pListContent->SetIconFillColor(color);
}
+FX_BOOL CPWL_IconList::OnMouseWheel(short zDelta,
+ const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ CPDF_Point ptScroll = m_pListContent->GetScrollPos();
+ CPDF_Rect rcScroll = m_pListContent->GetScrollArea();
+ CPDF_Rect rcContents = m_pListContent->GetClientRect();
+
+ if (rcScroll.top - rcScroll.bottom > rcContents.Height()) {
+ CPDF_Point ptNew = ptScroll;
+
+ if (zDelta > 0)
+ ptNew.y += 30;
+ else
+ ptNew.y -= 30;
+
+ if (ptNew.y > rcScroll.top)
+ ptNew.y = rcScroll.top;
+ if (ptNew.y < rcScroll.bottom + rcContents.Height())
+ ptNew.y = rcScroll.bottom + rcContents.Height();
+ if (ptNew.y < rcScroll.bottom)
+ ptNew.y = rcScroll.bottom;
+
+ if (ptNew.y != ptScroll.y) {
+ m_pListContent->SetScrollPos(ptNew);
+ m_pListContent->ResetFace();
+ m_pListContent->InvalidateRect(NULL);
+
+ if (CPWL_ScrollBar* pScrollBar = GetVScrollBar())
+ pScrollBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptNew.y);
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/fpdfsdk/src/pdfwindow/PWL_Label.cpp b/fpdfsdk/src/pdfwindow/PWL_Label.cpp
index e1780c69a8..797270ebba 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Label.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Label.cpp
@@ -11,177 +11,144 @@
/* ---------------------------- CPWL_Label ------------------------------ */
-CPWL_Label::CPWL_Label() : m_pEdit(NULL)
-{
- m_pEdit = IFX_Edit::NewEdit();
-
- ASSERT(m_pEdit != NULL);
+CPWL_Label::CPWL_Label() : m_pEdit(NULL) {
+ m_pEdit = IFX_Edit::NewEdit();
+
+ ASSERT(m_pEdit != NULL);
}
-CPWL_Label::~CPWL_Label()
-{
- IFX_Edit::DelEdit(m_pEdit);
+CPWL_Label::~CPWL_Label() {
+ IFX_Edit::DelEdit(m_pEdit);
}
-
-CFX_ByteString CPWL_Label::GetClassName() const
-{
- return "CPWL_Label";
-}
-
-void CPWL_Label::OnCreated()
-{
- SetParamByFlag();
- SetFontSize(GetCreationParam().fFontSize);
-
- m_pEdit->SetFontMap(GetFontMap());
- m_pEdit->Initialize();
-
- if (HasFlag(PES_TEXTOVERFLOW))
- {
- SetClipRect(CPDF_Rect(0.0f,0.0f,0.0f,0.0f));
- m_pEdit->SetTextOverflow(TRUE);
- }
+
+CFX_ByteString CPWL_Label::GetClassName() const {
+ return "CPWL_Label";
}
-void CPWL_Label::SetText(const FX_WCHAR* csText)
-{
- m_pEdit->SetText(csText);
+void CPWL_Label::OnCreated() {
+ SetParamByFlag();
+ SetFontSize(GetCreationParam().fFontSize);
+
+ m_pEdit->SetFontMap(GetFontMap());
+ m_pEdit->Initialize();
+
+ if (HasFlag(PES_TEXTOVERFLOW)) {
+ SetClipRect(CPDF_Rect(0.0f, 0.0f, 0.0f, 0.0f));
+ m_pEdit->SetTextOverflow(TRUE);
+ }
}
-void CPWL_Label::RePosChildWnd()
-{
- m_pEdit->SetPlateRect(GetClientRect());
+void CPWL_Label::SetText(const FX_WCHAR* csText) {
+ m_pEdit->SetText(csText);
}
-void CPWL_Label::SetFontSize(FX_FLOAT fFontSize)
-{
- m_pEdit->SetFontSize(fFontSize);
+void CPWL_Label::RePosChildWnd() {
+ m_pEdit->SetPlateRect(GetClientRect());
}
-FX_FLOAT CPWL_Label::GetFontSize() const
-{
- return m_pEdit->GetFontSize();
+void CPWL_Label::SetFontSize(FX_FLOAT fFontSize) {
+ m_pEdit->SetFontSize(fFontSize);
}
-void CPWL_Label::SetParamByFlag()
-{
- if (HasFlag(PES_LEFT))
- {
- m_pEdit->SetAlignmentH(0);
- }
- else if (HasFlag(PES_MIDDLE))
- {
- m_pEdit->SetAlignmentH(1);
- }
- else if (HasFlag(PES_RIGHT))
- {
- m_pEdit->SetAlignmentH(2);
- }
- else
- {
- m_pEdit->SetAlignmentH(0);
- }
+FX_FLOAT CPWL_Label::GetFontSize() const {
+ return m_pEdit->GetFontSize();
+}
+
+void CPWL_Label::SetParamByFlag() {
+ if (HasFlag(PES_LEFT)) {
+ m_pEdit->SetAlignmentH(0);
+ } else if (HasFlag(PES_MIDDLE)) {
+ m_pEdit->SetAlignmentH(1);
+ } else if (HasFlag(PES_RIGHT)) {
+ m_pEdit->SetAlignmentH(2);
+ } else {
+ m_pEdit->SetAlignmentH(0);
+ }
- if (HasFlag(PES_TOP))
- {
- m_pEdit->SetAlignmentV(0);
- }
- else if (HasFlag(PES_CENTER))
- {
- m_pEdit->SetAlignmentV(1);
- }
- else if (HasFlag(PES_BOTTOM))
- {
- m_pEdit->SetAlignmentV(2);
- }
- else
- {
- m_pEdit->SetAlignmentV(0);
- }
+ if (HasFlag(PES_TOP)) {
+ m_pEdit->SetAlignmentV(0);
+ } else if (HasFlag(PES_CENTER)) {
+ m_pEdit->SetAlignmentV(1);
+ } else if (HasFlag(PES_BOTTOM)) {
+ m_pEdit->SetAlignmentV(2);
+ } else {
+ m_pEdit->SetAlignmentV(0);
+ }
- if (HasFlag(PES_PASSWORD))
- {
- m_pEdit->SetPasswordChar('*');
- }
+ if (HasFlag(PES_PASSWORD)) {
+ m_pEdit->SetPasswordChar('*');
+ }
- m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE));
- m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN));
- m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE));
- m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL));
+ m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE));
+ m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN));
+ m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE));
+ m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL));
}
-void CPWL_Label::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
+void CPWL_Label::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
- GetClientRect();
+ GetClientRect();
- CPDF_Rect rcClip;
- CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange();
- CPVT_WordRange* pRange = NULL;
+ CPDF_Rect rcClip;
+ CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange();
+ CPVT_WordRange* pRange = NULL;
- if (!HasFlag(PES_TEXTOVERFLOW))
- {
- rcClip = GetClientRect();
- pRange = &wrRange;
- }
-IFX_SystemHandler* pSysHandler = GetSystemHandler();
- IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pEdit,
- CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
- CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()),
- rcClip, CPDF_Point(0.0f,0.0f), pRange,pSysHandler, NULL);
+ if (!HasFlag(PES_TEXTOVERFLOW)) {
+ rcClip = GetClientRect();
+ pRange = &wrRange;
+ }
+ IFX_SystemHandler* pSysHandler = GetSystemHandler();
+ IFX_Edit::DrawEdit(
+ pDevice, pUser2Device, m_pEdit,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()),
+ rcClip, CPDF_Point(0.0f, 0.0f), pRange, pSysHandler, NULL);
}
-void CPWL_Label::SetHorzScale(int32_t nHorzScale)
-{
- m_pEdit->SetHorzScale(nHorzScale);
+void CPWL_Label::SetHorzScale(int32_t nHorzScale) {
+ m_pEdit->SetHorzScale(nHorzScale);
}
-void CPWL_Label::SetCharSpace(FX_FLOAT fCharSpace)
-{
- m_pEdit->SetCharSpace(fCharSpace);
+void CPWL_Label::SetCharSpace(FX_FLOAT fCharSpace) {
+ m_pEdit->SetCharSpace(fCharSpace);
}
-CPDF_Rect CPWL_Label::GetContentRect() const
-{
- return m_pEdit->GetContentRect();
+CPDF_Rect CPWL_Label::GetContentRect() const {
+ return m_pEdit->GetContentRect();
}
-void CPWL_Label::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+void CPWL_Label::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
- sAppStream << GetTextAppearanceStream(CPDF_Point(0.0f, 0.0f));
+ sAppStream << GetTextAppearanceStream(CPDF_Point(0.0f, 0.0f));
}
-CFX_ByteString CPWL_Label::GetTextAppearanceStream(const CPDF_Point & ptOffset) const
-{
- CFX_ByteTextBuf sRet;
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit,ptOffset);
+CFX_ByteString CPWL_Label::GetTextAppearanceStream(
+ const CPDF_Point& ptOffset) const {
+ CFX_ByteTextBuf sRet;
+ CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset);
- if (sEdit.GetLength() > 0)
- {
- sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEdit << "ET\n";
- }
+ if (sEdit.GetLength() > 0) {
+ sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEdit
+ << "ET\n";
+ }
- return sRet.GetByteString();
+ return sRet.GetByteString();
}
-CFX_WideString CPWL_Label::GetText() const
-{
- return m_pEdit->GetText();
+CFX_WideString CPWL_Label::GetText() const {
+ return m_pEdit->GetText();
}
-void CPWL_Label::SetLimitChar(int32_t nLimitChar)
-{
- m_pEdit->SetLimitChar(nLimitChar);
+void CPWL_Label::SetLimitChar(int32_t nLimitChar) {
+ m_pEdit->SetLimitChar(nLimitChar);
}
-int32_t CPWL_Label::GetTotalWords()
-{
- if (m_pEdit)
- return m_pEdit->GetTotalWords();
+int32_t CPWL_Label::GetTotalWords() {
+ if (m_pEdit)
+ return m_pEdit->GetTotalWords();
- return 0;
+ return 0;
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_ListBox.cpp b/fpdfsdk/src/pdfwindow/PWL_ListBox.cpp
index 48fb409b7b..ba75e55fdf 100644
--- a/fpdfsdk/src/pdfwindow/PWL_ListBox.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_ListBox.cpp
@@ -12,587 +12,531 @@
#include "../../include/pdfwindow/PWL_EditCtrl.h"
#include "../../include/pdfwindow/PWL_Edit.h"
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
/* ------------------------ CPWL_List_Notify ----------------------- */
-CPWL_List_Notify::CPWL_List_Notify(CPWL_ListBox* pList) : m_pList(pList)
-{
- ASSERT(m_pList != NULL);
+CPWL_List_Notify::CPWL_List_Notify(CPWL_ListBox* pList) : m_pList(pList) {
+ ASSERT(m_pList != NULL);
}
-CPWL_List_Notify::~CPWL_List_Notify()
-{
-}
+CPWL_List_Notify::~CPWL_List_Notify() {}
-void CPWL_List_Notify::IOnSetScrollInfoY(FX_FLOAT fPlateMin, FX_FLOAT fPlateMax,
- FX_FLOAT fContentMin, FX_FLOAT fContentMax,
- FX_FLOAT fSmallStep, FX_FLOAT fBigStep)
-{
- PWL_SCROLL_INFO Info;
+void CPWL_List_Notify::IOnSetScrollInfoY(FX_FLOAT fPlateMin,
+ FX_FLOAT fPlateMax,
+ FX_FLOAT fContentMin,
+ FX_FLOAT fContentMax,
+ FX_FLOAT fSmallStep,
+ FX_FLOAT fBigStep) {
+ PWL_SCROLL_INFO Info;
- Info.fPlateWidth = fPlateMax - fPlateMin;
- Info.fContentMin = fContentMin;
- Info.fContentMax = fContentMax;
- Info.fSmallStep = fSmallStep;
- Info.fBigStep = fBigStep;
+ Info.fPlateWidth = fPlateMax - fPlateMin;
+ Info.fContentMin = fContentMin;
+ Info.fContentMax = fContentMax;
+ Info.fSmallStep = fSmallStep;
+ Info.fBigStep = fBigStep;
- m_pList->OnNotify(m_pList,PNM_SETSCROLLINFO,SBT_VSCROLL,(intptr_t)&Info);
+ m_pList->OnNotify(m_pList, PNM_SETSCROLLINFO, SBT_VSCROLL, (intptr_t)&Info);
- if (CPWL_ScrollBar * pScroll = m_pList->GetVScrollBar())
- {
- if (IsFloatBigger(Info.fPlateWidth,Info.fContentMax-Info.fContentMin)
- || IsFloatEqual(Info.fPlateWidth,Info.fContentMax-Info.fContentMin))
- {
- if (pScroll->IsVisible())
- {
- pScroll->SetVisible(FALSE);
- m_pList->RePosChildWnd();
- }
- }
- else
- {
- if (!pScroll->IsVisible())
- {
- pScroll->SetVisible(TRUE);
- m_pList->RePosChildWnd();
- }
- }
- }
+ if (CPWL_ScrollBar* pScroll = m_pList->GetVScrollBar()) {
+ if (IsFloatBigger(Info.fPlateWidth, Info.fContentMax - Info.fContentMin) ||
+ IsFloatEqual(Info.fPlateWidth, Info.fContentMax - Info.fContentMin)) {
+ if (pScroll->IsVisible()) {
+ pScroll->SetVisible(FALSE);
+ m_pList->RePosChildWnd();
+ }
+ } else {
+ if (!pScroll->IsVisible()) {
+ pScroll->SetVisible(TRUE);
+ m_pList->RePosChildWnd();
+ }
+ }
+ }
}
-void CPWL_List_Notify::IOnSetScrollPosY(FX_FLOAT fy)
-{
- m_pList->OnNotify(m_pList,PNM_SETSCROLLPOS,SBT_VSCROLL,(intptr_t)&fy);
+void CPWL_List_Notify::IOnSetScrollPosY(FX_FLOAT fy) {
+ m_pList->OnNotify(m_pList, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&fy);
}
-void CPWL_List_Notify::IOnInvalidateRect(CPDF_Rect * pRect)
-{
- m_pList->InvalidateRect(pRect);
+void CPWL_List_Notify::IOnInvalidateRect(CPDF_Rect* pRect) {
+ m_pList->InvalidateRect(pRect);
}
/* --------------------------- CPWL_ListBox ---------------------------- */
-CPWL_ListBox::CPWL_ListBox() :
- m_pList(NULL),
- m_pListNotify(NULL),
- m_bMouseDown(FALSE),
- m_bHoverSel(FALSE),
- m_pFillerNotify(NULL)
-{
- m_pList = IFX_List::NewList();
+CPWL_ListBox::CPWL_ListBox()
+ : m_pList(NULL),
+ m_pListNotify(NULL),
+ m_bMouseDown(FALSE),
+ m_bHoverSel(FALSE),
+ m_pFillerNotify(NULL) {
+ m_pList = IFX_List::NewList();
- ASSERT(m_pList != NULL);
+ ASSERT(m_pList != NULL);
}
-CPWL_ListBox::~CPWL_ListBox()
-{
- IFX_List::DelList(m_pList);
- delete m_pListNotify;
- m_pListNotify = NULL;
+CPWL_ListBox::~CPWL_ListBox() {
+ IFX_List::DelList(m_pList);
+ delete m_pListNotify;
+ m_pListNotify = NULL;
}
-CFX_ByteString CPWL_ListBox::GetClassName() const
-{
- return "CPWL_ListBox";
+CFX_ByteString CPWL_ListBox::GetClassName() const {
+ return "CPWL_ListBox";
}
-void CPWL_ListBox::OnCreated()
-{
- if (m_pList)
- {
- delete m_pListNotify;
+void CPWL_ListBox::OnCreated() {
+ if (m_pList) {
+ delete m_pListNotify;
- m_pList->SetFontMap(GetFontMap());
- m_pList->SetNotify(m_pListNotify = new CPWL_List_Notify(this));
+ m_pList->SetFontMap(GetFontMap());
+ m_pList->SetNotify(m_pListNotify = new CPWL_List_Notify(this));
+
+ SetHoverSel(HasFlag(PLBS_HOVERSEL));
+ m_pList->SetMultipleSel(HasFlag(PLBS_MULTIPLESEL));
+ m_pList->SetFontSize(GetCreationParam().fFontSize);
+
+ m_bHoverSel = HasFlag(PLBS_HOVERSEL);
+ }
+}
+
+void CPWL_ListBox::OnDestroy() {
+ delete m_pListNotify;
+ m_pListNotify = NULL;
+}
+
+void CPWL_ListBox::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+
+ CFX_ByteTextBuf sListItems;
+
+ if (m_pList) {
+ CPDF_Rect rcPlate = m_pList->GetPlateRect();
+ for (int32_t i = 0, sz = m_pList->GetCount(); i < sz; i++) {
+ CPDF_Rect rcItem = m_pList->GetItemRect(i);
+
+ if (rcItem.bottom > rcPlate.top || rcItem.top < rcPlate.bottom)
+ continue;
+
+ CPDF_Point ptOffset(rcItem.left, (rcItem.top + rcItem.bottom) * 0.5f);
+ if (m_pList->IsItemSelected(i)) {
+ sListItems << CPWL_Utils::GetRectFillAppStream(
+ rcItem, PWL_DEFAULT_SELBACKCOLOR);
+ CFX_ByteString sItem =
+ CPWL_Utils::GetEditAppStream(m_pList->GetItemEdit(i), ptOffset);
+ if (sItem.GetLength() > 0) {
+ sListItems << "BT\n"
+ << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELTEXTCOLOR)
+ << sItem << "ET\n";
+ }
+ } else {
+ CFX_ByteString sItem =
+ CPWL_Utils::GetEditAppStream(m_pList->GetItemEdit(i), ptOffset);
+ if (sItem.GetLength() > 0) {
+ sListItems << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor())
+ << sItem << "ET\n";
+ }
+ }
+ }
+ }
+
+ if (sListItems.GetLength() > 0) {
+ CFX_ByteTextBuf sClip;
+ CPDF_Rect rcClient = GetClientRect();
+
+ sClip << "q\n";
+ sClip << rcClient.left << " " << rcClient.bottom << " "
+ << rcClient.right - rcClient.left << " "
+ << rcClient.top - rcClient.bottom << " re W n\n";
+
+ sClip << sListItems << "Q\n";
+
+ sAppStream << "/Tx BMC\n" << sClip << "EMC\n";
+ }
+}
+
+void CPWL_ListBox::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+
+ if (m_pList) {
+ CPDF_Rect rcPlate = m_pList->GetPlateRect();
+ CPDF_Rect rcList = GetListRect();
+ CPDF_Rect rcClient = GetClientRect();
+
+ for (int32_t i = 0, sz = m_pList->GetCount(); i < sz; i++) {
+ CPDF_Rect rcItem = m_pList->GetItemRect(i);
+ if (rcItem.bottom > rcPlate.top || rcItem.top < rcPlate.bottom)
+ continue;
+
+ CPDF_Point ptOffset(rcItem.left, (rcItem.top + rcItem.bottom) * 0.5f);
+ if (IFX_Edit* pEdit = m_pList->GetItemEdit(i)) {
+ CPDF_Rect rcContent = pEdit->GetContentRect();
+ if (rcContent.Width() > rcClient.Width())
+ rcItem.Intersect(rcList);
+ else
+ rcItem.Intersect(rcClient);
+ }
+
+ if (m_pList->IsItemSelected(i)) {
+ // CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcItem,
+ //ArgbEncode(255,0,51,113));
+ IFX_SystemHandler* pSysHandler = GetSystemHandler();
+ if (pSysHandler && pSysHandler->IsSelectionImplemented()) {
+ IFX_Edit::DrawEdit(
+ pDevice, pUser2Device, m_pList->GetItemEdit(i),
+ CPWL_Utils::PWLColorToFXColor(GetTextColor()),
+ CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor()), rcList,
+ ptOffset, NULL, pSysHandler, m_pFormFiller);
+ pSysHandler->OutputSelectedRect(m_pFormFiller, rcItem);
+ } else {
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcItem,
+ ArgbEncode(255, 0, 51, 113));
+ IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pList->GetItemEdit(i),
+ ArgbEncode(255, 255, 255, 255), 0, rcList,
+ ptOffset, NULL, pSysHandler, m_pFormFiller);
+ }
+ } else {
+ IFX_SystemHandler* pSysHandler = GetSystemHandler();
+ IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pList->GetItemEdit(i),
+ CPWL_Utils::PWLColorToFXColor(GetTextColor()),
+ CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor()),
+ rcList, ptOffset, NULL, pSysHandler, NULL);
+ }
+ }
+ }
+}
+
+FX_BOOL CPWL_ListBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) {
+ CPWL_Wnd::OnKeyDown(nChar, nFlag);
+
+ if (!m_pList)
+ return FALSE;
+
+ switch (nChar) {
+ default:
+ return FALSE;
+ case FWL_VKEY_Up:
+ case FWL_VKEY_Down:
+ case FWL_VKEY_Home:
+ case FWL_VKEY_Left:
+ case FWL_VKEY_End:
+ case FWL_VKEY_Right:
+ break;
+ }
+
+ switch (nChar) {
+ case FWL_VKEY_Up:
+ m_pList->OnVK_UP(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_Down:
+ m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_Home:
+ m_pList->OnVK_HOME(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_Left:
+ m_pList->OnVK_LEFT(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_End:
+ m_pList->OnVK_END(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_Right:
+ m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ break;
+ case FWL_VKEY_Delete:
+ break;
+ }
+
+ FX_BOOL bExit = FALSE;
+ OnNotifySelChanged(TRUE, bExit, nFlag);
+
+ return TRUE;
+}
+
+FX_BOOL CPWL_ListBox::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ CPWL_Wnd::OnChar(nChar, nFlag);
+
+ if (!m_pList)
+ return FALSE;
+
+ if (!m_pList->OnChar(nChar, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag)))
+ return FALSE;
+
+ FX_BOOL bExit = FALSE;
+ OnNotifySelChanged(TRUE, bExit, nFlag);
+
+ return TRUE;
+}
+
+FX_BOOL CPWL_ListBox::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
+
+ if (ClientHitTest(point)) {
+ m_bMouseDown = TRUE;
+ SetFocus();
+ SetCapture();
+
+ if (m_pList)
+ m_pList->OnMouseDown(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ }
+
+ return TRUE;
+}
+
+FX_BOOL CPWL_ListBox::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
+
+ if (m_bMouseDown) {
+ ReleaseCapture();
+ m_bMouseDown = FALSE;
+ }
+
+ FX_BOOL bExit = FALSE;
+ OnNotifySelChanged(FALSE, bExit, nFlag);
+
+ return TRUE;
+}
+
+void CPWL_ListBox::SetHoverSel(FX_BOOL bHoverSel) {
+ m_bHoverSel = bHoverSel;
+}
+
+FX_BOOL CPWL_ListBox::OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnMouseMove(point, nFlag);
+
+ if (m_bHoverSel && !IsCaptureMouse() && ClientHitTest(point)) {
+ if (m_pList)
+ m_pList->Select(m_pList->GetItemIndex(point));
+ }
- SetHoverSel(HasFlag(PLBS_HOVERSEL));
- m_pList->SetMultipleSel(HasFlag(PLBS_MULTIPLESEL));
- m_pList->SetFontSize(GetCreationParam().fFontSize);
+ if (m_bMouseDown) {
+ if (m_pList)
+ m_pList->OnMouseMove(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ }
- m_bHoverSel = HasFlag(PLBS_HOVERSEL);
- }
+ return TRUE;
}
-void CPWL_ListBox::OnDestroy()
-{
- delete m_pListNotify;
- m_pListNotify = NULL;
-}
-
-void CPWL_ListBox::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
-
- CFX_ByteTextBuf sListItems;
-
- if (m_pList)
- {
- CPDF_Rect rcPlate = m_pList->GetPlateRect();
- for (int32_t i=0,sz=m_pList->GetCount(); i<sz; i++)
- {
- CPDF_Rect rcItem = m_pList->GetItemRect(i);
-
- if (rcItem.bottom > rcPlate.top || rcItem.top < rcPlate.bottom) continue;
-
- CPDF_Point ptOffset(rcItem.left, (rcItem.top + rcItem.bottom) * 0.5f);
- if (m_pList->IsItemSelected(i))
- {
- sListItems << CPWL_Utils::GetRectFillAppStream(rcItem,PWL_DEFAULT_SELBACKCOLOR);
- CFX_ByteString sItem = CPWL_Utils::GetEditAppStream(m_pList->GetItemEdit(i), ptOffset);
- if (sItem.GetLength() > 0)
- {
- sListItems << "BT\n" << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELTEXTCOLOR) << sItem << "ET\n";
- }
- }
- else
- {
- CFX_ByteString sItem = CPWL_Utils::GetEditAppStream(m_pList->GetItemEdit(i), ptOffset);
- if (sItem.GetLength() > 0)
- {
- sListItems << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sItem << "ET\n";
- }
- }
- }
- }
-
- if (sListItems.GetLength() > 0)
- {
- CFX_ByteTextBuf sClip;
- CPDF_Rect rcClient = GetClientRect();
-
- sClip << "q\n";
- sClip << rcClient.left << " " << rcClient.bottom << " "
- << rcClient.right - rcClient.left << " " << rcClient.top - rcClient.bottom << " re W n\n";
-
- sClip << sListItems << "Q\n";
-
- sAppStream << "/Tx BMC\n" << sClip << "EMC\n";
- }
-}
-
-void CPWL_ListBox::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
-
- if (m_pList)
- {
- CPDF_Rect rcPlate = m_pList->GetPlateRect();
- CPDF_Rect rcList = GetListRect();
- CPDF_Rect rcClient = GetClientRect();
-
- for (int32_t i=0,sz=m_pList->GetCount(); i<sz; i++)
- {
- CPDF_Rect rcItem = m_pList->GetItemRect(i);
- if (rcItem.bottom > rcPlate.top || rcItem.top < rcPlate.bottom) continue;
-
- CPDF_Point ptOffset(rcItem.left, (rcItem.top + rcItem.bottom) * 0.5f);
- if (IFX_Edit* pEdit = m_pList->GetItemEdit(i))
- {
- CPDF_Rect rcContent = pEdit->GetContentRect();
- if (rcContent.Width() > rcClient.Width())
- rcItem.Intersect(rcList);
- else
- rcItem.Intersect(rcClient);
- }
-
- if (m_pList->IsItemSelected(i))
- {
- // CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcItem, ArgbEncode(255,0,51,113));
- IFX_SystemHandler* pSysHandler = GetSystemHandler();
- if(pSysHandler && pSysHandler->IsSelectionImplemented())
- {
- IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pList->GetItemEdit(i), CPWL_Utils::PWLColorToFXColor(GetTextColor()), CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor()),
- rcList, ptOffset, NULL,pSysHandler, m_pFormFiller);
- pSysHandler->OutputSelectedRect(m_pFormFiller, rcItem);
- }
- else
- {
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcItem, ArgbEncode(255,0,51,113));
- IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pList->GetItemEdit(i), ArgbEncode(255,255,255,255), 0,
- rcList, ptOffset, NULL, pSysHandler, m_pFormFiller);
- }
- }
- else
- {
- IFX_SystemHandler* pSysHandler = GetSystemHandler();
- IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pList->GetItemEdit(i),
- CPWL_Utils::PWLColorToFXColor(GetTextColor()),
- CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor()),
- rcList, ptOffset, NULL,pSysHandler, NULL);
-
- }
- }
- }
-}
-
-FX_BOOL CPWL_ListBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnKeyDown(nChar, nFlag);
-
- if (!m_pList) return FALSE;
-
- switch (nChar)
- {
- default:
- return FALSE;
- case FWL_VKEY_Up:
- case FWL_VKEY_Down:
- case FWL_VKEY_Home:
- case FWL_VKEY_Left:
- case FWL_VKEY_End:
- case FWL_VKEY_Right:
- break;
- }
-
- switch (nChar)
- {
- case FWL_VKEY_Up:
- m_pList->OnVK_UP(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_Down:
- m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_Home:
- m_pList->OnVK_HOME(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_Left:
- m_pList->OnVK_LEFT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_End:
- m_pList->OnVK_END(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_Right:
- m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- break;
- case FWL_VKEY_Delete:
- break;
- }
-
- FX_BOOL bExit = FALSE;
- OnNotifySelChanged(TRUE,bExit,nFlag);
-
- return TRUE;
-}
-
-FX_BOOL CPWL_ListBox::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnChar(nChar,nFlag);
-
- if (!m_pList) return FALSE;
-
- if (!m_pList->OnChar(nChar,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag))) return FALSE;
-
- FX_BOOL bExit = FALSE;
- OnNotifySelChanged(TRUE,bExit, nFlag);
-
- return TRUE;
-}
-
-FX_BOOL CPWL_ListBox::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
-
- if (ClientHitTest(point))
- {
- m_bMouseDown = TRUE;
- SetFocus();
- SetCapture();
-
- if (m_pList)
- m_pList->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
-
- return TRUE;
-}
-
-FX_BOOL CPWL_ListBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point,nFlag);
-
- if (m_bMouseDown)
- {
- ReleaseCapture();
- m_bMouseDown = FALSE;
- }
-
- FX_BOOL bExit = FALSE;
- OnNotifySelChanged(FALSE,bExit,nFlag);
-
- return TRUE;
-}
-
-void CPWL_ListBox::SetHoverSel(FX_BOOL bHoverSel)
-{
- m_bHoverSel = bHoverSel;
-}
-
-FX_BOOL CPWL_ListBox::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnMouseMove(point, nFlag);
-
- if (m_bHoverSel && !IsCaptureMouse() && ClientHitTest(point))
- {
- if (m_pList)
- m_pList->Select(m_pList->GetItemIndex(point));
- }
-
- if (m_bMouseDown)
- {
- if (m_pList)
- m_pList->OnMouseMove(point,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
-
- return TRUE;
-}
-
-void CPWL_ListBox::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam);
-
- FX_FLOAT fPos;
-
- switch (msg)
- {
- case PNM_SETSCROLLINFO:
- switch (wParam)
- {
- case SBT_VSCROLL:
- if (CPWL_Wnd * pChild = GetVScrollBar())
- {
- pChild->OnNotify(pWnd,PNM_SETSCROLLINFO,wParam,lParam);
- }
- break;
- }
- break;
- case PNM_SETSCROLLPOS:
- switch (wParam)
- {
- case SBT_VSCROLL:
- if (CPWL_Wnd * pChild = GetVScrollBar())
- {
- pChild->OnNotify(pWnd,PNM_SETSCROLLPOS,wParam,lParam);
- }
- break;
- }
- break;
- case PNM_SCROLLWINDOW:
- fPos = *(FX_FLOAT*)lParam;
- switch (wParam)
- {
- case SBT_VSCROLL:
- if (m_pList)
- m_pList->SetScrollPos(CPDF_Point(0,fPos));
- break;
- }
- break;
- }
+void CPWL_ListBox::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+
+ FX_FLOAT fPos;
+
+ switch (msg) {
+ case PNM_SETSCROLLINFO:
+ switch (wParam) {
+ case SBT_VSCROLL:
+ if (CPWL_Wnd* pChild = GetVScrollBar()) {
+ pChild->OnNotify(pWnd, PNM_SETSCROLLINFO, wParam, lParam);
+ }
+ break;
+ }
+ break;
+ case PNM_SETSCROLLPOS:
+ switch (wParam) {
+ case SBT_VSCROLL:
+ if (CPWL_Wnd* pChild = GetVScrollBar()) {
+ pChild->OnNotify(pWnd, PNM_SETSCROLLPOS, wParam, lParam);
+ }
+ break;
+ }
+ break;
+ case PNM_SCROLLWINDOW:
+ fPos = *(FX_FLOAT*)lParam;
+ switch (wParam) {
+ case SBT_VSCROLL:
+ if (m_pList)
+ m_pList->SetScrollPos(CPDF_Point(0, fPos));
+ break;
+ }
+ break;
+ }
}
-void CPWL_ListBox::KillFocus()
-{
- CPWL_Wnd::KillFocus();
+void CPWL_ListBox::KillFocus() {
+ CPWL_Wnd::KillFocus();
}
-void CPWL_ListBox::RePosChildWnd()
-{
- CPWL_Wnd::RePosChildWnd();
+void CPWL_ListBox::RePosChildWnd() {
+ CPWL_Wnd::RePosChildWnd();
- if (m_pList)
- m_pList->SetPlateRect(GetListRect());
+ if (m_pList)
+ m_pList->SetPlateRect(GetListRect());
}
-void CPWL_ListBox::OnNotifySelChanged(FX_BOOL bKeyDown, FX_BOOL & bExit, FX_DWORD nFlag)
-{
- if (m_pFillerNotify)
- {
- FX_BOOL bRC = TRUE;
- CFX_WideString swChange = GetText();
- CFX_WideString strChangeEx;
- int nSelStart = 0;
- int nSelEnd = swChange.GetLength();
- m_pFillerNotify->OnBeforeKeyStroke(FALSE, GetAttachedData(), 0, swChange, strChangeEx, nSelStart, nSelEnd, bKeyDown, bRC, bExit, nFlag);
- if (bExit) return;
+void CPWL_ListBox::OnNotifySelChanged(FX_BOOL bKeyDown,
+ FX_BOOL& bExit,
+ FX_DWORD nFlag) {
+ if (m_pFillerNotify) {
+ FX_BOOL bRC = TRUE;
+ CFX_WideString swChange = GetText();
+ CFX_WideString strChangeEx;
+ int nSelStart = 0;
+ int nSelEnd = swChange.GetLength();
+ m_pFillerNotify->OnBeforeKeyStroke(FALSE, GetAttachedData(), 0, swChange,
+ strChangeEx, nSelStart, nSelEnd,
+ bKeyDown, bRC, bExit, nFlag);
+ if (bExit)
+ return;
- m_pFillerNotify->OnAfterKeyStroke(FALSE, GetAttachedData(), bExit,nFlag);
- }
+ m_pFillerNotify->OnAfterKeyStroke(FALSE, GetAttachedData(), bExit, nFlag);
+ }
}
-CPDF_Rect CPWL_ListBox::GetFocusRect() const
-{
- if (m_pList && m_pList->IsMultipleSel())
- {
- CPDF_Rect rcCaret = m_pList->GetItemRect(m_pList->GetCaret());
- rcCaret.Intersect(GetClientRect());
- return rcCaret;
- }
+CPDF_Rect CPWL_ListBox::GetFocusRect() const {
+ if (m_pList && m_pList->IsMultipleSel()) {
+ CPDF_Rect rcCaret = m_pList->GetItemRect(m_pList->GetCaret());
+ rcCaret.Intersect(GetClientRect());
+ return rcCaret;
+ }
- return CPWL_Wnd::GetFocusRect();
+ return CPWL_Wnd::GetFocusRect();
}
-void CPWL_ListBox::AddString(const FX_WCHAR* string)
-{
- if (m_pList)
- {
- m_pList->AddString(string);
- }
+void CPWL_ListBox::AddString(const FX_WCHAR* string) {
+ if (m_pList) {
+ m_pList->AddString(string);
+ }
}
-CFX_WideString CPWL_ListBox::GetText() const
-{
- if (m_pList)
- return m_pList->GetText();
+CFX_WideString CPWL_ListBox::GetText() const {
+ if (m_pList)
+ return m_pList->GetText();
- return L"";
+ return L"";
}
-void CPWL_ListBox::SetFontSize(FX_FLOAT fFontSize)
-{
- if (m_pList)
- m_pList->SetFontSize(fFontSize);
+void CPWL_ListBox::SetFontSize(FX_FLOAT fFontSize) {
+ if (m_pList)
+ m_pList->SetFontSize(fFontSize);
}
-FX_FLOAT CPWL_ListBox::GetFontSize() const
-{
- if (m_pList)
- return m_pList->GetFontSize();
- return 0.0f;
+FX_FLOAT CPWL_ListBox::GetFontSize() const {
+ if (m_pList)
+ return m_pList->GetFontSize();
+ return 0.0f;
}
-void CPWL_ListBox::Select(int32_t nItemIndex)
-{
- if (m_pList)
- m_pList->Select(nItemIndex);
+void CPWL_ListBox::Select(int32_t nItemIndex) {
+ if (m_pList)
+ m_pList->Select(nItemIndex);
}
-void CPWL_ListBox::SetCaret(int32_t nItemIndex)
-{
- if (m_pList)
- m_pList->SetCaret(nItemIndex);
+void CPWL_ListBox::SetCaret(int32_t nItemIndex) {
+ if (m_pList)
+ m_pList->SetCaret(nItemIndex);
}
-void CPWL_ListBox::SetTopVisibleIndex(int32_t nItemIndex)
-{
- if (m_pList)
- m_pList->SetTopItem(nItemIndex);
+void CPWL_ListBox::SetTopVisibleIndex(int32_t nItemIndex) {
+ if (m_pList)
+ m_pList->SetTopItem(nItemIndex);
}
-void CPWL_ListBox::ScrollToListItem(int32_t nItemIndex)
-{
- if (m_pList)
- m_pList->ScrollToListItem(nItemIndex);
+void CPWL_ListBox::ScrollToListItem(int32_t nItemIndex) {
+ if (m_pList)
+ m_pList->ScrollToListItem(nItemIndex);
}
-void CPWL_ListBox::ResetContent()
-{
- if (m_pList)
- m_pList->Empty();
+void CPWL_ListBox::ResetContent() {
+ if (m_pList)
+ m_pList->Empty();
}
-void CPWL_ListBox::Reset()
-{
- if (m_pList)
- m_pList->Cancel();
+void CPWL_ListBox::Reset() {
+ if (m_pList)
+ m_pList->Cancel();
}
-FX_BOOL CPWL_ListBox::IsMultipleSel() const
-{
- if (m_pList)
- return m_pList->IsMultipleSel();
+FX_BOOL CPWL_ListBox::IsMultipleSel() const {
+ if (m_pList)
+ return m_pList->IsMultipleSel();
- return FALSE;
+ return FALSE;
}
-int32_t CPWL_ListBox::GetCaretIndex() const
-{
- if (m_pList)
- return m_pList->GetCaret();
+int32_t CPWL_ListBox::GetCaretIndex() const {
+ if (m_pList)
+ return m_pList->GetCaret();
- return -1;
+ return -1;
}
-int32_t CPWL_ListBox::GetCurSel() const
-{
- if (m_pList)
- return m_pList->GetSelect();
+int32_t CPWL_ListBox::GetCurSel() const {
+ if (m_pList)
+ return m_pList->GetSelect();
- return -1;
+ return -1;
}
-FX_BOOL CPWL_ListBox::IsItemSelected(int32_t nItemIndex) const
-{
- if (m_pList)
- return m_pList->IsItemSelected(nItemIndex);
+FX_BOOL CPWL_ListBox::IsItemSelected(int32_t nItemIndex) const {
+ if (m_pList)
+ return m_pList->IsItemSelected(nItemIndex);
- return FALSE;
+ return FALSE;
}
-int32_t CPWL_ListBox::GetTopVisibleIndex() const
-{
- if (m_pList)
- {
- m_pList->ScrollToListItem(m_pList->GetFirstSelected());
- return m_pList->GetTopItem();
- }
+int32_t CPWL_ListBox::GetTopVisibleIndex() const {
+ if (m_pList) {
+ m_pList->ScrollToListItem(m_pList->GetFirstSelected());
+ return m_pList->GetTopItem();
+ }
- return -1;
+ return -1;
}
-int32_t CPWL_ListBox::GetCount() const
-{
- if (m_pList)
- return m_pList->GetCount();
+int32_t CPWL_ListBox::GetCount() const {
+ if (m_pList)
+ return m_pList->GetCount();
- return 0;
+ return 0;
}
-int32_t CPWL_ListBox::FindNext(int32_t nIndex,FX_WCHAR nChar) const
-{
- if (m_pList)
- return m_pList->FindNext(nIndex,nChar);
+int32_t CPWL_ListBox::FindNext(int32_t nIndex, FX_WCHAR nChar) const {
+ if (m_pList)
+ return m_pList->FindNext(nIndex, nChar);
- return nIndex;
+ return nIndex;
}
-CPDF_Rect CPWL_ListBox::GetContentRect() const
-{
- if (m_pList)
- return m_pList->GetContentRect();
+CPDF_Rect CPWL_ListBox::GetContentRect() const {
+ if (m_pList)
+ return m_pList->GetContentRect();
- return CPDF_Rect();
+ return CPDF_Rect();
}
-FX_FLOAT CPWL_ListBox::GetFirstHeight() const
-{
- if (m_pList)
- return m_pList->GetFirstHeight();
+FX_FLOAT CPWL_ListBox::GetFirstHeight() const {
+ if (m_pList)
+ return m_pList->GetFirstHeight();
- return 0.0f;
+ return 0.0f;
}
-CPDF_Rect CPWL_ListBox::GetListRect() const
-{
- return CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth()));
+CPDF_Rect CPWL_ListBox::GetListRect() const {
+ return CPWL_Utils::DeflateRect(
+ GetWindowRect(), (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
}
-FX_BOOL CPWL_ListBox::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (!m_pList) return FALSE;
+FX_BOOL CPWL_ListBox::OnMouseWheel(short zDelta,
+ const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ if (!m_pList)
+ return FALSE;
- if (zDelta < 0)
- {
- m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
- else
- {
- m_pList->OnVK_UP(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag));
- }
+ if (zDelta < 0) {
+ m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ } else {
+ m_pList->OnVK_UP(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
+ }
- FX_BOOL bExit = FALSE;
- OnNotifySelChanged(FALSE,bExit, nFlag);
- return TRUE;
+ FX_BOOL bExit = FALSE;
+ OnNotifySelChanged(FALSE, bExit, nFlag);
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_ListCtrl.cpp b/fpdfsdk/src/pdfwindow/PWL_ListCtrl.cpp
index 3077e6293f..e01ce5c203 100644
--- a/fpdfsdk/src/pdfwindow/PWL_ListCtrl.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_ListCtrl.cpp
@@ -10,236 +10,199 @@
/* ---------------------------- CPWL_ListCtrl ---------------------------- */
-CPWL_ListCtrl::CPWL_ListCtrl() :
- m_rcContent(0,0,0,0),
- m_ptScroll(0,0),
- m_fItemSpace(0.0f),
- m_fTopSpace(0.0f),
- m_fBottomSpace(0.0f)
-{
-}
+CPWL_ListCtrl::CPWL_ListCtrl()
+ : m_rcContent(0, 0, 0, 0),
+ m_ptScroll(0, 0),
+ m_fItemSpace(0.0f),
+ m_fTopSpace(0.0f),
+ m_fBottomSpace(0.0f) {}
-CPWL_ListCtrl::~CPWL_ListCtrl()
-{
-}
+CPWL_ListCtrl::~CPWL_ListCtrl() {}
-void CPWL_ListCtrl::SetScrollPos(const CPDF_Point& point)
-{
- m_ptScroll = point;
+void CPWL_ListCtrl::SetScrollPos(const CPDF_Point& point) {
+ m_ptScroll = point;
- if (m_ptScroll.x < m_rcContent.left)
- m_ptScroll.x = m_rcContent.left;
+ if (m_ptScroll.x < m_rcContent.left)
+ m_ptScroll.x = m_rcContent.left;
- if (m_ptScroll.x > m_rcContent.right)
- m_ptScroll.x = m_rcContent.right;
+ if (m_ptScroll.x > m_rcContent.right)
+ m_ptScroll.x = m_rcContent.right;
- if (m_ptScroll.y > m_rcContent.top)
- m_ptScroll.y = m_rcContent.top;
+ if (m_ptScroll.y > m_rcContent.top)
+ m_ptScroll.y = m_rcContent.top;
- if (m_ptScroll.y < m_rcContent.bottom)
- m_ptScroll.y = m_rcContent.bottom;
+ if (m_ptScroll.y < m_rcContent.bottom)
+ m_ptScroll.y = m_rcContent.bottom;
}
-CPDF_Point CPWL_ListCtrl::GetScrollPos() const
-{
- return m_ptScroll;
+CPDF_Point CPWL_ListCtrl::GetScrollPos() const {
+ return m_ptScroll;
}
-CPDF_Rect CPWL_ListCtrl::GetScrollArea() const
-{
- return m_rcContent;
+CPDF_Rect CPWL_ListCtrl::GetScrollArea() const {
+ return m_rcContent;
}
-void CPWL_ListCtrl::ResetFace()
-{
- ResetAll(FALSE, 0);
+void CPWL_ListCtrl::ResetFace() {
+ ResetAll(FALSE, 0);
}
-void CPWL_ListCtrl::ResetContent(int32_t nStart)
-{
- if (nStart < 0)
- nStart = 0;
- if (nStart >= 0 && nStart < m_aChildren.GetSize())
- ResetAll(TRUE, nStart);
+void CPWL_ListCtrl::ResetContent(int32_t nStart) {
+ if (nStart < 0)
+ nStart = 0;
+ if (nStart >= 0 && nStart < m_aChildren.GetSize())
+ ResetAll(TRUE, nStart);
}
-FX_FLOAT CPWL_ListCtrl::GetContentsHeight(FX_FLOAT fLimitWidth)
-{
- FX_FLOAT fRet = m_fTopSpace;
+FX_FLOAT CPWL_ListCtrl::GetContentsHeight(FX_FLOAT fLimitWidth) {
+ FX_FLOAT fRet = m_fTopSpace;
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- if (fLimitWidth > fBorderWidth* 2)
- {
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- FX_FLOAT fLeft = pChild->GetItemLeftMargin();
- FX_FLOAT fRight = pChild->GetItemRightMargin();
+ if (fLimitWidth > fBorderWidth * 2) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ FX_FLOAT fLeft = pChild->GetItemLeftMargin();
+ FX_FLOAT fRight = pChild->GetItemRightMargin();
- fRet += pChild->GetItemHeight(fLimitWidth - fBorderWidth* 2 - fLeft - fRight);
- fRet += m_fItemSpace;
- }
- }
+ fRet += pChild->GetItemHeight(fLimitWidth - fBorderWidth * 2 - fLeft -
+ fRight);
+ fRet += m_fItemSpace;
+ }
+ }
- fRet -= m_fItemSpace;
- }
+ fRet -= m_fItemSpace;
+ }
- fRet += m_fBottomSpace;
+ fRet += m_fBottomSpace;
- return fRet;
+ return fRet;
}
-void CPWL_ListCtrl::ResetAll(FX_BOOL bMove, int32_t nStart)
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_ListCtrl::ResetAll(FX_BOOL bMove, int32_t nStart) {
+ CPDF_Rect rcClient = GetClientRect();
- FX_FLOAT fWidth = rcClient.Width();
+ FX_FLOAT fWidth = rcClient.Width();
- FX_FLOAT fy = 0.0f - m_fTopSpace;
+ FX_FLOAT fy = 0.0f - m_fTopSpace;
- if (nStart-1 >= 0 && nStart-1 < m_aChildren.GetSize())
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(nStart-1))
- fy = pChild->GetWindowRect().bottom - m_fItemSpace;
+ if (nStart - 1 >= 0 && nStart - 1 < m_aChildren.GetSize())
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(nStart - 1))
+ fy = pChild->GetWindowRect().bottom - m_fItemSpace;
- for (int32_t i=nStart,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- FX_FLOAT fLeft = pChild->GetItemLeftMargin();
- FX_FLOAT fRight = pChild->GetItemRightMargin();
+ for (int32_t i = nStart, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ FX_FLOAT fLeft = pChild->GetItemLeftMargin();
+ FX_FLOAT fRight = pChild->GetItemRightMargin();
- pChild->SetChildMatrix(
- CPDF_Matrix(1,0,0,1,
- rcClient.left - m_ptScroll.x,
- rcClient.top - m_ptScroll.y)
- );
+ pChild->SetChildMatrix(CPDF_Matrix(1, 0, 0, 1,
+ rcClient.left - m_ptScroll.x,
+ rcClient.top - m_ptScroll.y));
- if (bMove)
- {
- FX_FLOAT fItemHeight = pChild->GetItemHeight(fWidth - fLeft - fRight);
- pChild->Move(CPDF_Rect(fLeft, fy-fItemHeight, fWidth - fRight, fy), TRUE, FALSE);
- fy -= fItemHeight;
- fy -= m_fItemSpace;
- }
- }
- }
+ if (bMove) {
+ FX_FLOAT fItemHeight = pChild->GetItemHeight(fWidth - fLeft - fRight);
+ pChild->Move(CPDF_Rect(fLeft, fy - fItemHeight, fWidth - fRight, fy),
+ TRUE, FALSE);
+ fy -= fItemHeight;
+ fy -= m_fItemSpace;
+ }
+ }
+ }
- fy += m_fItemSpace;
+ fy += m_fItemSpace;
- fy -= m_fBottomSpace;
+ fy -= m_fBottomSpace;
- if (bMove)
- {
- m_rcContent.left = 0;
- m_rcContent.top = 0;
- m_rcContent.right = fWidth;
- m_rcContent.bottom = fy;
- }
+ if (bMove) {
+ m_rcContent.left = 0;
+ m_rcContent.top = 0;
+ m_rcContent.right = fWidth;
+ m_rcContent.bottom = fy;
+ }
}
-void CPWL_ListCtrl::SetItemSpace(FX_FLOAT fSpace)
-{
- m_fItemSpace = fSpace;
+void CPWL_ListCtrl::SetItemSpace(FX_FLOAT fSpace) {
+ m_fItemSpace = fSpace;
}
-void CPWL_ListCtrl::SetTopSpace(FX_FLOAT fSpace)
-{
- m_fTopSpace = fSpace;
+void CPWL_ListCtrl::SetTopSpace(FX_FLOAT fSpace) {
+ m_fTopSpace = fSpace;
}
-void CPWL_ListCtrl::SetBottomSpace(FX_FLOAT fSpace)
-{
- m_fBottomSpace = fSpace;
+void CPWL_ListCtrl::SetBottomSpace(FX_FLOAT fSpace) {
+ m_fBottomSpace = fSpace;
}
-void CPWL_ListCtrl::RePosChildWnd()
-{
- ResetFace();
+void CPWL_ListCtrl::RePosChildWnd() {
+ ResetFace();
}
-void CPWL_ListCtrl::DrawChildAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- pDevice->SaveState();
- CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcTemp = rcClient;
- pUser2Device->TransformRect(rcTemp);
- FX_RECT rcClip((int32_t)rcTemp.left,
- (int32_t)rcTemp.bottom,
- (int32_t)rcTemp.right,
- (int32_t)rcTemp.top);
+void CPWL_ListCtrl::DrawChildAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ pDevice->SaveState();
+ CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcTemp = rcClient;
+ pUser2Device->TransformRect(rcTemp);
+ FX_RECT rcClip((int32_t)rcTemp.left, (int32_t)rcTemp.bottom,
+ (int32_t)rcTemp.right, (int32_t)rcTemp.top);
- pDevice->SetClip_Rect(&rcClip);
+ pDevice->SetClip_Rect(&rcClip);
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- CPDF_Rect rcChild = pChild->ChildToParent(pChild->GetWindowRect());
- if (!(rcChild.top < rcClient.bottom || rcChild.bottom > rcClient.top))
- {
- CPDF_Matrix mt = pChild->GetChildMatrix();
- if (mt.IsIdentity())
- {
- pChild->DrawAppearance(pDevice,pUser2Device);
- }
- else
- {
- mt.Concat(*pUser2Device);
- pChild->DrawAppearance(pDevice,&mt);
- }
- }
- }
- }
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ CPDF_Rect rcChild = pChild->ChildToParent(pChild->GetWindowRect());
+ if (!(rcChild.top < rcClient.bottom || rcChild.bottom > rcClient.top)) {
+ CPDF_Matrix mt = pChild->GetChildMatrix();
+ if (mt.IsIdentity()) {
+ pChild->DrawAppearance(pDevice, pUser2Device);
+ } else {
+ mt.Concat(*pUser2Device);
+ pChild->DrawAppearance(pDevice, &mt);
+ }
+ }
+ }
+ }
- pDevice->RestoreState();
+ pDevice->RestoreState();
}
-int32_t CPWL_ListCtrl::GetItemIndex(CPWL_Wnd* pItem)
-{
- for (int32_t i=0, sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (pItem == m_aChildren.GetAt(i))
- return i;
- }
+int32_t CPWL_ListCtrl::GetItemIndex(CPWL_Wnd* pItem) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (pItem == m_aChildren.GetAt(i))
+ return i;
+ }
- return -1;
+ return -1;
}
-CPDF_Point CPWL_ListCtrl::InToOut(const CPDF_Point& point) const
-{
- CPDF_Rect rcClient = GetClientRect();
+CPDF_Point CPWL_ListCtrl::InToOut(const CPDF_Point& point) const {
+ CPDF_Rect rcClient = GetClientRect();
- return CPDF_Point(point.x + rcClient.left - m_ptScroll.x,
- point.y + rcClient.top - m_ptScroll.y);
+ return CPDF_Point(point.x + rcClient.left - m_ptScroll.x,
+ point.y + rcClient.top - m_ptScroll.y);
}
-CPDF_Point CPWL_ListCtrl::OutToIn(const CPDF_Point& point) const
-{
- CPDF_Rect rcClient = GetClientRect();
+CPDF_Point CPWL_ListCtrl::OutToIn(const CPDF_Point& point) const {
+ CPDF_Rect rcClient = GetClientRect();
- return CPDF_Point(point.x - rcClient.left + m_ptScroll.x,
- point.y - rcClient.top + m_ptScroll.y);
+ return CPDF_Point(point.x - rcClient.left + m_ptScroll.x,
+ point.y - rcClient.top + m_ptScroll.y);
}
-CPDF_Rect CPWL_ListCtrl::InToOut(const CPDF_Rect& rect) const
-{
- CPDF_Rect rcClient = GetClientRect();
+CPDF_Rect CPWL_ListCtrl::InToOut(const CPDF_Rect& rect) const {
+ CPDF_Rect rcClient = GetClientRect();
- return CPDF_Rect(rect.left + rcClient.left - m_ptScroll.x,
- rect.bottom + rcClient.top - m_ptScroll.y,
- rect.right + rcClient.left - m_ptScroll.x,
- rect.top + rcClient.top - m_ptScroll.y);
+ return CPDF_Rect(rect.left + rcClient.left - m_ptScroll.x,
+ rect.bottom + rcClient.top - m_ptScroll.y,
+ rect.right + rcClient.left - m_ptScroll.x,
+ rect.top + rcClient.top - m_ptScroll.y);
}
-CPDF_Rect CPWL_ListCtrl::OutToIn(const CPDF_Rect& rect) const
-{
- CPDF_Rect rcClient = GetClientRect();
+CPDF_Rect CPWL_ListCtrl::OutToIn(const CPDF_Rect& rect) const {
+ CPDF_Rect rcClient = GetClientRect();
- return CPDF_Rect(rect.left - rcClient.left + m_ptScroll.x,
- rect.bottom - rcClient.top + m_ptScroll.y,
- rect.right - rcClient.left + m_ptScroll.x,
- rect.top - rcClient.top + m_ptScroll.y);
+ return CPDF_Rect(rect.left - rcClient.left + m_ptScroll.x,
+ rect.bottom - rcClient.top + m_ptScroll.y,
+ rect.right - rcClient.left + m_ptScroll.x,
+ rect.top - rcClient.top + m_ptScroll.y);
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_Note.cpp b/fpdfsdk/src/pdfwindow/PWL_Note.cpp
index 7ed1115a82..6b05dde3b8 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Note.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Note.cpp
@@ -18,1753 +18,1598 @@
#include "../../include/pdfwindow/PWL_Utils.h"
#include "../../include/pdfwindow/PWL_Caret.h"
-#define POPUP_ITEM_HEAD_BOTTOM 3.0f
-#define POPUP_ITEM_BOTTOMWIDTH 1.0f
-#define POPUP_ITEM_SIDEMARGIN 3.0f
-#define POPUP_ITEM_SPACE 4.0f
-#define POPUP_ITEM_TEXT_INDENT 2.0f
-#define POPUP_ITEM_BORDERCOLOR CPWL_Color(COLORTYPE_RGB, 80/255.0f, 80/255.0f, 80/255.0f)
+#define POPUP_ITEM_HEAD_BOTTOM 3.0f
+#define POPUP_ITEM_BOTTOMWIDTH 1.0f
+#define POPUP_ITEM_SIDEMARGIN 3.0f
+#define POPUP_ITEM_SPACE 4.0f
+#define POPUP_ITEM_TEXT_INDENT 2.0f
+#define POPUP_ITEM_BORDERCOLOR \
+ CPWL_Color(COLORTYPE_RGB, 80 / 255.0f, 80 / 255.0f, 80 / 255.0f)
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
+/* ------------------------------- CPWL_Note_Options
+ * ------------------------------- */
-/* ------------------------------- CPWL_Note_Options ------------------------------- */
+CPWL_Note_Options::CPWL_Note_Options() : m_pText(NULL) {}
-CPWL_Note_Options::CPWL_Note_Options() : m_pText(NULL)
-{
-}
-
-CPWL_Note_Options::~CPWL_Note_Options()
-{
-}
+CPWL_Note_Options::~CPWL_Note_Options() {}
-void CPWL_Note_Options::SetTextColor(const CPWL_Color & color)
-{
- CPWL_Wnd::SetTextColor(color);
+void CPWL_Note_Options::SetTextColor(const CPWL_Color& color) {
+ CPWL_Wnd::SetTextColor(color);
- if (m_pText)
- m_pText->SetTextColor(color);
+ if (m_pText)
+ m_pText->SetTextColor(color);
}
-void CPWL_Note_Options::RePosChildWnd()
-{
- if (IsValid())
- {
- ASSERT(m_pText != NULL);
+void CPWL_Note_Options::RePosChildWnd() {
+ if (IsValid()) {
+ ASSERT(m_pText != NULL);
- CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcClient = GetClientRect();
- if (rcClient.Width() > 15.0f)
- {
- rcClient.right -= 15.0f;
- m_pText->Move(rcClient, TRUE, FALSE);
- m_pText->SetVisible(TRUE);
- }
- else
- {
- m_pText->Move(CPDF_Rect(0,0,0,0), TRUE, FALSE);
- m_pText->SetVisible(FALSE);
- }
- }
+ if (rcClient.Width() > 15.0f) {
+ rcClient.right -= 15.0f;
+ m_pText->Move(rcClient, TRUE, FALSE);
+ m_pText->SetVisible(TRUE);
+ } else {
+ m_pText->Move(CPDF_Rect(0, 0, 0, 0), TRUE, FALSE);
+ m_pText->SetVisible(FALSE);
+ }
+ }
}
-void CPWL_Note_Options::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- m_pText = new CPWL_Label;
- PWL_CREATEPARAM tcp = cp;
- tcp.pParentWnd = this;
- tcp.dwFlags = PWS_CHILD | PWS_VISIBLE;
- m_pText->Create(tcp);
+void CPWL_Note_Options::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ m_pText = new CPWL_Label;
+ PWL_CREATEPARAM tcp = cp;
+ tcp.pParentWnd = this;
+ tcp.dwFlags = PWS_CHILD | PWS_VISIBLE;
+ m_pText->Create(tcp);
}
-void CPWL_Note_Options::SetText(const CFX_WideString& sText)
-{
- m_pText->SetText(sText.c_str());
+void CPWL_Note_Options::SetText(const CFX_WideString& sText) {
+ m_pText->SetText(sText.c_str());
}
-void CPWL_Note_Options::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+void CPWL_Note_Options::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
- CPDF_Rect rcClient = GetClientRect();
- rcClient.left = rcClient.right - 15.0f;
+ CPDF_Rect rcClient = GetClientRect();
+ rcClient.left = rcClient.right - 15.0f;
- CPDF_Point ptCenter = CPDF_Point((rcClient.left + rcClient.right) * 0.5f, (rcClient.top + rcClient.bottom) * 0.5f);
+ CPDF_Point ptCenter = CPDF_Point((rcClient.left + rcClient.right) * 0.5f,
+ (rcClient.top + rcClient.bottom) * 0.5f);
- CPDF_Point pt1(ptCenter.x - 2.0f, ptCenter.y + 2.0f * 0.5f);
- CPDF_Point pt2(ptCenter.x + 2.0f, ptCenter.y + 2.0f * 0.5f);
- CPDF_Point pt3(ptCenter.x, ptCenter.y - 3.0f * 0.5f);
+ CPDF_Point pt1(ptCenter.x - 2.0f, ptCenter.y + 2.0f * 0.5f);
+ CPDF_Point pt2(ptCenter.x + 2.0f, ptCenter.y + 2.0f * 0.5f);
+ CPDF_Point pt3(ptCenter.x, ptCenter.y - 3.0f * 0.5f);
- CFX_PathData path;
+ CFX_PathData path;
- path.SetPointCount(4);
- path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
- path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
- path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
- path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
+ path.SetPointCount(4);
+ path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
+ path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
+ path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
+ path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
- pDevice->DrawPath(&path, pUser2Device, NULL,
- CPWL_Utils::PWLColorToFXColor(GetTextColor(),GetTransparency()),
- 0, FXFILL_ALTERNATE);
+ pDevice->DrawPath(
+ &path, pUser2Device, NULL,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), 0,
+ FXFILL_ALTERNATE);
}
-CPDF_Rect CPWL_Note_Options::GetContentRect() const
-{
- ASSERT(m_pText != NULL);
+CPDF_Rect CPWL_Note_Options::GetContentRect() const {
+ ASSERT(m_pText != NULL);
- CPDF_Rect rcText = m_pText->GetContentRect();
- rcText.right += 15.0f;
- return rcText;
+ CPDF_Rect rcText = m_pText->GetContentRect();
+ rcText.right += 15.0f;
+ return rcText;
}
-/* ------------------------------- CPWL_Note_Edit ------------------------------ */
+/* ------------------------------- CPWL_Note_Edit ------------------------------
+ */
-CPWL_Note_Edit::CPWL_Note_Edit() : m_bEnableNotify(TRUE),
- m_fOldItemHeight(0.0f),
- m_bSizeChanged(FALSE),
- m_fOldMin(0.0f),
- m_fOldMax(0.0f)
-{
-}
+CPWL_Note_Edit::CPWL_Note_Edit()
+ : m_bEnableNotify(TRUE),
+ m_fOldItemHeight(0.0f),
+ m_bSizeChanged(FALSE),
+ m_fOldMin(0.0f),
+ m_fOldMax(0.0f) {}
-CPWL_Note_Edit::~CPWL_Note_Edit()
-{
+CPWL_Note_Edit::~CPWL_Note_Edit() {}
+
+void CPWL_Note_Edit::RePosChildWnd() {
+ m_bEnableNotify = FALSE;
+ CPWL_Edit::RePosChildWnd();
+ m_bEnableNotify = TRUE;
+
+ m_fOldItemHeight = GetContentRect().Height();
}
-void CPWL_Note_Edit::RePosChildWnd()
-{
- m_bEnableNotify = FALSE;
- CPWL_Edit::RePosChildWnd();
- m_bEnableNotify = TRUE;
+void CPWL_Note_Edit::SetText(const FX_WCHAR* csText) {
+ m_bEnableNotify = FALSE;
+ CPWL_Edit::SetText(csText);
+ m_bEnableNotify = TRUE;
+ m_fOldItemHeight = GetContentRect().Height();
+}
- m_fOldItemHeight = GetContentRect().Height();
-}
-
-void CPWL_Note_Edit::SetText(const FX_WCHAR* csText)
-{
- m_bEnableNotify = FALSE;
- CPWL_Edit::SetText(csText);
- m_bEnableNotify = TRUE;
- m_fOldItemHeight = GetContentRect().Height();
-}
-
-void CPWL_Note_Edit::OnSetFocus()
-{
- m_bEnableNotify = FALSE;
- CPWL_Edit::OnSetFocus();
- m_bEnableNotify = TRUE;
+void CPWL_Note_Edit::OnSetFocus() {
+ m_bEnableNotify = FALSE;
+ CPWL_Edit::OnSetFocus();
+ m_bEnableNotify = TRUE;
- EnableSpellCheck(TRUE);
+ EnableSpellCheck(TRUE);
}
-void CPWL_Note_Edit::OnKillFocus()
-{
- EnableSpellCheck(FALSE);
+void CPWL_Note_Edit::OnKillFocus() {
+ EnableSpellCheck(FALSE);
- if (CPWL_Wnd* pParent = GetParentWindow())
- {
- if (CPWL_Wnd* pGrand = pParent->GetParentWindow())
- {
- ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ if (CPWL_Wnd* pGrand = pParent->GetParentWindow()) {
+ ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
- CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pGrand;
+ CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pGrand;
- pNoteItem->OnContentsValidate();
- }
- }
+ pNoteItem->OnContentsValidate();
+ }
+ }
- CPWL_Edit::OnKillFocus();
+ CPWL_Edit::OnKillFocus();
}
-void CPWL_Note_Edit::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- if (m_bEnableNotify)
- {
- if (wParam == SBT_VSCROLL)
- {
- switch (msg)
- {
- case PNM_SETSCROLLINFO:
- if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam)
- {
- if (!IsFloatEqual(pInfo->fContentMax, m_fOldMax) ||
- !IsFloatEqual(pInfo->fContentMin, m_fOldMin))
- {
- m_bSizeChanged = TRUE;
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
- }
+void CPWL_Note_Edit::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ if (m_bEnableNotify) {
+ if (wParam == SBT_VSCROLL) {
+ switch (msg) {
+ case PNM_SETSCROLLINFO:
+ if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam) {
+ if (!IsFloatEqual(pInfo->fContentMax, m_fOldMax) ||
+ !IsFloatEqual(pInfo->fContentMin, m_fOldMin)) {
+ m_bSizeChanged = TRUE;
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
+ }
- m_fOldMax = pInfo->fContentMax;
- m_fOldMin = pInfo->fContentMin;
- return;
- }
- }
- }
- }
- }
+ m_fOldMax = pInfo->fContentMax;
+ m_fOldMin = pInfo->fContentMin;
+ return;
+ }
+ }
+ }
+ }
+ }
- CPWL_Edit::OnNotify(pWnd, msg, wParam, lParam);
+ CPWL_Edit::OnNotify(pWnd, msg, wParam, lParam);
- if (m_bEnableNotify)
- {
- switch (msg)
- {
- case PNM_SETCARETINFO:
- if (PWL_CARET_INFO * pInfo = (PWL_CARET_INFO*)wParam)
- {
- PWL_CARET_INFO newInfo = *pInfo;
- newInfo.bVisible = TRUE;
- newInfo.ptHead = ChildToParent(pInfo->ptHead);
- newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
+ if (m_bEnableNotify) {
+ switch (msg) {
+ case PNM_SETCARETINFO:
+ if (PWL_CARET_INFO* pInfo = (PWL_CARET_INFO*)wParam) {
+ PWL_CARET_INFO newInfo = *pInfo;
+ newInfo.bVisible = TRUE;
+ newInfo.ptHead = ChildToParent(pInfo->ptHead);
+ newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
- }
- }
- break;
- }
- }
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
+ }
+ }
+ break;
+ }
+ }
}
-FX_FLOAT CPWL_Note_Edit::GetItemHeight(FX_FLOAT fLimitWidth)
-{
- if (fLimitWidth > 0)
- {
- if (!m_bSizeChanged)
- return m_fOldItemHeight;
+FX_FLOAT CPWL_Note_Edit::GetItemHeight(FX_FLOAT fLimitWidth) {
+ if (fLimitWidth > 0) {
+ if (!m_bSizeChanged)
+ return m_fOldItemHeight;
- m_bSizeChanged = FALSE;
+ m_bSizeChanged = FALSE;
- EnableNotify(FALSE);
- EnableRefresh(FALSE);
- m_pEdit->EnableNotify(FALSE);
+ EnableNotify(FALSE);
+ EnableRefresh(FALSE);
+ m_pEdit->EnableNotify(FALSE);
- Move(CPDF_Rect(0,0,fLimitWidth,0), TRUE, FALSE);
- FX_FLOAT fRet = GetContentRect().Height();
+ Move(CPDF_Rect(0, 0, fLimitWidth, 0), TRUE, FALSE);
+ FX_FLOAT fRet = GetContentRect().Height();
- m_pEdit->EnableNotify(TRUE);
- EnableNotify(TRUE);
- EnableRefresh(TRUE);
+ m_pEdit->EnableNotify(TRUE);
+ EnableNotify(TRUE);
+ EnableRefresh(TRUE);
- return fRet;
- }
+ return fRet;
+ }
- return 0;
+ return 0;
}
-FX_FLOAT CPWL_Note_Edit::GetItemLeftMargin()
-{
- return POPUP_ITEM_TEXT_INDENT;
+FX_FLOAT CPWL_Note_Edit::GetItemLeftMargin() {
+ return POPUP_ITEM_TEXT_INDENT;
}
-FX_FLOAT CPWL_Note_Edit::GetItemRightMargin()
-{
- return POPUP_ITEM_TEXT_INDENT;
+FX_FLOAT CPWL_Note_Edit::GetItemRightMargin() {
+ return POPUP_ITEM_TEXT_INDENT;
}
-/* -------------------------------- CPWL_Note_LBBox --------------------------------*/
+/* -------------------------------- CPWL_Note_LBBox
+ * --------------------------------*/
-CPWL_Note_LBBox::CPWL_Note_LBBox()
-{
-}
+CPWL_Note_LBBox::CPWL_Note_LBBox() {}
-CPWL_Note_LBBox::~CPWL_Note_LBBox()
-{
-}
+CPWL_Note_LBBox::~CPWL_Note_LBBox() {}
-void CPWL_Note_LBBox::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_Note_LBBox::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPDF_Rect rcClient = GetClientRect();
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 1.0f;
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 1.0f;
- CFX_PathData pathCross;
+ CFX_PathData pathCross;
- pathCross.SetPointCount(4);
- pathCross.SetPoint(0, rcClient.left, rcClient.top, FXPT_MOVETO);
- pathCross.SetPoint(1, rcClient.right, rcClient.bottom, FXPT_LINETO);
- pathCross.SetPoint(2, rcClient.left, rcClient.bottom + rcClient.Height() * 0.5f, FXPT_MOVETO);
- pathCross.SetPoint(3, rcClient.left + rcClient.Width() * 0.5f, rcClient.bottom, FXPT_LINETO);
+ pathCross.SetPointCount(4);
+ pathCross.SetPoint(0, rcClient.left, rcClient.top, FXPT_MOVETO);
+ pathCross.SetPoint(1, rcClient.right, rcClient.bottom, FXPT_LINETO);
+ pathCross.SetPoint(2, rcClient.left,
+ rcClient.bottom + rcClient.Height() * 0.5f, FXPT_MOVETO);
+ pathCross.SetPoint(3, rcClient.left + rcClient.Width() * 0.5f,
+ rcClient.bottom, FXPT_LINETO);
- pDevice->DrawPath(&pathCross, pUser2Device, &gsd,
- 0, CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), FXFILL_ALTERNATE);
+ pDevice->DrawPath(
+ &pathCross, pUser2Device, &gsd, 0,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ FXFILL_ALTERNATE);
}
-/* -------------------------------- CPWL_Note_RBBox --------------------------------*/
+/* -------------------------------- CPWL_Note_RBBox
+ * --------------------------------*/
-CPWL_Note_RBBox::CPWL_Note_RBBox()
-{
-}
+CPWL_Note_RBBox::CPWL_Note_RBBox() {}
-CPWL_Note_RBBox::~CPWL_Note_RBBox()
-{
-}
+CPWL_Note_RBBox::~CPWL_Note_RBBox() {}
-void CPWL_Note_RBBox::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_Note_RBBox::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPDF_Rect rcClient = GetClientRect();
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 1.0f;
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 1.0f;
- CFX_PathData pathCross;
+ CFX_PathData pathCross;
- pathCross.SetPointCount(4);
- pathCross.SetPoint(0, rcClient.right, rcClient.top, FXPT_MOVETO);
- pathCross.SetPoint(1, rcClient.left, rcClient.bottom, FXPT_LINETO);
- pathCross.SetPoint(2, rcClient.right, rcClient.bottom + rcClient.Height() * 0.5f, FXPT_MOVETO);
- pathCross.SetPoint(3, rcClient.left + rcClient.Width() * 0.5f, rcClient.bottom, FXPT_LINETO);
+ pathCross.SetPointCount(4);
+ pathCross.SetPoint(0, rcClient.right, rcClient.top, FXPT_MOVETO);
+ pathCross.SetPoint(1, rcClient.left, rcClient.bottom, FXPT_LINETO);
+ pathCross.SetPoint(2, rcClient.right,
+ rcClient.bottom + rcClient.Height() * 0.5f, FXPT_MOVETO);
+ pathCross.SetPoint(3, rcClient.left + rcClient.Width() * 0.5f,
+ rcClient.bottom, FXPT_LINETO);
- pDevice->DrawPath(&pathCross, pUser2Device, &gsd,
- 0, CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), FXFILL_ALTERNATE);
+ pDevice->DrawPath(
+ &pathCross, pUser2Device, &gsd, 0,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ FXFILL_ALTERNATE);
}
-/* --------------------------------- CPWL_Note_Icon ---------------------------------- */
+/* --------------------------------- CPWL_Note_Icon
+ * ---------------------------------- */
-CPWL_Note_Icon::CPWL_Note_Icon() : m_nType(0)
-{
-}
+CPWL_Note_Icon::CPWL_Note_Icon() : m_nType(0) {}
-CPWL_Note_Icon::~CPWL_Note_Icon()
-{
-}
+CPWL_Note_Icon::~CPWL_Note_Icon() {}
-void CPWL_Note_Icon::SetIconType(int32_t nType)
-{
- m_nType = nType;
+void CPWL_Note_Icon::SetIconType(int32_t nType) {
+ m_nType = nType;
}
-void CPWL_Note_Icon::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Utils::DrawIconAppStream(pDevice, pUser2Device, m_nType, GetClientRect(),
- GetBackgroundColor(), PWL_DEFAULT_BLACKCOLOR, GetTransparency());
+void CPWL_Note_Icon::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Utils::DrawIconAppStream(pDevice, pUser2Device, m_nType, GetClientRect(),
+ GetBackgroundColor(), PWL_DEFAULT_BLACKCOLOR,
+ GetTransparency());
}
-/* --------------------------------- CPWL_Note_CloseBox ---------------------------------- */
+/* --------------------------------- CPWL_Note_CloseBox
+ * ---------------------------------- */
-CPWL_Note_CloseBox::CPWL_Note_CloseBox() : m_bMouseDown(FALSE)
-{
-}
+CPWL_Note_CloseBox::CPWL_Note_CloseBox() : m_bMouseDown(FALSE) {}
-CPWL_Note_CloseBox::~CPWL_Note_CloseBox()
-{
-}
+CPWL_Note_CloseBox::~CPWL_Note_CloseBox() {}
-void CPWL_Note_CloseBox::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Button::DrawThisAppearance(pDevice, pUser2Device);
+void CPWL_Note_CloseBox::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Button::DrawThisAppearance(pDevice, pUser2Device);
- CPDF_Rect rcClient = GetClientRect();
- rcClient = CPWL_Utils::DeflateRect(rcClient, 2.0f);
+ CPDF_Rect rcClient = GetClientRect();
+ rcClient = CPWL_Utils::DeflateRect(rcClient, 2.0f);
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 1.0f;
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 1.0f;
- CFX_PathData pathCross;
+ CFX_PathData pathCross;
- if (m_bMouseDown)
- {
- rcClient.left += 0.5f;
- rcClient.right += 0.5f;
- rcClient.top -= 0.5f;
- rcClient.bottom -= 0.5f;
- }
+ if (m_bMouseDown) {
+ rcClient.left += 0.5f;
+ rcClient.right += 0.5f;
+ rcClient.top -= 0.5f;
+ rcClient.bottom -= 0.5f;
+ }
- pathCross.SetPointCount(4);
- pathCross.SetPoint(0, rcClient.left, rcClient.bottom, FXPT_MOVETO);
- pathCross.SetPoint(1, rcClient.right, rcClient.top, FXPT_LINETO);
- pathCross.SetPoint(2, rcClient.left, rcClient.top, FXPT_MOVETO);
- pathCross.SetPoint(3, rcClient.right, rcClient.bottom, FXPT_LINETO);
+ pathCross.SetPointCount(4);
+ pathCross.SetPoint(0, rcClient.left, rcClient.bottom, FXPT_MOVETO);
+ pathCross.SetPoint(1, rcClient.right, rcClient.top, FXPT_LINETO);
+ pathCross.SetPoint(2, rcClient.left, rcClient.top, FXPT_MOVETO);
+ pathCross.SetPoint(3, rcClient.right, rcClient.bottom, FXPT_LINETO);
- pDevice->DrawPath(&pathCross, pUser2Device, &gsd,
- 0, CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), FXFILL_ALTERNATE);
+ pDevice->DrawPath(
+ &pathCross, pUser2Device, &gsd, 0,
+ CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
+ FXFILL_ALTERNATE);
}
-FX_BOOL CPWL_Note_CloseBox::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- SetBorderStyle(PBS_INSET);
- InvalidateRect(NULL);
+FX_BOOL CPWL_Note_CloseBox::OnLButtonDown(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ SetBorderStyle(PBS_INSET);
+ InvalidateRect(NULL);
- m_bMouseDown = TRUE;
+ m_bMouseDown = TRUE;
- return CPWL_Button::OnLButtonDown(point,nFlag);
+ return CPWL_Button::OnLButtonDown(point, nFlag);
}
-FX_BOOL CPWL_Note_CloseBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- m_bMouseDown = FALSE;
+FX_BOOL CPWL_Note_CloseBox::OnLButtonUp(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ m_bMouseDown = FALSE;
- SetBorderStyle(PBS_BEVELED);
- InvalidateRect(NULL);
+ SetBorderStyle(PBS_BEVELED);
+ InvalidateRect(NULL);
- return CPWL_Button::OnLButtonUp(point,nFlag);
+ return CPWL_Button::OnLButtonUp(point, nFlag);
}
-/* ------------------------------ CPWL_Note_Contents ------------------------------- */
+/* ------------------------------ CPWL_Note_Contents
+ * ------------------------------- */
+
+CPWL_Note_Contents::CPWL_Note_Contents() : m_pEdit(NULL) {}
+
+CPWL_Note_Contents::~CPWL_Note_Contents() {}
-CPWL_Note_Contents::CPWL_Note_Contents() : m_pEdit(NULL)
-{
+CFX_ByteString CPWL_Note_Contents::GetClassName() const {
+ return "CPWL_Note_Contents";
}
-CPWL_Note_Contents::~CPWL_Note_Contents()
-{
+void CPWL_Note_Contents::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ m_pEdit = new CPWL_Note_Edit;
+ PWL_CREATEPARAM ecp = cp;
+ ecp.pParentWnd = this;
+ ecp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_MULTILINE | PES_AUTORETURN |
+ PES_TEXTOVERFLOW | PES_UNDO | PES_SPELLCHECK;
+
+ m_pEdit->EnableNotify(FALSE);
+ m_pEdit->Create(ecp);
+ m_pEdit->EnableNotify(TRUE);
}
-CFX_ByteString CPWL_Note_Contents::GetClassName() const
-{
- return "CPWL_Note_Contents";
+void CPWL_Note_Contents::SetText(const CFX_WideString& sText) {
+ if (m_pEdit) {
+ m_pEdit->EnableNotify(FALSE);
+ m_pEdit->SetText(sText.c_str());
+ m_pEdit->EnableNotify(TRUE);
+ OnNotify(m_pEdit, PNM_NOTEEDITCHANGED, 0, 0);
+ }
}
-void CPWL_Note_Contents::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- m_pEdit = new CPWL_Note_Edit;
- PWL_CREATEPARAM ecp = cp;
- ecp.pParentWnd = this;
- ecp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_MULTILINE | PES_AUTORETURN | PES_TEXTOVERFLOW | PES_UNDO | PES_SPELLCHECK;
+CFX_WideString CPWL_Note_Contents::GetText() const {
+ if (m_pEdit)
+ return m_pEdit->GetText();
+
+ return L"";
+}
+
+CPWL_NoteItem* CPWL_Note_Contents::CreateSubItem() {
+ CPWL_NoteItem* pNoteItem = new CPWL_NoteItem;
+ PWL_CREATEPARAM icp = GetCreationParam();
+ icp.pParentWnd = this;
+ icp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_BACKGROUND;
+ pNoteItem->Create(icp);
+
+ pNoteItem->OnCreateNoteItem();
+
+ pNoteItem->ResetSubjectName(m_aChildren.GetSize() - 1);
+
+ FX_SYSTEMTIME st;
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ st = pSH->GetLocalTime();
+ pNoteItem->SetDateTime(st);
+
+ pNoteItem->SetContents(L"");
+
+ OnNotify(pNoteItem, PNM_NOTEEDITCHANGED, 0, 0);
- m_pEdit->EnableNotify(FALSE);
- m_pEdit->Create(ecp);
- m_pEdit->EnableNotify(TRUE);
+ return pNoteItem;
}
-void CPWL_Note_Contents::SetText(const CFX_WideString& sText)
-{
- if (m_pEdit)
- {
- m_pEdit->EnableNotify(FALSE);
- m_pEdit->SetText(sText.c_str());
- m_pEdit->EnableNotify(TRUE);
- OnNotify(m_pEdit, PNM_NOTEEDITCHANGED, 0, 0);
- }
+int32_t CPWL_Note_Contents::CountSubItems() const {
+ return m_aChildren.GetSize() - 1;
}
-CFX_WideString CPWL_Note_Contents::GetText() const
-{
- if (m_pEdit)
- return m_pEdit->GetText();
+IPWL_NoteItem* CPWL_Note_Contents::GetSubItems(int32_t index) const {
+ int32_t nIndex = index + 1;
- return L"";
+ if (nIndex > 0 && nIndex < m_aChildren.GetSize())
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(nIndex)) {
+ ASSERT(pChild->GetClassName() == "CPWL_NoteItem");
+ CPWL_NoteItem* pItem = (CPWL_NoteItem*)pChild;
+ return pItem;
+ }
+ return NULL;
}
-CPWL_NoteItem* CPWL_Note_Contents::CreateSubItem()
-{
- CPWL_NoteItem* pNoteItem = new CPWL_NoteItem;
- PWL_CREATEPARAM icp = GetCreationParam();
- icp.pParentWnd = this;
- icp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_BACKGROUND;
- pNoteItem->Create(icp);
+void CPWL_Note_Contents::DeleteSubItem(IPWL_NoteItem* pNoteItem) {
+ int32_t nIndex = GetItemIndex((CPWL_NoteItem*)pNoteItem);
- pNoteItem->OnCreateNoteItem();
+ if (nIndex > 0) {
+ if (CPWL_NoteItem* pPWLNoteItem = (CPWL_NoteItem*)pNoteItem) {
+ pPWLNoteItem->KillFocus();
+ pPWLNoteItem->Destroy();
+ delete pPWLNoteItem;
+ }
- pNoteItem->ResetSubjectName(m_aChildren.GetSize() - 1);
+ for (int32_t i = nIndex, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ ASSERT(pChild->GetClassName() == "CPWL_NoteItem");
+ CPWL_NoteItem* pItem = (CPWL_NoteItem*)pChild;
+ pItem->ResetSubjectName(i);
+ }
+ }
- FX_SYSTEMTIME st;
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- st = pSH->GetLocalTime();
- pNoteItem->SetDateTime(st);
+ OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
+ }
+}
+
+IPWL_NoteItem* CPWL_Note_Contents::GetHitNoteItem(const CPDF_Point& point) {
+ CPDF_Point pt = ParentToChild(point);
- pNoteItem->SetContents(L"");
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (pChild->GetClassName() == "CPWL_NoteItem") {
+ CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
+ if (IPWL_NoteItem* pRet = pNoteItem->GetHitNoteItem(pt))
+ return pRet;
+ }
+ }
+ }
+ return NULL;
+}
+
+void CPWL_Note_Contents::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ switch (msg) {
+ case PNM_NOTEEDITCHANGED: {
+ int32_t nIndex = GetItemIndex(pWnd);
+ if (nIndex < 0)
+ nIndex = 0;
+
+ m_pEdit->EnableNotify(FALSE);
+ ResetContent(nIndex);
+ m_pEdit->EnableNotify(TRUE);
+
+ for (int32_t i = nIndex + 1, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
+ pChild->OnNotify(this, PNM_NOTERESET, 0, 0);
+ }
+
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
+ }
+ }
+ return;
+ case PNM_SCROLLWINDOW:
+ SetScrollPos(CPDF_Point(0.0f, *(FX_FLOAT*)lParam));
+ ResetFace();
+ InvalidateRect(NULL);
+ return;
+ case PNM_SETCARETINFO:
+ if (PWL_CARET_INFO* pInfo = (PWL_CARET_INFO*)wParam) {
+ PWL_CARET_INFO newInfo = *pInfo;
+ newInfo.bVisible = TRUE;
+ newInfo.ptHead = ChildToParent(pInfo->ptHead);
+ newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
+
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
+ }
+ }
+ return;
+ case PNM_NOTERESET: {
+ m_pEdit->EnableNotify(FALSE);
+ ResetContent(0);
+ m_pEdit->EnableNotify(TRUE);
+
+ for (int32_t i = 1, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
+ pChild->OnNotify(this, PNM_NOTERESET, 0, 0);
+ }
+
+ m_pEdit->EnableNotify(FALSE);
+ ResetContent(0);
+ m_pEdit->EnableNotify(TRUE);
+ }
+ return;
+ }
+
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+}
+
+FX_BOOL CPWL_Note_Contents::OnLButtonDown(const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ if (CPWL_Wnd::OnLButtonDown(point, nFlag))
+ return TRUE;
+
+ if (!m_pEdit->IsFocused()) {
+ m_pEdit->SetFocus();
+ }
+
+ return TRUE;
+}
+
+void CPWL_Note_Contents::SetEditFocus(FX_BOOL bLast) {
+ if (!m_pEdit->IsFocused()) {
+ m_pEdit->SetFocus();
+ m_pEdit->SetCaret(bLast ? m_pEdit->GetTotalWords() : 0);
+ }
+}
+
+CPWL_Edit* CPWL_Note_Contents::GetEdit() const {
+ return m_pEdit;
+}
+
+void CPWL_Note_Contents::EnableModify(FX_BOOL bEnabled) {
+ if (!bEnabled)
+ m_pEdit->AddFlag(PWS_READONLY);
+ else
+ m_pEdit->RemoveFlag(PWS_READONLY);
+
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (pChild->GetClassName() == "CPWL_NoteItem") {
+ CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
+ pNoteItem->EnableModify(bEnabled);
+ }
+ }
+ }
+}
+
+void CPWL_Note_Contents::EnableRead(FX_BOOL bEnabled) {
+ if (!bEnabled)
+ m_pEdit->AddFlag(PES_NOREAD);
+ else
+ m_pEdit->RemoveFlag(PES_NOREAD);
+
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (pChild->GetClassName() == "CPWL_NoteItem") {
+ CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
+ pNoteItem->EnableRead(bEnabled);
+ }
+ }
+ }
+}
+
+/* ---------------------------------- CPWL_NoteItem
+ * ---------------------------------- */
+
+CPWL_NoteItem::CPWL_NoteItem()
+ : m_pSubject(NULL),
+ m_pDateTime(NULL),
+ m_pContents(NULL),
+ m_pPrivateData(NULL),
+ m_sAuthor(L""),
+ m_fOldItemHeight(0.0f),
+ m_bSizeChanged(FALSE),
+ m_bAllowModify(TRUE) {}
+
+CPWL_NoteItem::~CPWL_NoteItem() {}
+
+CFX_ByteString CPWL_NoteItem::GetClassName() const {
+ return "CPWL_NoteItem";
+}
+
+void CPWL_NoteItem::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ CPWL_Color sTextColor;
+
+ if (CPWL_Utils::IsBlackOrWhite(GetBackgroundColor()))
+ sTextColor = PWL_DEFAULT_WHITECOLOR;
+ else
+ sTextColor = PWL_DEFAULT_BLACKCOLOR;
+
+ m_pSubject = new CPWL_Label;
+ PWL_CREATEPARAM scp = cp;
+ scp.pParentWnd = this;
+ scp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_LEFT | PES_TOP;
+ scp.sTextColor = sTextColor;
+ m_pSubject->Create(scp);
+
+ m_pDateTime = new CPWL_Label;
+ PWL_CREATEPARAM dcp = cp;
+ dcp.pParentWnd = this;
+ dcp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_RIGHT | PES_TOP;
+ dcp.sTextColor = sTextColor;
+ m_pDateTime->Create(dcp);
+
+ m_pContents = new CPWL_Note_Contents;
+ PWL_CREATEPARAM ccp = cp;
+ ccp.pParentWnd = this;
+ // ccp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
+ ccp.sBackgroundColor =
+ CPWL_Color(COLORTYPE_RGB, 240 / 255.0f, 240 / 255.0f, 240 / 255.0f);
+ ccp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BACKGROUND;
+ m_pContents->Create(ccp);
+ m_pContents->SetItemSpace(POPUP_ITEM_SPACE);
+ m_pContents->SetTopSpace(POPUP_ITEM_SPACE);
+ m_pContents->SetBottomSpace(POPUP_ITEM_SPACE);
+}
+
+void CPWL_NoteItem::RePosChildWnd() {
+ if (IsValid()) {
+ ASSERT(m_pSubject != NULL);
+ ASSERT(m_pDateTime != NULL);
+ ASSERT(m_pContents != NULL);
+
+ CPDF_Rect rcClient = GetClientRect();
+
+ CPDF_Rect rcSubject = rcClient;
+ rcSubject.left += POPUP_ITEM_TEXT_INDENT;
+ rcSubject.top = rcClient.top;
+ rcSubject.right =
+ PWL_MIN(rcSubject.left + m_pSubject->GetContentRect().Width() + 1.0f,
+ rcClient.right);
+ rcSubject.bottom = rcSubject.top - m_pSubject->GetContentRect().Height();
+ rcSubject.Normalize();
+ m_pSubject->Move(rcSubject, TRUE, FALSE);
+ m_pSubject->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcSubject));
+
+ CPDF_Rect rcDate = rcClient;
+ rcDate.right -= POPUP_ITEM_TEXT_INDENT;
+ rcDate.left =
+ PWL_MAX(rcDate.right - m_pDateTime->GetContentRect().Width() - 1.0f,
+ rcSubject.right);
+ rcDate.bottom = rcDate.top - m_pDateTime->GetContentRect().Height();
+ rcDate.Normalize();
+ m_pDateTime->Move(rcDate, TRUE, FALSE);
+ m_pDateTime->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcDate));
+
+ CPDF_Rect rcContents = rcClient;
+ rcContents.left += 1.0f;
+ rcContents.right -= 1.0f;
+ rcContents.top = rcDate.bottom - POPUP_ITEM_HEAD_BOTTOM;
+ rcContents.bottom += POPUP_ITEM_BOTTOMWIDTH;
+ rcContents.Normalize();
+ m_pContents->Move(rcContents, TRUE, FALSE);
+ m_pContents->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcContents));
+ }
+
+ SetClipRect(CPWL_Utils::InflateRect(GetWindowRect(), 1.0f));
+}
+
+void CPWL_NoteItem::SetPrivateData(void* pData) {
+ m_pPrivateData = pData;
+}
+
+void CPWL_NoteItem::SetBkColor(const CPWL_Color& color) {
+ CPWL_Color sBK = color;
+ SetBackgroundColor(sBK);
+
+ CPWL_Color sTextColor;
+
+ if (CPWL_Utils::IsBlackOrWhite(sBK))
+ sTextColor = PWL_DEFAULT_WHITECOLOR;
+ else
+ sTextColor = PWL_DEFAULT_BLACKCOLOR;
- OnNotify(pNoteItem, PNM_NOTEEDITCHANGED, 0, 0);
+ SetTextColor(sTextColor);
+ if (m_pSubject)
+ m_pSubject->SetTextColor(sTextColor);
+ if (m_pDateTime)
+ m_pDateTime->SetTextColor(sTextColor);
- return pNoteItem;
+ InvalidateRect(nullptr);
+
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetBkColor(this);
+ }
}
-int32_t CPWL_Note_Contents::CountSubItems() const
-{
- return m_aChildren.GetSize() - 1;
+void CPWL_NoteItem::SetSubjectName(const CFX_WideString& sName) {
+ if (m_pSubject) {
+ m_pSubject->SetText(sName.c_str());
+ }
+
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetSubjectName(this);
+ }
}
-IPWL_NoteItem* CPWL_Note_Contents::GetSubItems(int32_t index) const
-{
- int32_t nIndex = index + 1;
+void CPWL_NoteItem::SetAuthorName(const CFX_WideString& sName) {
+ m_sAuthor = sName;
+ ResetSubjectName(-1);
- if (nIndex > 0 && nIndex < m_aChildren.GetSize())
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(nIndex))
- {
- ASSERT(pChild->GetClassName() == "CPWL_NoteItem");
- CPWL_NoteItem* pItem = (CPWL_NoteItem*)pChild;
- return pItem;
- }
- return NULL;
-}
-
-void CPWL_Note_Contents::DeleteSubItem(IPWL_NoteItem* pNoteItem)
-{
- int32_t nIndex = GetItemIndex((CPWL_NoteItem*)pNoteItem);
-
- if (nIndex > 0)
- {
- if (CPWL_NoteItem* pPWLNoteItem = (CPWL_NoteItem*)pNoteItem)
- {
- pPWLNoteItem->KillFocus();
- pPWLNoteItem->Destroy();
- delete pPWLNoteItem;
- }
-
- for (int32_t i=nIndex,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- ASSERT(pChild->GetClassName() == "CPWL_NoteItem");
- CPWL_NoteItem* pItem = (CPWL_NoteItem*)pChild;
- pItem->ResetSubjectName(i);
- }
- }
-
- OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
- }
-}
-
-IPWL_NoteItem* CPWL_Note_Contents::GetHitNoteItem(const CPDF_Point& point)
-{
- CPDF_Point pt = ParentToChild(point);
-
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- if (pChild->GetClassName() == "CPWL_NoteItem")
- {
- CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
- if (IPWL_NoteItem* pRet = pNoteItem->GetHitNoteItem(pt))
- return pRet;
- }
- }
- }
- return NULL;
-}
-
-void CPWL_Note_Contents::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- switch (msg)
- {
- case PNM_NOTEEDITCHANGED:
- {
- int32_t nIndex = GetItemIndex(pWnd);
- if (nIndex < 0) nIndex = 0;
-
- m_pEdit->EnableNotify(FALSE);
- ResetContent(nIndex);
- m_pEdit->EnableNotify(TRUE);
-
- for (int32_t i=nIndex+1, sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- pChild->OnNotify(this, PNM_NOTERESET, 0, 0);
- }
-
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
- }
- }
- return;
- case PNM_SCROLLWINDOW:
- SetScrollPos(CPDF_Point(0.0f, *(FX_FLOAT*)lParam));
- ResetFace();
- InvalidateRect(NULL);
- return;
- case PNM_SETCARETINFO:
- if (PWL_CARET_INFO * pInfo = (PWL_CARET_INFO*)wParam)
- {
- PWL_CARET_INFO newInfo = *pInfo;
- newInfo.bVisible = TRUE;
- newInfo.ptHead = ChildToParent(pInfo->ptHead);
- newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
-
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
- }
- }
- return;
- case PNM_NOTERESET:
- {
- m_pEdit->EnableNotify(FALSE);
- ResetContent(0);
- m_pEdit->EnableNotify(TRUE);
-
- for (int32_t i=1, sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- pChild->OnNotify(this, PNM_NOTERESET, 0, 0);
- }
-
- m_pEdit->EnableNotify(FALSE);
- ResetContent(0);
- m_pEdit->EnableNotify(TRUE);
- }
- return;
- }
-
- CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
-}
-
-FX_BOOL CPWL_Note_Contents::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (CPWL_Wnd::OnLButtonDown(point,nFlag)) return TRUE;
-
- if (!m_pEdit->IsFocused())
- {
- m_pEdit->SetFocus();
- }
-
- return TRUE;
-}
-
-void CPWL_Note_Contents::SetEditFocus(FX_BOOL bLast)
-{
- if (!m_pEdit->IsFocused())
- {
- m_pEdit->SetFocus();
- m_pEdit->SetCaret(bLast ? m_pEdit->GetTotalWords() : 0);
- }
-}
-
-CPWL_Edit* CPWL_Note_Contents::GetEdit() const
-{
- return m_pEdit;
-}
-
-void CPWL_Note_Contents::EnableModify(FX_BOOL bEnabled)
-{
- if (!bEnabled)
- m_pEdit->AddFlag(PWS_READONLY);
- else
- m_pEdit->RemoveFlag(PWS_READONLY);
-
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- if (pChild->GetClassName() == "CPWL_NoteItem")
- {
- CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
- pNoteItem->EnableModify(bEnabled);
- }
- }
- }
-}
-
-void CPWL_Note_Contents::EnableRead(FX_BOOL bEnabled)
-{
- if (!bEnabled)
- m_pEdit->AddFlag(PES_NOREAD);
- else
- m_pEdit->RemoveFlag(PES_NOREAD);
-
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- if (pChild->GetClassName() == "CPWL_NoteItem")
- {
- CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pChild;
- pNoteItem->EnableRead(bEnabled);
- }
- }
- }
-}
-
-/* ---------------------------------- CPWL_NoteItem ---------------------------------- */
-
-CPWL_NoteItem::CPWL_NoteItem() :
- m_pSubject(NULL),
- m_pDateTime(NULL),
- m_pContents(NULL),
- m_pPrivateData(NULL),
- m_sAuthor(L""),
- m_fOldItemHeight(0.0f),
- m_bSizeChanged(FALSE),
- m_bAllowModify(TRUE)
-{
-}
-
-CPWL_NoteItem::~CPWL_NoteItem()
-{
-}
-
-CFX_ByteString CPWL_NoteItem::GetClassName() const
-{
- return "CPWL_NoteItem";
-}
-
-void CPWL_NoteItem::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- CPWL_Color sTextColor;
-
- if (CPWL_Utils::IsBlackOrWhite(GetBackgroundColor()))
- sTextColor = PWL_DEFAULT_WHITECOLOR;
- else
- sTextColor = PWL_DEFAULT_BLACKCOLOR;
-
- m_pSubject = new CPWL_Label;
- PWL_CREATEPARAM scp = cp;
- scp.pParentWnd = this;
- scp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_LEFT | PES_TOP;
- scp.sTextColor = sTextColor;
- m_pSubject->Create(scp);
-
- m_pDateTime = new CPWL_Label;
- PWL_CREATEPARAM dcp = cp;
- dcp.pParentWnd = this;
- dcp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_RIGHT | PES_TOP;
- dcp.sTextColor = sTextColor;
- m_pDateTime->Create(dcp);
-
- m_pContents = new CPWL_Note_Contents;
- PWL_CREATEPARAM ccp = cp;
- ccp.pParentWnd = this;
- //ccp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
- ccp.sBackgroundColor = CPWL_Color(COLORTYPE_RGB, 240/255.0f, 240/255.0f, 240/255.0f);
- ccp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BACKGROUND;
- m_pContents->Create(ccp);
- m_pContents->SetItemSpace(POPUP_ITEM_SPACE);
- m_pContents->SetTopSpace(POPUP_ITEM_SPACE);
- m_pContents->SetBottomSpace(POPUP_ITEM_SPACE);
-}
-
-void CPWL_NoteItem::RePosChildWnd()
-{
- if (IsValid())
- {
- ASSERT(m_pSubject != NULL);
- ASSERT(m_pDateTime != NULL);
- ASSERT(m_pContents != NULL);
-
- CPDF_Rect rcClient = GetClientRect();
-
- CPDF_Rect rcSubject = rcClient;
- rcSubject.left += POPUP_ITEM_TEXT_INDENT;
- rcSubject.top = rcClient.top;
- rcSubject.right = PWL_MIN(rcSubject.left + m_pSubject->GetContentRect().Width() + 1.0f, rcClient.right);
- rcSubject.bottom = rcSubject.top - m_pSubject->GetContentRect().Height();
- rcSubject.Normalize();
- m_pSubject->Move(rcSubject, TRUE, FALSE);
- m_pSubject->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcSubject));
-
- CPDF_Rect rcDate = rcClient;
- rcDate.right -= POPUP_ITEM_TEXT_INDENT;
- rcDate.left = PWL_MAX(rcDate.right - m_pDateTime->GetContentRect().Width() - 1.0f, rcSubject.right);
- rcDate.bottom = rcDate.top - m_pDateTime->GetContentRect().Height();
- rcDate.Normalize();
- m_pDateTime->Move(rcDate, TRUE, FALSE);
- m_pDateTime->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcDate));
-
- CPDF_Rect rcContents = rcClient;
- rcContents.left += 1.0f;
- rcContents.right -= 1.0f;
- rcContents.top = rcDate.bottom - POPUP_ITEM_HEAD_BOTTOM;
- rcContents.bottom += POPUP_ITEM_BOTTOMWIDTH;
- rcContents.Normalize();
- m_pContents->Move(rcContents, TRUE, FALSE);
- m_pContents->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcContents));
- }
-
- SetClipRect(CPWL_Utils::InflateRect(GetWindowRect(),1.0f));
-}
-
-void CPWL_NoteItem::SetPrivateData(void* pData)
-{
- m_pPrivateData = pData;
-}
-
-void CPWL_NoteItem::SetBkColor(const CPWL_Color& color)
-{
- CPWL_Color sBK = color;
- SetBackgroundColor(sBK);
-
- CPWL_Color sTextColor;
-
- if (CPWL_Utils::IsBlackOrWhite(sBK))
- sTextColor = PWL_DEFAULT_WHITECOLOR;
- else
- sTextColor = PWL_DEFAULT_BLACKCOLOR;
-
- SetTextColor(sTextColor);
- if (m_pSubject)
- m_pSubject->SetTextColor(sTextColor);
- if (m_pDateTime)
- m_pDateTime->SetTextColor(sTextColor);
-
- InvalidateRect(nullptr);
-
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetBkColor(this);
- }
-}
-
-void CPWL_NoteItem::SetSubjectName(const CFX_WideString& sName)
-{
- if (m_pSubject)
- {
- m_pSubject->SetText(sName.c_str());
- }
-
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetSubjectName(this);
- }
-}
-
-void CPWL_NoteItem::SetAuthorName(const CFX_WideString& sName)
-{
- m_sAuthor = sName;
- ResetSubjectName(-1);
-
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetAuthorName(this);
- }
-}
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetAuthorName(this);
+ }
+}
-void CPWL_NoteItem::ResetSubjectName(int32_t nItemIndex)
-{
- if (nItemIndex < 0)
- {
- if (CPWL_Wnd* pParent = GetParentWindow())
- {
- ASSERT(pParent->GetClassName() == "CPWL_Note_Contents");
+void CPWL_NoteItem::ResetSubjectName(int32_t nItemIndex) {
+ if (nItemIndex < 0) {
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ ASSERT(pParent->GetClassName() == "CPWL_Note_Contents");
- CPWL_Note_Contents* pContents = (CPWL_Note_Contents*)pParent;
- nItemIndex = pContents->GetItemIndex(this);
- }
- }
+ CPWL_Note_Contents* pContents = (CPWL_Note_Contents*)pParent;
+ nItemIndex = pContents->GetItemIndex(this);
+ }
+ }
- const CPWL_Note* pNote = GetNote();
- ASSERT(pNote != NULL);
+ const CPWL_Note* pNote = GetNote();
+ ASSERT(pNote != NULL);
- CFX_WideString sSubject;
- sSubject.Format(pNote->GetReplyString().c_str(), nItemIndex);
+ CFX_WideString sSubject;
+ sSubject.Format(pNote->GetReplyString().c_str(), nItemIndex);
- if (!m_sAuthor.IsEmpty())
- {
- sSubject += L" - ";
- sSubject += m_sAuthor;
- }
- SetSubjectName(sSubject);
- RePosChildWnd();
+ if (!m_sAuthor.IsEmpty()) {
+ sSubject += L" - ";
+ sSubject += m_sAuthor;
+ }
+ SetSubjectName(sSubject);
+ RePosChildWnd();
}
-void CPWL_NoteItem::SetDateTime(FX_SYSTEMTIME time)
-{
- m_dtNote = time;
+void CPWL_NoteItem::SetDateTime(FX_SYSTEMTIME time) {
+ m_dtNote = time;
- CFX_WideString swTime;
- swTime.Format(L"%04d-%02d-%02d %02d:%02d:%02d", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
- if (m_pDateTime)
- {
- m_pDateTime->SetText(swTime.c_str());
- }
+ CFX_WideString swTime;
+ swTime.Format(L"%04d-%02d-%02d %02d:%02d:%02d", time.wYear, time.wMonth,
+ time.wDay, time.wHour, time.wMinute, time.wSecond);
+ if (m_pDateTime) {
+ m_pDateTime->SetText(swTime.c_str());
+ }
- RePosChildWnd();
+ RePosChildWnd();
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetDateTime(this);
- }
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetDateTime(this);
+ }
}
-void CPWL_NoteItem::SetContents(const CFX_WideString& sContents)
-{
- if (m_pContents)
- {
- m_pContents->SetText(sContents);
- }
+void CPWL_NoteItem::SetContents(const CFX_WideString& sContents) {
+ if (m_pContents) {
+ m_pContents->SetText(sContents);
+ }
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetContents(this);
- }
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetContents(this);
+ }
}
-CPWL_NoteItem* CPWL_NoteItem::GetParentNoteItem() const
-{
- if (CPWL_Wnd* pParent = GetParentWindow())
- {
- if (CPWL_Wnd* pGrand = pParent->GetParentWindow())
- {
- ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
- return (CPWL_NoteItem*)pGrand;
- }
- }
+CPWL_NoteItem* CPWL_NoteItem::GetParentNoteItem() const {
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ if (CPWL_Wnd* pGrand = pParent->GetParentWindow()) {
+ ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
+ return (CPWL_NoteItem*)pGrand;
+ }
+ }
- return NULL;
+ return NULL;
}
-IPWL_NoteItem* CPWL_NoteItem::GetParentItem() const
-{
- return GetParentNoteItem();
+IPWL_NoteItem* CPWL_NoteItem::GetParentItem() const {
+ return GetParentNoteItem();
}
-CPWL_Edit* CPWL_NoteItem::GetEdit() const
-{
- if (m_pContents)
- return m_pContents->GetEdit();
- return NULL;
+CPWL_Edit* CPWL_NoteItem::GetEdit() const {
+ if (m_pContents)
+ return m_pContents->GetEdit();
+ return NULL;
}
-void* CPWL_NoteItem::GetPrivateData() const
-{
- return m_pPrivateData;
+void* CPWL_NoteItem::GetPrivateData() const {
+ return m_pPrivateData;
}
-CFX_WideString CPWL_NoteItem::GetAuthorName() const
-{
- return m_sAuthor;
+CFX_WideString CPWL_NoteItem::GetAuthorName() const {
+ return m_sAuthor;
}
-CPWL_Color CPWL_NoteItem::GetBkColor() const
-{
- return GetBackgroundColor();
+CPWL_Color CPWL_NoteItem::GetBkColor() const {
+ return GetBackgroundColor();
}
-CFX_WideString CPWL_NoteItem::GetContents() const
-{
- if (m_pContents)
- return m_pContents->GetText();
+CFX_WideString CPWL_NoteItem::GetContents() const {
+ if (m_pContents)
+ return m_pContents->GetText();
- return L"";
+ return L"";
}
-FX_SYSTEMTIME CPWL_NoteItem::GetDateTime() const
-{
- return m_dtNote;
+FX_SYSTEMTIME CPWL_NoteItem::GetDateTime() const {
+ return m_dtNote;
}
-CFX_WideString CPWL_NoteItem::GetSubjectName() const
-{
- if (m_pSubject)
- return m_pSubject->GetText();
+CFX_WideString CPWL_NoteItem::GetSubjectName() const {
+ if (m_pSubject)
+ return m_pSubject->GetText();
- return L"";
+ return L"";
}
-CPWL_NoteItem* CPWL_NoteItem::CreateNoteItem()
-{
- if (m_pContents)
- return m_pContents->CreateSubItem();
+CPWL_NoteItem* CPWL_NoteItem::CreateNoteItem() {
+ if (m_pContents)
+ return m_pContents->CreateSubItem();
- return NULL;
+ return NULL;
}
-IPWL_NoteItem* CPWL_NoteItem::CreateSubItem()
-{
- return CreateNoteItem();
+IPWL_NoteItem* CPWL_NoteItem::CreateSubItem() {
+ return CreateNoteItem();
}
-int32_t CPWL_NoteItem::CountSubItems() const
-{
- if (m_pContents)
- return m_pContents->CountSubItems();
+int32_t CPWL_NoteItem::CountSubItems() const {
+ if (m_pContents)
+ return m_pContents->CountSubItems();
- return 0;
+ return 0;
}
-IPWL_NoteItem* CPWL_NoteItem::GetSubItems(int32_t index) const
-{
- if (m_pContents)
- return m_pContents->GetSubItems(index);
+IPWL_NoteItem* CPWL_NoteItem::GetSubItems(int32_t index) const {
+ if (m_pContents)
+ return m_pContents->GetSubItems(index);
- return NULL;
+ return NULL;
}
-void CPWL_NoteItem::DeleteSubItem(IPWL_NoteItem* pNoteItem)
-{
- KillFocus();
+void CPWL_NoteItem::DeleteSubItem(IPWL_NoteItem* pNoteItem) {
+ KillFocus();
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnItemDelete(pNoteItem);
- }
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnItemDelete(pNoteItem);
+ }
- if (m_pContents)
- m_pContents->DeleteSubItem(pNoteItem);
+ if (m_pContents)
+ m_pContents->DeleteSubItem(pNoteItem);
}
-IPWL_NoteItem* CPWL_NoteItem::GetHitNoteItem(const CPDF_Point& point)
-{
- CPDF_Point pt = ParentToChild(point);
+IPWL_NoteItem* CPWL_NoteItem::GetHitNoteItem(const CPDF_Point& point) {
+ CPDF_Point pt = ParentToChild(point);
- if (WndHitTest(pt))
- {
- if (m_pContents)
- {
- if (IPWL_NoteItem* pNoteItem = m_pContents->GetHitNoteItem(pt))
- return pNoteItem;
- }
+ if (WndHitTest(pt)) {
+ if (m_pContents) {
+ if (IPWL_NoteItem* pNoteItem = m_pContents->GetHitNoteItem(pt))
+ return pNoteItem;
+ }
- return this;
- }
+ return this;
+ }
- return NULL;
+ return NULL;
}
-IPWL_NoteItem* CPWL_NoteItem::GetFocusedNoteItem() const
-{
- if (const CPWL_Wnd* pWnd = GetFocused())
- {
- if (pWnd->GetClassName() == "CPWL_Edit")
- {
- if (CPWL_Wnd* pParent = pWnd->GetParentWindow())
- {
- ASSERT(pParent->GetClassName() == "CPWL_Note_Contents");
+IPWL_NoteItem* CPWL_NoteItem::GetFocusedNoteItem() const {
+ if (const CPWL_Wnd* pWnd = GetFocused()) {
+ if (pWnd->GetClassName() == "CPWL_Edit") {
+ if (CPWL_Wnd* pParent = pWnd->GetParentWindow()) {
+ ASSERT(pParent->GetClassName() == "CPWL_Note_Contents");
- if (CPWL_Wnd* pGrand = pParent->GetParentWindow())
- {
- ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
- return (CPWL_NoteItem*)pGrand;
- }
- }
- }
- }
+ if (CPWL_Wnd* pGrand = pParent->GetParentWindow()) {
+ ASSERT(pGrand->GetClassName() == "CPWL_NoteItem");
+ return (CPWL_NoteItem*)pGrand;
+ }
+ }
+ }
+ }
- return NULL;
+ return NULL;
}
-FX_FLOAT CPWL_NoteItem::GetItemHeight(FX_FLOAT fLimitWidth)
-{
- if (fLimitWidth > 0)
- {
- if (!m_bSizeChanged)
- return m_fOldItemHeight;
+FX_FLOAT CPWL_NoteItem::GetItemHeight(FX_FLOAT fLimitWidth) {
+ if (fLimitWidth > 0) {
+ if (!m_bSizeChanged)
+ return m_fOldItemHeight;
+
+ m_bSizeChanged = FALSE;
- m_bSizeChanged = FALSE;
+ ASSERT(m_pSubject != NULL);
+ ASSERT(m_pDateTime != NULL);
+ ASSERT(m_pContents != NULL);
- ASSERT(m_pSubject != NULL);
- ASSERT(m_pDateTime != NULL);
- ASSERT(m_pContents != NULL);
+ FX_FLOAT fRet = m_pDateTime->GetContentRect().Height();
+ FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
+ if (fLimitWidth > fBorderWidth * 2)
+ fRet += m_pContents->GetContentsHeight(fLimitWidth - fBorderWidth * 2);
+ fRet += POPUP_ITEM_HEAD_BOTTOM + POPUP_ITEM_BOTTOMWIDTH + fBorderWidth * 2;
- FX_FLOAT fRet = m_pDateTime->GetContentRect().Height();
- FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth();
- if (fLimitWidth > fBorderWidth * 2)
- fRet += m_pContents->GetContentsHeight(fLimitWidth - fBorderWidth * 2);
- fRet += POPUP_ITEM_HEAD_BOTTOM + POPUP_ITEM_BOTTOMWIDTH + fBorderWidth * 2;
+ return m_fOldItemHeight = fRet;
+ }
- return m_fOldItemHeight = fRet;
- }
+ return 0;
+}
- return 0;
+FX_FLOAT CPWL_NoteItem::GetItemLeftMargin() {
+ return POPUP_ITEM_SIDEMARGIN;
}
-FX_FLOAT CPWL_NoteItem::GetItemLeftMargin()
-{
- return POPUP_ITEM_SIDEMARGIN;
+FX_FLOAT CPWL_NoteItem::GetItemRightMargin() {
+ return POPUP_ITEM_SIDEMARGIN;
}
-FX_FLOAT CPWL_NoteItem::GetItemRightMargin()
-{
- return POPUP_ITEM_SIDEMARGIN;
+FX_BOOL CPWL_NoteItem::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (!m_pContents->WndHitTest(m_pContents->ParentToChild(point))) {
+ SetNoteFocus(FALSE);
+ }
+
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
+
+ return TRUE;
+}
+
+FX_BOOL CPWL_NoteItem::OnRButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (!m_pContents->WndHitTest(m_pContents->ParentToChild(point))) {
+ SetNoteFocus(FALSE);
+ PopupNoteItemMenu(point);
+
+ return TRUE;
+ }
+
+ return CPWL_Wnd::OnRButtonUp(point, nFlag);
}
-FX_BOOL CPWL_NoteItem::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag)
-{
- if (!m_pContents->WndHitTest(m_pContents->ParentToChild(point)))
- {
- SetNoteFocus(FALSE);
- }
+void CPWL_NoteItem::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ switch (msg) {
+ case PNM_NOTEEDITCHANGED:
+ m_bSizeChanged = TRUE;
- CPWL_Wnd::OnLButtonDown(point,nFlag);
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
+ }
+ return;
+ case PNM_SETCARETINFO:
+ if (PWL_CARET_INFO* pInfo = (PWL_CARET_INFO*)wParam) {
+ PWL_CARET_INFO newInfo = *pInfo;
+ newInfo.bVisible = TRUE;
+ newInfo.ptHead = ChildToParent(pInfo->ptHead);
+ newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
- return TRUE;
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
+ }
+ }
+ return;
+ case PNM_NOTERESET:
+ m_bSizeChanged = TRUE;
+ m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+
+ return;
+ }
+
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
}
-FX_BOOL CPWL_NoteItem::OnRButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (!m_pContents->WndHitTest(m_pContents->ParentToChild(point)))
- {
- SetNoteFocus(FALSE);
- PopupNoteItemMenu(point);
+void CPWL_NoteItem::PopupNoteItemMenu(const CPDF_Point& point) {
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ int32_t x, y;
+ PWLtoWnd(point, x, y);
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ pSH->ClientToScreen(GetAttachedHWnd(), x, y);
+ pNotify->OnPopupMenu(this, x, y);
+ }
+}
- return TRUE;
- }
+const CPWL_Note* CPWL_NoteItem::GetNote() const {
+ if (const CPWL_Wnd* pRoot = GetRootWnd()) {
+ ASSERT(pRoot->GetClassName() == "CPWL_NoteItem");
+ CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pRoot;
+ if (pNoteItem->IsTopItem()) {
+ return (CPWL_Note*)pNoteItem;
+ }
+ }
- return CPWL_Wnd::OnRButtonUp(point,nFlag);
+ return NULL;
}
-void CPWL_NoteItem::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- switch (msg)
- {
- case PNM_NOTEEDITCHANGED:
- m_bSizeChanged = TRUE;
+IPWL_NoteNotify* CPWL_NoteItem::GetNoteNotify() const {
+ if (const CPWL_Note* pNote = GetNote())
+ return pNote->GetNoteNotify();
- if (CPWL_Wnd* pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
- }
- return;
- case PNM_SETCARETINFO:
- if (PWL_CARET_INFO * pInfo = (PWL_CARET_INFO*)wParam)
- {
- PWL_CARET_INFO newInfo = *pInfo;
- newInfo.bVisible = TRUE;
- newInfo.ptHead = ChildToParent(pInfo->ptHead);
- newInfo.ptFoot = ChildToParent(pInfo->ptFoot);
-
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this, PNM_SETCARETINFO, (intptr_t)&newInfo, 0);
- }
- }
- return;
- case PNM_NOTERESET:
- m_bSizeChanged = TRUE;
- m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+ return NULL;
+}
- return;
- }
+void CPWL_NoteItem::OnCreateNoteItem() {
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnItemCreate(this);
+ }
+}
- CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+void CPWL_NoteItem::OnContentsValidate() {
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetContents(this);
+ }
}
-void CPWL_NoteItem::PopupNoteItemMenu(const CPDF_Point& point)
-{
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- int32_t x,y;
- PWLtoWnd(point, x, y);
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- pSH->ClientToScreen(GetAttachedHWnd(), x, y);
- pNotify->OnPopupMenu(this, x, y);
- }
+void CPWL_NoteItem::SetNoteFocus(FX_BOOL bLast) {
+ m_pContents->SetEditFocus(bLast);
}
-const CPWL_Note* CPWL_NoteItem::GetNote() const
-{
- if (const CPWL_Wnd* pRoot = GetRootWnd())
- {
- ASSERT(pRoot->GetClassName() == "CPWL_NoteItem");
- CPWL_NoteItem* pNoteItem = (CPWL_NoteItem*)pRoot;
- if (pNoteItem->IsTopItem())
- {
- return (CPWL_Note*)pNoteItem;
- }
- }
+void CPWL_NoteItem::EnableModify(FX_BOOL bEnabled) {
+ m_pContents->EnableModify(bEnabled);
+ m_bAllowModify = bEnabled;
+}
- return NULL;
+void CPWL_NoteItem::EnableRead(FX_BOOL bEnabled) {
+ m_pContents->EnableRead(bEnabled);
}
-IPWL_NoteNotify* CPWL_NoteItem::GetNoteNotify() const
-{
- if (const CPWL_Note* pNote = GetNote())
- return pNote->GetNoteNotify();
-
- return NULL;
-}
-
-void CPWL_NoteItem::OnCreateNoteItem()
-{
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnItemCreate(this);
- }
-}
-
-void CPWL_NoteItem::OnContentsValidate()
-{
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetContents(this);
- }
-}
-
-void CPWL_NoteItem::SetNoteFocus(FX_BOOL bLast)
-{
- m_pContents->SetEditFocus(bLast);
-}
-
-void CPWL_NoteItem::EnableModify(FX_BOOL bEnabled)
-{
- m_pContents->EnableModify(bEnabled);
- m_bAllowModify = bEnabled;
-}
-
-void CPWL_NoteItem::EnableRead(FX_BOOL bEnabled)
-{
- m_pContents->EnableRead(bEnabled);
-}
-
-/* ---------------------------------- CPWL_Note ---------------------------------- */
-
-CPWL_Note::CPWL_Note(IPopup_Note* pPopupNote, IPWL_NoteNotify* pNoteNotify, IPWL_NoteHandler* pNoteHandler) :
- m_pAuthor(NULL),
- m_pIcon(NULL),
- m_pCloseBox(NULL),
- m_pLBBox(NULL),
- m_pRBBox(NULL),
- m_pContentsBar(NULL),
- m_pOptions(NULL),
- m_pNoteNotify(pNoteNotify),
- m_bResizing(FALSE),
- m_rcCaption(0,0,0,0),
- m_bEnalbleNotify(TRUE),
- m_pPopupNote(pPopupNote)
-{
-}
-
-CPWL_Note::~CPWL_Note()
-{
-}
-
-IPWL_NoteItem* CPWL_Note::Reply()
-{
- return CreateNoteItem();
-}
-
-void CPWL_Note::EnableNotify(FX_BOOL bEnabled)
-{
- m_bEnalbleNotify = bEnabled;
-}
-
-void CPWL_Note::RePosChildWnd()
-{
- RePosNoteChildren();
- m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
- ResetScrollBar();
- m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
- OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
- if (const CPWL_Wnd* pWnd = GetFocused())
- {
- if (pWnd->GetClassName() == "CPWL_Edit")
- {
- CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
- pEdit->SetCaret(pEdit->GetCaret());
- }
- }
-}
-
-FX_BOOL CPWL_Note::ResetScrollBar()
-{
- FX_BOOL bScrollChanged = FALSE;
-
- if (ScrollBarShouldVisible())
- {
- if (!m_pContentsBar->IsVisible())
- {
- m_pContentsBar->SetVisible(TRUE);
- if (m_pContentsBar->IsVisible())
- {
- m_pContentsBar->InvalidateRect(NULL);
- bScrollChanged = TRUE;
- }
- }
- }
- else
- {
- if (m_pContentsBar->IsVisible())
- {
- m_pContentsBar->SetVisible(FALSE);
- m_pContentsBar->InvalidateRect(NULL);
-
- bScrollChanged = TRUE;
- }
- }
-
- if (bScrollChanged)
- {
- CPDF_Rect rcNote = GetClientRect();
- CPDF_Rect rcContents = m_pContents->GetWindowRect();
- rcContents.right = rcNote.right - 3.0f;
- if (m_pContentsBar->IsVisible())
- rcContents.right -= PWL_SCROLLBAR_WIDTH;
- m_pContents->Move(rcContents, TRUE, TRUE);
- m_pContents->SetScrollPos(CPDF_Point(0.0f,0.0f));
- m_pContents->InvalidateRect(NULL);
- }
-
- return bScrollChanged;
-}
-
-FX_BOOL CPWL_Note::ScrollBarShouldVisible()
-{
- CPDF_Rect rcContentsFact = m_pContents->GetScrollArea();
- CPDF_Rect rcContentsClient = m_pContents->GetClientRect();
-
- return rcContentsFact.Height() > rcContentsClient.Height();
-}
-
-void CPWL_Note::SetOptionsText(const CFX_WideString& sText)
-{
- if (m_pOptions)
- m_pOptions->SetText(sText);
-
- RePosNoteChildren();
-}
-
-void CPWL_Note::RePosNoteChildren()
-{
- if (m_bResizing) return;
-
- m_bResizing = TRUE;
-
- if (IsValid())
- {
- ASSERT(m_pSubject != NULL);
- ASSERT(m_pDateTime != NULL);
- ASSERT(m_pContents != NULL);
- ASSERT(m_pAuthor != NULL);
- ASSERT(m_pCloseBox != NULL);
- ASSERT(m_pIcon != NULL);
- ASSERT(m_pLBBox != NULL);
- ASSERT(m_pRBBox != NULL);
- ASSERT(m_pContentsBar != NULL);
- ASSERT(m_pOptions != NULL);
-
- CPDF_Rect rcClient = GetClientRect();
-
- CPDF_Rect rcIcon = rcClient;
- rcIcon.top -= 2.0f;
- rcIcon.right = rcIcon.left + 14.0f;
- rcIcon.bottom = rcIcon.top - 14.0f;
- rcIcon.Normalize();
- m_pIcon->Move(rcIcon, TRUE, FALSE);
- m_pIcon->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcIcon));
-
- CPDF_Rect rcCloseBox = rcClient;
- rcCloseBox.right -= 1.0f;
- rcCloseBox.top -= 1.0f;
- rcCloseBox.left = rcCloseBox.right - 14.0f;
- rcCloseBox.bottom = rcCloseBox.top - 14.0f;
- rcCloseBox.Normalize();
- m_pCloseBox->Move(rcCloseBox, TRUE, FALSE);
- m_pCloseBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcCloseBox));
-
- CPDF_Rect rcDate = rcClient;
- rcDate.right = rcCloseBox.left - POPUP_ITEM_TEXT_INDENT;
- rcDate.left = PWL_MAX(rcDate.right - m_pDateTime->GetContentRect().Width() - 1.0f, rcIcon.right + 1.0f);
- rcDate.top = rcClient.top - 2.0f;
- rcDate.bottom = rcDate.top - m_pDateTime->GetContentRect().Height();
- rcDate.Normalize();
- m_pDateTime->Move(rcDate, TRUE, FALSE);
- m_pDateTime->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcDate));
-
- CPDF_Rect rcSubject = rcClient;
- rcSubject.top = rcClient.top - 2.0f;
- rcSubject.left = rcIcon.right + POPUP_ITEM_TEXT_INDENT;
- rcSubject.right = PWL_MIN(rcSubject.left + m_pSubject->GetContentRect().Width() + 1.0f, rcDate.left - 1.0f);
- rcSubject.bottom = rcSubject.top - m_pSubject->GetContentRect().Height();
- rcSubject.Normalize();
- m_pSubject->Move(rcSubject, TRUE, FALSE);
- m_pSubject->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcSubject));
-
- CPDF_Rect rcOptions = rcClient;
- rcOptions.left = PWL_MAX(rcOptions.right - m_pOptions->GetContentRect().Width(), rcIcon.right + 1.0f);
- rcOptions.top = rcSubject.bottom - 4.0f;
- rcOptions.bottom = rcOptions.top - m_pOptions->GetContentRect().Height();
- rcOptions.Normalize();
- m_pOptions->Move(rcOptions, TRUE, FALSE);
- m_pOptions->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcOptions));
-
- CPDF_Rect rcAuthor = rcClient;
- rcAuthor.top = rcSubject.bottom - 4.0f;
- rcAuthor.left = rcSubject.left;
- rcAuthor.right = PWL_MIN(rcSubject.left + m_pAuthor->GetContentRect().Width() + 1.0f, rcOptions.left - 1.0f);
- rcAuthor.bottom = rcAuthor.top - m_pAuthor->GetContentRect().Height();
- rcAuthor.Normalize();
- m_pAuthor->Move(rcAuthor, TRUE, FALSE);
- m_pAuthor->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcAuthor));
-
- CPDF_Rect rcLBBox = rcClient;
- rcLBBox.top = rcLBBox.bottom + 7.0f;
- rcLBBox.right = rcLBBox.left + 7.0f;
- rcLBBox.Normalize();
- m_pLBBox->Move(rcLBBox, TRUE, FALSE);
- m_pLBBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcLBBox));
-
- CPDF_Rect rcRBBox = rcClient;
- rcRBBox.top = rcRBBox.bottom + 7.0f;
- rcRBBox.left = rcRBBox.right - 7.0f;
- rcRBBox.Normalize();
- m_pRBBox->Move(rcRBBox, TRUE, FALSE);
- m_pRBBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcRBBox));
-
- CPDF_Rect rcContents = rcClient;
- rcContents.top = rcAuthor.bottom - POPUP_ITEM_HEAD_BOTTOM;
- rcContents.left += 3.0f;
- rcContents.right -= 3.0f;
- if (m_pContentsBar->IsVisible())
- rcContents.right -= PWL_SCROLLBAR_WIDTH;
- rcContents.bottom += 14.0f;
- rcContents.Normalize();
- m_pContents->Move(rcContents, FALSE, FALSE);
- m_pContents->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcContents));
-
- CPDF_Rect rcContentsBar = rcContents;
- rcContentsBar.right = rcClient.right - 3.0f;
- rcContentsBar.left = rcContentsBar.right - PWL_SCROLLBAR_WIDTH;
- rcContentsBar.Normalize();
- m_pContentsBar->Move(rcContentsBar, TRUE, FALSE);
-
- m_rcCaption = rcClient;
- m_rcCaption.bottom = rcContents.top;
- }
-
- m_bResizing = FALSE;
-}
-
-//0-normal / 1-caption / 2-leftbottom corner / 3-rightbottom corner / 4-close / 5-options
-int32_t CPWL_Note::NoteHitTest(const CPDF_Point& point) const
-{
- ASSERT(m_pSubject != NULL);
- ASSERT(m_pDateTime != NULL);
- ASSERT(m_pContents != NULL);
- ASSERT(m_pAuthor != NULL);
- ASSERT(m_pIcon != NULL);
- ASSERT(m_pContentsBar != NULL);
-
- ASSERT(m_pCloseBox != NULL);
- ASSERT(m_pLBBox != NULL);
- ASSERT(m_pRBBox != NULL);
- ASSERT(m_pOptions != NULL);
-
- GetClientRect();
-
- if (m_pSubject->WndHitTest(m_pSubject->ParentToChild(point))) return 1;
- if (m_pDateTime->WndHitTest(m_pDateTime->ParentToChild(point))) return 1;
- if (m_pAuthor->WndHitTest(m_pAuthor->ParentToChild(point))) return 1;
- if (m_pIcon->WndHitTest(m_pIcon->ParentToChild(point))) return 1;
-
- if (m_pContents->WndHitTest(m_pContents->ParentToChild(point))) return 0;
- if (m_pContentsBar->WndHitTest(m_pContentsBar->ParentToChild(point))) return 0;
-
- if (m_pCloseBox->WndHitTest(m_pCloseBox->ParentToChild(point))) return 4;
- if (m_pLBBox->WndHitTest(m_pLBBox->ParentToChild(point))) return 2;
- if (m_pRBBox->WndHitTest(m_pRBBox->ParentToChild(point))) return 3;
- if (m_pOptions->WndHitTest(m_pOptions->ParentToChild(point))) return 5;
-
- return 1;
-}
-
-void CPWL_Note::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- CPWL_NoteItem::CreateChildWnd(cp);
-
- CPWL_Color sTextColor;
-
- if (CPWL_Utils::IsBlackOrWhite(GetBackgroundColor()))
- sTextColor = PWL_DEFAULT_WHITECOLOR;
- else
- sTextColor = PWL_DEFAULT_BLACKCOLOR;
-
- m_pAuthor = new CPWL_Label;
- PWL_CREATEPARAM acp = cp;
- acp.pParentWnd = this;
- acp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_LEFT | PES_TOP;
- acp.sTextColor = sTextColor;
- m_pAuthor->Create(acp);
-
- m_pCloseBox = new CPWL_Note_CloseBox;
- PWL_CREATEPARAM ccp = cp;
- ccp.pParentWnd = this;
- ccp.dwBorderWidth = 2;
- ccp.nBorderStyle = PBS_BEVELED;
- ccp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER;
- ccp.sTextColor = sTextColor;
- m_pCloseBox->Create(ccp);
-
- m_pIcon = new CPWL_Note_Icon;
- PWL_CREATEPARAM icp = cp;
- icp.pParentWnd = this;
- icp.dwFlags = PWS_VISIBLE | PWS_CHILD;
- m_pIcon->Create(icp);
-
- m_pOptions = new CPWL_Note_Options;
- PWL_CREATEPARAM ocp = cp;
- ocp.pParentWnd = this;
- ocp.dwFlags = PWS_CHILD | PWS_VISIBLE;
- ocp.sTextColor = sTextColor;
- m_pOptions->Create(ocp);
-
- m_pLBBox = new CPWL_Note_LBBox;
- PWL_CREATEPARAM lcp = cp;
- lcp.pParentWnd = this;
- lcp.dwFlags = PWS_VISIBLE | PWS_CHILD;
- lcp.eCursorType = FXCT_NESW;
- lcp.sTextColor = sTextColor;
- m_pLBBox->Create(lcp);
-
- m_pRBBox = new CPWL_Note_RBBox;
- PWL_CREATEPARAM rcp = cp;
- rcp.pParentWnd = this;
- rcp.dwFlags = PWS_VISIBLE | PWS_CHILD;
- rcp.eCursorType = FXCT_NWSE;
- rcp.sTextColor = sTextColor;
- m_pRBBox->Create(rcp);
-
- m_pContentsBar = new CPWL_ScrollBar(SBT_VSCROLL);
- PWL_CREATEPARAM scp = cp;
- scp.pParentWnd = this;
- scp.sBackgroundColor = CPWL_Color(COLORTYPE_RGB, 240/255.0f, 240/255.0f, 240/255.0f);
- scp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_BACKGROUND;
- m_pContentsBar->Create(scp);
- m_pContentsBar->SetNotifyForever(TRUE);
-}
-
-void CPWL_Note::SetSubjectName(const CFX_WideString& sName)
-{
- CPWL_NoteItem::SetSubjectName(sName);
- RePosChildWnd();
-}
-
-void CPWL_Note::SetAuthorName(const CFX_WideString& sName)
-{
- if (m_pAuthor)
- {
- m_pAuthor->SetText(sName.c_str());
- RePosChildWnd();
- }
-
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- pNotify->OnSetAuthorName(this);
- }
-}
-
-CFX_WideString CPWL_Note::GetAuthorName() const
-{
- if (m_pAuthor)
- return m_pAuthor->GetText();
-
- return L"";
-}
-
-FX_BOOL CPWL_Note::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPDF_Point ptScroll = m_pContents->GetScrollPos();
- CPDF_Rect rcScroll = m_pContents->GetScrollArea();
- CPDF_Rect rcContents = m_pContents->GetClientRect();
-
- if (rcScroll.top - rcScroll.bottom > rcContents.Height())
- {
- CPDF_Point ptNew = ptScroll;
-
- if (zDelta > 0)
- ptNew.y += 30;
- else
- ptNew.y -= 30;
-
- if (ptNew.y > rcScroll.top)
- ptNew.y = rcScroll.top;
- if (ptNew.y < rcScroll.bottom + rcContents.Height())
- ptNew.y = rcScroll.bottom + rcContents.Height();
- if (ptNew.y < rcScroll.bottom)
- ptNew.y = rcScroll.bottom;
-
- if (ptNew.y != ptScroll.y)
- {
- m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
- m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL, (intptr_t)&ptNew.y);
- m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptNew.y);
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-void CPWL_Note::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- switch (msg)
- {
- case PNM_NOTEEDITCHANGED:
- {
- CPDF_Rect rcScroll = m_pContents->GetScrollArea();
-
-
- PWL_SCROLL_INFO sInfo;
- sInfo.fContentMin = rcScroll.bottom;
- sInfo.fContentMax = rcScroll.top;
- sInfo.fPlateWidth = m_pContents->GetClientRect().Height();
- sInfo.fSmallStep = 13.0f;
- sInfo.fBigStep = sInfo.fPlateWidth;
-
- if (FXSYS_memcmp(&m_OldScrollInfo, &sInfo, sizeof(PWL_SCROLL_INFO)) != 0)
- {
- FX_BOOL bScrollChanged = FALSE;
-
- if (lParam < 3) //·ÀÖ¹ËÀÑ­»· mantis:15759
- {
- bScrollChanged = ResetScrollBar();
- if (bScrollChanged)
- {
- lParam++;
- m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
- OnNotify(this, PNM_NOTEEDITCHANGED, 0, lParam);
- }
- }
-
- if (!bScrollChanged)
- {
- if (m_pContentsBar->IsVisible())
- {
- m_pContentsBar->OnNotify(pWnd, PNM_SETSCROLLINFO, SBT_VSCROLL, (intptr_t)&sInfo);
- m_OldScrollInfo = sInfo;
-
- CPDF_Point ptScroll = m_pContents->GetScrollPos();
- CPDF_Point ptOld = ptScroll;
-
- if (ptScroll.y > sInfo.fContentMax)
- ptScroll.y = sInfo.fContentMax;
- if (ptScroll.y < sInfo.fContentMin + sInfo.fPlateWidth)
- ptScroll.y = sInfo.fContentMin + sInfo.fPlateWidth;
- if (ptScroll.y < sInfo.fContentMin)
- ptScroll.y = sInfo.fContentMin;
-
- if (ptOld.y != ptScroll.y)
- {
- m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptScroll.y);
- m_pContentsBar->InvalidateRect(NULL);
- m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL, (intptr_t)&ptScroll.y);
- }
- }
- }
- }
- }
-
- m_pContents->InvalidateRect(NULL);
-
- return;
- case PNM_SCROLLWINDOW:
- if (m_pContents)
- m_pContents->OnNotify(pWnd, msg, wParam, lParam);
- return;
- case PNM_SETSCROLLPOS:
- if (m_pContentsBar)
- m_pContentsBar->OnNotify(pWnd,PNM_SETSCROLLPOS,wParam,lParam);
- return;
- }
-
- if (msg == PNM_SETCARETINFO && IsValid())
- {
- if (PWL_CARET_INFO * pInfo = (PWL_CARET_INFO*)wParam)
- {
- if (m_pContents)
- {
- CPDF_Rect rcClient = m_pContents->GetClientRect();
- if (pInfo->ptHead.y > rcClient.top)
- {
- CPDF_Point pt = m_pContents->OutToIn(pInfo->ptHead);
- m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL, (intptr_t)&pt.y);
-
- CPDF_Point ptScroll = m_pContents->GetScrollPos();
- m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptScroll.y);
-
- return;
- }
-
- if (pInfo->ptFoot.y < rcClient.bottom)
- {
- CPDF_Point pt = m_pContents->OutToIn(pInfo->ptFoot);
- pt.y += rcClient.Height();
- m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL, (intptr_t)&pt.y);
-
- CPDF_Point ptScroll = m_pContents->GetScrollPos();
- m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL, (intptr_t)&ptScroll.y);
-
- return;
- }
- }
- }
- }
-
- CPWL_NoteItem::OnNotify(pWnd, msg, wParam, lParam);
-}
-
-void CPWL_Note::SetBkColor(const CPWL_Color& color)
-{
- CPWL_NoteItem::SetBkColor(color);
-
- CPWL_Color sBK = color;
- CPWL_Color sTextColor;
- if (CPWL_Utils::IsBlackOrWhite(sBK))
- sTextColor = PWL_DEFAULT_WHITECOLOR;
- else
- sTextColor = PWL_DEFAULT_BLACKCOLOR;
-
- if (m_pCloseBox)
- m_pCloseBox->SetTextColor(sTextColor);
- if (m_pAuthor)
- m_pAuthor->SetTextColor(sTextColor);
- if (m_pOptions)
- m_pOptions->SetTextColor(sTextColor);
- if (m_pLBBox)
- m_pLBBox->SetTextColor(sTextColor);
- if (m_pRBBox)
- m_pRBBox->SetTextColor(sTextColor);
-}
-
-FX_BOOL CPWL_Note::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag)
-{
- if (m_pOptions->WndHitTest(m_pOptions->ParentToChild(point)))
- {
- if (IPWL_NoteNotify* pNotify = GetNoteNotify())
- {
- int32_t x, y;
- PWLtoWnd(point, x, y);
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- pSH->ClientToScreen(GetAttachedHWnd(), x, y);
- KillFocus();
- pNotify->OnPopupMenu(x, y);
-
- return TRUE;
- }
- }
+/* ---------------------------------- CPWL_Note
+ * ---------------------------------- */
+
+CPWL_Note::CPWL_Note(IPopup_Note* pPopupNote,
+ IPWL_NoteNotify* pNoteNotify,
+ IPWL_NoteHandler* pNoteHandler)
+ : m_pAuthor(NULL),
+ m_pIcon(NULL),
+ m_pCloseBox(NULL),
+ m_pLBBox(NULL),
+ m_pRBBox(NULL),
+ m_pContentsBar(NULL),
+ m_pOptions(NULL),
+ m_pNoteNotify(pNoteNotify),
+ m_bResizing(FALSE),
+ m_rcCaption(0, 0, 0, 0),
+ m_bEnalbleNotify(TRUE),
+ m_pPopupNote(pPopupNote) {}
- return CPWL_Wnd::OnLButtonDown(point,nFlag);
+CPWL_Note::~CPWL_Note() {}
+
+IPWL_NoteItem* CPWL_Note::Reply() {
+ return CreateNoteItem();
+}
+
+void CPWL_Note::EnableNotify(FX_BOOL bEnabled) {
+ m_bEnalbleNotify = bEnabled;
}
-FX_BOOL CPWL_Note::OnRButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- return CPWL_Wnd::OnRButtonUp(point,nFlag);
+void CPWL_Note::RePosChildWnd() {
+ RePosNoteChildren();
+ m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+ ResetScrollBar();
+ m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+ OnNotify(this, PNM_NOTEEDITCHANGED, 0, 0);
+ if (const CPWL_Wnd* pWnd = GetFocused()) {
+ if (pWnd->GetClassName() == "CPWL_Edit") {
+ CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
+ pEdit->SetCaret(pEdit->GetCaret());
+ }
+ }
+}
+
+FX_BOOL CPWL_Note::ResetScrollBar() {
+ FX_BOOL bScrollChanged = FALSE;
+
+ if (ScrollBarShouldVisible()) {
+ if (!m_pContentsBar->IsVisible()) {
+ m_pContentsBar->SetVisible(TRUE);
+ if (m_pContentsBar->IsVisible()) {
+ m_pContentsBar->InvalidateRect(NULL);
+ bScrollChanged = TRUE;
+ }
+ }
+ } else {
+ if (m_pContentsBar->IsVisible()) {
+ m_pContentsBar->SetVisible(FALSE);
+ m_pContentsBar->InvalidateRect(NULL);
+
+ bScrollChanged = TRUE;
+ }
+ }
+
+ if (bScrollChanged) {
+ CPDF_Rect rcNote = GetClientRect();
+ CPDF_Rect rcContents = m_pContents->GetWindowRect();
+ rcContents.right = rcNote.right - 3.0f;
+ if (m_pContentsBar->IsVisible())
+ rcContents.right -= PWL_SCROLLBAR_WIDTH;
+ m_pContents->Move(rcContents, TRUE, TRUE);
+ m_pContents->SetScrollPos(CPDF_Point(0.0f, 0.0f));
+ m_pContents->InvalidateRect(NULL);
+ }
+
+ return bScrollChanged;
+}
+
+FX_BOOL CPWL_Note::ScrollBarShouldVisible() {
+ CPDF_Rect rcContentsFact = m_pContents->GetScrollArea();
+ CPDF_Rect rcContentsClient = m_pContents->GetClientRect();
+
+ return rcContentsFact.Height() > rcContentsClient.Height();
+}
+
+void CPWL_Note::SetOptionsText(const CFX_WideString& sText) {
+ if (m_pOptions)
+ m_pOptions->SetText(sText);
+
+ RePosNoteChildren();
+}
+
+void CPWL_Note::RePosNoteChildren() {
+ if (m_bResizing)
+ return;
+
+ m_bResizing = TRUE;
+
+ if (IsValid()) {
+ ASSERT(m_pSubject != NULL);
+ ASSERT(m_pDateTime != NULL);
+ ASSERT(m_pContents != NULL);
+ ASSERT(m_pAuthor != NULL);
+ ASSERT(m_pCloseBox != NULL);
+ ASSERT(m_pIcon != NULL);
+ ASSERT(m_pLBBox != NULL);
+ ASSERT(m_pRBBox != NULL);
+ ASSERT(m_pContentsBar != NULL);
+ ASSERT(m_pOptions != NULL);
+
+ CPDF_Rect rcClient = GetClientRect();
+
+ CPDF_Rect rcIcon = rcClient;
+ rcIcon.top -= 2.0f;
+ rcIcon.right = rcIcon.left + 14.0f;
+ rcIcon.bottom = rcIcon.top - 14.0f;
+ rcIcon.Normalize();
+ m_pIcon->Move(rcIcon, TRUE, FALSE);
+ m_pIcon->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcIcon));
+
+ CPDF_Rect rcCloseBox = rcClient;
+ rcCloseBox.right -= 1.0f;
+ rcCloseBox.top -= 1.0f;
+ rcCloseBox.left = rcCloseBox.right - 14.0f;
+ rcCloseBox.bottom = rcCloseBox.top - 14.0f;
+ rcCloseBox.Normalize();
+ m_pCloseBox->Move(rcCloseBox, TRUE, FALSE);
+ m_pCloseBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcCloseBox));
+
+ CPDF_Rect rcDate = rcClient;
+ rcDate.right = rcCloseBox.left - POPUP_ITEM_TEXT_INDENT;
+ rcDate.left =
+ PWL_MAX(rcDate.right - m_pDateTime->GetContentRect().Width() - 1.0f,
+ rcIcon.right + 1.0f);
+ rcDate.top = rcClient.top - 2.0f;
+ rcDate.bottom = rcDate.top - m_pDateTime->GetContentRect().Height();
+ rcDate.Normalize();
+ m_pDateTime->Move(rcDate, TRUE, FALSE);
+ m_pDateTime->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcDate));
+
+ CPDF_Rect rcSubject = rcClient;
+ rcSubject.top = rcClient.top - 2.0f;
+ rcSubject.left = rcIcon.right + POPUP_ITEM_TEXT_INDENT;
+ rcSubject.right =
+ PWL_MIN(rcSubject.left + m_pSubject->GetContentRect().Width() + 1.0f,
+ rcDate.left - 1.0f);
+ rcSubject.bottom = rcSubject.top - m_pSubject->GetContentRect().Height();
+ rcSubject.Normalize();
+ m_pSubject->Move(rcSubject, TRUE, FALSE);
+ m_pSubject->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcSubject));
+
+ CPDF_Rect rcOptions = rcClient;
+ rcOptions.left =
+ PWL_MAX(rcOptions.right - m_pOptions->GetContentRect().Width(),
+ rcIcon.right + 1.0f);
+ rcOptions.top = rcSubject.bottom - 4.0f;
+ rcOptions.bottom = rcOptions.top - m_pOptions->GetContentRect().Height();
+ rcOptions.Normalize();
+ m_pOptions->Move(rcOptions, TRUE, FALSE);
+ m_pOptions->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcOptions));
+
+ CPDF_Rect rcAuthor = rcClient;
+ rcAuthor.top = rcSubject.bottom - 4.0f;
+ rcAuthor.left = rcSubject.left;
+ rcAuthor.right =
+ PWL_MIN(rcSubject.left + m_pAuthor->GetContentRect().Width() + 1.0f,
+ rcOptions.left - 1.0f);
+ rcAuthor.bottom = rcAuthor.top - m_pAuthor->GetContentRect().Height();
+ rcAuthor.Normalize();
+ m_pAuthor->Move(rcAuthor, TRUE, FALSE);
+ m_pAuthor->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcAuthor));
+
+ CPDF_Rect rcLBBox = rcClient;
+ rcLBBox.top = rcLBBox.bottom + 7.0f;
+ rcLBBox.right = rcLBBox.left + 7.0f;
+ rcLBBox.Normalize();
+ m_pLBBox->Move(rcLBBox, TRUE, FALSE);
+ m_pLBBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcLBBox));
+
+ CPDF_Rect rcRBBox = rcClient;
+ rcRBBox.top = rcRBBox.bottom + 7.0f;
+ rcRBBox.left = rcRBBox.right - 7.0f;
+ rcRBBox.Normalize();
+ m_pRBBox->Move(rcRBBox, TRUE, FALSE);
+ m_pRBBox->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcRBBox));
+
+ CPDF_Rect rcContents = rcClient;
+ rcContents.top = rcAuthor.bottom - POPUP_ITEM_HEAD_BOTTOM;
+ rcContents.left += 3.0f;
+ rcContents.right -= 3.0f;
+ if (m_pContentsBar->IsVisible())
+ rcContents.right -= PWL_SCROLLBAR_WIDTH;
+ rcContents.bottom += 14.0f;
+ rcContents.Normalize();
+ m_pContents->Move(rcContents, FALSE, FALSE);
+ m_pContents->SetVisible(CPWL_Utils::ContainsRect(rcClient, rcContents));
+
+ CPDF_Rect rcContentsBar = rcContents;
+ rcContentsBar.right = rcClient.right - 3.0f;
+ rcContentsBar.left = rcContentsBar.right - PWL_SCROLLBAR_WIDTH;
+ rcContentsBar.Normalize();
+ m_pContentsBar->Move(rcContentsBar, TRUE, FALSE);
+
+ m_rcCaption = rcClient;
+ m_rcCaption.bottom = rcContents.top;
+ }
+
+ m_bResizing = FALSE;
+}
+
+// 0-normal / 1-caption / 2-leftbottom corner / 3-rightbottom corner / 4-close /
+// 5-options
+int32_t CPWL_Note::NoteHitTest(const CPDF_Point& point) const {
+ ASSERT(m_pSubject != NULL);
+ ASSERT(m_pDateTime != NULL);
+ ASSERT(m_pContents != NULL);
+ ASSERT(m_pAuthor != NULL);
+ ASSERT(m_pIcon != NULL);
+ ASSERT(m_pContentsBar != NULL);
+
+ ASSERT(m_pCloseBox != NULL);
+ ASSERT(m_pLBBox != NULL);
+ ASSERT(m_pRBBox != NULL);
+ ASSERT(m_pOptions != NULL);
+
+ GetClientRect();
+
+ if (m_pSubject->WndHitTest(m_pSubject->ParentToChild(point)))
+ return 1;
+ if (m_pDateTime->WndHitTest(m_pDateTime->ParentToChild(point)))
+ return 1;
+ if (m_pAuthor->WndHitTest(m_pAuthor->ParentToChild(point)))
+ return 1;
+ if (m_pIcon->WndHitTest(m_pIcon->ParentToChild(point)))
+ return 1;
+
+ if (m_pContents->WndHitTest(m_pContents->ParentToChild(point)))
+ return 0;
+ if (m_pContentsBar->WndHitTest(m_pContentsBar->ParentToChild(point)))
+ return 0;
+
+ if (m_pCloseBox->WndHitTest(m_pCloseBox->ParentToChild(point)))
+ return 4;
+ if (m_pLBBox->WndHitTest(m_pLBBox->ParentToChild(point)))
+ return 2;
+ if (m_pRBBox->WndHitTest(m_pRBBox->ParentToChild(point)))
+ return 3;
+ if (m_pOptions->WndHitTest(m_pOptions->ParentToChild(point)))
+ return 5;
+
+ return 1;
+}
+
+void CPWL_Note::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ CPWL_NoteItem::CreateChildWnd(cp);
+
+ CPWL_Color sTextColor;
+
+ if (CPWL_Utils::IsBlackOrWhite(GetBackgroundColor()))
+ sTextColor = PWL_DEFAULT_WHITECOLOR;
+ else
+ sTextColor = PWL_DEFAULT_BLACKCOLOR;
+
+ m_pAuthor = new CPWL_Label;
+ PWL_CREATEPARAM acp = cp;
+ acp.pParentWnd = this;
+ acp.dwFlags = PWS_VISIBLE | PWS_CHILD | PES_LEFT | PES_TOP;
+ acp.sTextColor = sTextColor;
+ m_pAuthor->Create(acp);
+
+ m_pCloseBox = new CPWL_Note_CloseBox;
+ PWL_CREATEPARAM ccp = cp;
+ ccp.pParentWnd = this;
+ ccp.dwBorderWidth = 2;
+ ccp.nBorderStyle = PBS_BEVELED;
+ ccp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER;
+ ccp.sTextColor = sTextColor;
+ m_pCloseBox->Create(ccp);
+
+ m_pIcon = new CPWL_Note_Icon;
+ PWL_CREATEPARAM icp = cp;
+ icp.pParentWnd = this;
+ icp.dwFlags = PWS_VISIBLE | PWS_CHILD;
+ m_pIcon->Create(icp);
+
+ m_pOptions = new CPWL_Note_Options;
+ PWL_CREATEPARAM ocp = cp;
+ ocp.pParentWnd = this;
+ ocp.dwFlags = PWS_CHILD | PWS_VISIBLE;
+ ocp.sTextColor = sTextColor;
+ m_pOptions->Create(ocp);
+
+ m_pLBBox = new CPWL_Note_LBBox;
+ PWL_CREATEPARAM lcp = cp;
+ lcp.pParentWnd = this;
+ lcp.dwFlags = PWS_VISIBLE | PWS_CHILD;
+ lcp.eCursorType = FXCT_NESW;
+ lcp.sTextColor = sTextColor;
+ m_pLBBox->Create(lcp);
+
+ m_pRBBox = new CPWL_Note_RBBox;
+ PWL_CREATEPARAM rcp = cp;
+ rcp.pParentWnd = this;
+ rcp.dwFlags = PWS_VISIBLE | PWS_CHILD;
+ rcp.eCursorType = FXCT_NWSE;
+ rcp.sTextColor = sTextColor;
+ m_pRBBox->Create(rcp);
+
+ m_pContentsBar = new CPWL_ScrollBar(SBT_VSCROLL);
+ PWL_CREATEPARAM scp = cp;
+ scp.pParentWnd = this;
+ scp.sBackgroundColor =
+ CPWL_Color(COLORTYPE_RGB, 240 / 255.0f, 240 / 255.0f, 240 / 255.0f);
+ scp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_BACKGROUND;
+ m_pContentsBar->Create(scp);
+ m_pContentsBar->SetNotifyForever(TRUE);
+}
+
+void CPWL_Note::SetSubjectName(const CFX_WideString& sName) {
+ CPWL_NoteItem::SetSubjectName(sName);
+ RePosChildWnd();
+}
+
+void CPWL_Note::SetAuthorName(const CFX_WideString& sName) {
+ if (m_pAuthor) {
+ m_pAuthor->SetText(sName.c_str());
+ RePosChildWnd();
+ }
+
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ pNotify->OnSetAuthorName(this);
+ }
+}
+
+CFX_WideString CPWL_Note::GetAuthorName() const {
+ if (m_pAuthor)
+ return m_pAuthor->GetText();
+
+ return L"";
+}
+
+FX_BOOL CPWL_Note::OnMouseWheel(short zDelta,
+ const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ CPDF_Point ptScroll = m_pContents->GetScrollPos();
+ CPDF_Rect rcScroll = m_pContents->GetScrollArea();
+ CPDF_Rect rcContents = m_pContents->GetClientRect();
+
+ if (rcScroll.top - rcScroll.bottom > rcContents.Height()) {
+ CPDF_Point ptNew = ptScroll;
+
+ if (zDelta > 0)
+ ptNew.y += 30;
+ else
+ ptNew.y -= 30;
+
+ if (ptNew.y > rcScroll.top)
+ ptNew.y = rcScroll.top;
+ if (ptNew.y < rcScroll.bottom + rcContents.Height())
+ ptNew.y = rcScroll.bottom + rcContents.Height();
+ if (ptNew.y < rcScroll.bottom)
+ ptNew.y = rcScroll.bottom;
+
+ if (ptNew.y != ptScroll.y) {
+ m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+ m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL,
+ (intptr_t)&ptNew.y);
+ m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptNew.y);
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void CPWL_Note::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ switch (msg) {
+ case PNM_NOTEEDITCHANGED: {
+ CPDF_Rect rcScroll = m_pContents->GetScrollArea();
+
+ PWL_SCROLL_INFO sInfo;
+ sInfo.fContentMin = rcScroll.bottom;
+ sInfo.fContentMax = rcScroll.top;
+ sInfo.fPlateWidth = m_pContents->GetClientRect().Height();
+ sInfo.fSmallStep = 13.0f;
+ sInfo.fBigStep = sInfo.fPlateWidth;
+
+ if (FXSYS_memcmp(&m_OldScrollInfo, &sInfo, sizeof(PWL_SCROLL_INFO)) !=
+ 0) {
+ FX_BOOL bScrollChanged = FALSE;
+
+ if (lParam < 3) //·ÀÖ¹ËÀÑ­»· mantis:15759
+ {
+ bScrollChanged = ResetScrollBar();
+ if (bScrollChanged) {
+ lParam++;
+ m_pContents->OnNotify(this, PNM_NOTERESET, 0, 0);
+ OnNotify(this, PNM_NOTEEDITCHANGED, 0, lParam);
+ }
+ }
+
+ if (!bScrollChanged) {
+ if (m_pContentsBar->IsVisible()) {
+ m_pContentsBar->OnNotify(pWnd, PNM_SETSCROLLINFO, SBT_VSCROLL,
+ (intptr_t)&sInfo);
+ m_OldScrollInfo = sInfo;
+
+ CPDF_Point ptScroll = m_pContents->GetScrollPos();
+ CPDF_Point ptOld = ptScroll;
+
+ if (ptScroll.y > sInfo.fContentMax)
+ ptScroll.y = sInfo.fContentMax;
+ if (ptScroll.y < sInfo.fContentMin + sInfo.fPlateWidth)
+ ptScroll.y = sInfo.fContentMin + sInfo.fPlateWidth;
+ if (ptScroll.y < sInfo.fContentMin)
+ ptScroll.y = sInfo.fContentMin;
+
+ if (ptOld.y != ptScroll.y) {
+ m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptScroll.y);
+ m_pContentsBar->InvalidateRect(NULL);
+ m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL,
+ (intptr_t)&ptScroll.y);
+ }
+ }
+ }
+ }
+ }
+
+ m_pContents->InvalidateRect(NULL);
+
+ return;
+ case PNM_SCROLLWINDOW:
+ if (m_pContents)
+ m_pContents->OnNotify(pWnd, msg, wParam, lParam);
+ return;
+ case PNM_SETSCROLLPOS:
+ if (m_pContentsBar)
+ m_pContentsBar->OnNotify(pWnd, PNM_SETSCROLLPOS, wParam, lParam);
+ return;
+ }
+
+ if (msg == PNM_SETCARETINFO && IsValid()) {
+ if (PWL_CARET_INFO* pInfo = (PWL_CARET_INFO*)wParam) {
+ if (m_pContents) {
+ CPDF_Rect rcClient = m_pContents->GetClientRect();
+ if (pInfo->ptHead.y > rcClient.top) {
+ CPDF_Point pt = m_pContents->OutToIn(pInfo->ptHead);
+ m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL,
+ (intptr_t)&pt.y);
+
+ CPDF_Point ptScroll = m_pContents->GetScrollPos();
+ m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptScroll.y);
+
+ return;
+ }
+
+ if (pInfo->ptFoot.y < rcClient.bottom) {
+ CPDF_Point pt = m_pContents->OutToIn(pInfo->ptFoot);
+ pt.y += rcClient.Height();
+ m_pContents->OnNotify(this, PNM_SCROLLWINDOW, SBT_VSCROLL,
+ (intptr_t)&pt.y);
+
+ CPDF_Point ptScroll = m_pContents->GetScrollPos();
+ m_pContentsBar->OnNotify(this, PNM_SETSCROLLPOS, SBT_VSCROLL,
+ (intptr_t)&ptScroll.y);
+
+ return;
+ }
+ }
+ }
+ }
+
+ CPWL_NoteItem::OnNotify(pWnd, msg, wParam, lParam);
+}
+
+void CPWL_Note::SetBkColor(const CPWL_Color& color) {
+ CPWL_NoteItem::SetBkColor(color);
+
+ CPWL_Color sBK = color;
+ CPWL_Color sTextColor;
+ if (CPWL_Utils::IsBlackOrWhite(sBK))
+ sTextColor = PWL_DEFAULT_WHITECOLOR;
+ else
+ sTextColor = PWL_DEFAULT_BLACKCOLOR;
+
+ if (m_pCloseBox)
+ m_pCloseBox->SetTextColor(sTextColor);
+ if (m_pAuthor)
+ m_pAuthor->SetTextColor(sTextColor);
+ if (m_pOptions)
+ m_pOptions->SetTextColor(sTextColor);
+ if (m_pLBBox)
+ m_pLBBox->SetTextColor(sTextColor);
+ if (m_pRBBox)
+ m_pRBBox->SetTextColor(sTextColor);
}
-const CPWL_Note* CPWL_Note::GetNote() const
-{
- return this;
+FX_BOOL CPWL_Note::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (m_pOptions->WndHitTest(m_pOptions->ParentToChild(point))) {
+ if (IPWL_NoteNotify* pNotify = GetNoteNotify()) {
+ int32_t x, y;
+ PWLtoWnd(point, x, y);
+ if (IFX_SystemHandler* pSH = GetSystemHandler())
+ pSH->ClientToScreen(GetAttachedHWnd(), x, y);
+ KillFocus();
+ pNotify->OnPopupMenu(x, y);
+
+ return TRUE;
+ }
+ }
+
+ return CPWL_Wnd::OnLButtonDown(point, nFlag);
}
-IPWL_NoteNotify* CPWL_Note::GetNoteNotify() const
-{
- if (m_bEnalbleNotify)
- return m_pNoteNotify;
+FX_BOOL CPWL_Note::OnRButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ return CPWL_Wnd::OnRButtonUp(point, nFlag);
+}
- return NULL;
+const CPWL_Note* CPWL_Note::GetNote() const {
+ return this;
}
-void CPWL_Note::SetIconType(int32_t nType)
-{
- if (m_pIcon)
- m_pIcon->SetIconType(nType);
+IPWL_NoteNotify* CPWL_Note::GetNoteNotify() const {
+ if (m_bEnalbleNotify)
+ return m_pNoteNotify;
+
+ return NULL;
}
-void CPWL_Note::EnableModify(FX_BOOL bEnabled)
-{
- m_pContents->EnableModify(bEnabled);
+void CPWL_Note::SetIconType(int32_t nType) {
+ if (m_pIcon)
+ m_pIcon->SetIconType(nType);
}
-void CPWL_Note::EnableRead(FX_BOOL bEnabled)
-{
- m_pContents->EnableRead(bEnabled);
+void CPWL_Note::EnableModify(FX_BOOL bEnabled) {
+ m_pContents->EnableModify(bEnabled);
}
-CFX_WideString CPWL_Note::GetReplyString() const
-{
- return m_sReplyString;
+void CPWL_Note::EnableRead(FX_BOOL bEnabled) {
+ m_pContents->EnableRead(bEnabled);
}
-void CPWL_Note::SetReplyString(const CFX_WideString& string)
-{
- m_sReplyString = string;
+CFX_WideString CPWL_Note::GetReplyString() const {
+ return m_sReplyString;
}
+void CPWL_Note::SetReplyString(const CFX_WideString& string) {
+ m_sReplyString = string;
+}
diff --git a/fpdfsdk/src/pdfwindow/PWL_ScrollBar.cpp b/fpdfsdk/src/pdfwindow/PWL_ScrollBar.cpp
index 6d61705222..c762b4cd92 100644
--- a/fpdfsdk/src/pdfwindow/PWL_ScrollBar.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_ScrollBar.cpp
@@ -9,1295 +9,1201 @@
#include "../../include/pdfwindow/PWL_ScrollBar.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
+/* ------------------------------- PWL_FLOATRANGE
+ * ------------------------------- */
-/* ------------------------------- PWL_FLOATRANGE ------------------------------- */
-
-PWL_FLOATRANGE::PWL_FLOATRANGE()
-{
- Default();
+PWL_FLOATRANGE::PWL_FLOATRANGE() {
+ Default();
}
-PWL_FLOATRANGE::PWL_FLOATRANGE(FX_FLOAT min,FX_FLOAT max)
-{
- Set(min,max);
+PWL_FLOATRANGE::PWL_FLOATRANGE(FX_FLOAT min, FX_FLOAT max) {
+ Set(min, max);
}
-void PWL_FLOATRANGE::Default()
-{
- fMin = 0;
- fMax = 0;
+void PWL_FLOATRANGE::Default() {
+ fMin = 0;
+ fMax = 0;
}
-void PWL_FLOATRANGE::Set(FX_FLOAT min,FX_FLOAT max)
-{
- if (min > max)
- {
- fMin = max;
- fMax = min;
- }
- else
- {
- fMin = min;
- fMax = max;
- }
+void PWL_FLOATRANGE::Set(FX_FLOAT min, FX_FLOAT max) {
+ if (min > max) {
+ fMin = max;
+ fMax = min;
+ } else {
+ fMin = min;
+ fMax = max;
+ }
}
-FX_BOOL PWL_FLOATRANGE::In(FX_FLOAT x) const
-{
- return (IsFloatBigger(x,fMin) || IsFloatEqual(x, fMin)) &&
- (IsFloatSmaller(x, fMax) || IsFloatEqual(x, fMax));
+FX_BOOL PWL_FLOATRANGE::In(FX_FLOAT x) const {
+ return (IsFloatBigger(x, fMin) || IsFloatEqual(x, fMin)) &&
+ (IsFloatSmaller(x, fMax) || IsFloatEqual(x, fMax));
}
-FX_FLOAT PWL_FLOATRANGE::GetWidth() const
-{
- return fMax - fMin;
+FX_FLOAT PWL_FLOATRANGE::GetWidth() const {
+ return fMax - fMin;
}
-/* ------------------------------- PWL_SCROLL_PRIVATEDATA ------------------------------- */
+/* ------------------------------- PWL_SCROLL_PRIVATEDATA
+ * ------------------------------- */
-PWL_SCROLL_PRIVATEDATA::PWL_SCROLL_PRIVATEDATA()
-{
- Default();
+PWL_SCROLL_PRIVATEDATA::PWL_SCROLL_PRIVATEDATA() {
+ Default();
}
-void PWL_SCROLL_PRIVATEDATA::Default()
-{
- ScrollRange.Default();
- fScrollPos = ScrollRange.fMin;
- fClientWidth = 0;
- fBigStep = 10;
- fSmallStep = 1;
+void PWL_SCROLL_PRIVATEDATA::Default() {
+ ScrollRange.Default();
+ fScrollPos = ScrollRange.fMin;
+ fClientWidth = 0;
+ fBigStep = 10;
+ fSmallStep = 1;
}
-void PWL_SCROLL_PRIVATEDATA::SetScrollRange(FX_FLOAT min,FX_FLOAT max)
-{
- ScrollRange.Set(min,max);
+void PWL_SCROLL_PRIVATEDATA::SetScrollRange(FX_FLOAT min, FX_FLOAT max) {
+ ScrollRange.Set(min, max);
- if (IsFloatSmaller(fScrollPos, ScrollRange.fMin))
- fScrollPos = ScrollRange.fMin;
- if (IsFloatBigger(fScrollPos, ScrollRange.fMax))
- fScrollPos = ScrollRange.fMax;
+ if (IsFloatSmaller(fScrollPos, ScrollRange.fMin))
+ fScrollPos = ScrollRange.fMin;
+ if (IsFloatBigger(fScrollPos, ScrollRange.fMax))
+ fScrollPos = ScrollRange.fMax;
}
-void PWL_SCROLL_PRIVATEDATA::SetClientWidth(FX_FLOAT width)
-{
- fClientWidth = width;
+void PWL_SCROLL_PRIVATEDATA::SetClientWidth(FX_FLOAT width) {
+ fClientWidth = width;
}
-void PWL_SCROLL_PRIVATEDATA::SetSmallStep(FX_FLOAT step)
-{
- fSmallStep = step;
+void PWL_SCROLL_PRIVATEDATA::SetSmallStep(FX_FLOAT step) {
+ fSmallStep = step;
}
-void PWL_SCROLL_PRIVATEDATA::SetBigStep(FX_FLOAT step)
-{
- fBigStep = step;
+void PWL_SCROLL_PRIVATEDATA::SetBigStep(FX_FLOAT step) {
+ fBigStep = step;
}
-FX_BOOL PWL_SCROLL_PRIVATEDATA::SetPos(FX_FLOAT pos)
-{
- if (ScrollRange.In(pos))
- {
- fScrollPos = pos;
- return TRUE;
- }
- return FALSE;
+FX_BOOL PWL_SCROLL_PRIVATEDATA::SetPos(FX_FLOAT pos) {
+ if (ScrollRange.In(pos)) {
+ fScrollPos = pos;
+ return TRUE;
+ }
+ return FALSE;
}
-void PWL_SCROLL_PRIVATEDATA::AddSmall()
-{
- if (!SetPos(fScrollPos + fSmallStep))
- SetPos(ScrollRange.fMax);
+void PWL_SCROLL_PRIVATEDATA::AddSmall() {
+ if (!SetPos(fScrollPos + fSmallStep))
+ SetPos(ScrollRange.fMax);
}
-void PWL_SCROLL_PRIVATEDATA::SubSmall()
-{
- if (!SetPos(fScrollPos - fSmallStep))
- SetPos(ScrollRange.fMin);
+void PWL_SCROLL_PRIVATEDATA::SubSmall() {
+ if (!SetPos(fScrollPos - fSmallStep))
+ SetPos(ScrollRange.fMin);
}
-void PWL_SCROLL_PRIVATEDATA::AddBig()
-{
- if (!SetPos(fScrollPos + fBigStep))
- SetPos(ScrollRange.fMax);
+void PWL_SCROLL_PRIVATEDATA::AddBig() {
+ if (!SetPos(fScrollPos + fBigStep))
+ SetPos(ScrollRange.fMax);
}
-void PWL_SCROLL_PRIVATEDATA::SubBig()
-{
- if (!SetPos(fScrollPos - fBigStep))
- SetPos(ScrollRange.fMin);
+void PWL_SCROLL_PRIVATEDATA::SubBig() {
+ if (!SetPos(fScrollPos - fBigStep))
+ SetPos(ScrollRange.fMin);
}
-/* ------------------------------- CPWL_SBButton ------------------------------- */
+/* ------------------------------- CPWL_SBButton -------------------------------
+ */
-CPWL_SBButton::CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType,PWL_SBBUTTON_TYPE eButtonType)
-{
- m_eScrollBarType = eScrollBarType;
- m_eSBButtonType = eButtonType;
+CPWL_SBButton::CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType,
+ PWL_SBBUTTON_TYPE eButtonType) {
+ m_eScrollBarType = eScrollBarType;
+ m_eSBButtonType = eButtonType;
- m_bMouseDown = FALSE;
+ m_bMouseDown = FALSE;
}
-CPWL_SBButton::~CPWL_SBButton()
-{
-
-}
+CPWL_SBButton::~CPWL_SBButton() {}
-CFX_ByteString CPWL_SBButton::GetClassName() const
-{
- return "CPWL_SBButton";
+CFX_ByteString CPWL_SBButton::GetClassName() const {
+ return "CPWL_SBButton";
}
-void CPWL_SBButton::OnCreate(PWL_CREATEPARAM & cp)
-{
- cp.eCursorType = FXCT_ARROW;
+void CPWL_SBButton::OnCreate(PWL_CREATEPARAM& cp) {
+ cp.eCursorType = FXCT_ARROW;
}
-void CPWL_SBButton::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
-
- if (!IsVisible()) return;
-
- CFX_ByteTextBuf sButton;
-
- CPDF_Rect rectWnd = GetWindowRect();
-
- if (rectWnd.IsEmpty()) return;
-
- sAppStream << "q\n";
-
- CPDF_Point ptCenter = GetCenterPoint();
-
- switch (m_eScrollBarType)
- {
- case SBT_HSCROLL:
- switch (m_eSBButtonType)
- {
- case PSBT_MIN:
- {
- CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y);
- CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y + PWL_TRIANGLE_HALFLEN);
- CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y - PWL_TRIANGLE_HALFLEN);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- sButton << "0 g\n";
- sButton << pt1.x << " " << pt1.y << " m\n";
- sButton << pt2.x << " " << pt2.y << " l\n";
- sButton << pt3.x << " " << pt3.y << " l\n";
- sButton << pt1.x << " " << pt1.y << " l f\n";
-
- sAppStream << sButton;
- }
- }
- break;
- case PSBT_MAX:
- {
- CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y);
- CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y + PWL_TRIANGLE_HALFLEN);
- CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y - PWL_TRIANGLE_HALFLEN);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- sButton << "0 g\n";
- sButton << pt1.x << " " << pt1.y << " m\n";
- sButton << pt2.x << " " << pt2.y << " l\n";
- sButton << pt3.x << " " << pt3.y << " l\n";
- sButton << pt1.x << " " << pt1.y << " l f\n";
-
- sAppStream << sButton;
- }
- }
- break;
- default:
- break;
- }
- break;
- case SBT_VSCROLL:
- switch (m_eSBButtonType)
- {
- case PSBT_MIN:
- {
- CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN,ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN,ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt3(ptCenter.x,ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- sButton << "0 g\n";
- sButton << pt1.x << " " << pt1.y << " m\n";
- sButton << pt2.x << " " << pt2.y << " l\n";
- sButton << pt3.x << " " << pt3.y << " l\n";
- sButton << pt1.x << " " << pt1.y << " l f\n";
-
- sAppStream << sButton;
- }
- }
- break;
- case PSBT_MAX:
- {
- CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN,ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN,ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
- CPDF_Point pt3(ptCenter.x,ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- sButton << "0 g\n";
- sButton << pt1.x << " " << pt1.y << " m\n";
- sButton << pt2.x << " " << pt2.y << " l\n";
- sButton << pt3.x << " " << pt3.y << " l\n";
- sButton << pt1.x << " " << pt1.y << " l f\n";
-
- sAppStream << sButton;
- }
- }
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
-
- sAppStream << "Q\n";
+void CPWL_SBButton::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+
+ if (!IsVisible())
+ return;
+
+ CFX_ByteTextBuf sButton;
+
+ CPDF_Rect rectWnd = GetWindowRect();
+
+ if (rectWnd.IsEmpty())
+ return;
+
+ sAppStream << "q\n";
+
+ CPDF_Point ptCenter = GetCenterPoint();
+
+ switch (m_eScrollBarType) {
+ case SBT_HSCROLL:
+ switch (m_eSBButtonType) {
+ case PSBT_MIN: {
+ CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y);
+ CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN);
+ CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ sButton << "0 g\n";
+ sButton << pt1.x << " " << pt1.y << " m\n";
+ sButton << pt2.x << " " << pt2.y << " l\n";
+ sButton << pt3.x << " " << pt3.y << " l\n";
+ sButton << pt1.x << " " << pt1.y << " l f\n";
+
+ sAppStream << sButton;
+ }
+ } break;
+ case PSBT_MAX: {
+ CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y);
+ CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN);
+ CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ sButton << "0 g\n";
+ sButton << pt1.x << " " << pt1.y << " m\n";
+ sButton << pt2.x << " " << pt2.y << " l\n";
+ sButton << pt3.x << " " << pt3.y << " l\n";
+ sButton << pt1.x << " " << pt1.y << " l f\n";
+
+ sAppStream << sButton;
+ }
+ } break;
+ default:
+ break;
+ }
+ break;
+ case SBT_VSCROLL:
+ switch (m_eSBButtonType) {
+ case PSBT_MIN: {
+ CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt3(ptCenter.x, ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ sButton << "0 g\n";
+ sButton << pt1.x << " " << pt1.y << " m\n";
+ sButton << pt2.x << " " << pt2.y << " l\n";
+ sButton << pt3.x << " " << pt3.y << " l\n";
+ sButton << pt1.x << " " << pt1.y << " l f\n";
+
+ sAppStream << sButton;
+ }
+ } break;
+ case PSBT_MAX: {
+ CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN * 0.5f);
+ CPDF_Point pt3(ptCenter.x, ptCenter.y - PWL_TRIANGLE_HALFLEN * 0.5f);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ sButton << "0 g\n";
+ sButton << pt1.x << " " << pt1.y << " m\n";
+ sButton << pt2.x << " " << pt2.y << " l\n";
+ sButton << pt3.x << " " << pt3.y << " l\n";
+ sButton << pt1.x << " " << pt1.y << " l f\n";
+
+ sAppStream << sButton;
+ }
+ } break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ sAppStream << "Q\n";
}
-void CPWL_SBButton::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- if (!IsVisible()) return;
-
- CPDF_Rect rectWnd = GetWindowRect();
- if (rectWnd.IsEmpty()) return;
-
- CPDF_Point ptCenter = GetCenterPoint();
- int32_t nTransparancy = GetTransparency();
-
- switch (m_eScrollBarType)
- {
- case SBT_HSCROLL:
- CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
- switch (m_eSBButtonType)
- {
- case PSBT_MIN:
- {
- CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y);
- CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y + PWL_TRIANGLE_HALFLEN);
- CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y - PWL_TRIANGLE_HALFLEN);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- CFX_PathData path;
-
- path.SetPointCount(4);
- path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
- path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
- path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
- path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
-
- pDevice->DrawPath(&path, pUser2Device, NULL,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_BLACKCOLOR,nTransparancy),
- 0, FXFILL_ALTERNATE);
- }
- }
- break;
- case PSBT_MAX:
- {
- CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y);
- CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y + PWL_TRIANGLE_HALFLEN);
- CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,ptCenter.y - PWL_TRIANGLE_HALFLEN);
-
- if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
- rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN )
- {
- CFX_PathData path;
-
- path.SetPointCount(4);
- path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
- path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
- path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
- path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
-
- pDevice->DrawPath(&path, pUser2Device, NULL,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_BLACKCOLOR,nTransparancy),
- 0, FXFILL_ALTERNATE);
- }
- }
- break;
- default:
- break;
- }
- break;
- case SBT_VSCROLL:
- switch (m_eSBButtonType)
- {
- case PSBT_MIN:
- {
- //draw border
- CPDF_Rect rcDraw = rectWnd;
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,100,100,100),0.0f);
-
- //draw inner border
- rcDraw = CPWL_Utils::DeflateRect(rectWnd,0.5f);
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,255,255,255),1.0f);
-
- //draw background
-
- rcDraw = CPWL_Utils::DeflateRect(rectWnd,1.0f);
-
- if (IsEnabled())
- CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, nTransparancy, 80, 220);
- else
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, ArgbEncode(255,255,255,255));
-
- //draw arrow
-
- if (rectWnd.top - rectWnd.bottom > 6.0f )
- {
- FX_FLOAT fX = rectWnd.left + 1.5f;
- FX_FLOAT fY = rectWnd.bottom;
- CPDF_Point pts[7] = {
- CPDF_Point(fX+2.5f, fY+4.0f),
- CPDF_Point(fX+2.5f, fY+3.0f),
- CPDF_Point(fX+4.5f, fY+5.0f),
- CPDF_Point(fX+6.5f, fY+3.0f),
- CPDF_Point(fX+6.5f, fY+4.0f),
- CPDF_Point(fX+4.5f, fY+6.0f),
- CPDF_Point(fX+2.5f, fY+4.0f)};
-
-
- if (IsEnabled())
- CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, ArgbEncode(nTransparancy,255,255,255));
- else
- CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_HEAVYGRAYCOLOR,255));
- }
- }
- break;
- case PSBT_MAX:
- {
- //draw border
- CPDF_Rect rcDraw = rectWnd;
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,100,100,100),0.0f);
-
- //draw inner border
- rcDraw = CPWL_Utils::DeflateRect(rectWnd,0.5f);
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,255,255,255),1.0f);
-
- //draw background
- rcDraw = CPWL_Utils::DeflateRect(rectWnd,1.0f);
- if (IsEnabled())
- CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, nTransparancy, 80, 220);
- else
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, ArgbEncode(255,255,255,255));
-
- //draw arrow
-
- if (rectWnd.top - rectWnd.bottom > 6.0f )
- {
- FX_FLOAT fX = rectWnd.left + 1.5f;
- FX_FLOAT fY = rectWnd.bottom;
-
- CPDF_Point pts[7] = {
- CPDF_Point(fX+2.5f, fY+5.0f),
- CPDF_Point(fX+2.5f, fY+6.0f),
- CPDF_Point(fX+4.5f, fY+4.0f),
- CPDF_Point(fX+6.5f, fY+6.0f),
- CPDF_Point(fX+6.5f, fY+5.0f),
- CPDF_Point(fX+4.5f, fY+3.0f),
- CPDF_Point(fX+2.5f, fY+5.0f)};
-
-
- if (IsEnabled())
- CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7, ArgbEncode(nTransparancy,255,255,255));
- else
- CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7,
- CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_HEAVYGRAYCOLOR,255));
- }
- }
- break;
- case PSBT_POS:
- {
- //CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
-
- //draw border
- CPDF_Rect rcDraw = rectWnd;
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,100,100,100),0.0f);
-
- //draw inner border
- rcDraw = CPWL_Utils::DeflateRect(rectWnd,0.5f);
- CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
- ArgbEncode(nTransparancy,255,255,255),1.0f);
-
- if (IsEnabled())
- {
- //draw shadow effect
-
- CPDF_Point ptTop = CPDF_Point(rectWnd.left,rectWnd.top-1.0f);
- CPDF_Point ptBottom = CPDF_Point(rectWnd.left,rectWnd.bottom+1.0f);
-
- ptTop.x += 1.5f;
- ptBottom.x += 1.5f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,210,210,210),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,220,220,220),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,240,240,240),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,240,240,240),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,210,210,210),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,180,180,180),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,150,150,150),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,150,150,150),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,180,180,180),1.0f);
-
- ptTop.x += 1.0f;
- ptBottom.x += 1.0f;
-
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
- ArgbEncode(nTransparancy,210,210,210),1.0f);
- }
- else
- {
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, ArgbEncode(255,255,255,255));
- }
-
- //draw friction
+void CPWL_SBButton::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ if (!IsVisible())
+ return;
+
+ CPDF_Rect rectWnd = GetWindowRect();
+ if (rectWnd.IsEmpty())
+ return;
+
+ CPDF_Point ptCenter = GetCenterPoint();
+ int32_t nTransparancy = GetTransparency();
+
+ switch (m_eScrollBarType) {
+ case SBT_HSCROLL:
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+ switch (m_eSBButtonType) {
+ case PSBT_MIN: {
+ CPDF_Point pt1(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y);
+ CPDF_Point pt2(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN);
+ CPDF_Point pt3(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ CFX_PathData path;
+
+ path.SetPointCount(4);
+ path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
+ path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
+ path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
+ path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
+
+ pDevice->DrawPath(&path, pUser2Device, NULL,
+ CPWL_Utils::PWLColorToFXColor(
+ PWL_DEFAULT_BLACKCOLOR, nTransparancy),
+ 0, FXFILL_ALTERNATE);
+ }
+ } break;
+ case PSBT_MAX: {
+ CPDF_Point pt1(ptCenter.x + PWL_TRIANGLE_HALFLEN * 0.5f, ptCenter.y);
+ CPDF_Point pt2(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y + PWL_TRIANGLE_HALFLEN);
+ CPDF_Point pt3(ptCenter.x - PWL_TRIANGLE_HALFLEN * 0.5f,
+ ptCenter.y - PWL_TRIANGLE_HALFLEN);
+
+ if (rectWnd.right - rectWnd.left > PWL_TRIANGLE_HALFLEN * 2 &&
+ rectWnd.top - rectWnd.bottom > PWL_TRIANGLE_HALFLEN) {
+ CFX_PathData path;
+
+ path.SetPointCount(4);
+ path.SetPoint(0, pt1.x, pt1.y, FXPT_MOVETO);
+ path.SetPoint(1, pt2.x, pt2.y, FXPT_LINETO);
+ path.SetPoint(2, pt3.x, pt3.y, FXPT_LINETO);
+ path.SetPoint(3, pt1.x, pt1.y, FXPT_LINETO);
+
+ pDevice->DrawPath(&path, pUser2Device, NULL,
+ CPWL_Utils::PWLColorToFXColor(
+ PWL_DEFAULT_BLACKCOLOR, nTransparancy),
+ 0, FXFILL_ALTERNATE);
+ }
+ } break;
+ default:
+ break;
+ }
+ break;
+ case SBT_VSCROLL:
+ switch (m_eSBButtonType) {
+ case PSBT_MIN: {
+ // draw border
+ CPDF_Rect rcDraw = rectWnd;
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 100, 100, 100),
+ 0.0f);
+
+ // draw inner border
+ rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f);
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 255, 255, 255),
+ 1.0f);
+
+ // draw background
+
+ rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f);
+
+ if (IsEnabled())
+ CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw,
+ nTransparancy, 80, 220);
+ else
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(255, 255, 255, 255));
+
+ // draw arrow
+
+ if (rectWnd.top - rectWnd.bottom > 6.0f) {
+ FX_FLOAT fX = rectWnd.left + 1.5f;
+ FX_FLOAT fY = rectWnd.bottom;
+ CPDF_Point pts[7] = {CPDF_Point(fX + 2.5f, fY + 4.0f),
+ CPDF_Point(fX + 2.5f, fY + 3.0f),
+ CPDF_Point(fX + 4.5f, fY + 5.0f),
+ CPDF_Point(fX + 6.5f, fY + 3.0f),
+ CPDF_Point(fX + 6.5f, fY + 4.0f),
+ CPDF_Point(fX + 4.5f, fY + 6.0f),
+ CPDF_Point(fX + 2.5f, fY + 4.0f)};
+
+ if (IsEnabled())
+ CPWL_Utils::DrawFillArea(
+ pDevice, pUser2Device, pts, 7,
+ ArgbEncode(nTransparancy, 255, 255, 255));
+ else
+ CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7,
+ CPWL_Utils::PWLColorToFXColor(
+ PWL_DEFAULT_HEAVYGRAYCOLOR, 255));
+ }
+ } break;
+ case PSBT_MAX: {
+ // draw border
+ CPDF_Rect rcDraw = rectWnd;
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 100, 100, 100),
+ 0.0f);
+
+ // draw inner border
+ rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f);
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 255, 255, 255),
+ 1.0f);
+
+ // draw background
+ rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f);
+ if (IsEnabled())
+ CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw,
+ nTransparancy, 80, 220);
+ else
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(255, 255, 255, 255));
+
+ // draw arrow
+
+ if (rectWnd.top - rectWnd.bottom > 6.0f) {
+ FX_FLOAT fX = rectWnd.left + 1.5f;
+ FX_FLOAT fY = rectWnd.bottom;
+
+ CPDF_Point pts[7] = {CPDF_Point(fX + 2.5f, fY + 5.0f),
+ CPDF_Point(fX + 2.5f, fY + 6.0f),
+ CPDF_Point(fX + 4.5f, fY + 4.0f),
+ CPDF_Point(fX + 6.5f, fY + 6.0f),
+ CPDF_Point(fX + 6.5f, fY + 5.0f),
+ CPDF_Point(fX + 4.5f, fY + 3.0f),
+ CPDF_Point(fX + 2.5f, fY + 5.0f)};
+
+ if (IsEnabled())
+ CPWL_Utils::DrawFillArea(
+ pDevice, pUser2Device, pts, 7,
+ ArgbEncode(nTransparancy, 255, 255, 255));
+ else
+ CPWL_Utils::DrawFillArea(pDevice, pUser2Device, pts, 7,
+ CPWL_Utils::PWLColorToFXColor(
+ PWL_DEFAULT_HEAVYGRAYCOLOR, 255));
+ }
+ } break;
+ case PSBT_POS: {
+ // CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device);
+
+ // draw border
+ CPDF_Rect rcDraw = rectWnd;
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 100, 100, 100),
+ 0.0f);
+
+ // draw inner border
+ rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f);
+ CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(nTransparancy, 255, 255, 255),
+ 1.0f);
+
+ if (IsEnabled()) {
+ // draw shadow effect
+
+ CPDF_Point ptTop = CPDF_Point(rectWnd.left, rectWnd.top - 1.0f);
+ CPDF_Point ptBottom =
+ CPDF_Point(rectWnd.left, rectWnd.bottom + 1.0f);
+
+ ptTop.x += 1.5f;
+ ptBottom.x += 1.5f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 210, 210, 210),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 220, 220, 220),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 240, 240, 240),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 240, 240, 240),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 210, 210, 210),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 180, 180, 180),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 150, 150, 150),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 150, 150, 150),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 180, 180, 180),
+ 1.0f);
+
+ ptTop.x += 1.0f;
+ ptBottom.x += 1.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptTop, ptBottom,
+ ArgbEncode(nTransparancy, 210, 210, 210),
+ 1.0f);
+ } else {
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw,
+ ArgbEncode(255, 255, 255, 255));
+ }
+
+ // draw friction
+
+ if (rectWnd.Height() > 8.0f) {
+ FX_COLORREF crStroke = ArgbEncode(nTransparancy, 120, 120, 120);
+ if (!IsEnabled())
+ crStroke = CPWL_Utils::PWLColorToFXColor(
+ PWL_DEFAULT_HEAVYGRAYCOLOR, 255);
+
+ FX_FLOAT nFrictionWidth = 5.0f;
+ FX_FLOAT nFrictionHeight = 5.5f;
- if (rectWnd.Height() > 8.0f)
- {
- FX_COLORREF crStroke = ArgbEncode(nTransparancy,120,120,120);
- if (!IsEnabled())
- crStroke = CPWL_Utils::PWLColorToFXColor(PWL_DEFAULT_HEAVYGRAYCOLOR,255);
+ CPDF_Point ptLeft =
+ CPDF_Point(ptCenter.x - nFrictionWidth / 2.0f,
+ ptCenter.y - nFrictionHeight / 2.0f + 0.5f);
+ CPDF_Point ptRight =
+ CPDF_Point(ptCenter.x + nFrictionWidth / 2.0f,
+ ptCenter.y - nFrictionHeight / 2.0f + 0.5f);
- FX_FLOAT nFrictionWidth = 5.0f;
- FX_FLOAT nFrictionHeight = 5.5f;
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
+ crStroke, 1.0f);
- CPDF_Point ptLeft = CPDF_Point(ptCenter.x - nFrictionWidth / 2.0f, ptCenter.y - nFrictionHeight / 2.0f + 0.5f);
- CPDF_Point ptRight = CPDF_Point(ptCenter.x + nFrictionWidth / 2.0f, ptCenter.y - nFrictionHeight / 2.0f + 0.5f);
+ ptLeft.y += 2.0f;
+ ptRight.y += 2.0f;
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
- crStroke,1.0f);
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
+ crStroke, 1.0f);
- ptLeft.y += 2.0f;
- ptRight.y += 2.0f;
+ ptLeft.y += 2.0f;
+ ptRight.y += 2.0f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
+ crStroke, 1.0f);
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
- crStroke,1.0f);
+ /*
+ ptLeft.y += 1.5f;
+ ptRight.y += 1.5f;
+
+ CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
+ ArgbEncode(nTransparancy,150,150,150),1.0f);
+ */
+ }
+ } break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+}
- ptLeft.y += 2.0f;
- ptRight.y += 2.0f;
+FX_BOOL CPWL_SBButton::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
- crStroke,1.0f);
+ if (CPWL_Wnd* pParent = GetParentWindow())
+ pParent->OnNotify(this, PNM_LBUTTONDOWN, 0, (intptr_t)&point);
- /*
- ptLeft.y += 1.5f;
- ptRight.y += 1.5f;
+ m_bMouseDown = TRUE;
+ SetCapture();
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, ptLeft, ptRight,
- ArgbEncode(nTransparancy,150,150,150),1.0f);
- */
- }
- }
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
+ return TRUE;
}
-FX_BOOL CPWL_SBButton::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
+FX_BOOL CPWL_SBButton::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
- if (CPWL_Wnd * pParent = GetParentWindow())
- pParent->OnNotify(this,PNM_LBUTTONDOWN,0,(intptr_t)&point);
+ if (CPWL_Wnd* pParent = GetParentWindow())
+ pParent->OnNotify(this, PNM_LBUTTONUP, 0, (intptr_t)&point);
- m_bMouseDown = TRUE;
- SetCapture();
+ m_bMouseDown = FALSE;
+ ReleaseCapture();
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_SBButton::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point,nFlag);
+FX_BOOL CPWL_SBButton::OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnMouseMove(point, nFlag);
- if (CPWL_Wnd * pParent = GetParentWindow())
- pParent->OnNotify(this,PNM_LBUTTONUP,0,(intptr_t)&point);
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ pParent->OnNotify(this, PNM_MOUSEMOVE, 0, (intptr_t)&point);
- m_bMouseDown = FALSE;
- ReleaseCapture();
+ /*
+ if (m_bMouseDown && (m_eSBButtonType == PSBT_MIN || m_eSBButtonType ==
+ PSBT_MAX))
+ {
+ if
+ (!pParent->OnNotify(this,PNM_LBUTTONDOWN,nFlags,(intptr_t)&point))
+ return FALSE;
+ }
+ */
+ }
- return TRUE;
+ return TRUE;
}
-FX_BOOL CPWL_SBButton::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnMouseMove(point,nFlag);
+/* ------------------------------- CPWL_ScrollBar
+ * ---------------------------------- */
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- pParent->OnNotify(this,PNM_MOUSEMOVE,0,(intptr_t)&point);
+CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType)
+ : m_sbType(sbType),
+ m_pMinButton(NULL),
+ m_pMaxButton(NULL),
+ m_pPosButton(NULL),
+ m_bMouseDown(FALSE),
+ m_bMinOrMax(FALSE),
+ m_bNotifyForever(TRUE) {}
- /*
- if (m_bMouseDown && (m_eSBButtonType == PSBT_MIN || m_eSBButtonType == PSBT_MAX))
- {
- if (!pParent->OnNotify(this,PNM_LBUTTONDOWN,nFlags,(intptr_t)&point))
- return FALSE;
- }
- */
- }
+CPWL_ScrollBar::~CPWL_ScrollBar() {}
- return TRUE;
+CFX_ByteString CPWL_ScrollBar::GetClassName() const {
+ return "CPWL_ScrollBar";
}
-/* ------------------------------- CPWL_ScrollBar ---------------------------------- */
-
-CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType):
- m_sbType(sbType),
- m_pMinButton(NULL),
- m_pMaxButton(NULL),
- m_pPosButton(NULL),
- m_bMouseDown(FALSE),
- m_bMinOrMax(FALSE),
- m_bNotifyForever(TRUE)
-{
+void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) {
+ cp.eCursorType = FXCT_ARROW;
}
-CPWL_ScrollBar::~CPWL_ScrollBar()
-{
+void CPWL_ScrollBar::RePosChildWnd() {
+ CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcMinButton, rcMaxButton;
+ FX_FLOAT fBWidth = 0;
+
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ if (rcClient.right - rcClient.left >
+ PWL_SCROLLBAR_BUTTON_WIDTH * 2 + PWL_SCROLLBAR_POSBUTTON_MINWIDTH +
+ 2) {
+ rcMinButton =
+ CPDF_Rect(rcClient.left, rcClient.bottom,
+ rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH, rcClient.top);
+ rcMaxButton = CPDF_Rect(rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH,
+ rcClient.bottom, rcClient.right, rcClient.top);
+ } else {
+ fBWidth = (rcClient.right - rcClient.left -
+ PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) /
+ 2;
+
+ if (fBWidth > 0) {
+ rcMinButton = CPDF_Rect(rcClient.left, rcClient.bottom,
+ rcClient.left + fBWidth, rcClient.top);
+ rcMaxButton = CPDF_Rect(rcClient.right - fBWidth, rcClient.bottom,
+ rcClient.right, rcClient.top);
+ } else
+ SetVisible(FALSE);
+ }
+ break;
+ case SBT_VSCROLL:
+ if (IsFloatBigger(rcClient.top - rcClient.bottom,
+ PWL_SCROLLBAR_BUTTON_WIDTH * 2 +
+ PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)) {
+ rcMinButton =
+ CPDF_Rect(rcClient.left, rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH,
+ rcClient.right, rcClient.top);
+ rcMaxButton = CPDF_Rect(rcClient.left, rcClient.bottom, rcClient.right,
+ rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH);
+ } else {
+ fBWidth = (rcClient.top - rcClient.bottom -
+ PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) /
+ 2;
+
+ if (IsFloatBigger(fBWidth, 0)) {
+ rcMinButton = CPDF_Rect(rcClient.left, rcClient.top - fBWidth,
+ rcClient.right, rcClient.top);
+ rcMaxButton = CPDF_Rect(rcClient.left, rcClient.bottom,
+ rcClient.right, rcClient.bottom + fBWidth);
+ } else
+ SetVisible(FALSE);
+ }
+ break;
+ }
+
+ if (m_pMinButton)
+ m_pMinButton->Move(rcMinButton, TRUE, FALSE);
+ if (m_pMaxButton)
+ m_pMaxButton->Move(rcMaxButton, TRUE, FALSE);
+ MovePosButton(FALSE);
}
-CFX_ByteString CPWL_ScrollBar::GetClassName() const
-{
- return "CPWL_ScrollBar";
-}
+void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPDF_Rect rectWnd = GetWindowRect();
-void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM & cp)
-{
- cp.eCursorType = FXCT_ARROW;
-}
-
-void CPWL_ScrollBar::RePosChildWnd()
-{
- CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcMinButton,rcMaxButton;
- FX_FLOAT fBWidth = 0;
-
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- if (rcClient.right - rcClient.left > PWL_SCROLLBAR_BUTTON_WIDTH * 2 + PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)
- {
- rcMinButton = CPDF_Rect(rcClient.left,rcClient.bottom,
- rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH,rcClient.top);
- rcMaxButton = CPDF_Rect(rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH,rcClient.bottom,
- rcClient.right,rcClient.top);
- }
- else
- {
- fBWidth = (rcClient.right - rcClient.left - PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / 2;
-
- if (fBWidth > 0)
- {
- rcMinButton = CPDF_Rect(rcClient.left,rcClient.bottom,
- rcClient.left + fBWidth,rcClient.top);
- rcMaxButton = CPDF_Rect(rcClient.right - fBWidth,rcClient.bottom,
- rcClient.right,rcClient.top);
- }
- else SetVisible(FALSE);
- }
- break;
- case SBT_VSCROLL:
- if (IsFloatBigger(rcClient.top - rcClient.bottom, PWL_SCROLLBAR_BUTTON_WIDTH * 2 + PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2))
- {
- rcMinButton = CPDF_Rect(rcClient.left,rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH,
- rcClient.right,rcClient.top);
- rcMaxButton = CPDF_Rect(rcClient.left,rcClient.bottom,
- rcClient.right,rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH);
- }
- else
- {
- fBWidth = (rcClient.top - rcClient.bottom - PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / 2;
-
- if (IsFloatBigger(fBWidth, 0))
- {
- rcMinButton = CPDF_Rect(rcClient.left,rcClient.top - fBWidth,
- rcClient.right,rcClient.top);
- rcMaxButton = CPDF_Rect(rcClient.left,rcClient.bottom,
- rcClient.right,rcClient.bottom + fBWidth);
- }
- else SetVisible(FALSE);
- }
- break;
- }
-
- if (m_pMinButton)
- m_pMinButton->Move(rcMinButton, TRUE, FALSE);
- if (m_pMaxButton)
- m_pMaxButton->Move(rcMaxButton, TRUE, FALSE);
- MovePosButton(FALSE);
-}
+ if (IsVisible() && !rectWnd.IsEmpty()) {
+ CFX_ByteTextBuf sButton;
-void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPDF_Rect rectWnd = GetWindowRect();
+ sButton << "q\n";
+ sButton << "0 w\n"
+ << CPWL_Utils::GetColorAppStream(GetBackgroundColor(), TRUE);
+ sButton << rectWnd.left << " " << rectWnd.bottom << " "
+ << rectWnd.right - rectWnd.left << " "
+ << rectWnd.top - rectWnd.bottom << " re b Q\n";
- if (IsVisible() && !rectWnd.IsEmpty())
- {
- CFX_ByteTextBuf sButton;
+ sAppStream << sButton;
+ }
+}
- sButton << "q\n";
- sButton << "0 w\n" << CPWL_Utils::GetColorAppStream(GetBackgroundColor(),TRUE);
- sButton << rectWnd.left << " " << rectWnd.bottom << " "
- << rectWnd.right - rectWnd.left << " " << rectWnd.top - rectWnd.bottom << " re b Q\n";
+void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPDF_Rect rectWnd = GetWindowRect();
+
+ if (IsVisible() && !rectWnd.IsEmpty()) {
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rectWnd,
+ GetBackgroundColor(), GetTransparency());
+
+ CPWL_Utils::DrawStrokeLine(
+ pDevice, pUser2Device,
+ CPDF_Point(rectWnd.left + 2.0f, rectWnd.top - 2.0f),
+ CPDF_Point(rectWnd.left + 2.0f, rectWnd.bottom + 2.0f),
+ ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f);
+
+ CPWL_Utils::DrawStrokeLine(
+ pDevice, pUser2Device,
+ CPDF_Point(rectWnd.right - 2.0f, rectWnd.top - 2.0f),
+ CPDF_Point(rectWnd.right - 2.0f, rectWnd.bottom + 2.0f),
+ ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f);
+ }
+}
- sAppStream << sButton;
- }
+FX_BOOL CPWL_ScrollBar::OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonDown(point, nFlag);
+
+ if (HasFlag(PWS_AUTOTRANSPARENT)) {
+ if (GetTransparency() != 255) {
+ SetTransparency(255);
+ InvalidateRect();
+ }
+ }
+
+ CPDF_Rect rcMinArea, rcMaxArea;
+
+ if (m_pPosButton && m_pPosButton->IsVisible()) {
+ CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect();
+
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ rcMinArea = CPDF_Rect(rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH,
+ rcClient.bottom, rcPosButton.left, rcClient.top);
+ rcMaxArea = CPDF_Rect(rcPosButton.right, rcClient.bottom,
+ rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH,
+ rcClient.top);
+
+ break;
+ case SBT_VSCROLL:
+ rcMinArea = CPDF_Rect(rcClient.left, rcPosButton.top, rcClient.right,
+ rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH);
+ rcMaxArea = CPDF_Rect(rcClient.left,
+ rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH,
+ rcClient.right, rcPosButton.bottom);
+ break;
+ }
+
+ rcMinArea.Normalize();
+ rcMaxArea.Normalize();
+
+ if (rcMinArea.Contains(point.x, point.y)) {
+ m_sData.SubBig();
+ MovePosButton(TRUE);
+ NotifyScrollWindow();
+ }
+
+ if (rcMaxArea.Contains(point.x, point.y)) {
+ m_sData.AddBig();
+ MovePosButton(TRUE);
+ NotifyScrollWindow();
+ }
+ }
+
+ return TRUE;
}
-void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPDF_Rect rectWnd = GetWindowRect();
+FX_BOOL CPWL_ScrollBar::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ CPWL_Wnd::OnLButtonUp(point, nFlag);
- if (IsVisible() && !rectWnd.IsEmpty())
- {
- CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rectWnd, GetBackgroundColor(), GetTransparency());
+ if (HasFlag(PWS_AUTOTRANSPARENT)) {
+ if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY) {
+ SetTransparency(PWL_SCROLLBAR_TRANSPARANCY);
+ InvalidateRect();
+ }
+ }
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device,
- CPDF_Point(rectWnd.left+2.0f,rectWnd.top-2.0f), CPDF_Point(rectWnd.left+2.0f,rectWnd.bottom+2.0f),
- ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f);
+ EndTimer();
+ m_bMouseDown = FALSE;
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device,
- CPDF_Point(rectWnd.right-2.0f,rectWnd.top-2.0f), CPDF_Point(rectWnd.right-2.0f,rectWnd.bottom+2.0f),
- ArgbEncode(GetTransparency(), 100, 100, 100),1.0f);
- }
+ return TRUE;
}
-FX_BOOL CPWL_ScrollBar::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonDown(point,nFlag);
-
- if (HasFlag(PWS_AUTOTRANSPARENT))
- {
- if (GetTransparency() != 255)
- {
- SetTransparency(255);
- InvalidateRect();
- }
- }
-
- CPDF_Rect rcMinArea,rcMaxArea;
-
- if (m_pPosButton && m_pPosButton->IsVisible())
- {
- CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect();
-
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- rcMinArea = CPDF_Rect(rcClient.left + PWL_SCROLLBAR_BUTTON_WIDTH,rcClient.bottom,
- rcPosButton.left,rcClient.top);
- rcMaxArea = CPDF_Rect(rcPosButton.right,rcClient.bottom,
- rcClient.right - PWL_SCROLLBAR_BUTTON_WIDTH,rcClient.top);
-
- break;
- case SBT_VSCROLL:
- rcMinArea = CPDF_Rect(rcClient.left,rcPosButton.top,
- rcClient.right,rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH);
- rcMaxArea = CPDF_Rect(rcClient.left,rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH,
- rcClient.right,rcPosButton.bottom);
- break;
- }
-
- rcMinArea.Normalize();
- rcMaxArea.Normalize();
-
- if (rcMinArea.Contains(point.x,point.y))
- {
- m_sData.SubBig();
- MovePosButton(TRUE);
- NotifyScrollWindow();
- }
-
- if (rcMaxArea.Contains(point.x,point.y))
- {
- m_sData.AddBig();
- MovePosButton(TRUE);
- NotifyScrollWindow();
- }
- }
-
- return TRUE;
+void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam);
+
+ switch (msg) {
+ case PNM_LBUTTONDOWN:
+ if (pWnd == m_pMinButton) {
+ OnMinButtonLBDown(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pMaxButton) {
+ OnMaxButtonLBDown(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pPosButton) {
+ OnPosButtonLBDown(*(CPDF_Point*)lParam);
+ }
+ break;
+ case PNM_LBUTTONUP:
+ if (pWnd == m_pMinButton) {
+ OnMinButtonLBUp(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pMaxButton) {
+ OnMaxButtonLBUp(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pPosButton) {
+ OnPosButtonLBUp(*(CPDF_Point*)lParam);
+ }
+ break;
+ case PNM_MOUSEMOVE:
+ if (pWnd == m_pMinButton) {
+ OnMinButtonMouseMove(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pMaxButton) {
+ OnMaxButtonMouseMove(*(CPDF_Point*)lParam);
+ }
+
+ if (pWnd == m_pPosButton) {
+ OnPosButtonMouseMove(*(CPDF_Point*)lParam);
+ }
+ break;
+ case PNM_SETSCROLLINFO: {
+ if (PWL_SCROLL_INFO* pInfo = (PWL_SCROLL_INFO*)lParam) {
+ if (FXSYS_memcmp(&m_OriginInfo, pInfo, sizeof(PWL_SCROLL_INFO)) != 0) {
+ m_OriginInfo = *pInfo;
+ FX_FLOAT fMax =
+ pInfo->fContentMax - pInfo->fContentMin - pInfo->fPlateWidth;
+ fMax = fMax > 0.0f ? fMax : 0.0f;
+ SetScrollRange(0, fMax, pInfo->fPlateWidth);
+ SetScrollStep(pInfo->fBigStep, pInfo->fSmallStep);
+ }
+ }
+ } break;
+ case PNM_SETSCROLLPOS: {
+ FX_FLOAT fPos = *(FX_FLOAT*)lParam;
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ fPos = fPos - m_OriginInfo.fContentMin;
+ break;
+ case SBT_VSCROLL:
+ fPos = m_OriginInfo.fContentMax - fPos;
+ break;
+ }
+ SetScrollPos(fPos);
+ } break;
+ }
}
-FX_BOOL CPWL_ScrollBar::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- CPWL_Wnd::OnLButtonUp(point,nFlag);
-
- if (HasFlag(PWS_AUTOTRANSPARENT))
- {
- if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY)
- {
- SetTransparency(PWL_SCROLLBAR_TRANSPARANCY);
- InvalidateRect();
- }
- }
+void CPWL_ScrollBar::CreateButtons(const PWL_CREATEPARAM& cp) {
+ PWL_CREATEPARAM scp = cp;
+ scp.pParentWnd = this;
+ scp.dwBorderWidth = 2;
+ scp.nBorderStyle = PBS_BEVELED;
+
+ scp.dwFlags =
+ PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PWS_BACKGROUND | PWS_NOREFRESHCLIP;
+
+ if (!m_pMinButton) {
+ m_pMinButton = new CPWL_SBButton(m_sbType, PSBT_MIN);
+ m_pMinButton->Create(scp);
+ }
+
+ if (!m_pMaxButton) {
+ m_pMaxButton = new CPWL_SBButton(m_sbType, PSBT_MAX);
+ m_pMaxButton->Create(scp);
+ }
+
+ if (!m_pPosButton) {
+ m_pPosButton = new CPWL_SBButton(m_sbType, PSBT_POS);
+ m_pPosButton->SetVisible(FALSE);
+ m_pPosButton->Create(scp);
+ }
+}
- EndTimer();
- m_bMouseDown = FALSE;
+FX_FLOAT CPWL_ScrollBar::GetScrollBarWidth() const {
+ if (!IsVisible())
+ return 0;
- return TRUE;
+ return PWL_SCROLLBAR_WIDTH;
}
-void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam);
-
- switch (msg)
- {
- case PNM_LBUTTONDOWN:
- if (pWnd == m_pMinButton)
- {
- OnMinButtonLBDown(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pMaxButton)
- {
- OnMaxButtonLBDown(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pPosButton)
- {
- OnPosButtonLBDown(*(CPDF_Point*)lParam);
- }
- break;
- case PNM_LBUTTONUP:
- if (pWnd == m_pMinButton)
- {
- OnMinButtonLBUp(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pMaxButton)
- {
- OnMaxButtonLBUp(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pPosButton)
- {
- OnPosButtonLBUp(*(CPDF_Point*)lParam);
- }
- break;
- case PNM_MOUSEMOVE:
- if (pWnd == m_pMinButton)
- {
- OnMinButtonMouseMove(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pMaxButton)
- {
- OnMaxButtonMouseMove(*(CPDF_Point*)lParam);
- }
-
- if (pWnd == m_pPosButton)
- {
- OnPosButtonMouseMove(*(CPDF_Point*)lParam);
- }
- break;
- case PNM_SETSCROLLINFO:
- {
- if (PWL_SCROLL_INFO * pInfo = (PWL_SCROLL_INFO*)lParam)
- {
- if (FXSYS_memcmp(&m_OriginInfo, pInfo, sizeof(PWL_SCROLL_INFO)) != 0)
- {
- m_OriginInfo = *pInfo;
- FX_FLOAT fMax = pInfo->fContentMax - pInfo->fContentMin - pInfo->fPlateWidth;
- fMax = fMax > 0.0f ? fMax : 0.0f;
- SetScrollRange(0, fMax, pInfo->fPlateWidth);
- SetScrollStep(pInfo->fBigStep, pInfo->fSmallStep);
- }
- }
- }
- break;
- case PNM_SETSCROLLPOS:
- {
- FX_FLOAT fPos = *(FX_FLOAT*)lParam;
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- fPos = fPos - m_OriginInfo.fContentMin;
- break;
- case SBT_VSCROLL:
- fPos = m_OriginInfo.fContentMax - fPos;
- break;
- }
- SetScrollPos(fPos);
- }
- break;
- }
+void CPWL_ScrollBar::SetScrollRange(FX_FLOAT fMin,
+ FX_FLOAT fMax,
+ FX_FLOAT fClientWidth) {
+ if (m_pPosButton) {
+ m_sData.SetScrollRange(fMin, fMax);
+ m_sData.SetClientWidth(fClientWidth);
+
+ if (IsFloatSmaller(m_sData.ScrollRange.GetWidth(), 0.0f)) {
+ m_pPosButton->SetVisible(FALSE);
+ } else {
+ m_pPosButton->SetVisible(TRUE);
+ MovePosButton(TRUE);
+ }
+ }
}
-void CPWL_ScrollBar::CreateButtons(const PWL_CREATEPARAM & cp)
-{
- PWL_CREATEPARAM scp = cp;
- scp.pParentWnd = this;
- scp.dwBorderWidth = 2;
- scp.nBorderStyle = PBS_BEVELED;
-
- scp.dwFlags = PWS_VISIBLE | PWS_CHILD | PWS_BORDER | PWS_BACKGROUND | PWS_NOREFRESHCLIP;
-
- if (!m_pMinButton)
- {
- m_pMinButton = new CPWL_SBButton(m_sbType,PSBT_MIN);
- m_pMinButton->Create(scp);
- }
-
- if (!m_pMaxButton)
- {
- m_pMaxButton = new CPWL_SBButton(m_sbType,PSBT_MAX);
- m_pMaxButton->Create(scp);
- }
-
- if (!m_pPosButton)
- {
- m_pPosButton = new CPWL_SBButton(m_sbType,PSBT_POS);
- m_pPosButton->SetVisible(FALSE);
- m_pPosButton->Create(scp);
- }
-}
+void CPWL_ScrollBar::SetScrollPos(FX_FLOAT fPos) {
+ FX_FLOAT fOldPos = m_sData.fScrollPos;
-FX_FLOAT CPWL_ScrollBar::GetScrollBarWidth() const
-{
- if (!IsVisible()) return 0;
+ m_sData.SetPos(fPos);
- return PWL_SCROLLBAR_WIDTH;
+ if (!IsFloatEqual(m_sData.fScrollPos, fOldPos))
+ MovePosButton(TRUE);
}
-void CPWL_ScrollBar::SetScrollRange(FX_FLOAT fMin,FX_FLOAT fMax,FX_FLOAT fClientWidth)
-{
- if (m_pPosButton)
- {
- m_sData.SetScrollRange(fMin,fMax);
- m_sData.SetClientWidth(fClientWidth);
-
- if (IsFloatSmaller(m_sData.ScrollRange.GetWidth(), 0.0f))
- {
- m_pPosButton->SetVisible(FALSE);
- }
- else
- {
- m_pPosButton->SetVisible(TRUE);
- MovePosButton(TRUE);
- }
- }
+void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep) {
+ m_sData.SetBigStep(fBigStep);
+ m_sData.SetSmallStep(fSmallStep);
}
-void CPWL_ScrollBar::SetScrollPos(FX_FLOAT fPos)
-{
- FX_FLOAT fOldPos = m_sData.fScrollPos;
+void CPWL_ScrollBar::MovePosButton(FX_BOOL bRefresh) {
+ ASSERT(m_pPosButton != NULL);
+ ASSERT(m_pMinButton != NULL);
+ ASSERT(m_pMaxButton != NULL);
- m_sData.SetPos(fPos);
+ if (m_pPosButton->IsVisible()) {
+ CPDF_Rect rcClient;
+ CPDF_Rect rcPosArea, rcPosButton;
- if (!IsFloatEqual(m_sData.fScrollPos, fOldPos))
- MovePosButton(TRUE);
-}
+ rcClient = GetClientRect();
+ rcPosArea = GetScrollArea();
-void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep,FX_FLOAT fSmallStep)
-{
- m_sData.SetBigStep(fBigStep);
- m_sData.SetSmallStep(fSmallStep);
-}
+ FX_FLOAT fLeft, fRight, fTop, fBottom;
-void CPWL_ScrollBar::MovePosButton(FX_BOOL bRefresh)
-{
- ASSERT (m_pPosButton != NULL);
- ASSERT (m_pMinButton != NULL);
- ASSERT (m_pMaxButton != NULL);
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ fLeft = TrueToFace(m_sData.fScrollPos);
+ fRight = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth);
- if (m_pPosButton->IsVisible())
- {
+ if (fRight - fLeft < PWL_SCROLLBAR_POSBUTTON_MINWIDTH)
+ fRight = fLeft + PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
+ if (fRight > rcPosArea.right) {
+ fRight = rcPosArea.right;
+ fLeft = fRight - PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
+ }
+ rcPosButton = CPDF_Rect(fLeft, rcPosArea.bottom, fRight, rcPosArea.top);
+ break;
+ case SBT_VSCROLL:
+ fBottom = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth);
+ fTop = TrueToFace(m_sData.fScrollPos);
- CPDF_Rect rcClient;
- CPDF_Rect rcPosArea,rcPosButton;
+ if (IsFloatSmaller(fTop - fBottom, PWL_SCROLLBAR_POSBUTTON_MINWIDTH))
+ fBottom = fTop - PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
- rcClient = GetClientRect();
- rcPosArea = GetScrollArea();
+ if (IsFloatSmaller(fBottom, rcPosArea.bottom)) {
+ fBottom = rcPosArea.bottom;
+ fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
+ }
- FX_FLOAT fLeft,fRight,fTop,fBottom;
+ rcPosButton = CPDF_Rect(rcPosArea.left, fBottom, rcPosArea.right, fTop);
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- fLeft = TrueToFace(m_sData.fScrollPos);
- fRight = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth);
+ break;
+ }
- if (fRight - fLeft < PWL_SCROLLBAR_POSBUTTON_MINWIDTH)
- fRight = fLeft + PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
+ m_pPosButton->Move(rcPosButton, TRUE, bRefresh);
+ }
+}
- if (fRight > rcPosArea.right)
- {
- fRight = rcPosArea.right;
- fLeft = fRight - PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
- }
+void CPWL_ScrollBar::OnMinButtonLBDown(const CPDF_Point& point) {
+ m_sData.SubSmall();
+ MovePosButton(TRUE);
+ NotifyScrollWindow();
- rcPosButton = CPDF_Rect(fLeft ,
- rcPosArea.bottom,
- fRight ,
- rcPosArea.top);
+ m_bMinOrMax = TRUE;
- break;
- case SBT_VSCROLL:
- fBottom = TrueToFace(m_sData.fScrollPos + m_sData.fClientWidth);
- fTop = TrueToFace(m_sData.fScrollPos);
+ EndTimer();
+ BeginTimer(100);
+}
- if (IsFloatSmaller(fTop - fBottom, PWL_SCROLLBAR_POSBUTTON_MINWIDTH))
- fBottom = fTop - PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
+void CPWL_ScrollBar::OnMinButtonLBUp(const CPDF_Point& point) {}
- if (IsFloatSmaller(fBottom, rcPosArea.bottom))
- {
- fBottom = rcPosArea.bottom;
- fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH;
- }
+void CPWL_ScrollBar::OnMinButtonMouseMove(const CPDF_Point& point) {}
- rcPosButton = CPDF_Rect(rcPosArea.left,
- fBottom,
- rcPosArea.right,
- fTop);
+void CPWL_ScrollBar::OnMaxButtonLBDown(const CPDF_Point& point) {
+ m_sData.AddSmall();
+ MovePosButton(TRUE);
+ NotifyScrollWindow();
- break;
- }
+ m_bMinOrMax = FALSE;
- m_pPosButton->Move(rcPosButton,TRUE,bRefresh);
- }
+ EndTimer();
+ BeginTimer(100);
}
-void CPWL_ScrollBar::OnMinButtonLBDown(const CPDF_Point & point)
-{
- m_sData.SubSmall();
- MovePosButton(TRUE);
- NotifyScrollWindow();
+void CPWL_ScrollBar::OnMaxButtonLBUp(const CPDF_Point& point) {}
- m_bMinOrMax = TRUE;
+void CPWL_ScrollBar::OnMaxButtonMouseMove(const CPDF_Point& point) {}
- EndTimer();
- BeginTimer(100);
-}
+void CPWL_ScrollBar::OnPosButtonLBDown(const CPDF_Point& point) {
+ m_bMouseDown = TRUE;
+
+ if (m_pPosButton) {
+ CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect();
-void CPWL_ScrollBar::OnMinButtonLBUp(const CPDF_Point & point)
-{
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ m_nOldPos = point.x;
+ m_fOldPosButton = rcPosButton.left;
+ break;
+ case SBT_VSCROLL:
+ m_nOldPos = point.y;
+ m_fOldPosButton = rcPosButton.top;
+ break;
+ }
+ }
}
-void CPWL_ScrollBar::OnMinButtonMouseMove(const CPDF_Point & point)
-{
+void CPWL_ScrollBar::OnPosButtonLBUp(const CPDF_Point& point) {
+ if (m_bMouseDown) {
+ if (!m_bNotifyForever)
+ NotifyScrollWindow();
+ }
+ m_bMouseDown = FALSE;
}
-void CPWL_ScrollBar::OnMaxButtonLBDown(const CPDF_Point & point)
-{
- m_sData.AddSmall();
- MovePosButton(TRUE);
- NotifyScrollWindow();
+void CPWL_ScrollBar::OnPosButtonMouseMove(const CPDF_Point& point) {
+ FX_FLOAT fOldScrollPos = m_sData.fScrollPos;
- m_bMinOrMax = FALSE;
+ FX_FLOAT fNewPos = 0;
- EndTimer();
- BeginTimer(100);
-}
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ if (FXSYS_fabs(point.x - m_nOldPos) < 1)
+ return;
+ fNewPos = FaceToTrue(m_fOldPosButton + point.x - m_nOldPos);
+ break;
+ case SBT_VSCROLL:
+ if (FXSYS_fabs(point.y - m_nOldPos) < 1)
+ return;
+ fNewPos = FaceToTrue(m_fOldPosButton + point.y - m_nOldPos);
+ break;
+ }
-void CPWL_ScrollBar::OnMaxButtonLBUp(const CPDF_Point & point)
-{
-}
+ if (m_bMouseDown) {
+ switch (m_sbType) {
+ case SBT_HSCROLL:
-void CPWL_ScrollBar::OnMaxButtonMouseMove(const CPDF_Point & point)
-{
-}
+ if (IsFloatSmaller(fNewPos, m_sData.ScrollRange.fMin)) {
+ fNewPos = m_sData.ScrollRange.fMin;
+ }
-void CPWL_ScrollBar::OnPosButtonLBDown(const CPDF_Point & point)
-{
- m_bMouseDown = TRUE;
-
- if (m_pPosButton)
- {
- CPDF_Rect rcPosButton = m_pPosButton->GetWindowRect();
-
- switch(m_sbType)
- {
- case SBT_HSCROLL:
- m_nOldPos = point.x;
- m_fOldPosButton = rcPosButton.left;
- break;
- case SBT_VSCROLL:
- m_nOldPos = point.y;
- m_fOldPosButton = rcPosButton.top;
- break;
- }
- }
-}
+ if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax)) {
+ fNewPos = m_sData.ScrollRange.fMax;
+ }
-void CPWL_ScrollBar::OnPosButtonLBUp(const CPDF_Point & point)
-{
- if (m_bMouseDown)
- {
- if (!m_bNotifyForever)
- NotifyScrollWindow();
- }
- m_bMouseDown = FALSE;
-}
+ m_sData.SetPos(fNewPos);
+
+ break;
+ case SBT_VSCROLL:
+
+ if (IsFloatSmaller(fNewPos, m_sData.ScrollRange.fMin)) {
+ fNewPos = m_sData.ScrollRange.fMin;
+ }
+
+ if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax)) {
+ fNewPos = m_sData.ScrollRange.fMax;
+ }
+
+ m_sData.SetPos(fNewPos);
+
+ break;
+ }
+
+ if (!IsFloatEqual(fOldScrollPos, m_sData.fScrollPos)) {
+ MovePosButton(TRUE);
-void CPWL_ScrollBar::OnPosButtonMouseMove(const CPDF_Point & point)
-{
- FX_FLOAT fOldScrollPos = m_sData.fScrollPos;
-
- FX_FLOAT fNewPos = 0;
-
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- if (FXSYS_fabs(point.x - m_nOldPos) < 1) return;
- fNewPos = FaceToTrue(m_fOldPosButton + point.x - m_nOldPos);
- break;
- case SBT_VSCROLL:
- if (FXSYS_fabs(point.y - m_nOldPos) < 1) return;
- fNewPos = FaceToTrue(m_fOldPosButton + point.y - m_nOldPos);
- break;
- }
-
- if (m_bMouseDown)
- {
- switch (m_sbType)
- {
- case SBT_HSCROLL:
-
- if (IsFloatSmaller(fNewPos, m_sData.ScrollRange.fMin))
- {
- fNewPos = m_sData.ScrollRange.fMin;
- }
-
- if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax))
- {
- fNewPos = m_sData.ScrollRange.fMax;
- }
-
- m_sData.SetPos(fNewPos);
-
- break;
- case SBT_VSCROLL:
-
- if (IsFloatSmaller(fNewPos, m_sData.ScrollRange.fMin))
- {
- fNewPos = m_sData.ScrollRange.fMin;
- }
-
- if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax))
- {
- fNewPos = m_sData.ScrollRange.fMax;
- }
-
- m_sData.SetPos(fNewPos);
-
- break;
- }
-
- if (!IsFloatEqual(fOldScrollPos, m_sData.fScrollPos))
- {
- MovePosButton(TRUE);
-
- if (m_bNotifyForever)
- NotifyScrollWindow();
- }
- }
+ if (m_bNotifyForever)
+ NotifyScrollWindow();
+ }
+ }
}
-void CPWL_ScrollBar::NotifyScrollWindow()
-{
- if (CPWL_Wnd * pParent = GetParentWindow())
- {
- FX_FLOAT fPos;
- switch (m_sbType)
- {
- case SBT_HSCROLL:
- fPos = m_OriginInfo.fContentMin + m_sData.fScrollPos;
- break;
- case SBT_VSCROLL:
- fPos = m_OriginInfo.fContentMax - m_sData.fScrollPos;
- break;
- }
- pParent->OnNotify(this,PNM_SCROLLWINDOW,(intptr_t)m_sbType,(intptr_t)&fPos);
- }
+void CPWL_ScrollBar::NotifyScrollWindow() {
+ if (CPWL_Wnd* pParent = GetParentWindow()) {
+ FX_FLOAT fPos;
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ fPos = m_OriginInfo.fContentMin + m_sData.fScrollPos;
+ break;
+ case SBT_VSCROLL:
+ fPos = m_OriginInfo.fContentMax - m_sData.fScrollPos;
+ break;
+ }
+ pParent->OnNotify(this, PNM_SCROLLWINDOW, (intptr_t)m_sbType,
+ (intptr_t)&fPos);
+ }
}
-CPDF_Rect CPWL_ScrollBar::GetScrollArea() const
-{
- CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcArea;
-
- if (!m_pMinButton || !m_pMaxButton)return rcClient;
-
- CPDF_Rect rcMin = m_pMinButton->GetWindowRect();
- CPDF_Rect rcMax = m_pMaxButton->GetWindowRect();
-
- FX_FLOAT fMinWidth = rcMin.right - rcMin.left;
- FX_FLOAT fMinHeight = rcMin.top - rcMin.bottom;
- FX_FLOAT fMaxWidth = rcMax.right - rcMax.left;
- FX_FLOAT fMaxHeight = rcMax.top - rcMax.bottom;
-
- switch(m_sbType)
- {
- case SBT_HSCROLL:
- if (rcClient.right - rcClient.left > fMinWidth + fMaxWidth + 2)
- {
- rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1,rcClient.bottom,
- rcClient.right - fMaxWidth - 1,rcClient.top);
- }
- else
- {
- rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1,rcClient.bottom,
- rcClient.left + fMinWidth + 1,rcClient.top);
- }
- break;
- case SBT_VSCROLL:
- if (rcClient.top - rcClient.bottom > fMinHeight + fMaxHeight + 2)
- {
- rcArea = CPDF_Rect(rcClient.left,rcClient.bottom + fMinHeight + 1,
- rcClient.right,rcClient.top - fMaxHeight - 1);
- }
- else
- {
- rcArea = CPDF_Rect(rcClient.left,rcClient.bottom + fMinHeight + 1,
- rcClient.right,rcClient.bottom + fMinHeight + 1);
- }
- break;
- }
-
- rcArea.Normalize();
-
- return rcArea;
+CPDF_Rect CPWL_ScrollBar::GetScrollArea() const {
+ CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcArea;
+
+ if (!m_pMinButton || !m_pMaxButton)
+ return rcClient;
+
+ CPDF_Rect rcMin = m_pMinButton->GetWindowRect();
+ CPDF_Rect rcMax = m_pMaxButton->GetWindowRect();
+
+ FX_FLOAT fMinWidth = rcMin.right - rcMin.left;
+ FX_FLOAT fMinHeight = rcMin.top - rcMin.bottom;
+ FX_FLOAT fMaxWidth = rcMax.right - rcMax.left;
+ FX_FLOAT fMaxHeight = rcMax.top - rcMax.bottom;
+
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ if (rcClient.right - rcClient.left > fMinWidth + fMaxWidth + 2) {
+ rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1, rcClient.bottom,
+ rcClient.right - fMaxWidth - 1, rcClient.top);
+ } else {
+ rcArea = CPDF_Rect(rcClient.left + fMinWidth + 1, rcClient.bottom,
+ rcClient.left + fMinWidth + 1, rcClient.top);
+ }
+ break;
+ case SBT_VSCROLL:
+ if (rcClient.top - rcClient.bottom > fMinHeight + fMaxHeight + 2) {
+ rcArea = CPDF_Rect(rcClient.left, rcClient.bottom + fMinHeight + 1,
+ rcClient.right, rcClient.top - fMaxHeight - 1);
+ } else {
+ rcArea = CPDF_Rect(rcClient.left, rcClient.bottom + fMinHeight + 1,
+ rcClient.right, rcClient.bottom + fMinHeight + 1);
+ }
+ break;
+ }
+
+ rcArea.Normalize();
+
+ return rcArea;
}
-FX_FLOAT CPWL_ScrollBar::TrueToFace(FX_FLOAT fTrue)
-{
- CPDF_Rect rcPosArea;
- rcPosArea = GetScrollArea();
+FX_FLOAT CPWL_ScrollBar::TrueToFace(FX_FLOAT fTrue) {
+ CPDF_Rect rcPosArea;
+ rcPosArea = GetScrollArea();
- FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth;
- fFactWidth = fFactWidth == 0 ? 1 : fFactWidth;
+ FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth;
+ fFactWidth = fFactWidth == 0 ? 1 : fFactWidth;
- FX_FLOAT fFace = 0;
+ FX_FLOAT fFace = 0;
- switch(m_sbType)
- {
- case SBT_HSCROLL:
- fFace = rcPosArea.left + fTrue * (rcPosArea.right - rcPosArea.left) / fFactWidth;
- break;
- case SBT_VSCROLL:
- fFace = rcPosArea.top - fTrue * (rcPosArea.top - rcPosArea.bottom) / fFactWidth;
- break;
- }
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ fFace = rcPosArea.left +
+ fTrue * (rcPosArea.right - rcPosArea.left) / fFactWidth;
+ break;
+ case SBT_VSCROLL:
+ fFace = rcPosArea.top -
+ fTrue * (rcPosArea.top - rcPosArea.bottom) / fFactWidth;
+ break;
+ }
- return fFace;
+ return fFace;
}
-FX_FLOAT CPWL_ScrollBar::FaceToTrue(FX_FLOAT fFace)
-{
- CPDF_Rect rcPosArea;
- rcPosArea = GetScrollArea();
+FX_FLOAT CPWL_ScrollBar::FaceToTrue(FX_FLOAT fFace) {
+ CPDF_Rect rcPosArea;
+ rcPosArea = GetScrollArea();
- FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth;
- fFactWidth = fFactWidth == 0 ? 1 : fFactWidth;
+ FX_FLOAT fFactWidth = m_sData.ScrollRange.GetWidth() + m_sData.fClientWidth;
+ fFactWidth = fFactWidth == 0 ? 1 : fFactWidth;
- FX_FLOAT fTrue = 0;
+ FX_FLOAT fTrue = 0;
- switch(m_sbType)
- {
- case SBT_HSCROLL:
- fTrue = (fFace - rcPosArea.left) * fFactWidth / (rcPosArea.right - rcPosArea.left);
- break;
- case SBT_VSCROLL:
- fTrue = (rcPosArea.top - fFace) * fFactWidth / (rcPosArea.top - rcPosArea.bottom);
- break;
- }
+ switch (m_sbType) {
+ case SBT_HSCROLL:
+ fTrue = (fFace - rcPosArea.left) * fFactWidth /
+ (rcPosArea.right - rcPosArea.left);
+ break;
+ case SBT_VSCROLL:
+ fTrue = (rcPosArea.top - fFace) * fFactWidth /
+ (rcPosArea.top - rcPosArea.bottom);
+ break;
+ }
- return fTrue;
+ return fTrue;
}
-void CPWL_ScrollBar::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- CreateButtons(cp);
+void CPWL_ScrollBar::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ CreateButtons(cp);
}
-void CPWL_ScrollBar::TimerProc()
-{
- PWL_SCROLL_PRIVATEDATA sTemp = m_sData;
+void CPWL_ScrollBar::TimerProc() {
+ PWL_SCROLL_PRIVATEDATA sTemp = m_sData;
- if (m_bMinOrMax)m_sData.SubSmall();
- else m_sData.AddSmall();
+ if (m_bMinOrMax)
+ m_sData.SubSmall();
+ else
+ m_sData.AddSmall();
- if (FXSYS_memcmp(&m_sData, &sTemp, sizeof(PWL_SCROLL_PRIVATEDATA)) != 0)
- {
- MovePosButton(TRUE);
- NotifyScrollWindow();
- }
+ if (FXSYS_memcmp(&m_sData, &sTemp, sizeof(PWL_SCROLL_PRIVATEDATA)) != 0) {
+ MovePosButton(TRUE);
+ NotifyScrollWindow();
+ }
}
diff --git a/fpdfsdk/src/pdfwindow/PWL_Signature.cpp b/fpdfsdk/src/pdfwindow/PWL_Signature.cpp
index 76b2bd333a..bfe32ae8ad 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Signature.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Signature.cpp
@@ -11,210 +11,194 @@
#include "../../include/pdfwindow/PWL_Label.h"
#include "../../include/pdfwindow/PWL_Utils.h"
-/* --------------------------------- CPWL_Signature_Image --------------------------------- */
+/* --------------------------------- CPWL_Signature_Image
+ * --------------------------------- */
-CPWL_Signature_Image::CPWL_Signature_Image() : m_pImage(NULL)
-{
-}
+CPWL_Signature_Image::CPWL_Signature_Image() : m_pImage(NULL) {}
-CPWL_Signature_Image::~CPWL_Signature_Image()
-{
-}
+CPWL_Signature_Image::~CPWL_Signature_Image() {}
-void CPWL_Signature_Image::SetImage(CFX_DIBSource* pImage)
-{
- m_pImage = pImage;
+void CPWL_Signature_Image::SetImage(CFX_DIBSource* pImage) {
+ m_pImage = pImage;
}
-CFX_DIBSource* CPWL_Signature_Image::GetImage()
-{
- return m_pImage;
+CFX_DIBSource* CPWL_Signature_Image::GetImage() {
+ return m_pImage;
}
-void CPWL_Signature_Image::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+void CPWL_Signature_Image::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
- if (m_pImage)
- {
- CPDF_Rect rcClient = GetClientRect();
+ if (m_pImage) {
+ CPDF_Rect rcClient = GetClientRect();
- FX_FLOAT x, y;
- pUser2Device->Transform(rcClient.left, rcClient.top, x, y);
+ FX_FLOAT x, y;
+ pUser2Device->Transform(rcClient.left, rcClient.top, x, y);
- pDevice->StretchDIBits(m_pImage, (int32_t)x, (int32_t)y,
- (int32_t)rcClient.Width(), (int32_t)rcClient.Height());
- }
+ pDevice->StretchDIBits(m_pImage, (int32_t)x, (int32_t)y,
+ (int32_t)rcClient.Width(),
+ (int32_t)rcClient.Height());
+ }
}
-void CPWL_Signature_Image::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- sAppStream << CPWL_Image::GetImageAppStream();
+void CPWL_Signature_Image::GetThisAppearanceStream(
+ CFX_ByteTextBuf& sAppStream) {
+ sAppStream << CPWL_Image::GetImageAppStream();
}
-void CPWL_Signature_Image::GetScale(FX_FLOAT & fHScale,FX_FLOAT & fVScale)
-{
- FX_FLOAT fImageW, fImageH;
+void CPWL_Signature_Image::GetScale(FX_FLOAT& fHScale, FX_FLOAT& fVScale) {
+ FX_FLOAT fImageW, fImageH;
- GetImageSize(fImageW, fImageH);
+ GetImageSize(fImageW, fImageH);
- CPDF_Rect rcClient = GetClientRect();
+ CPDF_Rect rcClient = GetClientRect();
- fHScale = rcClient.Width() / fImageW;
- fVScale = rcClient.Height() / fImageH;
+ fHScale = rcClient.Width() / fImageW;
+ fVScale = rcClient.Height() / fImageH;
}
-/* --------------------------------- CPWL_Signature --------------------------------- */
+/* --------------------------------- CPWL_Signature
+ * --------------------------------- */
-CPWL_Signature::CPWL_Signature() :
- m_pText(NULL),
- m_pDescription(NULL),
- m_pImage(NULL),
- m_bTextExist(TRUE),
- m_bImageExist(FALSE),
- m_bFlagExist(TRUE)
-{
-}
+CPWL_Signature::CPWL_Signature()
+ : m_pText(NULL),
+ m_pDescription(NULL),
+ m_pImage(NULL),
+ m_bTextExist(TRUE),
+ m_bImageExist(FALSE),
+ m_bFlagExist(TRUE) {}
-CPWL_Signature::~CPWL_Signature()
-{
-}
+CPWL_Signature::~CPWL_Signature() {}
-void CPWL_Signature::SetTextFlag(FX_BOOL bTextExist)
-{
- m_bTextExist = bTextExist;
+void CPWL_Signature::SetTextFlag(FX_BOOL bTextExist) {
+ m_bTextExist = bTextExist;
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::SetImageFlag(FX_BOOL bImageExist)
-{
- m_bImageExist = bImageExist;
+void CPWL_Signature::SetImageFlag(FX_BOOL bImageExist) {
+ m_bImageExist = bImageExist;
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::SetFoxitFlag(FX_BOOL bFlagExist)
-{
- m_bFlagExist = bFlagExist;
+void CPWL_Signature::SetFoxitFlag(FX_BOOL bFlagExist) {
+ m_bFlagExist = bFlagExist;
}
-void CPWL_Signature::SetText(const FX_WCHAR* sText)
-{
- m_pText->SetText(sText);
+void CPWL_Signature::SetText(const FX_WCHAR* sText) {
+ m_pText->SetText(sText);
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::SetDescription(const FX_WCHAR* string)
-{
- m_pDescription->SetText(string);
+void CPWL_Signature::SetDescription(const FX_WCHAR* string) {
+ m_pDescription->SetText(string);
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::SetImage(CFX_DIBSource* pImage)
-{
- m_pImage->SetImage(pImage);
+void CPWL_Signature::SetImage(CFX_DIBSource* pImage) {
+ m_pImage->SetImage(pImage);
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::SetImageStream(CPDF_Stream * pStream, const FX_CHAR* sImageAlias)
-{
- m_pImage->SetPDFStream(pStream);
- m_pImage->SetImageAlias(sImageAlias);
+void CPWL_Signature::SetImageStream(CPDF_Stream* pStream,
+ const FX_CHAR* sImageAlias) {
+ m_pImage->SetPDFStream(pStream);
+ m_pImage->SetImageAlias(sImageAlias);
- RePosChildWnd();
+ RePosChildWnd();
}
-void CPWL_Signature::RePosChildWnd()
-{
- CPDF_Rect rcClient = GetClientRect();
+void CPWL_Signature::RePosChildWnd() {
+ CPDF_Rect rcClient = GetClientRect();
- CPDF_Rect rcText = rcClient;
- CPDF_Rect rcDescription = rcClient;
+ CPDF_Rect rcText = rcClient;
+ CPDF_Rect rcDescription = rcClient;
- FX_BOOL bTextVisible = m_bTextExist && m_pText->GetText().GetLength() > 0;
+ FX_BOOL bTextVisible = m_bTextExist && m_pText->GetText().GetLength() > 0;
- if ((bTextVisible || m_bImageExist) &&
- m_pDescription->GetText().GetLength() > 0)
- {
- if (rcClient.Width() >= rcClient.Height())
- {
- rcText.right = rcText.left + rcClient.Width() / 2.0f;
- rcDescription.left = rcDescription.right - rcClient.Width() / 2.0f;
- }
- else
- {
- rcText.bottom = rcText.top - rcClient.Height() / 2.0f;
- rcDescription.top = rcDescription.bottom + rcClient.Height() / 2.0f;
- }
- }
+ if ((bTextVisible || m_bImageExist) &&
+ m_pDescription->GetText().GetLength() > 0) {
+ if (rcClient.Width() >= rcClient.Height()) {
+ rcText.right = rcText.left + rcClient.Width() / 2.0f;
+ rcDescription.left = rcDescription.right - rcClient.Width() / 2.0f;
+ } else {
+ rcText.bottom = rcText.top - rcClient.Height() / 2.0f;
+ rcDescription.top = rcDescription.bottom + rcClient.Height() / 2.0f;
+ }
+ }
- m_pText->SetVisible(bTextVisible);
- m_pImage->SetVisible(m_bImageExist);
+ m_pText->SetVisible(bTextVisible);
+ m_pImage->SetVisible(m_bImageExist);
- m_pText->Move(rcText, TRUE, FALSE);
- m_pImage->Move(rcText, TRUE, FALSE);
- m_pDescription->Move(rcDescription, TRUE, FALSE);
+ m_pText->Move(rcText, TRUE, FALSE);
+ m_pImage->Move(rcText, TRUE, FALSE);
+ m_pDescription->Move(rcDescription, TRUE, FALSE);
}
-void CPWL_Signature::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
- m_pImage = new CPWL_Signature_Image;
- PWL_CREATEPARAM icp = cp;
- icp.pParentWnd = this;
- icp.dwFlags = PWS_CHILD | PWS_VISIBLE;
- icp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
- m_pImage->Create(icp);
+void CPWL_Signature::CreateChildWnd(const PWL_CREATEPARAM& cp) {
+ m_pImage = new CPWL_Signature_Image;
+ PWL_CREATEPARAM icp = cp;
+ icp.pParentWnd = this;
+ icp.dwFlags = PWS_CHILD | PWS_VISIBLE;
+ icp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
+ m_pImage->Create(icp);
- m_pText = new CPWL_Label;
- PWL_CREATEPARAM acp = cp;
- acp.pParentWnd = this;
- acp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_AUTOFONTSIZE | PES_MULTILINE | PES_AUTORETURN | PES_MIDDLE | PES_CENTER;
- acp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
- m_pText->Create(acp);
+ m_pText = new CPWL_Label;
+ PWL_CREATEPARAM acp = cp;
+ acp.pParentWnd = this;
+ acp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_AUTOFONTSIZE | PES_MULTILINE |
+ PES_AUTORETURN | PES_MIDDLE | PES_CENTER;
+ acp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
+ m_pText->Create(acp);
- m_pDescription = new CPWL_Label;
- PWL_CREATEPARAM dcp = cp;
- dcp.pParentWnd = this;
- dcp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_AUTOFONTSIZE | PES_MULTILINE | PES_AUTORETURN | PES_LEFT | PES_CENTER;
- dcp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
- m_pDescription->Create(dcp);
+ m_pDescription = new CPWL_Label;
+ PWL_CREATEPARAM dcp = cp;
+ dcp.pParentWnd = this;
+ dcp.dwFlags = PWS_CHILD | PWS_VISIBLE | PWS_AUTOFONTSIZE | PES_MULTILINE |
+ PES_AUTORETURN | PES_LEFT | PES_CENTER;
+ dcp.sTextColor = CPWL_Color(COLORTYPE_GRAY, 0);
+ m_pDescription->Create(dcp);
}
-void CPWL_Signature::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
+void CPWL_Signature::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPWL_Wnd::DrawThisAppearance(pDevice, pUser2Device);
- if (m_bFlagExist)
- CPWL_Utils::DrawIconAppStream(pDevice, pUser2Device, PWL_ICONTYPE_FOXIT, CPWL_Utils::GetCenterSquare(GetClientRect()),
- CPWL_Color(COLORTYPE_RGB,0.91f,0.855f,0.92f), CPWL_Color(COLORTYPE_TRANSPARENT), 255);
+ if (m_bFlagExist)
+ CPWL_Utils::DrawIconAppStream(
+ pDevice, pUser2Device, PWL_ICONTYPE_FOXIT,
+ CPWL_Utils::GetCenterSquare(GetClientRect()),
+ CPWL_Color(COLORTYPE_RGB, 0.91f, 0.855f, 0.92f),
+ CPWL_Color(COLORTYPE_TRANSPARENT), 255);
- /*
- CPDF_Rect rcClient = GetClientRect();
+ /*
+ CPDF_Rect rcClient = GetClientRect();
- CFX_PathData path;
+ CFX_PathData path;
- path.SetPointCount(2);
- path.SetPoint(0, rcClient.left, (rcClient.top + rcClient.bottom) * 0.5f, FXPT_MOVETO);
- path.SetPoint(1, rcClient.right, (rcClient.top + rcClient.bottom) * 0.5f, FXPT_LINETO);
+ path.SetPointCount(2);
+ path.SetPoint(0, rcClient.left, (rcClient.top + rcClient.bottom) * 0.5f,
+ FXPT_MOVETO);
+ path.SetPoint(1, rcClient.right, (rcClient.top + rcClient.bottom) * 0.5f,
+ FXPT_LINETO);
- CFX_GraphStateData gsd;
- gsd.SetDashCount(2);
- gsd.m_DashArray[0] = 6.0f;
- gsd.m_DashArray[1] = 6.0f;
- gsd.m_DashPhase = 0;
+ CFX_GraphStateData gsd;
+ gsd.SetDashCount(2);
+ gsd.m_DashArray[0] = 6.0f;
+ gsd.m_DashArray[1] = 6.0f;
+ gsd.m_DashPhase = 0;
- gsd.m_LineWidth = 10.0f;
- pDevice->DrawPath(&path, pUser2Device, &gsd, 0, ArgbEncode(255,255,0,0), FXFILL_ALTERNATE);
- */
+ gsd.m_LineWidth = 10.0f;
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0, ArgbEncode(255,255,0,0),
+ FXFILL_ALTERNATE);
+ */
}
-void CPWL_Signature::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPWL_Wnd::GetThisAppearanceStream(sAppStream);
+void CPWL_Signature::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPWL_Wnd::GetThisAppearanceStream(sAppStream);
}
-
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_SpecialButton.cpp b/fpdfsdk/src/pdfwindow/PWL_SpecialButton.cpp
index 90fa8f880d..7f125ad1d7 100644
--- a/fpdfsdk/src/pdfwindow/PWL_SpecialButton.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_SpecialButton.cpp
@@ -12,99 +12,76 @@
/* --------------------------- CPWL_PushButton ---------------------------- */
-CPWL_PushButton::CPWL_PushButton()
-{
-}
+CPWL_PushButton::CPWL_PushButton() {}
-CPWL_PushButton::~CPWL_PushButton()
-{
-}
+CPWL_PushButton::~CPWL_PushButton() {}
-CFX_ByteString CPWL_PushButton::GetClassName() const
-{
- return "CPWL_PushButton";
+CFX_ByteString CPWL_PushButton::GetClassName() const {
+ return "CPWL_PushButton";
}
-CPDF_Rect CPWL_PushButton::GetFocusRect() const
-{
- return CPWL_Utils::DeflateRect(GetWindowRect(), (FX_FLOAT)GetBorderWidth());
+CPDF_Rect CPWL_PushButton::GetFocusRect() const {
+ return CPWL_Utils::DeflateRect(GetWindowRect(), (FX_FLOAT)GetBorderWidth());
}
/* --------------------------- CPWL_CheckBox ---------------------------- */
-CPWL_CheckBox::CPWL_CheckBox() : m_bChecked(FALSE)
-{
-}
+CPWL_CheckBox::CPWL_CheckBox() : m_bChecked(FALSE) {}
-CPWL_CheckBox::~CPWL_CheckBox()
-{
-}
+CPWL_CheckBox::~CPWL_CheckBox() {}
-CFX_ByteString CPWL_CheckBox::GetClassName() const
-{
- return "CPWL_CheckBox";
+CFX_ByteString CPWL_CheckBox::GetClassName() const {
+ return "CPWL_CheckBox";
}
-void CPWL_CheckBox::SetCheck(FX_BOOL bCheck)
-{
- m_bChecked = bCheck;
+void CPWL_CheckBox::SetCheck(FX_BOOL bCheck) {
+ m_bChecked = bCheck;
}
-FX_BOOL CPWL_CheckBox::IsChecked() const
-{
- return m_bChecked;
+FX_BOOL CPWL_CheckBox::IsChecked() const {
+ return m_bChecked;
}
-FX_BOOL CPWL_CheckBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (IsReadOnly()) return FALSE;
+FX_BOOL CPWL_CheckBox::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (IsReadOnly())
+ return FALSE;
- SetCheck(!IsChecked());
- return TRUE;
+ SetCheck(!IsChecked());
+ return TRUE;
}
-FX_BOOL CPWL_CheckBox::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- SetCheck(!IsChecked());
- return TRUE;
+FX_BOOL CPWL_CheckBox::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ SetCheck(!IsChecked());
+ return TRUE;
}
/* --------------------------- CPWL_RadioButton ---------------------------- */
-CPWL_RadioButton::CPWL_RadioButton() : m_bChecked(FALSE)
-{
-}
+CPWL_RadioButton::CPWL_RadioButton() : m_bChecked(FALSE) {}
-CPWL_RadioButton::~CPWL_RadioButton()
-{
-}
+CPWL_RadioButton::~CPWL_RadioButton() {}
-CFX_ByteString CPWL_RadioButton::GetClassName() const
-{
- return "CPWL_RadioButton";
+CFX_ByteString CPWL_RadioButton::GetClassName() const {
+ return "CPWL_RadioButton";
}
-FX_BOOL CPWL_RadioButton::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (IsReadOnly()) return FALSE;
+FX_BOOL CPWL_RadioButton::OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag) {
+ if (IsReadOnly())
+ return FALSE;
- SetCheck(TRUE);
- return TRUE;
+ SetCheck(TRUE);
+ return TRUE;
}
-void CPWL_RadioButton::SetCheck(FX_BOOL bCheck)
-{
- m_bChecked = bCheck;
+void CPWL_RadioButton::SetCheck(FX_BOOL bCheck) {
+ m_bChecked = bCheck;
}
-FX_BOOL CPWL_RadioButton::IsChecked() const
-{
- return m_bChecked;
+FX_BOOL CPWL_RadioButton::IsChecked() const {
+ return m_bChecked;
}
-FX_BOOL CPWL_RadioButton::OnChar(FX_WORD nChar, FX_DWORD nFlag)
-{
- SetCheck(TRUE);
- return TRUE;
+FX_BOOL CPWL_RadioButton::OnChar(FX_WORD nChar, FX_DWORD nFlag) {
+ SetCheck(TRUE);
+ return TRUE;
}
-
diff --git a/fpdfsdk/src/pdfwindow/PWL_Utils.cpp b/fpdfsdk/src/pdfwindow/PWL_Utils.cpp
index b9ba7661af..52b22b548a 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Utils.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Utils.cpp
@@ -9,2819 +9,3705 @@
#include "../../include/pdfwindow/PWL_Utils.h"
#include "../../include/pdfwindow/PWL_Icon.h"
-#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
-#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
-#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb))
+#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001)
+#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
+#define IsFloatEqual(fa, fb) IsFloatZero((fa) - (fb))
/* ---------------------------- CPWL_Utils ------------------------------ */
-CFX_ByteString CPWL_Utils::GetAppStreamFromArray(const CPWL_PathData* pPathData, int32_t nCount)
-{
- CFX_ByteTextBuf csAP;
-
- for (int32_t i=0; i<nCount; i++)
- {
- switch (pPathData[i].type)
- {
- case PWLPT_MOVETO:
- csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " m\n";
- break;
- case PWLPT_LINETO:
- csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " l\n";
- break;
- case PWLPT_BEZIERTO:
- csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " "
- << pPathData[i+1].point.x << " " << pPathData[i+1].point.y << " "
- << pPathData[i+2].point.x << " " << pPathData[i+2].point.y << " c\n";
-
- i += 2;
- break;
- default:
- break;
- }
- }
-
- return csAP.GetByteString();
-}
+CFX_ByteString CPWL_Utils::GetAppStreamFromArray(const CPWL_PathData* pPathData,
+ int32_t nCount) {
+ CFX_ByteTextBuf csAP;
+
+ for (int32_t i = 0; i < nCount; i++) {
+ switch (pPathData[i].type) {
+ case PWLPT_MOVETO:
+ csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " m\n";
+ break;
+ case PWLPT_LINETO:
+ csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " l\n";
+ break;
+ case PWLPT_BEZIERTO:
+ csAP << pPathData[i].point.x << " " << pPathData[i].point.y << " "
+ << pPathData[i + 1].point.x << " " << pPathData[i + 1].point.y
+ << " " << pPathData[i + 2].point.x << " "
+ << pPathData[i + 2].point.y << " c\n";
+
+ i += 2;
+ break;
+ default:
+ break;
+ }
+ }
+
+ return csAP.GetByteString();
+}
+
+void CPWL_Utils::GetPathDataFromArray(CFX_PathData& path,
+ const CPWL_PathData* pPathData,
+ int32_t nCount) {
+ path.SetPointCount(nCount);
+
+ for (int32_t i = 0; i < nCount; i++) {
+ switch (pPathData[i].type) {
+ case PWLPT_MOVETO:
+ path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y,
+ FXPT_MOVETO);
+ break;
+ case PWLPT_LINETO:
+ path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y,
+ FXPT_LINETO);
+ break;
+ case PWLPT_BEZIERTO:
+ path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y,
+ FXPT_BEZIERTO);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+CPDF_Rect CPWL_Utils::MaxRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2) {
+ CPDF_Rect rcRet;
+
+ rcRet.left = PWL_MIN(rect1.left, rect2.left);
+ rcRet.bottom = PWL_MIN(rect1.bottom, rect2.bottom);
+ rcRet.right = PWL_MAX(rect1.right, rect2.right);
+ rcRet.top = PWL_MAX(rect1.top, rect2.top);
+
+ return rcRet;
+}
+
+CPDF_Rect CPWL_Utils::OffsetRect(const CPDF_Rect& rect,
+ FX_FLOAT x,
+ FX_FLOAT y) {
+ return CPDF_Rect(rect.left + x, rect.bottom + y, rect.right + x,
+ rect.top + y);
+}
+
+FX_BOOL CPWL_Utils::ContainsRect(const CPDF_Rect& rcParent,
+ const CPDF_Rect& rcChild) {
+ return rcChild.left >= rcParent.left && rcChild.bottom >= rcParent.bottom &&
+ rcChild.right <= rcParent.right && rcChild.top <= rcParent.top;
+}
+
+FX_BOOL CPWL_Utils::IntersectRect(const CPDF_Rect& rect1,
+ const CPDF_Rect& rect2) {
+ FX_FLOAT left = rect1.left > rect2.left ? rect1.left : rect2.left;
+ FX_FLOAT right = rect1.right < rect2.right ? rect1.right : rect2.right;
+ FX_FLOAT bottom = rect1.bottom > rect2.bottom ? rect1.bottom : rect2.bottom;
+ FX_FLOAT top = rect1.top < rect2.top ? rect1.top : rect2.top;
+
+ return left < right && bottom < top;
+}
+
+CPDF_Point CPWL_Utils::OffsetPoint(const CPDF_Point& point,
+ FX_FLOAT x,
+ FX_FLOAT y) {
+ return CPDF_Point(point.x + x, point.y + y);
+}
+
+CPVT_WordRange CPWL_Utils::OverlapWordRange(const CPVT_WordRange& wr1,
+ const CPVT_WordRange& wr2) {
+ CPVT_WordRange wrRet;
+
+ if (wr2.EndPos.WordCmp(wr1.BeginPos) < 0 ||
+ wr2.BeginPos.WordCmp(wr1.EndPos) > 0)
+ return wrRet;
+ if (wr1.EndPos.WordCmp(wr2.BeginPos) < 0 ||
+ wr1.BeginPos.WordCmp(wr2.EndPos) > 0)
+ return wrRet;
-void CPWL_Utils::GetPathDataFromArray(CFX_PathData& path, const CPWL_PathData* pPathData, int32_t nCount)
-{
- path.SetPointCount(nCount);
-
- for (int32_t i=0; i<nCount; i++)
- {
- switch (pPathData[i].type)
- {
- case PWLPT_MOVETO:
- path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_MOVETO);
- break;
- case PWLPT_LINETO:
- path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_LINETO);
- break;
- case PWLPT_BEZIERTO:
- path.SetPoint(i, pPathData[i].point.x, pPathData[i].point.y, FXPT_BEZIERTO);
- break;
- default:
- break;
- }
- }
-}
-
-
-CPDF_Rect CPWL_Utils::MaxRect(const CPDF_Rect & rect1,const CPDF_Rect & rect2)
-{
- CPDF_Rect rcRet;
-
- rcRet.left = PWL_MIN(rect1.left,rect2.left);
- rcRet.bottom = PWL_MIN(rect1.bottom,rect2.bottom);
- rcRet.right = PWL_MAX(rect1.right,rect2.right);
- rcRet.top = PWL_MAX(rect1.top,rect2.top);
-
- return rcRet;
-}
-
-CPDF_Rect CPWL_Utils::OffsetRect(const CPDF_Rect & rect,FX_FLOAT x,FX_FLOAT y)
-{
- return CPDF_Rect(rect.left + x,rect.bottom + y,
- rect.right + x,rect.top + y);
-}
-
-FX_BOOL CPWL_Utils::ContainsRect(const CPDF_Rect& rcParent, const CPDF_Rect& rcChild)
-{
- return rcChild.left >= rcParent.left && rcChild.bottom >= rcParent.bottom &&
- rcChild.right <= rcParent.right && rcChild.top <= rcParent.top;
-}
-
-FX_BOOL CPWL_Utils::IntersectRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2)
-{
- FX_FLOAT left = rect1.left > rect2.left ? rect1.left : rect2.left;
- FX_FLOAT right = rect1.right < rect2.right ? rect1.right : rect2.right;
- FX_FLOAT bottom = rect1.bottom > rect2.bottom ? rect1.bottom : rect2.bottom;
- FX_FLOAT top = rect1.top < rect2.top ? rect1.top : rect2.top;
-
- return left < right && bottom < top;
-}
-
-CPDF_Point CPWL_Utils::OffsetPoint(const CPDF_Point& point,FX_FLOAT x,FX_FLOAT y)
-{
- return CPDF_Point(point.x + x,point.y + y);
-}
-
-CPVT_WordRange CPWL_Utils::OverlapWordRange(const CPVT_WordRange & wr1, const CPVT_WordRange & wr2)
-{
- CPVT_WordRange wrRet;
-
- if (wr2.EndPos.WordCmp(wr1.BeginPos) < 0 || wr2.BeginPos.WordCmp(wr1.EndPos) > 0) return wrRet;
- if (wr1.EndPos.WordCmp(wr2.BeginPos) < 0 || wr1.BeginPos.WordCmp(wr2.EndPos) > 0) return wrRet;
-
- if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0)
- {
- wrRet.BeginPos = wr2.BeginPos;
- }
- else
- {
- wrRet.BeginPos = wr1.BeginPos;
- }
-
- if (wr1.EndPos.WordCmp(wr2.EndPos) < 0)
- {
- wrRet.EndPos = wr1.EndPos;
- }
- else
- {
- wrRet.EndPos = wr2.EndPos;
- }
+ if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) {
+ wrRet.BeginPos = wr2.BeginPos;
+ } else {
+ wrRet.BeginPos = wr1.BeginPos;
+ }
- return wrRet;
+ if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) {
+ wrRet.EndPos = wr1.EndPos;
+ } else {
+ wrRet.EndPos = wr2.EndPos;
+ }
+
+ return wrRet;
}
-CFX_ByteString CPWL_Utils::GetAP_Check(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Check(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- const int32_t num = 8;
+ const int32_t num = 8;
- CPWL_Point pts[num*3] =
- {
- //1
- CPWL_Point(0.28f, 0.52f),
- CPWL_Point(0.27f, 0.48f),
- CPWL_Point(0.29f, 0.40f),
+ CPWL_Point pts[num * 3] = {// 1
+ CPWL_Point(0.28f, 0.52f), CPWL_Point(0.27f, 0.48f),
+ CPWL_Point(0.29f, 0.40f),
- //2
- CPWL_Point(0.30f, 0.33f),
- CPWL_Point(0.31f, 0.29f),
- CPWL_Point(0.31f, 0.28f),
+ // 2
+ CPWL_Point(0.30f, 0.33f), CPWL_Point(0.31f, 0.29f),
+ CPWL_Point(0.31f, 0.28f),
- //3
- CPWL_Point(0.39f, 0.28f),
- CPWL_Point(0.49f, 0.29f),
- CPWL_Point(0.77f, 0.67f),
+ // 3
+ CPWL_Point(0.39f, 0.28f), CPWL_Point(0.49f, 0.29f),
+ CPWL_Point(0.77f, 0.67f),
- //4
- CPWL_Point(0.76f, 0.68f),
- CPWL_Point(0.78f, 0.69f),
- CPWL_Point(0.76f, 0.75f),
+ // 4
+ CPWL_Point(0.76f, 0.68f), CPWL_Point(0.78f, 0.69f),
+ CPWL_Point(0.76f, 0.75f),
- //5
- CPWL_Point(0.76f, 0.75f),
- CPWL_Point(0.73f, 0.80f),
- CPWL_Point(0.68f, 0.75f),
+ // 5
+ CPWL_Point(0.76f, 0.75f), CPWL_Point(0.73f, 0.80f),
+ CPWL_Point(0.68f, 0.75f),
- //6
- CPWL_Point(0.68f, 0.74f),
- CPWL_Point(0.68f, 0.74f),
- CPWL_Point(0.44f, 0.47f),
+ // 6
+ CPWL_Point(0.68f, 0.74f), CPWL_Point(0.68f, 0.74f),
+ CPWL_Point(0.44f, 0.47f),
- //7
- CPWL_Point(0.43f, 0.47f),
- CPWL_Point(0.40f, 0.47f),
- CPWL_Point(0.41f, 0.58f),
+ // 7
+ CPWL_Point(0.43f, 0.47f), CPWL_Point(0.40f, 0.47f),
+ CPWL_Point(0.41f, 0.58f),
- //8
- CPWL_Point(0.40f, 0.60f),
- CPWL_Point(0.28f, 0.66f),
- CPWL_Point(0.30f, 0.56f)
- };
+ // 8
+ CPWL_Point(0.40f, 0.60f), CPWL_Point(0.28f, 0.66f),
+ CPWL_Point(0.30f, 0.56f)};
- for (int32_t j=0; j<num*3; j++)
- {
- pts[j].x *= fWidth;
- pts[j].x += crBBox.left;
+ for (int32_t j = 0; j < num * 3; j++) {
+ pts[j].x *= fWidth;
+ pts[j].x += crBBox.left;
- pts[j].y *= fHeight;
- pts[j].y += crBBox.bottom;
- }
+ pts[j].y *= fHeight;
+ pts[j].y += crBBox.bottom;
+ }
- csAP << pts[0].x << " " << pts[0].y << " m\n";
+ csAP << pts[0].x << " " << pts[0].y << " m\n";
- for (int32_t i=0; i<num; i++)
- {
- int32_t nCur = i*3;
- int32_t n1 = i*3 + 1;
- int32_t n2 = i*3 + 2;
- int32_t nNext = (i < num-1 ? (i+1)*3 : 0);
+ for (int32_t i = 0; i < num; i++) {
+ int32_t nCur = i * 3;
+ int32_t n1 = i * 3 + 1;
+ int32_t n2 = i * 3 + 2;
+ int32_t nNext = (i < num - 1 ? (i + 1) * 3 : 0);
- FX_FLOAT px1 = pts[n1].x - pts[nCur].x;
- FX_FLOAT py1 = pts[n1].y - pts[nCur].y;
- FX_FLOAT px2 = pts[n2].x - pts[nNext].x;
- FX_FLOAT py2 = pts[n2].y - pts[nNext].y;
+ FX_FLOAT px1 = pts[n1].x - pts[nCur].x;
+ FX_FLOAT py1 = pts[n1].y - pts[nCur].y;
+ FX_FLOAT px2 = pts[n2].x - pts[nNext].x;
+ FX_FLOAT py2 = pts[n2].y - pts[nNext].y;
- csAP << pts[nCur].x + px1 * PWL_BEZIER << " " << pts[nCur].y + py1 * PWL_BEZIER << " "
- << pts[nNext].x + px2 * PWL_BEZIER << " " << pts[nNext].y + py2 * PWL_BEZIER << " "
- << pts[nNext].x << " " << pts[nNext].y << " c\n";
- }
+ csAP << pts[nCur].x + px1 * PWL_BEZIER << " "
+ << pts[nCur].y + py1 * PWL_BEZIER << " "
+ << pts[nNext].x + px2 * PWL_BEZIER << " "
+ << pts[nNext].y + py2 * PWL_BEZIER << " " << pts[nNext].x << " "
+ << pts[nNext].y << " c\n";
+ }
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_Circle(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Circle(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- CPDF_Point pt1(crBBox.left,crBBox.bottom + fHeight / 2);
- CPDF_Point pt2(crBBox.left + fWidth / 2,crBBox.top);
- CPDF_Point pt3(crBBox.right,crBBox.bottom + fHeight / 2);
- CPDF_Point pt4(crBBox.left + fWidth / 2,crBBox.bottom);
+ CPDF_Point pt1(crBBox.left, crBBox.bottom + fHeight / 2);
+ CPDF_Point pt2(crBBox.left + fWidth / 2, crBBox.top);
+ CPDF_Point pt3(crBBox.right, crBBox.bottom + fHeight / 2);
+ CPDF_Point pt4(crBBox.left + fWidth / 2, crBBox.bottom);
- csAP << pt1.x << " " << pt1.y << " m\n";
+ csAP << pt1.x << " " << pt1.y << " m\n";
- FX_FLOAT px = pt2.x - pt1.x;
- FX_FLOAT py = pt2.y - pt1.y;
+ FX_FLOAT px = pt2.x - pt1.x;
+ FX_FLOAT py = pt2.y - pt1.y;
- csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " "
- << pt2.x - px * PWL_BEZIER << " " << pt2.y << " "
- << pt2.x << " " << pt2.y << " c\n";
+ csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " "
+ << pt2.x - px * PWL_BEZIER << " " << pt2.y << " " << pt2.x << " "
+ << pt2.y << " c\n";
- px = pt3.x - pt2.x;
- py = pt2.y - pt3.y;
+ px = pt3.x - pt2.x;
+ py = pt2.y - pt3.y;
- csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " "
- << pt3.x << " " << pt3.y + py * PWL_BEZIER << " "
- << pt3.x << " " << pt3.y << " c\n";
+ csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " " << pt3.x << " "
+ << pt3.y + py * PWL_BEZIER << " " << pt3.x << " " << pt3.y << " c\n";
- px = pt3.x - pt4.x;
- py = pt3.y - pt4.y;
+ px = pt3.x - pt4.x;
+ py = pt3.y - pt4.y;
- csAP << pt3.x << " " << pt3.y - py * PWL_BEZIER << " "
- << pt4.x + px * PWL_BEZIER << " " << pt4.y << " "
- << pt4.x << " " << pt4.y << " c\n";
+ csAP << pt3.x << " " << pt3.y - py * PWL_BEZIER << " "
+ << pt4.x + px * PWL_BEZIER << " " << pt4.y << " " << pt4.x << " "
+ << pt4.y << " c\n";
- px = pt4.x - pt1.x;
- py = pt1.y - pt4.y;
+ px = pt4.x - pt1.x;
+ py = pt1.y - pt4.y;
- csAP << pt4.x - px * PWL_BEZIER << " " << pt4.y << " "
- << pt1.x << " " << pt1.y - py * PWL_BEZIER << " "
- << pt1.x << " " << pt1.y << " c\n";
+ csAP << pt4.x - px * PWL_BEZIER << " " << pt4.y << " " << pt1.x << " "
+ << pt1.y - py * PWL_BEZIER << " " << pt1.x << " " << pt1.y << " c\n";
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_Cross(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Cross(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- csAP << crBBox.left << " " << crBBox.top << " m\n";
- csAP << crBBox.right << " " << crBBox.bottom << " l\n";
- csAP << crBBox.left << " " << crBBox.bottom << " m\n";
- csAP << crBBox.right << " " << crBBox.top << " l\n";
+ csAP << crBBox.left << " " << crBBox.top << " m\n";
+ csAP << crBBox.right << " " << crBBox.bottom << " l\n";
+ csAP << crBBox.left << " " << crBBox.bottom << " m\n";
+ csAP << crBBox.right << " " << crBBox.top << " l\n";
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_Diamond(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Diamond(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- CPDF_Point pt1(crBBox.left,crBBox.bottom + fHeight / 2);
- CPDF_Point pt2(crBBox.left + fWidth / 2,crBBox.top);
- CPDF_Point pt3(crBBox.right,crBBox.bottom + fHeight / 2);
- CPDF_Point pt4(crBBox.left + fWidth / 2,crBBox.bottom);
+ CPDF_Point pt1(crBBox.left, crBBox.bottom + fHeight / 2);
+ CPDF_Point pt2(crBBox.left + fWidth / 2, crBBox.top);
+ CPDF_Point pt3(crBBox.right, crBBox.bottom + fHeight / 2);
+ CPDF_Point pt4(crBBox.left + fWidth / 2, crBBox.bottom);
- csAP << pt1.x << " " << pt1.y << " m\n";
- csAP << pt2.x << " " << pt2.y << " l\n";
- csAP << pt3.x << " " << pt3.y << " l\n";
- csAP << pt4.x << " " << pt4.y << " l\n";
- csAP << pt1.x << " " << pt1.y << " l\n";
+ csAP << pt1.x << " " << pt1.y << " m\n";
+ csAP << pt2.x << " " << pt2.y << " l\n";
+ csAP << pt3.x << " " << pt3.y << " l\n";
+ csAP << pt4.x << " " << pt4.y << " l\n";
+ csAP << pt1.x << " " << pt1.y << " l\n";
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_Square(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Square(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- csAP << crBBox.left << " " << crBBox.top << " m\n";
- csAP << crBBox.right << " " << crBBox.top << " l\n";
- csAP << crBBox.right << " " << crBBox.bottom << " l\n";
- csAP << crBBox.left << " " << crBBox.bottom << " l\n";
- csAP << crBBox.left << " " << crBBox.top << " l\n";
+ csAP << crBBox.left << " " << crBBox.top << " m\n";
+ csAP << crBBox.right << " " << crBBox.top << " l\n";
+ csAP << crBBox.right << " " << crBBox.bottom << " l\n";
+ csAP << crBBox.left << " " << crBBox.bottom << " l\n";
+ csAP << crBBox.left << " " << crBBox.top << " l\n";
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_Star(const CPDF_Rect & crBBox)
-{
- CFX_ByteTextBuf csAP;
+CFX_ByteString CPWL_Utils::GetAP_Star(const CPDF_Rect& crBBox) {
+ CFX_ByteTextBuf csAP;
- FX_FLOAT fRadius = (crBBox.top - crBBox.bottom)/(1+(FX_FLOAT)cos(PWL_PI/5.0f));
- CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,(crBBox.top + crBBox.bottom) / 2.0f);
+ FX_FLOAT fRadius =
+ (crBBox.top - crBBox.bottom) / (1 + (FX_FLOAT)cos(PWL_PI / 5.0f));
+ CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,
+ (crBBox.top + crBBox.bottom) / 2.0f);
- FX_FLOAT px[5],py[5];
+ FX_FLOAT px[5], py[5];
- FX_FLOAT fAngel = PWL_PI/10.0f;
+ FX_FLOAT fAngel = PWL_PI / 10.0f;
- for (int32_t i=0; i<5; i++)
- {
- px[i] = ptCenter.x + fRadius * (FX_FLOAT)cos(fAngel);
- py[i] = ptCenter.y + fRadius * (FX_FLOAT)sin(fAngel);
+ for (int32_t i = 0; i < 5; i++) {
+ px[i] = ptCenter.x + fRadius * (FX_FLOAT)cos(fAngel);
+ py[i] = ptCenter.y + fRadius * (FX_FLOAT)sin(fAngel);
- fAngel += PWL_PI * 2 / 5.0f;
- }
+ fAngel += PWL_PI * 2 / 5.0f;
+ }
- csAP << px[0] << " " << py[0] << " m\n";
+ csAP << px[0] << " " << py[0] << " m\n";
- int32_t nNext = 0;
- for (int32_t j=0; j<5; j++)
- {
- nNext += 2;
- if (nNext >= 5) nNext -= 5;
- csAP << px[nNext] << " " << py[nNext] << " l\n";
- }
+ int32_t nNext = 0;
+ for (int32_t j = 0; j < 5; j++) {
+ nNext += 2;
+ if (nNext >= 5)
+ nNext -= 5;
+ csAP << px[nNext] << " " << py[nNext] << " l\n";
+ }
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetAP_HalfCircle(const CPDF_Rect & crBBox,FX_FLOAT fRotate)
-{
- CFX_ByteTextBuf csAP;
-
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+CFX_ByteString CPWL_Utils::GetAP_HalfCircle(const CPDF_Rect& crBBox,
+ FX_FLOAT fRotate) {
+ CFX_ByteTextBuf csAP;
- CPDF_Point pt1(-fWidth/2,0);
- CPDF_Point pt2(0,fHeight/2);
- CPDF_Point pt3(fWidth/2,0);
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- FX_FLOAT px,py;
+ CPDF_Point pt1(-fWidth / 2, 0);
+ CPDF_Point pt2(0, fHeight / 2);
+ CPDF_Point pt3(fWidth / 2, 0);
- csAP << cos(fRotate) << " " << sin(fRotate) << " " << -sin(fRotate) << " " << cos(fRotate) << " "
- << crBBox.left + fWidth / 2 << " " << crBBox.bottom + fHeight / 2 << " cm\n";
+ FX_FLOAT px, py;
+ csAP << cos(fRotate) << " " << sin(fRotate) << " " << -sin(fRotate) << " "
+ << cos(fRotate) << " " << crBBox.left + fWidth / 2 << " "
+ << crBBox.bottom + fHeight / 2 << " cm\n";
- csAP << pt1.x << " " << pt1.y << " m\n";
+ csAP << pt1.x << " " << pt1.y << " m\n";
- px = pt2.x - pt1.x;
- py = pt2.y - pt1.y;
+ px = pt2.x - pt1.x;
+ py = pt2.y - pt1.y;
- csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " "
- << pt2.x - px * PWL_BEZIER << " " << pt2.y << " "
- << pt2.x << " " << pt2.y << " c\n";
+ csAP << pt1.x << " " << pt1.y + py * PWL_BEZIER << " "
+ << pt2.x - px * PWL_BEZIER << " " << pt2.y << " " << pt2.x << " "
+ << pt2.y << " c\n";
- px = pt3.x - pt2.x;
- py = pt2.y - pt3.y;
+ px = pt3.x - pt2.x;
+ py = pt2.y - pt3.y;
- csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " "
- << pt3.x << " " << pt3.y + py * PWL_BEZIER << " "
- << pt3.x << " " << pt3.y << " c\n";
+ csAP << pt2.x + px * PWL_BEZIER << " " << pt2.y << " " << pt3.x << " "
+ << pt3.y + py * PWL_BEZIER << " " << pt3.x << " " << pt3.y << " c\n";
- return csAP.GetByteString();
+ return csAP.GetByteString();
}
+CPDF_Rect CPWL_Utils::InflateRect(const CPDF_Rect& rcRect, FX_FLOAT fSize) {
+ if (rcRect.IsEmpty())
+ return rcRect;
-CPDF_Rect CPWL_Utils::InflateRect(const CPDF_Rect & rcRect, FX_FLOAT fSize)
-{
- if (rcRect.IsEmpty()) return rcRect;
-
- CPDF_Rect rcNew(rcRect.left - fSize,
- rcRect.bottom - fSize,
- rcRect.right + fSize,
- rcRect.top + fSize);
- rcNew.Normalize();
- return rcNew;
+ CPDF_Rect rcNew(rcRect.left - fSize, rcRect.bottom - fSize,
+ rcRect.right + fSize, rcRect.top + fSize);
+ rcNew.Normalize();
+ return rcNew;
}
-CPDF_Rect CPWL_Utils::DeflateRect(const CPDF_Rect & rcRect, FX_FLOAT fSize)
-{
- if (rcRect.IsEmpty()) return rcRect;
+CPDF_Rect CPWL_Utils::DeflateRect(const CPDF_Rect& rcRect, FX_FLOAT fSize) {
+ if (rcRect.IsEmpty())
+ return rcRect;
- CPDF_Rect rcNew(rcRect.left + fSize,
- rcRect.bottom + fSize,
- rcRect.right - fSize,
- rcRect.top - fSize);
- rcNew.Normalize();
- return rcNew;
+ CPDF_Rect rcNew(rcRect.left + fSize, rcRect.bottom + fSize,
+ rcRect.right - fSize, rcRect.top - fSize);
+ rcNew.Normalize();
+ return rcNew;
}
-CPDF_Rect CPWL_Utils::ScaleRect(const CPDF_Rect & rcRect,FX_FLOAT fScale)
-{
- FX_FLOAT fHalfWidth = (rcRect.right - rcRect.left) / 2.0f;
- FX_FLOAT fHalfHeight = (rcRect.top - rcRect.bottom) / 2.0f;
+CPDF_Rect CPWL_Utils::ScaleRect(const CPDF_Rect& rcRect, FX_FLOAT fScale) {
+ FX_FLOAT fHalfWidth = (rcRect.right - rcRect.left) / 2.0f;
+ FX_FLOAT fHalfHeight = (rcRect.top - rcRect.bottom) / 2.0f;
- CPDF_Point ptCenter = CPDF_Point((rcRect.left + rcRect.right) / 2,(rcRect.top + rcRect.bottom) / 2);
+ CPDF_Point ptCenter = CPDF_Point((rcRect.left + rcRect.right) / 2,
+ (rcRect.top + rcRect.bottom) / 2);
- return CPDF_Rect(ptCenter.x - fHalfWidth * fScale,
- ptCenter.y - fHalfHeight * fScale,
- ptCenter.x + fHalfWidth * fScale,
- ptCenter.y + fHalfHeight * fScale);
+ return CPDF_Rect(
+ ptCenter.x - fHalfWidth * fScale, ptCenter.y - fHalfHeight * fScale,
+ ptCenter.x + fHalfWidth * fScale, ptCenter.y + fHalfHeight * fScale);
}
-CFX_ByteString CPWL_Utils::GetRectFillAppStream(const CPDF_Rect & rect,const CPWL_Color & color)
-{
- CFX_ByteTextBuf sAppStream;
+CFX_ByteString CPWL_Utils::GetRectFillAppStream(const CPDF_Rect& rect,
+ const CPWL_Color& color) {
+ CFX_ByteTextBuf sAppStream;
- CFX_ByteString sColor = GetColorAppStream(color,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << sColor;
- sAppStream << rect.left << " " << rect.bottom << " "
- << rect.right - rect.left << " " << rect.top - rect.bottom << " re f\nQ\n";
- }
+ CFX_ByteString sColor = GetColorAppStream(color, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << sColor;
+ sAppStream << rect.left << " " << rect.bottom << " "
+ << rect.right - rect.left << " " << rect.top - rect.bottom
+ << " re f\nQ\n";
+ }
- return sAppStream.GetByteString();
+ return sAppStream.GetByteString();
}
-CFX_ByteString CPWL_Utils::GetCircleFillAppStream(const CPDF_Rect & rect,const CPWL_Color & color)
-{
- CFX_ByteTextBuf sAppStream;
+CFX_ByteString CPWL_Utils::GetCircleFillAppStream(const CPDF_Rect& rect,
+ const CPWL_Color& color) {
+ CFX_ByteTextBuf sAppStream;
- CFX_ByteString sColor = GetColorAppStream(color,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << sColor << CPWL_Utils::GetAP_Circle(rect) << "f\nQ\n";
- }
+ CFX_ByteString sColor = GetColorAppStream(color, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << sColor << CPWL_Utils::GetAP_Circle(rect) << "f\nQ\n";
+ }
- return sAppStream.GetByteString();
+ return sAppStream.GetByteString();
}
-CPDF_Rect CPWL_Utils::GetCenterSquare(const CPDF_Rect & rect)
-{
- FX_FLOAT fWidth = rect.right - rect.left;
- FX_FLOAT fHeight = rect.top - rect.bottom;
+CPDF_Rect CPWL_Utils::GetCenterSquare(const CPDF_Rect& rect) {
+ FX_FLOAT fWidth = rect.right - rect.left;
+ FX_FLOAT fHeight = rect.top - rect.bottom;
- FX_FLOAT fCenterX = (rect.left + rect.right)/2.0f;
- FX_FLOAT fCenterY = (rect.top + rect.bottom)/2.0f;
+ FX_FLOAT fCenterX = (rect.left + rect.right) / 2.0f;
+ FX_FLOAT fCenterY = (rect.top + rect.bottom) / 2.0f;
- FX_FLOAT fRadius = (fWidth > fHeight) ? fHeight / 2 : fWidth / 2;
+ FX_FLOAT fRadius = (fWidth > fHeight) ? fHeight / 2 : fWidth / 2;
- return CPDF_Rect(fCenterX - fRadius,fCenterY - fRadius,fCenterX + fRadius,fCenterY + fRadius);
+ return CPDF_Rect(fCenterX - fRadius, fCenterY - fRadius, fCenterX + fRadius,
+ fCenterY + fRadius);
}
-CFX_ByteString CPWL_Utils::GetEditAppStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset, const CPVT_WordRange * pRange,
- FX_BOOL bContinuous, FX_WORD SubWord)
-{
- return IFX_Edit::GetEditAppearanceStream(pEdit,ptOffset,pRange,bContinuous,SubWord);
+CFX_ByteString CPWL_Utils::GetEditAppStream(IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ FX_BOOL bContinuous,
+ FX_WORD SubWord) {
+ return IFX_Edit::GetEditAppearanceStream(pEdit, ptOffset, pRange, bContinuous,
+ SubWord);
}
-CFX_ByteString CPWL_Utils::GetEditSelAppStream(IFX_Edit* pEdit, const CPDF_Point & ptOffset,
- const CPVT_WordRange * pRange)
-{
- return IFX_Edit::GetSelectAppearanceStream(pEdit,ptOffset,pRange);
+CFX_ByteString CPWL_Utils::GetEditSelAppStream(IFX_Edit* pEdit,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange) {
+ return IFX_Edit::GetSelectAppearanceStream(pEdit, ptOffset, pRange);
}
-static CFX_ByteString GetSquigglyAppearanceStream(FX_FLOAT fStartX, FX_FLOAT fEndX, FX_FLOAT fY, FX_FLOAT fStep)
-{
- CFX_ByteTextBuf sRet;
+static CFX_ByteString GetSquigglyAppearanceStream(FX_FLOAT fStartX,
+ FX_FLOAT fEndX,
+ FX_FLOAT fY,
+ FX_FLOAT fStep) {
+ CFX_ByteTextBuf sRet;
- sRet << "0 w\n" << fStartX << " " << fY << " m\n";
+ sRet << "0 w\n" << fStartX << " " << fY << " m\n";
- FX_FLOAT fx;
- int32_t i;
+ FX_FLOAT fx;
+ int32_t i;
- for (i=1,fx=fStartX+fStep; fx<fEndX; fx+=fStep,i++)
- {
- sRet << fx << " " << fY + (i&1)*fStep << " l\n";
- }
+ for (i = 1, fx = fStartX + fStep; fx < fEndX; fx += fStep, i++) {
+ sRet << fx << " " << fY + (i & 1) * fStep << " l\n";
+ }
- sRet << "S\n";
+ sRet << "S\n";
- return sRet.GetByteString();
+ return sRet.GetByteString();
}
-static CFX_ByteString GetWordSpellCheckAppearanceStream(IFX_Edit_Iterator* pIterator, const CPDF_Point & ptOffset,
- const CPVT_WordRange & wrWord)
-{
- CFX_ByteTextBuf sRet;
-
- FX_FLOAT fStartX = 0.0f;
- FX_FLOAT fEndX = 0.0f;
- FX_FLOAT fY = 0.0f;
- FX_FLOAT fStep = 0.0f;
-
- FX_BOOL bBreak = FALSE;
-
- if (pIterator)
- {
- pIterator->SetAt(wrWord.BeginPos);
-
- do
- {
- CPVT_WordPlace place = pIterator->GetAt();
-
- CPVT_Line line;
- if (pIterator->GetLine(line))
- {
- fY = line.ptLine.y;
- fStep = (line.fLineAscent - line.fLineDescent) / 16.0f;
- }
-
- if (place.LineCmp(wrWord.BeginPos) == 0)
- {
- pIterator->SetAt(wrWord.BeginPos);
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- fStartX = word.ptWord.x;
- }
- }
- else
- {
- fStartX = line.ptLine.x;
- }
-
- if (place.LineCmp(wrWord.EndPos) == 0)
- {
- pIterator->SetAt(wrWord.EndPos);
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- fEndX = word.ptWord.x + word.fWidth;
- }
-
- bBreak = TRUE;
- }
- else
- {
- fEndX = line.ptLine.x + line.fLineWidth;
- }
-
- sRet << GetSquigglyAppearanceStream(fStartX + ptOffset.x, fEndX + ptOffset.x, fY + ptOffset.y,fStep);
-
- if (bBreak) break;
- }
- while (pIterator->NextLine());
- }
-
- return sRet.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetSpellCheckAppStream(IFX_Edit* pEdit, IPWL_SpellCheck* pSpellCheck, const CPDF_Point & ptOffset,
- const CPVT_WordRange * pRange)
-{
- ASSERT(pEdit != NULL);
- ASSERT(pSpellCheck != NULL);
-
- CFX_ByteTextBuf sRet;
-
- if (pRange && pRange->IsExist())
- {
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- pIterator->SetAt(pRange->BeginPos);
-
- FX_BOOL bLatinWord = FALSE;
- CPVT_WordPlace wpWordStart;
- CFX_ByteString sWord;
-
- CPVT_WordPlace oldplace;
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- if (FX_EDIT_ISLATINWORD(word.Word))
- {
- if (!bLatinWord)
- {
- wpWordStart = place;
- bLatinWord = TRUE;
- }
-
- sWord += (char)word.Word;
- oldplace = place;
- }
- else
- {
- if (bLatinWord)
- {
- if (!pSpellCheck->CheckWord(sWord))
- {
- sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace));
- pIterator->SetAt(place);
- }
- bLatinWord = FALSE;
- }
-
- sWord.Empty();
- }
- }
- else
- {
- if (bLatinWord)
- {
- if (!pSpellCheck->CheckWord(sWord))
- sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace));
- bLatinWord = FALSE;
- sWord.Empty();
- }
- }
- }
-
- if (bLatinWord)
- {
- if (!pSpellCheck->CheckWord(sWord))
- sRet << GetWordSpellCheckAppearanceStream(pIterator,ptOffset,CPVT_WordRange(wpWordStart,oldplace));
-
- bLatinWord = FALSE;
- sWord.Empty();
- }
- }
- }
-
- return sRet.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetTextAppStream(const CPDF_Rect & rcBBox,IFX_Edit_FontMap * pFontMap,
- const CFX_WideString & sText, int32_t nAlignmentH, int32_t nAlignmentV,
- FX_FLOAT fFontSize, FX_BOOL bMultiLine, FX_BOOL bAutoReturn, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sRet;
-
- if (IFX_Edit * pEdit = IFX_Edit::NewEdit())
- {
- pEdit->SetFontMap(pFontMap);
- pEdit->SetPlateRect(rcBBox);
- pEdit->SetAlignmentH(nAlignmentH);
- pEdit->SetAlignmentV(nAlignmentV);
- pEdit->SetMultiLine(bMultiLine);
- pEdit->SetAutoReturn(bAutoReturn);
- if (IsFloatZero(fFontSize))
- pEdit->SetAutoFontSize(TRUE);
- else
- pEdit->SetFontSize(fFontSize);
-
- pEdit->Initialize();
- pEdit->SetText(sText.c_str());
-
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f,0.0f));
- if (sEdit.GetLength() > 0)
- {
- sRet << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n";
- }
- IFX_Edit::DelEdit(pEdit);
- }
-
- return sRet.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetPushButtonAppStream(const CPDF_Rect & rcBBox,
- IFX_Edit_FontMap * pFontMap,
- CPDF_Stream * pIconStream,
- CPDF_IconFit & IconFit,
- const CFX_WideString & sLabel,
- const CPWL_Color & crText,
- FX_FLOAT fFontSize,
- int32_t nLayOut)
-{
- const FX_FLOAT fAutoFontScale = 1.0f / 3.0f;
-
- if (IFX_Edit * pEdit = IFX_Edit::NewEdit())
- {
- pEdit->SetFontMap(pFontMap);
- pEdit->SetAlignmentH(1);
- pEdit->SetAlignmentV(1);
- pEdit->SetMultiLine(FALSE);
- pEdit->SetAutoReturn(FALSE);
- if (IsFloatZero(fFontSize))
- pEdit->SetAutoFontSize(TRUE);
- else
- pEdit->SetFontSize(fFontSize);
-
- pEdit->Initialize();
- pEdit->SetText(sLabel.c_str());
-
- CPDF_Rect rcLabelContent = pEdit->GetContentRect();
- CPWL_Icon Icon;
- PWL_CREATEPARAM cp;
- cp.dwFlags = PWS_VISIBLE;
- Icon.Create(cp);
- Icon.SetIconFit(&IconFit);
- Icon.SetPDFStream(pIconStream);
-
- CPDF_Rect rcLabel = CPDF_Rect(0,0,0,0);
- CPDF_Rect rcIcon = CPDF_Rect(0,0,0,0);
- FX_FLOAT fWidth = 0.0f;
- FX_FLOAT fHeight = 0.0f;
-
- switch (nLayOut)
- {
- case PPBL_LABEL:
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- break;
- case PPBL_ICON:
- rcIcon = rcBBox;
- rcLabel = CPDF_Rect(0,0,0,0);
- break;
- case PPBL_ICONTOPLABELBOTTOM:
-
- if (pIconStream)
- {
- if (IsFloatZero(fFontSize))
- {
- fHeight = rcBBox.top - rcBBox.bottom;
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcBBox.bottom + fHeight * fAutoFontScale);
- rcIcon = CPDF_Rect(rcBBox.left,rcLabel.top,rcBBox.right,rcBBox.top);
- }
- else
- {
- fHeight = rcLabelContent.Height();
-
- if (rcBBox.bottom + fHeight > rcBBox.top)
- {
- rcIcon = CPDF_Rect(0,0,0,0);
- rcLabel = rcBBox;
- }
- else
- {
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcBBox.bottom + fHeight);
- rcIcon = CPDF_Rect(rcBBox.left,rcLabel.top,rcBBox.right,rcBBox.top);
- }
- }
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
-
- break;
- case PPBL_LABELTOPICONBOTTOM:
-
- if (pIconStream)
- {
- if (IsFloatZero(fFontSize))
- {
- fHeight = rcBBox.top - rcBBox.bottom;
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.top - fHeight * fAutoFontScale ,rcBBox.right,rcBBox.top);
- rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcLabel.bottom);
- }
- else
- {
- fHeight = rcLabelContent.Height();
-
- if (rcBBox.bottom + fHeight > rcBBox.top)
- {
- rcIcon = CPDF_Rect(0,0,0,0);
- rcLabel = rcBBox;
- }
- else
- {
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.top - fHeight,rcBBox.right,rcBBox.top);
- rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.right,rcLabel.bottom);
- }
- }
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
-
- break;
- case PPBL_ICONLEFTLABELRIGHT:
-
- if (pIconStream)
- {
- if (IsFloatZero(fFontSize))
- {
- fWidth = rcBBox.right - rcBBox.left;
- rcLabel = CPDF_Rect(rcBBox.right - fWidth * fAutoFontScale,rcBBox.bottom,rcBBox.right,rcBBox.top);
- rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top);
-
- if (rcLabelContent.Width() < fWidth * fAutoFontScale)
- {
- }
- else
- {
- if (rcLabelContent.Width() < fWidth)
- {
- rcLabel = CPDF_Rect(rcBBox.right - rcLabelContent.Width(),rcBBox.bottom,rcBBox.right,rcBBox.top);
- rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top);
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
- }
- }
- else
- {
- fWidth = rcLabelContent.Width();
-
- if (rcBBox.left + fWidth > rcBBox.right)
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
- else
- {
- rcLabel = CPDF_Rect(rcBBox.right - fWidth,rcBBox.bottom,rcBBox.right,rcBBox.top);
- rcIcon = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcLabel.left,rcBBox.top);
- }
- }
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
-
- break;
- case PPBL_LABELLEFTICONRIGHT:
-
- if (pIconStream)
- {
- if (IsFloatZero(fFontSize))
- {
- fWidth = rcBBox.right - rcBBox.left;
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + fWidth * fAutoFontScale,rcBBox.top);
- rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top);
-
- if (rcLabelContent.Width() < fWidth * fAutoFontScale)
- {
- }
- else
- {
- if (rcLabelContent.Width() < fWidth)
- {
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + rcLabelContent.Width(),rcBBox.top);
- rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top);
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
- }
- }
- else
- {
- fWidth = rcLabelContent.Width();
-
- if (rcBBox.left + fWidth > rcBBox.right)
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
- else
- {
- rcLabel = CPDF_Rect(rcBBox.left,rcBBox.bottom,rcBBox.left + fWidth,rcBBox.top);
- rcIcon = CPDF_Rect(rcLabel.right,rcBBox.bottom,rcBBox.right,rcBBox.top);
- }
- }
- }
- else
- {
- rcLabel = rcBBox;
- rcIcon = CPDF_Rect(0,0,0,0);
- }
-
- break;
- case PPBL_LABELOVERICON:
- rcLabel = rcBBox;
- rcIcon = rcBBox;
- break;
- }
-
- CFX_ByteTextBuf sAppStream,sTemp;
-
- if (!rcIcon.IsEmpty())
- {
- Icon.Move(rcIcon, FALSE, FALSE);
- sTemp << Icon.GetImageAppStream();
- }
-
- Icon.Destroy();
-
- if (!rcLabel.IsEmpty())
- {
- pEdit->SetPlateRect(rcLabel);
- CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f));
- if (sEdit.GetLength() > 0)
- {
- sTemp << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n";
- }
- }
-
- IFX_Edit::DelEdit(pEdit);
-
- if (sTemp.GetSize() > 0)
- {
- sAppStream << "q\n" << rcBBox.left << " " << rcBBox.bottom << " "
- << rcBBox.right - rcBBox.left << " " << rcBBox.top - rcBBox.bottom << " re W n\n";
- sAppStream << sTemp << "Q\n";
- }
-
- return sAppStream.GetByteString();
- }
-
- return "";
-}
-
-CFX_ByteString CPWL_Utils::GetColorAppStream(const CPWL_Color & color,const FX_BOOL & bFillOrStroke)
-{
- CFX_ByteTextBuf sColorStream;
-
- switch (color.nColorType)
- {
- case COLORTYPE_RGB:
- sColorStream << color.fColor1 << " " << color.fColor2 << " " << color.fColor3 << " "
- << (bFillOrStroke ? "rg" : "RG") << "\n";
- break;
- case COLORTYPE_GRAY:
- sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") << "\n";
- break;
- case COLORTYPE_CMYK:
- sColorStream << color.fColor1 << " " << color.fColor2 << " " << color.fColor3 << " " << color.fColor4 << " "
- << (bFillOrStroke ? "k" : "K") << "\n";
- break;
- }
-
- return sColorStream.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetBorderAppStream(const CPDF_Rect & rect, FX_FLOAT fWidth,
- const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom,
- int32_t nStyle, const CPWL_Dash & dash)
-{
- CFX_ByteTextBuf sAppStream;
- CFX_ByteString sColor;
-
- FX_FLOAT fLeft = rect.left;
- FX_FLOAT fRight = rect.right;
- FX_FLOAT fTop = rect.top;
- FX_FLOAT fBottom = rect.bottom;
-
- if (fWidth > 0.0f)
- {
- FX_FLOAT fHalfWidth = fWidth / 2.0f;
-
- sAppStream << "q\n";
-
- switch (nStyle)
- {
- default:
- case PBS_SOLID:
- sColor = CPWL_Utils::GetColorAppStream(color,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " << fTop - fBottom << " re\n";
- sAppStream << fLeft + fWidth << " " << fBottom + fWidth << " "
- << fRight - fLeft - fWidth * 2 << " " << fTop - fBottom - fWidth * 2 << " re\n";
- sAppStream << "f*\n";
- }
- break;
- case PBS_DASH:
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fWidth << " w" << " [" << dash.nDash << " " << dash.nGap << "] " << dash.nPhase << " d\n";
- sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 << " m\n";
- sAppStream << fLeft + fWidth / 2 << " " << fTop - fWidth / 2 << " l\n";
- sAppStream << fRight - fWidth / 2 << " " << fTop - fWidth / 2 << " l\n";
- sAppStream << fRight - fWidth / 2 << " " << fBottom + fWidth / 2 << " l\n";
- sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 << " l S\n";
- }
- break;
- case PBS_BEVELED:
- case PBS_INSET:
- sColor = CPWL_Utils::GetColorAppStream(crLeftTop,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " m\n";
- sAppStream << fLeft + fHalfWidth << " " << fTop - fHalfWidth << " l\n";
- sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth << " l\n";
- sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l\n";
- sAppStream << fLeft + fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l\n";
- sAppStream << fLeft + fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l f\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(crRightBottom,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth << " m\n";
- sAppStream << fRight - fHalfWidth << " " << fBottom + fHalfWidth << " l\n";
- sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " l\n";
- sAppStream << fLeft + fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l\n";
- sAppStream << fRight - fHalfWidth * 2 << " " << fBottom + fHalfWidth * 2 << " l\n";
- sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 << " l f\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(color,TRUE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " << fTop - fBottom << " re\n";
- sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " "
- << fRight - fLeft - fHalfWidth * 2 << " " << fTop - fBottom - fHalfWidth * 2 << " re f*\n";
- }
- break;
- case PBS_UNDERLINED:
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << sColor;
- sAppStream << fWidth << " w\n";
- sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n";
- sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n";
- }
- break;
- }
-
- sAppStream << "Q\n";
- }
-
- return sAppStream.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetCircleBorderAppStream(const CPDF_Rect & rect, FX_FLOAT fWidth,
- const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom,
- int32_t nStyle, const CPWL_Dash & dash)
-{
- CFX_ByteTextBuf sAppStream;
- CFX_ByteString sColor;
-
-
-
-
-
-
- if (fWidth > 0.0f)
- {
- sAppStream << "q\n";
-
- switch (nStyle)
- {
- default:
- case PBS_SOLID:
- case PBS_UNDERLINED:
- {
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fWidth << " w\n" << sColor
- << CPWL_Utils::GetAP_Circle(CPWL_Utils::DeflateRect(rect,fWidth / 2.0f))
- << " S\nQ\n";
- }
- }
- break;
- case PBS_DASH:
- {
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fWidth << " w\n"
- << "[" << dash.nDash << " " << dash.nGap << "] " << dash.nPhase << " d\n"
- << sColor << CPWL_Utils::GetAP_Circle(CPWL_Utils::DeflateRect(rect,fWidth / 2.0f))
- << " S\nQ\n";
- }
- }
- break;
- case PBS_BEVELED:
- {
- FX_FLOAT fHalfWidth = fWidth / 2.0f;
-
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_Circle(rect)
- << " S\nQ\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(crLeftTop,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI/4.0f)
- << " S\nQ\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(crRightBottom,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI*5/4.0f)
- << " S\nQ\n";
- }
- }
- break;
- case PBS_INSET:
- {
- FX_FLOAT fHalfWidth = fWidth / 2.0f;
-
- sColor = CPWL_Utils::GetColorAppStream(color,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_Circle(rect)
- << " S\nQ\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(crLeftTop,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI/4.0f)
- << " S\nQ\n";
- }
-
- sColor = CPWL_Utils::GetColorAppStream(crRightBottom,FALSE);
- if (sColor.GetLength() > 0)
- {
- sAppStream << "q\n" << fHalfWidth << " w\n"
- << sColor << CPWL_Utils::GetAP_HalfCircle(CPWL_Utils::DeflateRect(rect,fHalfWidth * 0.75f),PWL_PI*5/4.0f)
- << " S\nQ\n";
- }
- }
- break;
- }
-
- sAppStream << "Q\n";
- }
-
- return sAppStream.GetByteString();
-}
-
-CPWL_Color CPWL_Utils::SubstractColor(const CPWL_Color & sColor,FX_FLOAT fColorSub)
-{
- CPWL_Color sRet;
- sRet.nColorType = sColor.nColorType;
-
- switch (sColor.nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- sRet.nColorType = COLORTYPE_RGB;
- sRet.fColor1 = PWL_MAX(1 - fColorSub,0.0f);
- sRet.fColor2 = PWL_MAX(1 - fColorSub,0.0f);
- sRet.fColor3 = PWL_MAX(1 - fColorSub,0.0f);
- break;
- case COLORTYPE_RGB:
- case COLORTYPE_GRAY:
- case COLORTYPE_CMYK:
- sRet.fColor1 = PWL_MAX(sColor.fColor1 - fColorSub,0.0f);
- sRet.fColor2 = PWL_MAX(sColor.fColor2 - fColorSub,0.0f);
- sRet.fColor3 = PWL_MAX(sColor.fColor3 - fColorSub,0.0f);
- sRet.fColor4 = PWL_MAX(sColor.fColor4 - fColorSub,0.0f);
- break;
- }
-
- return sRet;
-}
-
-CPWL_Color CPWL_Utils::DevideColor(const CPWL_Color & sColor,FX_FLOAT fColorDevide)
-{
- CPWL_Color sRet;
- sRet.nColorType = sColor.nColorType;
-
- switch (sColor.nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- sRet.nColorType = COLORTYPE_RGB;
- sRet.fColor1 = 1 / fColorDevide;
- sRet.fColor2 = 1 / fColorDevide;
- sRet.fColor3 = 1 / fColorDevide;
- break;
- case COLORTYPE_RGB:
- case COLORTYPE_GRAY:
- case COLORTYPE_CMYK:
- sRet = sColor;
- sRet.fColor1 /= fColorDevide;
- sRet.fColor2 /= fColorDevide;
- sRet.fColor3 /= fColorDevide;
- sRet.fColor4 /= fColorDevide;
- break;
- }
-
- return sRet;
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Check(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Check(rcBBox) << "f\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Circle(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Circle(rcBBox) << "f\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Cross(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,FALSE) << CPWL_Utils::GetAP_Cross(rcBBox) << "S\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Diamond(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n1 w\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Diamond(rcBBox) << "f\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Square(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Square(rcBBox) << "f\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetAppStream_Star(const CPDF_Rect & rcBBox, const CPWL_Color & crText)
-{
- CFX_ByteTextBuf sAP;
- sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << CPWL_Utils::GetAP_Star(rcBBox) << "f\nQ\n";
- return sAP.GetByteString();
-}
-
-CFX_ByteString CPWL_Utils::GetCheckBoxAppStream(const CPDF_Rect & rcBBox,
- int32_t nStyle,
- const CPWL_Color & crText)
-{
- CPDF_Rect rcCenter = GetCenterSquare(rcBBox);
- switch (nStyle)
- {
- default:
- case PCS_CHECK:
- return GetAppStream_Check(rcCenter,crText);
- case PCS_CIRCLE:
- return GetAppStream_Circle(ScaleRect(rcCenter,2.0f/3.0f),crText);
- case PCS_CROSS:
- return GetAppStream_Cross(rcCenter,crText);
- case PCS_DIAMOND:
- return GetAppStream_Diamond(ScaleRect(rcCenter,2.0f/3.0f),crText);
- case PCS_SQUARE:
- return GetAppStream_Square(ScaleRect(rcCenter,2.0f/3.0f),crText);
- case PCS_STAR:
- return GetAppStream_Star(ScaleRect(rcCenter,2.0f/3.0f),crText);
- }
-}
-
-CFX_ByteString CPWL_Utils::GetRadioButtonAppStream(const CPDF_Rect & rcBBox,
- int32_t nStyle,
- const CPWL_Color & crText)
-{
- CPDF_Rect rcCenter = GetCenterSquare(rcBBox);
- switch (nStyle)
- {
- default:
- case PCS_CHECK:
- return GetAppStream_Check(rcCenter,crText);
- case PCS_CIRCLE:
- return GetAppStream_Circle(ScaleRect(rcCenter,1.0f/2.0f),crText);
- case PCS_CROSS:
- return GetAppStream_Cross(rcCenter,crText);
- case PCS_DIAMOND:
- return GetAppStream_Diamond(ScaleRect(rcCenter,2.0f/3.0f),crText);
- case PCS_SQUARE:
- return GetAppStream_Square(ScaleRect(rcCenter,2.0f/3.0f),crText);
- case PCS_STAR:
- return GetAppStream_Star(ScaleRect(rcCenter,2.0f/3.0f),crText);
- }
-}
-
-CFX_ByteString CPWL_Utils::GetDropButtonAppStream(const CPDF_Rect & rcBBox)
-{
- CFX_ByteTextBuf sAppStream;
-
- if (!rcBBox.IsEmpty())
- {
- sAppStream << "q\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,220.0f/255.0f,220.0f/255.0f,220.0f/255.0f),TRUE);
- sAppStream << rcBBox.left << " " << rcBBox.bottom << " "
- << rcBBox.right - rcBBox.left << " " << rcBBox.top - rcBBox.bottom << " re f\n";
- sAppStream << "Q\n";
-
- sAppStream << "q\n" <<
- CPWL_Utils::GetBorderAppStream(rcBBox,2,CPWL_Color(COLORTYPE_GRAY,0),CPWL_Color(COLORTYPE_GRAY,1),CPWL_Color(COLORTYPE_GRAY,0.5),PBS_BEVELED,CPWL_Dash(3,0,0))
- << "Q\n";
-
- CPDF_Point ptCenter = CPDF_Point((rcBBox.left + rcBBox.right)/2,(rcBBox.top + rcBBox.bottom)/2);
- if (IsFloatBigger(rcBBox.right - rcBBox.left,6) && IsFloatBigger(rcBBox.top - rcBBox.bottom,6))
- {
- sAppStream << "q\n" << " 0 g\n";
- sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n";
- sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n";
- sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n";
- sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n";
- sAppStream << "Q\n";
- }
- }
-
- return sAppStream.GetByteString();
-}
-
-void CPWL_Utils::ConvertCMYK2GRAY(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dGray)
-{
- if (dC<0 || dC>1 || dM<0 || dM>1 || dY < 0 || dY >1 || dK < 0 || dK >1)
- return;
- dGray = 1.0f - FX_MIN(1.0f,0.3f*dC+0.59f * dM + 0.11f*dY+dK);
-}
-
-void CPWL_Utils::ConvertGRAY2CMYK(FX_FLOAT dGray,FX_FLOAT &dC,FX_FLOAT &dM,FX_FLOAT &dY,FX_FLOAT &dK)
-{
- if (dGray <0 || dGray >1)
- return;
- dC = 0.0f;
- dM = 0.0f;
- dY = 0.0f;
- dK = 1.0f-dGray;
-}
-
-void CPWL_Utils::ConvertGRAY2RGB(FX_FLOAT dGray,FX_FLOAT &dR,FX_FLOAT &dG,FX_FLOAT &dB)
-{
- if (dGray <0 || dGray >1)
- return;
- dR = dGray;
- dG = dGray;
- dB = dGray;
-}
-
-void CPWL_Utils::ConvertRGB2GRAY(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dGray)
-{
- if (dR<0 || dR>1 || dG<0 || dG > 0 || dB < 0 || dB >1)
- return;
- dGray = 0.3f*dR+0.59f*dG+0.11f*dB;
-}
-
-void CPWL_Utils::ConvertCMYK2RGB(FX_FLOAT dC,FX_FLOAT dM,FX_FLOAT dY,FX_FLOAT dK,FX_FLOAT &dR,FX_FLOAT &dG,FX_FLOAT &dB)
-{
- if (dC <0 || dC>1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 || dK > 1 )
- return;
- dR = 1.0f - FX_MIN(1.0f, dC + dK);
- dG = 1.0f - FX_MIN(1.0f, dM + dK);
- dB = 1.0f - FX_MIN(1.0f, dY + dK);
-}
-
-void CPWL_Utils::ConvertRGB2CMYK(FX_FLOAT dR,FX_FLOAT dG,FX_FLOAT dB,FX_FLOAT &dC,FX_FLOAT &dM,FX_FLOAT &dY,FX_FLOAT &dK)
-{
- if (dR<0 || dR>1 || dG<0 || dG>1 || dB<0 || dB>1)
- return;
-
- dC = 1.0f - dR;
- dM = 1.0f - dG;
- dY = 1.0f - dB;
- dK = FX_MIN(dC, FX_MIN(dM, dY));
-}
-
-void CPWL_Utils::PWLColorToARGB(const CPWL_Color& color, int32_t& alpha, FX_FLOAT& red, FX_FLOAT& green, FX_FLOAT& blue)
-{
- switch (color.nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- {
- alpha = 0;
- }
- break;
- case COLORTYPE_GRAY:
- {
- ConvertGRAY2RGB(color.fColor1, red, green, blue);
- }
- break;
- case COLORTYPE_RGB:
- {
- red = color.fColor1;
- green = color.fColor2;
- blue = color.fColor3;
- }
- break;
- case COLORTYPE_CMYK:
- {
- ConvertCMYK2RGB(color.fColor1, color.fColor2, color.fColor3, color.fColor4,
- red, green, blue);
- }
- break;
- }
-}
-
-FX_COLORREF CPWL_Utils::PWLColorToFXColor(const CPWL_Color& color, int32_t nTransparancy)
-{
- int32_t nAlpha = nTransparancy;
- FX_FLOAT dRed = 0;
- FX_FLOAT dGreen = 0;
- FX_FLOAT dBlue = 0;
-
- PWLColorToARGB(color, nAlpha, dRed, dGreen, dBlue);
-
- return ArgbEncode(nAlpha, (int32_t)(dRed*255), (int32_t)(dGreen*255), (int32_t)(dBlue*255));
-}
-
-void CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect,
- const FX_COLORREF & color)
-{
- CFX_PathData path;
- CPDF_Rect rcTemp(rect);
- path.AppendRect(rcTemp.left,rcTemp.bottom,rcTemp.right,rcTemp.top);
- pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_WINDING);
-}
-
-void CPWL_Utils::DrawFillArea(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- const CPDF_Point* pPts, int32_t nCount, const FX_COLORREF& color)
-{
- CFX_PathData path;
- path.SetPointCount(nCount);
-
- path.SetPoint(0, pPts[0].x, pPts[0].y, FXPT_MOVETO);
- for (int32_t i=1; i<nCount; i++)
- path.SetPoint(i, pPts[i].x, pPts[i].y, FXPT_LINETO);
-
- pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_ALTERNATE);
-}
-
-void CPWL_Utils::DrawStrokeRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect,
- const FX_COLORREF & color, FX_FLOAT fWidth)
-{
- CFX_PathData path;
- CPDF_Rect rcTemp(rect);
- path.AppendRect(rcTemp.left,rcTemp.bottom,rcTemp.right,rcTemp.top);
-
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = fWidth;
-
- pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE);
-}
-
-void CPWL_Utils::DrawStrokeLine(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- const CPDF_Point & ptMoveTo, const CPDF_Point & ptLineTo, const FX_COLORREF & color, FX_FLOAT fWidth)
-{
- CFX_PathData path;
- path.SetPointCount(2);
- path.SetPoint(0, ptMoveTo.x, ptMoveTo.y, FXPT_MOVETO);
- path.SetPoint(1, ptLineTo.x, ptLineTo.y, FXPT_LINETO);
-
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = fWidth;
-
- pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE);
-}
-
-void CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,const CPDF_Rect & rect,
- const CPWL_Color & color, int32_t nTransparancy)
-{
- CPWL_Utils::DrawFillRect(pDevice,pUser2Device,rect,PWLColorToFXColor(color,nTransparancy));
-}
-
-void CPWL_Utils::DrawShadow(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- FX_BOOL bVertical, FX_BOOL bHorizontal, CPDF_Rect rect,
- int32_t nTransparancy, int32_t nStartGray, int32_t nEndGray)
-{
- FX_FLOAT fStepGray = 1.0f;
-
- if (bVertical)
- {
- fStepGray = (nEndGray - nStartGray) / rect.Height();
-
- for (FX_FLOAT fy=rect.bottom+0.5f; fy<=rect.top-0.5f; fy+=1.0f)
- {
- int32_t nGray = nStartGray + (int32_t)(fStepGray * (fy-rect.bottom));
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, CPDF_Point(rect.left, fy),
- CPDF_Point(rect.right, fy), ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f);
- }
- }
-
- if (bHorizontal)
- {
- fStepGray = (nEndGray - nStartGray) / rect.Width();
-
- for (FX_FLOAT fx=rect.left+0.5f; fx<=rect.right-0.5f; fx+=1.0f)
- {
- int32_t nGray = nStartGray + (int32_t)(fStepGray * (fx-rect.left));
- CPWL_Utils::DrawStrokeLine(pDevice, pUser2Device, CPDF_Point(fx, rect.bottom),
- CPDF_Point(fx, rect.top), ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f);
- }
- }
-}
-
-void CPWL_Utils::DrawBorder(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- const CPDF_Rect & rect, FX_FLOAT fWidth,
- const CPWL_Color & color, const CPWL_Color & crLeftTop, const CPWL_Color & crRightBottom,
- int32_t nStyle, const CPWL_Dash & dash, int32_t nTransparancy)
-{
- FX_FLOAT fLeft = rect.left;
- FX_FLOAT fRight = rect.right;
- FX_FLOAT fTop = rect.top;
- FX_FLOAT fBottom = rect.bottom;
-
- if (fWidth > 0.0f)
- {
- FX_FLOAT fHalfWidth = fWidth / 2.0f;
-
- switch (nStyle)
- {
- default:
- case PBS_SOLID:
- {
- CFX_PathData path;
- path.AppendRect(fLeft, fBottom, fRight, fTop);
- path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth, fTop - fWidth);
- pDevice->DrawPath(&path, pUser2Device, NULL, PWLColorToFXColor(color,nTransparancy), 0, FXFILL_ALTERNATE);
- }
- break;
- case PBS_DASH:
- {
- CFX_PathData path;
-
- path.SetPointCount(5);
- path.SetPoint(0, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_MOVETO);
- path.SetPoint(1, fLeft + fWidth / 2.0f, fTop - fWidth / 2.0f, FXPT_LINETO);
- path.SetPoint(2, fRight - fWidth / 2.0f, fTop - fWidth / 2.0f, FXPT_LINETO);
- path.SetPoint(3, fRight - fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_LINETO);
- path.SetPoint(4, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f, FXPT_LINETO);
-
- CFX_GraphStateData gsd;
- gsd.SetDashCount(2);
- gsd.m_DashArray[0] = 3.0f;
- gsd.m_DashArray[1] = 3.0f;
- gsd.m_DashPhase = 0;
-
- gsd.m_LineWidth = fWidth;
- pDevice->DrawPath(&path, pUser2Device, &gsd, 0, PWLColorToFXColor(color,nTransparancy), FXFILL_WINDING);
- }
- break;
- case PBS_BEVELED:
- case PBS_INSET:
- {
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = fHalfWidth;
-
- CFX_PathData pathLT;
-
- pathLT.SetPointCount(7);
- pathLT.SetPoint(0, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_MOVETO);
- pathLT.SetPoint(1, fLeft + fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
- pathLT.SetPoint(2, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
- pathLT.SetPoint(3, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO);
- pathLT.SetPoint(4, fLeft + fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO);
- pathLT.SetPoint(5, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO);
- pathLT.SetPoint(6, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO);
-
- pDevice->DrawPath(&pathLT, pUser2Device, &gsd, PWLColorToFXColor(crLeftTop,nTransparancy), 0, FXFILL_ALTERNATE);
-
- CFX_PathData pathRB;
-
- pathRB.SetPointCount(7);
- pathRB.SetPoint(0, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_MOVETO);
- pathRB.SetPoint(1, fRight - fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO);
- pathRB.SetPoint(2, fLeft + fHalfWidth, fBottom + fHalfWidth, FXPT_LINETO);
- pathRB.SetPoint(3, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO);
- pathRB.SetPoint(4, fRight - fHalfWidth * 2, fBottom + fHalfWidth * 2, FXPT_LINETO);
- pathRB.SetPoint(5, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2, FXPT_LINETO);
- pathRB.SetPoint(6, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
-
- pDevice->DrawPath(&pathRB, pUser2Device, &gsd, PWLColorToFXColor(crRightBottom,nTransparancy), 0, FXFILL_ALTERNATE);
-
- CFX_PathData path;
-
- path.AppendRect(fLeft, fBottom, fRight, fTop);
- path.AppendRect(fLeft + fHalfWidth, fBottom + fHalfWidth, fRight - fHalfWidth, fTop - fHalfWidth);
-
- pDevice->DrawPath(&path, pUser2Device, &gsd, PWLColorToFXColor(color,nTransparancy), 0, FXFILL_ALTERNATE);
- }
- break;
- case PBS_UNDERLINED:
- {
- CFX_PathData path;
-
- path.SetPointCount(2);
- path.SetPoint(0, fLeft, fBottom + fWidth / 2, FXPT_MOVETO);
- path.SetPoint(1, fRight, fBottom + fWidth / 2, FXPT_LINETO);
-
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = fWidth;
-
- pDevice->DrawPath(&path, pUser2Device, &gsd,0, PWLColorToFXColor(color,nTransparancy), FXFILL_ALTERNATE);
- }
- break;
- case PBS_SHADOW:
- {
- CFX_PathData path;
- path.AppendRect(fLeft, fBottom, fRight, fTop);
- path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth, fTop - fWidth);
- pDevice->DrawPath(&path, pUser2Device, NULL, PWLColorToFXColor(color,nTransparancy/2), 0, FXFILL_ALTERNATE);
- }
- break;
- }
- }
-}
-
-static void AddSquigglyPath(CFX_PathData & PathData, FX_FLOAT fStartX, FX_FLOAT fEndX, FX_FLOAT fY, FX_FLOAT fStep)
-{
- PathData.AddPointCount(1);
- PathData.SetPoint(PathData.GetPointCount() - 1, fStartX, fY, FXPT_MOVETO);
-
- FX_FLOAT fx;
- int32_t i;
-
- for (i=1,fx=fStartX+fStep; fx<fEndX; fx+=fStep,i++)
- {
- PathData.AddPointCount(1);
- PathData.SetPoint(PathData.GetPointCount() - 1, fx, fY + (i&1)*fStep, FXPT_LINETO);
- }
-}
-
-static void AddSpellCheckObj(CFX_PathData & PathData, IFX_Edit* pEdit, const CPVT_WordRange& wrWord)
-{
- FX_FLOAT fStartX = 0.0f;
- FX_FLOAT fEndX = 0.0f;
- FX_FLOAT fY = 0.0f;
- FX_FLOAT fStep = 0.0f;
-
- FX_BOOL bBreak = FALSE;
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- pIterator->SetAt(wrWord.BeginPos);
-
- do
- {
- CPVT_WordPlace place = pIterator->GetAt();
-
- CPVT_Line line;
- if (pIterator->GetLine(line))
- {
- fY = line.ptLine.y;
- fStep = (line.fLineAscent - line.fLineDescent) / 16.0f;
- }
-
- if (place.LineCmp(wrWord.BeginPos) == 0)
- {
- pIterator->SetAt(wrWord.BeginPos);
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- fStartX = word.ptWord.x;
- }
- }
- else
- {
- fStartX = line.ptLine.x;
- }
-
- if (place.LineCmp(wrWord.EndPos) == 0)
- {
- pIterator->SetAt(wrWord.EndPos);
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- fEndX = word.ptWord.x + word.fWidth;
- }
-
- bBreak = TRUE;
- }
- else
- {
- fEndX = line.ptLine.x + line.fLineWidth;
- }
-
- AddSquigglyPath(PathData, fStartX, fEndX, fY, fStep);
-
- if (bBreak) break;
- }
- while (pIterator->NextLine());
- }
-}
-
-void CPWL_Utils::DrawEditSpellCheck(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, IFX_Edit* pEdit,
- const CPDF_Rect& rcClip, const CPDF_Point& ptOffset, const CPVT_WordRange* pRange,
- IPWL_SpellCheck * pSpellCheck)
-{
- const FX_COLORREF crSpell = ArgbEncode(255,255,0,0);
-
- //for spellcheck
- FX_BOOL bLatinWord = FALSE;
- CPVT_WordPlace wpWordStart;
- CFX_ByteString sLatinWord;
-
- CFX_PathData pathSpell;
-
- pDevice->SaveState();
-
- if (!rcClip.IsEmpty())
- {
- CPDF_Rect rcTemp = rcClip;
- pUser2Device->TransformRect(rcTemp);
- FX_RECT rcDevClip;
- rcDevClip.left = (int32_t)rcTemp.left;
- rcDevClip.right = (int32_t)rcTemp.right;
- rcDevClip.top = (int32_t)rcTemp.top;
- rcDevClip.bottom = (int32_t)rcTemp.bottom;
- pDevice->SetClip_Rect(&rcDevClip);
- }
-
- if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator())
- {
- if (pEdit->GetFontMap())
- {
- if (pRange)
- pIterator->SetAt(pRange->BeginPos);
- else
- pIterator->SetAt(0);
-
- CPVT_WordPlace oldplace;
-
- while (pIterator->NextWord())
- {
- CPVT_WordPlace place = pIterator->GetAt();
- if (pRange && place.WordCmp(pRange->EndPos) > 0) break;
-
- CPVT_Word word;
- if (pIterator->GetWord(word))
- {
- if (FX_EDIT_ISLATINWORD(word.Word))
- {
- if (!bLatinWord)
- {
- wpWordStart = place;
- bLatinWord = TRUE;
- }
-
- sLatinWord += (char)word.Word;
- }
- else
- {
- if (bLatinWord)
- {
- if (!sLatinWord.IsEmpty())
- {
- if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord))
- {
- AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace));
- pIterator->SetAt(place);
- }
- }
- bLatinWord = FALSE;
- }
-
- sLatinWord.Empty();
- }
-
- oldplace = place;
- }
- else
- {
- if (bLatinWord)
- {
- if (!sLatinWord.IsEmpty())
- {
- if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord))
- {
- AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace));
- pIterator->SetAt(place);
- }
- }
- bLatinWord = FALSE;
- }
-
- sLatinWord.Empty();
- }
- }
-
- if (!sLatinWord.IsEmpty())
- {
- if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord))
- {
- AddSpellCheckObj(pathSpell,pEdit,CPVT_WordRange(wpWordStart,oldplace));
- }
- }
- }
- }
-
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 0;
- if (pathSpell.GetPointCount() > 0)
- pDevice->DrawPath(&pathSpell, pUser2Device, &gsd, 0, crSpell, FXFILL_ALTERNATE);
-
- pDevice->RestoreState();
-}
-
-FX_BOOL CPWL_Utils::IsBlackOrWhite(const CPWL_Color& color)
-{
- switch (color.nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- return FALSE;
- case COLORTYPE_GRAY:
- return color.fColor1 < 0.5f;
- case COLORTYPE_RGB:
- return color.fColor1 + color.fColor2 + color.fColor3 < 1.5f;
- case COLORTYPE_CMYK:
- return color.fColor1 + color.fColor2 + color.fColor3 + color.fColor4 > 2.0f;
- }
-
- return TRUE;
-}
-
-CPWL_Color CPWL_Utils::GetReverseColor(const CPWL_Color& color)
-{
- CPWL_Color crRet = color;
-
- switch (color.nColorType)
- {
- case COLORTYPE_GRAY:
- crRet.fColor1 = 1.0f - crRet.fColor1;
- break;
- case COLORTYPE_RGB:
- crRet.fColor1 = 1.0f - crRet.fColor1;
- crRet.fColor2 = 1.0f - crRet.fColor2;
- crRet.fColor3 = 1.0f - crRet.fColor3;
- break;
- case COLORTYPE_CMYK:
- crRet.fColor1 = 1.0f - crRet.fColor1;
- crRet.fColor2 = 1.0f - crRet.fColor2;
- crRet.fColor3 = 1.0f - crRet.fColor3;
- crRet.fColor4 = 1.0f - crRet.fColor4;
- break;
- }
-
- return crRet;
-}
-
-CFX_ByteString CPWL_Utils::GetIconAppStream(int32_t nType, const CPDF_Rect& rect, const CPWL_Color& crFill,
- const CPWL_Color& crStroke)
-{
- CFX_ByteString sAppStream = CPWL_Utils::GetColorAppStream(crStroke, FALSE);
- sAppStream += CPWL_Utils::GetColorAppStream(crFill, TRUE);
-
- CFX_ByteString sPath;
- CFX_PathData path;
-
- switch (nType)
- {
- case PWL_ICONTYPE_CHECKMARK:
- GetGraphics_Checkmark(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_CIRCLE:
- GetGraphics_Circle(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_COMMENT:
- GetGraphics_Comment(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_CROSS:
- GetGraphics_Cross(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_HELP:
- GetGraphics_Help(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_INSERTTEXT:
- GetGraphics_InsertText(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_KEY:
- GetGraphics_Key(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_NEWPARAGRAPH:
- GetGraphics_NewParagraph(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_TEXTNOTE:
- GetGraphics_TextNote(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_PARAGRAPH:
- GetGraphics_Paragraph(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_RIGHTARROW:
- GetGraphics_RightArrow(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_RIGHTPOINTER:
- GetGraphics_RightPointer(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_STAR:
- GetGraphics_Star(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_UPARROW:
- GetGraphics_UpArrow(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_UPLEFTARROW:
- GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_GRAPH:
- GetGraphics_Graph(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_PAPERCLIP:
- GetGraphics_Paperclip(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_ATTACHMENT:
- GetGraphics_Attachment(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_TAG:
- GetGraphics_Tag(sPath, path, rect, PWLPT_STREAM);
- break;
- case PWL_ICONTYPE_FOXIT:
- GetGraphics_Foxit(sPath, path, rect, PWLPT_STREAM);
- break;
- }
-
- sAppStream += sPath;
- if (crStroke.nColorType != COLORTYPE_TRANSPARENT)
- sAppStream += "B*\n";
- else
- sAppStream += "f*\n";
-
- return sAppStream;
-}
-
-void CPWL_Utils::DrawIconAppStream(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
- int32_t nType, const CPDF_Rect & rect, const CPWL_Color& crFill, const CPWL_Color& crStroke, const int32_t nTransparancy)
-{
- CFX_GraphStateData gsd;
- gsd.m_LineWidth = 1.0f;
-
- CFX_ByteString sPath;
- CFX_PathData path;
-
- switch (nType)
- {
- case PWL_ICONTYPE_CHECKMARK:
- GetGraphics_Checkmark(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_CIRCLE:
- GetGraphics_Circle(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_COMMENT:
- GetGraphics_Comment(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_CROSS:
- GetGraphics_Cross(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_HELP:
- GetGraphics_Help(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_INSERTTEXT:
- GetGraphics_InsertText(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_KEY:
- GetGraphics_Key(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_NEWPARAGRAPH:
- GetGraphics_NewParagraph(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_TEXTNOTE:
- GetGraphics_TextNote(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_PARAGRAPH:
- GetGraphics_Paragraph(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_RIGHTARROW:
- GetGraphics_RightArrow(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_RIGHTPOINTER:
- GetGraphics_RightPointer(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_STAR:
- GetGraphics_Star(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_UPARROW:
- GetGraphics_UpArrow(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_UPLEFTARROW:
- GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_GRAPH:
- GetGraphics_Graph(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_PAPERCLIP:
- GetGraphics_Paperclip(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_ATTACHMENT:
- GetGraphics_Attachment(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_TAG:
- GetGraphics_Tag(sPath, path, rect, PWLPT_PATHDATA);
- break;
- case PWL_ICONTYPE_FOXIT:
- GetGraphics_Foxit(sPath, path, rect, PWLPT_PATHDATA);
- break;
- default:
- return;
- }
-
- pDevice->DrawPath(&path, pUser2Device, &gsd,
- PWLColorToFXColor(crFill,nTransparancy), PWLColorToFXColor(crStroke,nTransparancy), FXFILL_ALTERNATE);
-}
-
-void CPWL_Utils::GetGraphics_Checkmark(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f, crBBox.bottom + fHeight * 2 / 5.0f),PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f + PWL_BEZIER*(fWidth / 7.0f - fWidth / 15.0f),
- crBBox.bottom + fHeight * 2 / 5.0f + PWL_BEZIER*(fHeight * 2 / 7.0f - fHeight * 2 / 5.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f + PWL_BEZIER*(fWidth / 5.0f - fWidth / 4.5f),
- crBBox.bottom + fHeight / 16.0f + PWL_BEZIER*(fHeight / 5.0f - fHeight / 16.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f, crBBox.bottom + fHeight / 16.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f + PWL_BEZIER*(fWidth / 4.4f - fWidth / 4.5f),
- crBBox.bottom + fHeight / 16.0f - PWL_BEZIER*fHeight / 16.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f + PWL_BEZIER*(fWidth / 4.0f - fWidth / 3.0f),
- crBBox.bottom), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f, crBBox.bottom), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f + PWL_BEZIER*fWidth*(1/7.0f + 2/15.0f),
- crBBox.bottom + PWL_BEZIER*fHeight * 4 / 5.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f + PWL_BEZIER*fWidth*(1/7.0f - 7/15.0f),
- crBBox.bottom + fHeight * 15/16.0f + PWL_BEZIER*(fHeight * 4/5.0f - fHeight * 15/16.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f,crBBox.bottom + fHeight * 15 / 16.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f + PWL_BEZIER*(fWidth * 7 / 15.0f - fWidth * 14 / 15.0f),
- crBBox.bottom + fHeight * 15 / 16.0f + PWL_BEZIER*(fHeight * 8 / 7.0f - fHeight * 15 / 16.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f + PWL_BEZIER*(fWidth / 3.4f - fWidth / 3.6f),
- crBBox.bottom + fHeight / 3.5f + PWL_BEZIER*(fHeight / 3.5f - fHeight / 3.5f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f,crBBox.bottom + fHeight / 3.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f,
- crBBox.bottom + fHeight / 3.5f + PWL_BEZIER*(fHeight / 4.0f - fHeight / 3.5f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f + PWL_BEZIER*(fWidth / 3.5f - fWidth / 15.0f),
- crBBox.bottom + fHeight * 2 / 5.0f + PWL_BEZIER*(fHeight * 3.5f / 5.0f - fHeight * 2 / 5.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,crBBox.bottom + fHeight * 2 / 5.0f), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 16);
- else
- GetPathDataFromArray(path, PathArray, 16);
-}
-
-void CPWL_Utils::GetGraphics_Circle(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f,crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f,
- crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*14/15.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/15.0f), crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f,crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*14/15.0f - fWidth/2.0f), crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*14/15.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight/2.0f - fHeight/15.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*14/15.0f - fWidth/2.0f), crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/15.0f), crBBox.bottom + fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight/2.0f - fHeight/15.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f,crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth*3/15.0f), crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.top - fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth*4/5.0f - fWidth/2.0f), crBBox.bottom + fHeight*3/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f - PWL_BEZIER*(fHeight*4/5.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*3/15.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 26);
- else
- GetPathDataFromArray(path, PathArray, 26);
-}
-
-void CPWL_Utils::GetGraphics_Comment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f + PWL_BEZIER*(fHeight/6.0f - fHeight/10.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f - PWL_BEZIER*fWidth/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f + PWL_BEZIER*fWidth/15.0f, crBBox.top - fHeight/10.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/6 + PWL_BEZIER*(fHeight/6.0f - fHeight/10.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight/3.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f + PWL_BEZIER*fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f + PWL_BEZIER*fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f, crBBox.bottom + fHeight*2/15 + PWL_BEZIER*fHeight*2/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*5/15.0f - PWL_BEZIER*fWidth*2/15.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*6/30.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f + PWL_BEZIER*fWidth/30.0f, crBBox.bottom + fHeight*2/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f, crBBox.bottom + fHeight*2/15.0f + PWL_BEZIER*fHeight*2/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/30.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f - PWL_BEZIER*fWidth/15.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/3.0f - PWL_BEZIER*fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.bottom + fHeight/3.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/15.0f, crBBox.top - fHeight/6.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight*8/30.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight*8/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15, crBBox.top - fHeight*25/60.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*2/15.0f, crBBox.top - fHeight*25/60.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*2/15.0f, crBBox.top - fHeight*17/30.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*4/15.0f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 30);
- else
- GetPathDataFromArray(path, PathArray, 30);
-}
-
-void CPWL_Utils::GetGraphics_Cross(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- //FX_FLOAT fcatercorner = (FX_FLOAT)sqrt(fWidth*fWidth + fHeight*fHeight);
- CPWL_Point center_point(crBBox.left + fWidth/2, crBBox.bottom + fHeight/2);
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(center_point.x, center_point.y + fHeight/10.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(center_point.x + fWidth*0.3f, center_point.y + fHeight/10.0f + fWidth*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f + fWidth*0.3f, center_point.y + fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f, center_point.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x + fWidth/10.0f + fWidth*0.3f, center_point.y - fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x + fWidth*0.3f, center_point.y - fHeight/10.0f - fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x, center_point.y - fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x - fWidth*0.3f, center_point.y - fHeight/10 - fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x - fWidth/10.0f - fWidth*0.3f, center_point.y - fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x - fWidth/10, center_point.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x - fWidth/10 - fWidth*0.3f, center_point.y + fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x - fWidth*0.3f, center_point.y + fHeight/10.0f + fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(center_point.x, center_point.y + fHeight/10.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 13);
- else
- GetPathDataFromArray(path, PathArray, 13);
-}
-
-void CPWL_Utils::GetGraphics_Help(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight/60.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*(fWidth/2.0f - fWidth/60.0f), crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*fWidth*29/60.0f, crBBox.bottom + fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*(fHeight/60.0f - fHeight/2.0f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*fHeight*29/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + PWL_BEZIER*fWidth*29/60.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f - PWL_BEZIER*fWidth*29/60.0f, crBBox.top - fHeight/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f + PWL_BEZIER*fHeight*29/60.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60.0f, crBBox.bottom + fHeight/2.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.23f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f - PWL_BEZIER*fWidth*0.23f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f + PWL_BEZIER*fWidth*0.23f, crBBox.bottom + fHeight*0.87f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.23f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.27f - fWidth*0.08f*0.2f, crBBox.top - fHeight*0.36f - fHeight*0.15f*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f + fWidth*0.08f*0.2f, crBBox.top - fHeight*0.51f + fHeight*0.15f*0.2f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f, crBBox.top - fHeight*0.51f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.35f - fWidth*0.1f*0.5f, crBBox.top - fHeight*0.51f - fHeight*0.15f*0.3f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f - fWidth*0.1f*0.5f, crBBox.top - fHeight*0.68f + fHeight*0.15f*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.top - fHeight*0.68f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.bottom + fHeight*0.30f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.bottom + fHeight*0.30f - fWidth*0.1f*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.bottom + fHeight*0.30f - fWidth*0.1f*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.bottom + fHeight*0.30f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f, crBBox.top - fHeight*0.66f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.55f - fWidth*0.1f*0.05f, crBBox.top - fHeight*0.66f + fHeight*0.18f*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f - fWidth*0.1f*0.05f, crBBox.top - fHeight*0.48f - fHeight*0.18f*0.3f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f, crBBox.top - fHeight*0.48f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.45f + fWidth*0.08f*0.2f, crBBox.top - fHeight*0.48f + fHeight*0.18f*0.2f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f - fWidth*0.08f*0.2f, crBBox.top - fHeight*0.36f - fHeight*0.18f*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.37f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.13f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f + PWL_BEZIER*fWidth*0.13f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f - PWL_BEZIER*fWidth*0.13f, crBBox.bottom + fHeight*0.77f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f + PWL_BEZIER*fHeight*0.13f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.37f, crBBox.top - fHeight*0.36f - fWidth*0.1f*0.6f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f - fWidth*0.1f*0.6f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.27f, crBBox.top - fHeight*0.36f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f + PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f - PWL_BEZIER*fWidth*0.095f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f + PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.185f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f + PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.44f, crBBox.bottom + fHeight*0.13f - PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f + PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.505f - PWL_BEZIER*fWidth*0.065f, crBBox.bottom + fHeight*0.075f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f - PWL_BEZIER*fHeight*0.055f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.56f, crBBox.bottom + fHeight*0.13f), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 59);
- else
- GetPathDataFromArray(path, PathArray, 59);
-}
-
-void CPWL_Utils::GetGraphics_InsertText(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.bottom + fHeight/10), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2, crBBox.top - fHeight*2/15), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10, crBBox.bottom + fHeight/10), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.bottom + fHeight/10), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 4);
- else
- GetPathDataFromArray(path, PathArray, 4);
-}
-
-void CPWL_Utils::GetGraphics_Key(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- FX_FLOAT k = -fHeight/fWidth;
- CPWL_Point tail;
- CPWL_Point CicleCenter;
- tail.x = crBBox.left + fWidth*0.9f;
- tail.y = k*(tail.x - crBBox.right) + crBBox.bottom;
- CicleCenter.x = crBBox.left + fWidth*0.15f;
- CicleCenter.y = k*(CicleCenter.x - crBBox.right) + crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30.0f, -fWidth/30.0f/k + tail.y), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30.0f - fWidth*0.18f, -k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f + fWidth*0.07f,
- -fWidth*0.07f/k - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 + fWidth*0.07f,
- -fWidth*0.07f/k - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20,
- -k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15,
- -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 + fWidth*0.07f,
- -fWidth*0.07f/k - k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 - fWidth/20 + fWidth*0.07f,
- -fWidth*0.07f/k + -k*fWidth/20 + -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.18f - fWidth/20 - fWidth/15 - fWidth/20,
- -k*fWidth/20 + -k*fWidth/15 - k*fWidth/20 - k*fWidth*0.18f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.45f, -k*fWidth*0.45f - fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30 - fWidth*0.45f + fWidth*0.2f,
- -fWidth*0.4f/k - k*fWidth*0.45f - fWidth/30/k + tail.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.2f, - fWidth*0.1f/k + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth/60.0f, -k*fWidth/60 + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth/60, -k*fWidth/60 + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth*0.22f, fWidth*0.35f/k + CicleCenter.y - fHeight*0.05f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(tail.x - fWidth/30 - fWidth*0.45f - fWidth*0.18f, fWidth*0.05f/k - k*fWidth*0.45f + fWidth/30/k + tail.y - fHeight*0.05f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(tail.x - fWidth/30.0f - fWidth*0.45f, -k*fWidth*0.45f + fWidth/30.0f/k + tail.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(tail.x - fWidth/30.0f, fWidth/30.0f/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/30, -fWidth/30/k + tail.y), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f, k*fWidth*0.08f + CicleCenter.y), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f + fWidth*0.1f, -fWidth*0.1f/k + k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f + fWidth*0.1f, k*fWidth*0.22f + CicleCenter.y - fWidth*0.1f/k), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f, k*fWidth*0.22f + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.22f - fWidth*0.1f, fWidth*0.1f/k + k*fWidth*0.22f + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f - fWidth*0.1f, fWidth*0.1f/k + k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth*0.08f, k*fWidth*0.08f + CicleCenter.y), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 28);
- else
- GetPathDataFromArray(path, PathArray, 28);
-}
-
-void CPWL_Utils::GetGraphics_NewParagraph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/20.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/20.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.top - fHeight*17/30.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.top - fHeight*17/30.0f - fWidth*0.14f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.48f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.48f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.38f, crBBox.bottom + fWidth*0.24f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.22f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.12f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/10.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/10.0f + fHeight/7.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.97f, crBBox.bottom + fHeight/10.0f + fHeight/7.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.97f, crBBox.top - fHeight*17/30.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*17/30.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*17/30.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/10.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.85f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.85f, crBBox.top - fHeight*17/30.0f - fHeight*0.08f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*17/30.0f - fHeight*0.08f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/7 + fHeight*0.18f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 28);
- else
- GetPathDataFromArray(path, PathArray, 28);
-}
-
-void CPWL_Utils::GetGraphics_TextNote(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*7/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.bottom + fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*4/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/5.0f, crBBox.top - fHeight*4/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*7/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/5.0f, crBBox.top - fHeight*7/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/5.0f, crBBox.top - fHeight*10/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*3/10.0f, crBBox.top - fHeight*10/15.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 17);
- else
- GetPathDataFromArray(path, PathArray, 17);
-}
-
-void CPWL_Utils::GetGraphics_Paragraph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.634f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.634f, crBBox.top - fHeight*2/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.566f, crBBox.top - fHeight*2/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.566f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f - fHeight*0.4f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.2f, crBBox.top - fHeight/15.0f - fHeight*0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.2f, crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 12);
- else
- GetPathDataFromArray(path, PathArray, 12);
-}
-
-void CPWL_Utils::GetGraphics_RightArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/2.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + fWidth/8.0f, crBBox.bottom + fHeight/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.bottom + fHeight/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f - fWidth*0.15f, crBBox.top - fHeight/2.0f - fWidth/25.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight/2.0f - fWidth/25.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight/2.0f + fWidth/25.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f - fWidth*0.15f, crBBox.top - fHeight/2.0f + fWidth/25.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f + fWidth/8.0f, crBBox.top - fHeight/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 10);
- else
- GetPathDataFromArray(path, PathArray, 10);
-}
-
-void CPWL_Utils::GetGraphics_RightPointer(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30.0f, crBBox.top - fHeight/2.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/30.0f, crBBox.bottom + fHeight/6.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*4/15.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/30.0f, crBBox.top - fHeight/6.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30.0f, crBBox.top - fHeight/2.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 5);
- else
- GetPathDataFromArray(path, PathArray, 5);
-}
-
-void CPWL_Utils::GetGraphics_Star(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fLongRadius = (crBBox.top - crBBox.bottom)/(1+(FX_FLOAT)cos(PWL_PI/5.0f));
- fLongRadius = fLongRadius * 0.7f;
- FX_FLOAT fShortRadius = fLongRadius * 0.55f;
- CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,(crBBox.top + crBBox.bottom) / 2.0f);
-
- FX_FLOAT px1[5], py1[5];
- FX_FLOAT px2[5], py2[5];
-
- FX_FLOAT fAngel = PWL_PI/10.0f;
-
- for (int32_t i=0; i<5; i++)
- {
- px1[i] = ptCenter.x + fLongRadius * (FX_FLOAT)cos(fAngel);
- py1[i] = ptCenter.y + fLongRadius * (FX_FLOAT)sin(fAngel);
-
- fAngel += PWL_PI * 2 / 5.0f;
- }
-
- fAngel = PWL_PI/5.0f + PWL_PI/10.0f;
-
- for (int32_t j=0; j<5; j++)
- {
- px2[j] = ptCenter.x + fShortRadius * (FX_FLOAT)cos(fAngel);
- py2[j] = ptCenter.y + fShortRadius * (FX_FLOAT)sin(fAngel);
-
- fAngel += PWL_PI * 2 / 5.0f;
- }
-
- CPWL_PathData PathArray[11];
- PathArray[0] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_MOVETO);
- PathArray[1] = CPWL_PathData(CPWL_Point(px2[0], py2[0]), PWLPT_LINETO);
-
- for(int32_t k = 0; k < 4; k++)
- {
- PathArray[(k+1)*2] = CPWL_PathData(CPWL_Point(px1[k+1], py1[k+1]), PWLPT_LINETO);
- PathArray[(k+1)*2 + 1] = CPWL_PathData(CPWL_Point(px2[k+1], py2[k+1]), PWLPT_LINETO);
- }
-
- PathArray[10] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_LINETO);
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 11);
- else
- GetPathDataFromArray(path, PathArray, 11);
-}
-
-void CPWL_Utils::GetGraphics_UpArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/10.0f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.bottom + fHeight/15.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/10, crBBox.top - fWidth*3/5.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/2.0f, crBBox.top - fHeight/15.0f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 8);
- else
- GetPathDataFromArray(path, PathArray, 8);
-}
-
-void CPWL_Utils::GetGraphics_UpLeftArrow(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
- CPWL_Point leftup(crBBox.left, crBBox.top);
- CPWL_Point rightdown(crBBox.right, crBBox.bottom);
- FX_FLOAT k = -fHeight/fWidth;
- CPWL_Point tail;
- tail.x = crBBox.left + fWidth*4/5.0f;
- tail.y = k*(tail.x - crBBox.right) + rightdown.y;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/20.0f, k*(crBBox.left + fWidth/20.0f - rightdown.x) + rightdown.y), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x + fWidth/10.0f + fWidth/5.0f,
- -fWidth/5.0f/k + tail.y - fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x + fWidth/10.0f,
- tail.y - fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x + fWidth/10.0f, tail.y - fWidth/10.0f/k), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(tail.x - fWidth/10.0f, tail.y + fWidth/10.0f/k), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x - fWidth/10.0f, tail.y + fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(fHeight*17/60.0f/k + tail.x - fWidth/10.0f - fWidth/5.0f,
- fWidth/5.0f/k + tail.y + fWidth/10.0f/k + fHeight*17/60.0f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/20.0f, k*(crBBox.left + fWidth/20.0f - rightdown.x) + rightdown.y), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 8);
- else
- GetPathDataFromArray(path, PathArray, 8);
-}
-
-void CPWL_Utils::GetGraphics_Graph(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.top - fWidth*0.15f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.15f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.05f, crBBox.top - fWidth*0.15f), PWLPT_LINETO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.top - fWidth*0.45f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.475f, crBBox.top - fWidth*0.45f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.475f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.275f, crBBox.top - fWidth*0.45f), PWLPT_LINETO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.05f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.top - fHeight*0.05f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.7f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.05f), PWLPT_LINETO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.top - fWidth*0.35f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.925f, crBBox.top - fWidth*0.35f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.925f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.bottom + fHeight*0.08f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.725f, crBBox.top - fWidth*0.35f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 20);
- else
- GetPathDataFromArray(path, PathArray, 20);
-}
-
-void CPWL_Utils::GetGraphics_Paperclip(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.bottom + fHeight*0.25f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.bottom + fHeight*0.25f - fWidth*57/60.0f*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.bottom + fHeight*0.25f - fWidth*57/60.0f*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.bottom + fHeight*0.25f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.top - fHeight*0.33f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30, crBBox.top - fHeight*0.33f + fHeight/15*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.top - fHeight*0.33f + fHeight/15*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.top - fHeight*0.33f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.bottom + fHeight*0.2f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/30 - fWidth*0.12f, crBBox.bottom + fHeight*0.2f - (fWidth*57/60.0f - fWidth*0.24f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.bottom + fHeight*0.2f - (fWidth*57/60.0f - fWidth*0.24f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.bottom + fHeight*0.2f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.top - fHeight*0.2f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60 + fWidth*0.12f, crBBox.top - fHeight*0.2f + (fWidth*11/12.0f - fWidth*0.36f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.top - fHeight*0.2f + (fWidth*11/12.0f - fWidth*0.36f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.top - fHeight*0.2f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.bottom + fHeight*0.25f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.24f, crBBox.bottom + fHeight*0.25f - (fWidth*14/15.0f - fWidth*0.53f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.bottom + fHeight*0.25f - (fWidth*14/15.0f - fWidth*0.53f)*0.25f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.bottom + fHeight*0.25f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.top - fHeight*0.33f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.29f, crBBox.top - fHeight*0.33f + fWidth*0.12f*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.top - fHeight*0.33f + fWidth*0.12f*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.top - fHeight*0.33f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.bottom + fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.17f, crBBox.bottom + fHeight*0.3f - fWidth*(14/15.0f - 0.29f)*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.bottom + fHeight*0.3f - fWidth*(14/15.0f - 0.29f)*0.35f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.bottom + fHeight*0.3f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.top - fHeight*0.25f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth/15 - fWidth*0.12f, crBBox.top - fHeight*0.25f + fWidth*0.35f*(11/12.0f - 0.12f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f + fWidth*0.35f*(11/12.0f - 0.12f)), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth/60, crBBox.top - fHeight*0.25f), PWLPT_BEZIERTO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 33);
- else
- GetPathDataFromArray(path, PathArray, 33);
-}
-
-void CPWL_Utils::GetGraphics_Attachment(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.23f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.23f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.25f, crBBox.top - fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.23f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.23f), PWLPT_LINETO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f - fWidth*0.25f*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.15f, crBBox.top - fHeight*0.65f + fHeight*0.15f*0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.15f, crBBox.top - fHeight*0.65f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.15f, crBBox.top - fHeight*0.65f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.15f, crBBox.top - fHeight*0.65f + fHeight*0.15f*0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f + fWidth*0.25f*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.6f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f + fWidth*0.04f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.top - fHeight*0.65f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.5f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 24);
- else
- GetPathDataFromArray(path, PathArray, 24);
-}
-
-void CPWL_Utils::GetGraphics_Tag(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fWidth = crBBox.right - crBBox.left;
- FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.1f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.1f, crBBox.top - fHeight*0.5f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.3f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.1f, crBBox.bottom + fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.1f, crBBox.top - fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.1f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.3f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.3f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.5f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.5f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crBBox.left + fWidth*0.4f, crBBox.top - fHeight*0.7f), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crBBox.right - fWidth*0.2f, crBBox.top - fHeight*0.7f), PWLPT_LINETO)
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 12);
- else
- GetPathDataFromArray(path, PathArray, 12);
-}
-
-void CPWL_Utils::GetGraphics_Foxit(CFX_ByteString& sPathData, CFX_PathData& path, const CPDF_Rect& crBBox, const PWL_PATH_TYPE type)
-{
- FX_FLOAT fOutWidth = crBBox.right - crBBox.left;
- FX_FLOAT fOutHeight = crBBox.top - crBBox.bottom;
-
- CPDF_Rect crInBox = crBBox;
- crInBox.left = crBBox.left + fOutWidth*0.08f;
- crInBox.right = crBBox.right - fOutWidth*0.08f;
- crInBox.top = crBBox.top - fOutHeight*0.08f;
- crInBox.bottom = crBBox.bottom + fOutHeight*0.08f;
-
- FX_FLOAT fWidth = crInBox.right - crInBox.left;
- FX_FLOAT fHeight = crInBox.top - crInBox.bottom;
-
- CPWL_PathData PathArray[] =
- {
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f, crInBox.top), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f, crInBox.top - PWL_BEZIER * fHeight * 0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.45f - PWL_BEZIER * fWidth * 0.45f, crInBox.top - fHeight*0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.4f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_LINETO),
-
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.60f, crInBox.top), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f, crInBox.top), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f, crInBox.top - PWL_BEZIER * fHeight * 0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.75f - PWL_BEZIER * fWidth * 0.75f, crInBox.top - fHeight*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.7f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.55f), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.left + PWL_BEZIER * fWidth*0.60f, crInBox.top - fHeight*0.55f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top - PWL_BEZIER * fHeight * 0.55f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top), PWLPT_BEZIERTO),
-
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top), PWLPT_MOVETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top - PWL_BEZIER * fHeight * 0.85f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f - PWL_BEZIER * fWidth * 0.90f, crInBox.top - fHeight*0.85f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight*0.85f), PWLPT_BEZIERTO),
- CPWL_PathData(CPWL_Point(crInBox.left, crInBox.bottom), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.right, crInBox.bottom), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.right, crInBox.top), PWLPT_LINETO),
- CPWL_PathData(CPWL_Point(crInBox.left + fWidth*0.90f, crInBox.top), PWLPT_LINETO),
- };
-
- if(type == PWLPT_STREAM)
- sPathData = GetAppStreamFromArray(PathArray, 23);
- else
- GetPathDataFromArray(path, PathArray, 23);
-}
-
-void CPWL_Color::ConvertColorType(int32_t other_nColorType)
-{
- switch (other_nColorType)
- {
- case COLORTYPE_TRANSPARENT:
- break;
- case COLORTYPE_GRAY:
- switch (other_nColorType)
- {
- case COLORTYPE_RGB:
- CPWL_Utils::ConvertGRAY2RGB(fColor1, fColor1, fColor2, fColor3);
- break;
- case COLORTYPE_CMYK:
- CPWL_Utils::ConvertGRAY2CMYK(fColor1, fColor1, fColor2, fColor3, fColor4);
- break;
- }
- break;
- case COLORTYPE_RGB:
- switch (other_nColorType)
- {
- case COLORTYPE_GRAY:
- CPWL_Utils::ConvertRGB2GRAY(fColor1, fColor2, fColor3, fColor1);
- break;
- case COLORTYPE_CMYK:
- CPWL_Utils::ConvertRGB2CMYK(fColor1, fColor2, fColor3, fColor1, fColor2, fColor3, fColor4);
- break;
- }
- break;
- case COLORTYPE_CMYK:
- switch (other_nColorType)
- {
- case COLORTYPE_GRAY:
- CPWL_Utils::ConvertCMYK2GRAY(fColor1, fColor2, fColor3, fColor4, fColor1);
- break;
- case COLORTYPE_RGB:
- CPWL_Utils::ConvertCMYK2RGB(fColor1, fColor2, fColor3, fColor4, fColor1, fColor2, fColor3);
- break;
- }
- break;
- }
- nColorType = other_nColorType;
-}
+static CFX_ByteString GetWordSpellCheckAppearanceStream(
+ IFX_Edit_Iterator* pIterator,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange& wrWord) {
+ CFX_ByteTextBuf sRet;
+ FX_FLOAT fStartX = 0.0f;
+ FX_FLOAT fEndX = 0.0f;
+ FX_FLOAT fY = 0.0f;
+ FX_FLOAT fStep = 0.0f;
+ FX_BOOL bBreak = FALSE;
+
+ if (pIterator) {
+ pIterator->SetAt(wrWord.BeginPos);
+
+ do {
+ CPVT_WordPlace place = pIterator->GetAt();
+
+ CPVT_Line line;
+ if (pIterator->GetLine(line)) {
+ fY = line.ptLine.y;
+ fStep = (line.fLineAscent - line.fLineDescent) / 16.0f;
+ }
+
+ if (place.LineCmp(wrWord.BeginPos) == 0) {
+ pIterator->SetAt(wrWord.BeginPos);
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ fStartX = word.ptWord.x;
+ }
+ } else {
+ fStartX = line.ptLine.x;
+ }
+
+ if (place.LineCmp(wrWord.EndPos) == 0) {
+ pIterator->SetAt(wrWord.EndPos);
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ fEndX = word.ptWord.x + word.fWidth;
+ }
+
+ bBreak = TRUE;
+ } else {
+ fEndX = line.ptLine.x + line.fLineWidth;
+ }
+
+ sRet << GetSquigglyAppearanceStream(
+ fStartX + ptOffset.x, fEndX + ptOffset.x, fY + ptOffset.y, fStep);
+
+ if (bBreak)
+ break;
+ } while (pIterator->NextLine());
+ }
+
+ return sRet.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetSpellCheckAppStream(
+ IFX_Edit* pEdit,
+ IPWL_SpellCheck* pSpellCheck,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange) {
+ ASSERT(pEdit != NULL);
+ ASSERT(pSpellCheck != NULL);
+
+ CFX_ByteTextBuf sRet;
+
+ if (pRange && pRange->IsExist()) {
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ pIterator->SetAt(pRange->BeginPos);
+
+ FX_BOOL bLatinWord = FALSE;
+ CPVT_WordPlace wpWordStart;
+ CFX_ByteString sWord;
+
+ CPVT_WordPlace oldplace;
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ if (FX_EDIT_ISLATINWORD(word.Word)) {
+ if (!bLatinWord) {
+ wpWordStart = place;
+ bLatinWord = TRUE;
+ }
+
+ sWord += (char)word.Word;
+ oldplace = place;
+ } else {
+ if (bLatinWord) {
+ if (!pSpellCheck->CheckWord(sWord)) {
+ sRet << GetWordSpellCheckAppearanceStream(
+ pIterator, ptOffset, CPVT_WordRange(wpWordStart, oldplace));
+ pIterator->SetAt(place);
+ }
+ bLatinWord = FALSE;
+ }
+
+ sWord.Empty();
+ }
+ } else {
+ if (bLatinWord) {
+ if (!pSpellCheck->CheckWord(sWord))
+ sRet << GetWordSpellCheckAppearanceStream(
+ pIterator, ptOffset, CPVT_WordRange(wpWordStart, oldplace));
+ bLatinWord = FALSE;
+ sWord.Empty();
+ }
+ }
+ }
+
+ if (bLatinWord) {
+ if (!pSpellCheck->CheckWord(sWord))
+ sRet << GetWordSpellCheckAppearanceStream(
+ pIterator, ptOffset, CPVT_WordRange(wpWordStart, oldplace));
+
+ bLatinWord = FALSE;
+ sWord.Empty();
+ }
+ }
+ }
+
+ return sRet.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetTextAppStream(const CPDF_Rect& rcBBox,
+ IFX_Edit_FontMap* pFontMap,
+ const CFX_WideString& sText,
+ int32_t nAlignmentH,
+ int32_t nAlignmentV,
+ FX_FLOAT fFontSize,
+ FX_BOOL bMultiLine,
+ FX_BOOL bAutoReturn,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sRet;
+
+ if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) {
+ pEdit->SetFontMap(pFontMap);
+ pEdit->SetPlateRect(rcBBox);
+ pEdit->SetAlignmentH(nAlignmentH);
+ pEdit->SetAlignmentV(nAlignmentV);
+ pEdit->SetMultiLine(bMultiLine);
+ pEdit->SetAutoReturn(bAutoReturn);
+ if (IsFloatZero(fFontSize))
+ pEdit->SetAutoFontSize(TRUE);
+ else
+ pEdit->SetFontSize(fFontSize);
+
+ pEdit->Initialize();
+ pEdit->SetText(sText.c_str());
+
+ CFX_ByteString sEdit =
+ CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, 0.0f));
+ if (sEdit.GetLength() > 0) {
+ sRet << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit
+ << "ET\n";
+ }
+ IFX_Edit::DelEdit(pEdit);
+ }
+
+ return sRet.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetPushButtonAppStream(const CPDF_Rect& rcBBox,
+ IFX_Edit_FontMap* pFontMap,
+ CPDF_Stream* pIconStream,
+ CPDF_IconFit& IconFit,
+ const CFX_WideString& sLabel,
+ const CPWL_Color& crText,
+ FX_FLOAT fFontSize,
+ int32_t nLayOut) {
+ const FX_FLOAT fAutoFontScale = 1.0f / 3.0f;
+
+ if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) {
+ pEdit->SetFontMap(pFontMap);
+ pEdit->SetAlignmentH(1);
+ pEdit->SetAlignmentV(1);
+ pEdit->SetMultiLine(FALSE);
+ pEdit->SetAutoReturn(FALSE);
+ if (IsFloatZero(fFontSize))
+ pEdit->SetAutoFontSize(TRUE);
+ else
+ pEdit->SetFontSize(fFontSize);
+
+ pEdit->Initialize();
+ pEdit->SetText(sLabel.c_str());
+
+ CPDF_Rect rcLabelContent = pEdit->GetContentRect();
+ CPWL_Icon Icon;
+ PWL_CREATEPARAM cp;
+ cp.dwFlags = PWS_VISIBLE;
+ Icon.Create(cp);
+ Icon.SetIconFit(&IconFit);
+ Icon.SetPDFStream(pIconStream);
+
+ CPDF_Rect rcLabel = CPDF_Rect(0, 0, 0, 0);
+ CPDF_Rect rcIcon = CPDF_Rect(0, 0, 0, 0);
+ FX_FLOAT fWidth = 0.0f;
+ FX_FLOAT fHeight = 0.0f;
+
+ switch (nLayOut) {
+ case PPBL_LABEL:
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ break;
+ case PPBL_ICON:
+ rcIcon = rcBBox;
+ rcLabel = CPDF_Rect(0, 0, 0, 0);
+ break;
+ case PPBL_ICONTOPLABELBOTTOM:
+
+ if (pIconStream) {
+ if (IsFloatZero(fFontSize)) {
+ fHeight = rcBBox.top - rcBBox.bottom;
+ rcLabel = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcBBox.right,
+ rcBBox.bottom + fHeight * fAutoFontScale);
+ rcIcon =
+ CPDF_Rect(rcBBox.left, rcLabel.top, rcBBox.right, rcBBox.top);
+ } else {
+ fHeight = rcLabelContent.Height();
+
+ if (rcBBox.bottom + fHeight > rcBBox.top) {
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ rcLabel = rcBBox;
+ } else {
+ rcLabel = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcBBox.right,
+ rcBBox.bottom + fHeight);
+ rcIcon =
+ CPDF_Rect(rcBBox.left, rcLabel.top, rcBBox.right, rcBBox.top);
+ }
+ }
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+
+ break;
+ case PPBL_LABELTOPICONBOTTOM:
+
+ if (pIconStream) {
+ if (IsFloatZero(fFontSize)) {
+ fHeight = rcBBox.top - rcBBox.bottom;
+ rcLabel =
+ CPDF_Rect(rcBBox.left, rcBBox.top - fHeight * fAutoFontScale,
+ rcBBox.right, rcBBox.top);
+ rcIcon = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcBBox.right,
+ rcLabel.bottom);
+ } else {
+ fHeight = rcLabelContent.Height();
+
+ if (rcBBox.bottom + fHeight > rcBBox.top) {
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ rcLabel = rcBBox;
+ } else {
+ rcLabel = CPDF_Rect(rcBBox.left, rcBBox.top - fHeight,
+ rcBBox.right, rcBBox.top);
+ rcIcon = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcBBox.right,
+ rcLabel.bottom);
+ }
+ }
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+
+ break;
+ case PPBL_ICONLEFTLABELRIGHT:
+
+ if (pIconStream) {
+ if (IsFloatZero(fFontSize)) {
+ fWidth = rcBBox.right - rcBBox.left;
+ rcLabel = CPDF_Rect(rcBBox.right - fWidth * fAutoFontScale,
+ rcBBox.bottom, rcBBox.right, rcBBox.top);
+ rcIcon =
+ CPDF_Rect(rcBBox.left, rcBBox.bottom, rcLabel.left, rcBBox.top);
+
+ if (rcLabelContent.Width() < fWidth * fAutoFontScale) {
+ } else {
+ if (rcLabelContent.Width() < fWidth) {
+ rcLabel = CPDF_Rect(rcBBox.right - rcLabelContent.Width(),
+ rcBBox.bottom, rcBBox.right, rcBBox.top);
+ rcIcon = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcLabel.left,
+ rcBBox.top);
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+ }
+ } else {
+ fWidth = rcLabelContent.Width();
+
+ if (rcBBox.left + fWidth > rcBBox.right) {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ } else {
+ rcLabel = CPDF_Rect(rcBBox.right - fWidth, rcBBox.bottom,
+ rcBBox.right, rcBBox.top);
+ rcIcon = CPDF_Rect(rcBBox.left, rcBBox.bottom, rcLabel.left,
+ rcBBox.top);
+ }
+ }
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+
+ break;
+ case PPBL_LABELLEFTICONRIGHT:
+
+ if (pIconStream) {
+ if (IsFloatZero(fFontSize)) {
+ fWidth = rcBBox.right - rcBBox.left;
+ rcLabel =
+ CPDF_Rect(rcBBox.left, rcBBox.bottom,
+ rcBBox.left + fWidth * fAutoFontScale, rcBBox.top);
+ rcIcon = CPDF_Rect(rcLabel.right, rcBBox.bottom, rcBBox.right,
+ rcBBox.top);
+
+ if (rcLabelContent.Width() < fWidth * fAutoFontScale) {
+ } else {
+ if (rcLabelContent.Width() < fWidth) {
+ rcLabel =
+ CPDF_Rect(rcBBox.left, rcBBox.bottom,
+ rcBBox.left + rcLabelContent.Width(), rcBBox.top);
+ rcIcon = CPDF_Rect(rcLabel.right, rcBBox.bottom, rcBBox.right,
+ rcBBox.top);
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+ }
+ } else {
+ fWidth = rcLabelContent.Width();
+
+ if (rcBBox.left + fWidth > rcBBox.right) {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ } else {
+ rcLabel = CPDF_Rect(rcBBox.left, rcBBox.bottom,
+ rcBBox.left + fWidth, rcBBox.top);
+ rcIcon = CPDF_Rect(rcLabel.right, rcBBox.bottom, rcBBox.right,
+ rcBBox.top);
+ }
+ }
+ } else {
+ rcLabel = rcBBox;
+ rcIcon = CPDF_Rect(0, 0, 0, 0);
+ }
+
+ break;
+ case PPBL_LABELOVERICON:
+ rcLabel = rcBBox;
+ rcIcon = rcBBox;
+ break;
+ }
+
+ CFX_ByteTextBuf sAppStream, sTemp;
+
+ if (!rcIcon.IsEmpty()) {
+ Icon.Move(rcIcon, FALSE, FALSE);
+ sTemp << Icon.GetImageAppStream();
+ }
+
+ Icon.Destroy();
+
+ if (!rcLabel.IsEmpty()) {
+ pEdit->SetPlateRect(rcLabel);
+ CFX_ByteString sEdit =
+ CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, 0.0f));
+ if (sEdit.GetLength() > 0) {
+ sTemp << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit
+ << "ET\n";
+ }
+ }
+
+ IFX_Edit::DelEdit(pEdit);
+
+ if (sTemp.GetSize() > 0) {
+ sAppStream << "q\n" << rcBBox.left << " " << rcBBox.bottom << " "
+ << rcBBox.right - rcBBox.left << " "
+ << rcBBox.top - rcBBox.bottom << " re W n\n";
+ sAppStream << sTemp << "Q\n";
+ }
+
+ return sAppStream.GetByteString();
+ }
+
+ return "";
+}
+
+CFX_ByteString CPWL_Utils::GetColorAppStream(const CPWL_Color& color,
+ const FX_BOOL& bFillOrStroke) {
+ CFX_ByteTextBuf sColorStream;
+
+ switch (color.nColorType) {
+ case COLORTYPE_RGB:
+ sColorStream << color.fColor1 << " " << color.fColor2 << " "
+ << color.fColor3 << " " << (bFillOrStroke ? "rg" : "RG")
+ << "\n";
+ break;
+ case COLORTYPE_GRAY:
+ sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G")
+ << "\n";
+ break;
+ case COLORTYPE_CMYK:
+ sColorStream << color.fColor1 << " " << color.fColor2 << " "
+ << color.fColor3 << " " << color.fColor4 << " "
+ << (bFillOrStroke ? "k" : "K") << "\n";
+ break;
+ }
+
+ return sColorStream.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetBorderAppStream(const CPDF_Rect& rect,
+ FX_FLOAT fWidth,
+ const CPWL_Color& color,
+ const CPWL_Color& crLeftTop,
+ const CPWL_Color& crRightBottom,
+ int32_t nStyle,
+ const CPWL_Dash& dash) {
+ CFX_ByteTextBuf sAppStream;
+ CFX_ByteString sColor;
+
+ FX_FLOAT fLeft = rect.left;
+ FX_FLOAT fRight = rect.right;
+ FX_FLOAT fTop = rect.top;
+ FX_FLOAT fBottom = rect.bottom;
+
+ if (fWidth > 0.0f) {
+ FX_FLOAT fHalfWidth = fWidth / 2.0f;
+
+ sAppStream << "q\n";
+
+ switch (nStyle) {
+ default:
+ case PBS_SOLID:
+ sColor = CPWL_Utils::GetColorAppStream(color, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " "
+ << fTop - fBottom << " re\n";
+ sAppStream << fLeft + fWidth << " " << fBottom + fWidth << " "
+ << fRight - fLeft - fWidth * 2 << " "
+ << fTop - fBottom - fWidth * 2 << " re\n";
+ sAppStream << "f*\n";
+ }
+ break;
+ case PBS_DASH:
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fWidth << " w"
+ << " [" << dash.nDash << " " << dash.nGap << "] "
+ << dash.nPhase << " d\n";
+ sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2
+ << " m\n";
+ sAppStream << fLeft + fWidth / 2 << " " << fTop - fWidth / 2
+ << " l\n";
+ sAppStream << fRight - fWidth / 2 << " " << fTop - fWidth / 2
+ << " l\n";
+ sAppStream << fRight - fWidth / 2 << " " << fBottom + fWidth / 2
+ << " l\n";
+ sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2
+ << " l S\n";
+ }
+ break;
+ case PBS_BEVELED:
+ case PBS_INSET:
+ sColor = CPWL_Utils::GetColorAppStream(crLeftTop, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth
+ << " m\n";
+ sAppStream << fLeft + fHalfWidth << " " << fTop - fHalfWidth
+ << " l\n";
+ sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth
+ << " l\n";
+ sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2
+ << " l\n";
+ sAppStream << fLeft + fHalfWidth * 2 << " " << fTop - fHalfWidth * 2
+ << " l\n";
+ sAppStream << fLeft + fHalfWidth * 2 << " "
+ << fBottom + fHalfWidth * 2 << " l f\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(crRightBottom, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth
+ << " m\n";
+ sAppStream << fRight - fHalfWidth << " " << fBottom + fHalfWidth
+ << " l\n";
+ sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth
+ << " l\n";
+ sAppStream << fLeft + fHalfWidth * 2 << " "
+ << fBottom + fHalfWidth * 2 << " l\n";
+ sAppStream << fRight - fHalfWidth * 2 << " "
+ << fBottom + fHalfWidth * 2 << " l\n";
+ sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2
+ << " l f\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(color, TRUE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " "
+ << fTop - fBottom << " re\n";
+ sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " "
+ << fRight - fLeft - fHalfWidth * 2 << " "
+ << fTop - fBottom - fHalfWidth * 2 << " re f*\n";
+ }
+ break;
+ case PBS_UNDERLINED:
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << sColor;
+ sAppStream << fWidth << " w\n";
+ sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n";
+ sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n";
+ }
+ break;
+ }
+
+ sAppStream << "Q\n";
+ }
+
+ return sAppStream.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetCircleBorderAppStream(
+ const CPDF_Rect& rect,
+ FX_FLOAT fWidth,
+ const CPWL_Color& color,
+ const CPWL_Color& crLeftTop,
+ const CPWL_Color& crRightBottom,
+ int32_t nStyle,
+ const CPWL_Dash& dash) {
+ CFX_ByteTextBuf sAppStream;
+ CFX_ByteString sColor;
+
+ if (fWidth > 0.0f) {
+ sAppStream << "q\n";
+
+ switch (nStyle) {
+ default:
+ case PBS_SOLID:
+ case PBS_UNDERLINED: {
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_Circle(
+ CPWL_Utils::DeflateRect(rect, fWidth / 2.0f))
+ << " S\nQ\n";
+ }
+ } break;
+ case PBS_DASH: {
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fWidth << " w\n"
+ << "[" << dash.nDash << " " << dash.nGap << "] "
+ << dash.nPhase << " d\n" << sColor
+ << CPWL_Utils::GetAP_Circle(
+ CPWL_Utils::DeflateRect(rect, fWidth / 2.0f))
+ << " S\nQ\n";
+ }
+ } break;
+ case PBS_BEVELED: {
+ FX_FLOAT fHalfWidth = fWidth / 2.0f;
+
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_Circle(rect) << " S\nQ\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(crLeftTop, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_HalfCircle(
+ CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f),
+ PWL_PI / 4.0f)
+ << " S\nQ\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(crRightBottom, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_HalfCircle(
+ CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f),
+ PWL_PI * 5 / 4.0f)
+ << " S\nQ\n";
+ }
+ } break;
+ case PBS_INSET: {
+ FX_FLOAT fHalfWidth = fWidth / 2.0f;
+
+ sColor = CPWL_Utils::GetColorAppStream(color, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_Circle(rect) << " S\nQ\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(crLeftTop, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_HalfCircle(
+ CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f),
+ PWL_PI / 4.0f)
+ << " S\nQ\n";
+ }
+
+ sColor = CPWL_Utils::GetColorAppStream(crRightBottom, FALSE);
+ if (sColor.GetLength() > 0) {
+ sAppStream << "q\n" << fHalfWidth << " w\n" << sColor
+ << CPWL_Utils::GetAP_HalfCircle(
+ CPWL_Utils::DeflateRect(rect, fHalfWidth * 0.75f),
+ PWL_PI * 5 / 4.0f)
+ << " S\nQ\n";
+ }
+ } break;
+ }
+
+ sAppStream << "Q\n";
+ }
+
+ return sAppStream.GetByteString();
+}
+
+CPWL_Color CPWL_Utils::SubstractColor(const CPWL_Color& sColor,
+ FX_FLOAT fColorSub) {
+ CPWL_Color sRet;
+ sRet.nColorType = sColor.nColorType;
+
+ switch (sColor.nColorType) {
+ case COLORTYPE_TRANSPARENT:
+ sRet.nColorType = COLORTYPE_RGB;
+ sRet.fColor1 = PWL_MAX(1 - fColorSub, 0.0f);
+ sRet.fColor2 = PWL_MAX(1 - fColorSub, 0.0f);
+ sRet.fColor3 = PWL_MAX(1 - fColorSub, 0.0f);
+ break;
+ case COLORTYPE_RGB:
+ case COLORTYPE_GRAY:
+ case COLORTYPE_CMYK:
+ sRet.fColor1 = PWL_MAX(sColor.fColor1 - fColorSub, 0.0f);
+ sRet.fColor2 = PWL_MAX(sColor.fColor2 - fColorSub, 0.0f);
+ sRet.fColor3 = PWL_MAX(sColor.fColor3 - fColorSub, 0.0f);
+ sRet.fColor4 = PWL_MAX(sColor.fColor4 - fColorSub, 0.0f);
+ break;
+ }
+
+ return sRet;
+}
+
+CPWL_Color CPWL_Utils::DevideColor(const CPWL_Color& sColor,
+ FX_FLOAT fColorDevide) {
+ CPWL_Color sRet;
+ sRet.nColorType = sColor.nColorType;
+
+ switch (sColor.nColorType) {
+ case COLORTYPE_TRANSPARENT:
+ sRet.nColorType = COLORTYPE_RGB;
+ sRet.fColor1 = 1 / fColorDevide;
+ sRet.fColor2 = 1 / fColorDevide;
+ sRet.fColor3 = 1 / fColorDevide;
+ break;
+ case COLORTYPE_RGB:
+ case COLORTYPE_GRAY:
+ case COLORTYPE_CMYK:
+ sRet = sColor;
+ sRet.fColor1 /= fColorDevide;
+ sRet.fColor2 /= fColorDevide;
+ sRet.fColor3 /= fColorDevide;
+ sRet.fColor4 /= fColorDevide;
+ break;
+ }
+
+ return sRet;
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Check(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetAP_Check(rcBBox) << "f\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Circle(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetAP_Circle(rcBBox) << "f\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Cross(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, FALSE)
+ << CPWL_Utils::GetAP_Cross(rcBBox) << "S\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Diamond(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n1 w\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetAP_Diamond(rcBBox) << "f\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Square(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetAP_Square(rcBBox) << "f\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetAppStream_Star(const CPDF_Rect& rcBBox,
+ const CPWL_Color& crText) {
+ CFX_ByteTextBuf sAP;
+ sAP << "q\n" << CPWL_Utils::GetColorAppStream(crText, TRUE)
+ << CPWL_Utils::GetAP_Star(rcBBox) << "f\nQ\n";
+ return sAP.GetByteString();
+}
+
+CFX_ByteString CPWL_Utils::GetCheckBoxAppStream(const CPDF_Rect& rcBBox,
+ int32_t nStyle,
+ const CPWL_Color& crText) {
+ CPDF_Rect rcCenter = GetCenterSquare(rcBBox);
+ switch (nStyle) {
+ default:
+ case PCS_CHECK:
+ return GetAppStream_Check(rcCenter, crText);
+ case PCS_CIRCLE:
+ return GetAppStream_Circle(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ case PCS_CROSS:
+ return GetAppStream_Cross(rcCenter, crText);
+ case PCS_DIAMOND:
+ return GetAppStream_Diamond(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ case PCS_SQUARE:
+ return GetAppStream_Square(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ case PCS_STAR:
+ return GetAppStream_Star(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ }
+}
+
+CFX_ByteString CPWL_Utils::GetRadioButtonAppStream(const CPDF_Rect& rcBBox,
+ int32_t nStyle,
+ const CPWL_Color& crText) {
+ CPDF_Rect rcCenter = GetCenterSquare(rcBBox);
+ switch (nStyle) {
+ default:
+ case PCS_CHECK:
+ return GetAppStream_Check(rcCenter, crText);
+ case PCS_CIRCLE:
+ return GetAppStream_Circle(ScaleRect(rcCenter, 1.0f / 2.0f), crText);
+ case PCS_CROSS:
+ return GetAppStream_Cross(rcCenter, crText);
+ case PCS_DIAMOND:
+ return GetAppStream_Diamond(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ case PCS_SQUARE:
+ return GetAppStream_Square(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ case PCS_STAR:
+ return GetAppStream_Star(ScaleRect(rcCenter, 2.0f / 3.0f), crText);
+ }
+}
+
+CFX_ByteString CPWL_Utils::GetDropButtonAppStream(const CPDF_Rect& rcBBox) {
+ CFX_ByteTextBuf sAppStream;
+
+ if (!rcBBox.IsEmpty()) {
+ sAppStream << "q\n" << CPWL_Utils::GetColorAppStream(
+ CPWL_Color(COLORTYPE_RGB, 220.0f / 255.0f,
+ 220.0f / 255.0f, 220.0f / 255.0f),
+ TRUE);
+ sAppStream << rcBBox.left << " " << rcBBox.bottom << " "
+ << rcBBox.right - rcBBox.left << " "
+ << rcBBox.top - rcBBox.bottom << " re f\n";
+ sAppStream << "Q\n";
+
+ sAppStream << "q\n" << CPWL_Utils::GetBorderAppStream(
+ rcBBox, 2, CPWL_Color(COLORTYPE_GRAY, 0),
+ CPWL_Color(COLORTYPE_GRAY, 1),
+ CPWL_Color(COLORTYPE_GRAY, 0.5), PBS_BEVELED,
+ CPWL_Dash(3, 0, 0))
+ << "Q\n";
+
+ CPDF_Point ptCenter = CPDF_Point((rcBBox.left + rcBBox.right) / 2,
+ (rcBBox.top + rcBBox.bottom) / 2);
+ if (IsFloatBigger(rcBBox.right - rcBBox.left, 6) &&
+ IsFloatBigger(rcBBox.top - rcBBox.bottom, 6)) {
+ sAppStream << "q\n"
+ << " 0 g\n";
+ sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n";
+ sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n";
+ sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n";
+ sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n";
+ sAppStream << "Q\n";
+ }
+ }
+
+ return sAppStream.GetByteString();
+}
+
+void CPWL_Utils::ConvertCMYK2GRAY(FX_FLOAT dC,
+ FX_FLOAT dM,
+ FX_FLOAT dY,
+ FX_FLOAT dK,
+ FX_FLOAT& dGray) {
+ if (dC < 0 || dC > 1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 ||
+ dK > 1)
+ return;
+ dGray = 1.0f - FX_MIN(1.0f, 0.3f * dC + 0.59f * dM + 0.11f * dY + dK);
+}
+
+void CPWL_Utils::ConvertGRAY2CMYK(FX_FLOAT dGray,
+ FX_FLOAT& dC,
+ FX_FLOAT& dM,
+ FX_FLOAT& dY,
+ FX_FLOAT& dK) {
+ if (dGray < 0 || dGray > 1)
+ return;
+ dC = 0.0f;
+ dM = 0.0f;
+ dY = 0.0f;
+ dK = 1.0f - dGray;
+}
+
+void CPWL_Utils::ConvertGRAY2RGB(FX_FLOAT dGray,
+ FX_FLOAT& dR,
+ FX_FLOAT& dG,
+ FX_FLOAT& dB) {
+ if (dGray < 0 || dGray > 1)
+ return;
+ dR = dGray;
+ dG = dGray;
+ dB = dGray;
+}
+
+void CPWL_Utils::ConvertRGB2GRAY(FX_FLOAT dR,
+ FX_FLOAT dG,
+ FX_FLOAT dB,
+ FX_FLOAT& dGray) {
+ if (dR < 0 || dR > 1 || dG < 0 || dG > 0 || dB < 0 || dB > 1)
+ return;
+ dGray = 0.3f * dR + 0.59f * dG + 0.11f * dB;
+}
+
+void CPWL_Utils::ConvertCMYK2RGB(FX_FLOAT dC,
+ FX_FLOAT dM,
+ FX_FLOAT dY,
+ FX_FLOAT dK,
+ FX_FLOAT& dR,
+ FX_FLOAT& dG,
+ FX_FLOAT& dB) {
+ if (dC < 0 || dC > 1 || dM < 0 || dM > 1 || dY < 0 || dY > 1 || dK < 0 ||
+ dK > 1)
+ return;
+ dR = 1.0f - FX_MIN(1.0f, dC + dK);
+ dG = 1.0f - FX_MIN(1.0f, dM + dK);
+ dB = 1.0f - FX_MIN(1.0f, dY + dK);
+}
+
+void CPWL_Utils::ConvertRGB2CMYK(FX_FLOAT dR,
+ FX_FLOAT dG,
+ FX_FLOAT dB,
+ FX_FLOAT& dC,
+ FX_FLOAT& dM,
+ FX_FLOAT& dY,
+ FX_FLOAT& dK) {
+ if (dR < 0 || dR > 1 || dG < 0 || dG > 1 || dB < 0 || dB > 1)
+ return;
+
+ dC = 1.0f - dR;
+ dM = 1.0f - dG;
+ dY = 1.0f - dB;
+ dK = FX_MIN(dC, FX_MIN(dM, dY));
+}
+
+void CPWL_Utils::PWLColorToARGB(const CPWL_Color& color,
+ int32_t& alpha,
+ FX_FLOAT& red,
+ FX_FLOAT& green,
+ FX_FLOAT& blue) {
+ switch (color.nColorType) {
+ case COLORTYPE_TRANSPARENT: {
+ alpha = 0;
+ } break;
+ case COLORTYPE_GRAY: {
+ ConvertGRAY2RGB(color.fColor1, red, green, blue);
+ } break;
+ case COLORTYPE_RGB: {
+ red = color.fColor1;
+ green = color.fColor2;
+ blue = color.fColor3;
+ } break;
+ case COLORTYPE_CMYK: {
+ ConvertCMYK2RGB(color.fColor1, color.fColor2, color.fColor3,
+ color.fColor4, red, green, blue);
+ } break;
+ }
+}
+
+FX_COLORREF CPWL_Utils::PWLColorToFXColor(const CPWL_Color& color,
+ int32_t nTransparancy) {
+ int32_t nAlpha = nTransparancy;
+ FX_FLOAT dRed = 0;
+ FX_FLOAT dGreen = 0;
+ FX_FLOAT dBlue = 0;
+
+ PWLColorToARGB(color, nAlpha, dRed, dGreen, dBlue);
+
+ return ArgbEncode(nAlpha, (int32_t)(dRed * 255), (int32_t)(dGreen * 255),
+ (int32_t)(dBlue * 255));
+}
+
+void CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Rect& rect,
+ const FX_COLORREF& color) {
+ CFX_PathData path;
+ CPDF_Rect rcTemp(rect);
+ path.AppendRect(rcTemp.left, rcTemp.bottom, rcTemp.right, rcTemp.top);
+ pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_WINDING);
+}
+
+void CPWL_Utils::DrawFillArea(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Point* pPts,
+ int32_t nCount,
+ const FX_COLORREF& color) {
+ CFX_PathData path;
+ path.SetPointCount(nCount);
+
+ path.SetPoint(0, pPts[0].x, pPts[0].y, FXPT_MOVETO);
+ for (int32_t i = 1; i < nCount; i++)
+ path.SetPoint(i, pPts[i].x, pPts[i].y, FXPT_LINETO);
+
+ pDevice->DrawPath(&path, pUser2Device, NULL, color, 0, FXFILL_ALTERNATE);
+}
+
+void CPWL_Utils::DrawStrokeRect(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Rect& rect,
+ const FX_COLORREF& color,
+ FX_FLOAT fWidth) {
+ CFX_PathData path;
+ CPDF_Rect rcTemp(rect);
+ path.AppendRect(rcTemp.left, rcTemp.bottom, rcTemp.right, rcTemp.top);
+
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = fWidth;
+
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE);
+}
+
+void CPWL_Utils::DrawStrokeLine(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Point& ptMoveTo,
+ const CPDF_Point& ptLineTo,
+ const FX_COLORREF& color,
+ FX_FLOAT fWidth) {
+ CFX_PathData path;
+ path.SetPointCount(2);
+ path.SetPoint(0, ptMoveTo.x, ptMoveTo.y, FXPT_MOVETO);
+ path.SetPoint(1, ptLineTo.x, ptLineTo.y, FXPT_LINETO);
+
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = fWidth;
+
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE);
+}
+
+void CPWL_Utils::DrawFillRect(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Rect& rect,
+ const CPWL_Color& color,
+ int32_t nTransparancy) {
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rect,
+ PWLColorToFXColor(color, nTransparancy));
+}
+
+void CPWL_Utils::DrawShadow(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ FX_BOOL bVertical,
+ FX_BOOL bHorizontal,
+ CPDF_Rect rect,
+ int32_t nTransparancy,
+ int32_t nStartGray,
+ int32_t nEndGray) {
+ FX_FLOAT fStepGray = 1.0f;
+
+ if (bVertical) {
+ fStepGray = (nEndGray - nStartGray) / rect.Height();
+
+ for (FX_FLOAT fy = rect.bottom + 0.5f; fy <= rect.top - 0.5f; fy += 1.0f) {
+ int32_t nGray = nStartGray + (int32_t)(fStepGray * (fy - rect.bottom));
+ CPWL_Utils::DrawStrokeLine(
+ pDevice, pUser2Device, CPDF_Point(rect.left, fy),
+ CPDF_Point(rect.right, fy),
+ ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f);
+ }
+ }
+
+ if (bHorizontal) {
+ fStepGray = (nEndGray - nStartGray) / rect.Width();
+
+ for (FX_FLOAT fx = rect.left + 0.5f; fx <= rect.right - 0.5f; fx += 1.0f) {
+ int32_t nGray = nStartGray + (int32_t)(fStepGray * (fx - rect.left));
+ CPWL_Utils::DrawStrokeLine(
+ pDevice, pUser2Device, CPDF_Point(fx, rect.bottom),
+ CPDF_Point(fx, rect.top),
+ ArgbEncode(nTransparancy, nGray, nGray, nGray), 1.5f);
+ }
+ }
+}
+
+void CPWL_Utils::DrawBorder(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ const CPDF_Rect& rect,
+ FX_FLOAT fWidth,
+ const CPWL_Color& color,
+ const CPWL_Color& crLeftTop,
+ const CPWL_Color& crRightBottom,
+ int32_t nStyle,
+ const CPWL_Dash& dash,
+ int32_t nTransparancy) {
+ FX_FLOAT fLeft = rect.left;
+ FX_FLOAT fRight = rect.right;
+ FX_FLOAT fTop = rect.top;
+ FX_FLOAT fBottom = rect.bottom;
+
+ if (fWidth > 0.0f) {
+ FX_FLOAT fHalfWidth = fWidth / 2.0f;
+
+ switch (nStyle) {
+ default:
+ case PBS_SOLID: {
+ CFX_PathData path;
+ path.AppendRect(fLeft, fBottom, fRight, fTop);
+ path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth,
+ fTop - fWidth);
+ pDevice->DrawPath(&path, pUser2Device, NULL,
+ PWLColorToFXColor(color, nTransparancy), 0,
+ FXFILL_ALTERNATE);
+ } break;
+ case PBS_DASH: {
+ CFX_PathData path;
+
+ path.SetPointCount(5);
+ path.SetPoint(0, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f,
+ FXPT_MOVETO);
+ path.SetPoint(1, fLeft + fWidth / 2.0f, fTop - fWidth / 2.0f,
+ FXPT_LINETO);
+ path.SetPoint(2, fRight - fWidth / 2.0f, fTop - fWidth / 2.0f,
+ FXPT_LINETO);
+ path.SetPoint(3, fRight - fWidth / 2.0f, fBottom + fWidth / 2.0f,
+ FXPT_LINETO);
+ path.SetPoint(4, fLeft + fWidth / 2.0f, fBottom + fWidth / 2.0f,
+ FXPT_LINETO);
+
+ CFX_GraphStateData gsd;
+ gsd.SetDashCount(2);
+ gsd.m_DashArray[0] = 3.0f;
+ gsd.m_DashArray[1] = 3.0f;
+ gsd.m_DashPhase = 0;
+
+ gsd.m_LineWidth = fWidth;
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0,
+ PWLColorToFXColor(color, nTransparancy),
+ FXFILL_WINDING);
+ } break;
+ case PBS_BEVELED:
+ case PBS_INSET: {
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = fHalfWidth;
+
+ CFX_PathData pathLT;
+
+ pathLT.SetPointCount(7);
+ pathLT.SetPoint(0, fLeft + fHalfWidth, fBottom + fHalfWidth,
+ FXPT_MOVETO);
+ pathLT.SetPoint(1, fLeft + fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
+ pathLT.SetPoint(2, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
+ pathLT.SetPoint(3, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2,
+ FXPT_LINETO);
+ pathLT.SetPoint(4, fLeft + fHalfWidth * 2, fTop - fHalfWidth * 2,
+ FXPT_LINETO);
+ pathLT.SetPoint(5, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2,
+ FXPT_LINETO);
+ pathLT.SetPoint(6, fLeft + fHalfWidth, fBottom + fHalfWidth,
+ FXPT_LINETO);
+
+ pDevice->DrawPath(&pathLT, pUser2Device, &gsd,
+ PWLColorToFXColor(crLeftTop, nTransparancy), 0,
+ FXFILL_ALTERNATE);
+
+ CFX_PathData pathRB;
+
+ pathRB.SetPointCount(7);
+ pathRB.SetPoint(0, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_MOVETO);
+ pathRB.SetPoint(1, fRight - fHalfWidth, fBottom + fHalfWidth,
+ FXPT_LINETO);
+ pathRB.SetPoint(2, fLeft + fHalfWidth, fBottom + fHalfWidth,
+ FXPT_LINETO);
+ pathRB.SetPoint(3, fLeft + fHalfWidth * 2, fBottom + fHalfWidth * 2,
+ FXPT_LINETO);
+ pathRB.SetPoint(4, fRight - fHalfWidth * 2, fBottom + fHalfWidth * 2,
+ FXPT_LINETO);
+ pathRB.SetPoint(5, fRight - fHalfWidth * 2, fTop - fHalfWidth * 2,
+ FXPT_LINETO);
+ pathRB.SetPoint(6, fRight - fHalfWidth, fTop - fHalfWidth, FXPT_LINETO);
+
+ pDevice->DrawPath(&pathRB, pUser2Device, &gsd,
+ PWLColorToFXColor(crRightBottom, nTransparancy), 0,
+ FXFILL_ALTERNATE);
+
+ CFX_PathData path;
+
+ path.AppendRect(fLeft, fBottom, fRight, fTop);
+ path.AppendRect(fLeft + fHalfWidth, fBottom + fHalfWidth,
+ fRight - fHalfWidth, fTop - fHalfWidth);
+
+ pDevice->DrawPath(&path, pUser2Device, &gsd,
+ PWLColorToFXColor(color, nTransparancy), 0,
+ FXFILL_ALTERNATE);
+ } break;
+ case PBS_UNDERLINED: {
+ CFX_PathData path;
+
+ path.SetPointCount(2);
+ path.SetPoint(0, fLeft, fBottom + fWidth / 2, FXPT_MOVETO);
+ path.SetPoint(1, fRight, fBottom + fWidth / 2, FXPT_LINETO);
+
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = fWidth;
+
+ pDevice->DrawPath(&path, pUser2Device, &gsd, 0,
+ PWLColorToFXColor(color, nTransparancy),
+ FXFILL_ALTERNATE);
+ } break;
+ case PBS_SHADOW: {
+ CFX_PathData path;
+ path.AppendRect(fLeft, fBottom, fRight, fTop);
+ path.AppendRect(fLeft + fWidth, fBottom + fWidth, fRight - fWidth,
+ fTop - fWidth);
+ pDevice->DrawPath(&path, pUser2Device, NULL,
+ PWLColorToFXColor(color, nTransparancy / 2), 0,
+ FXFILL_ALTERNATE);
+ } break;
+ }
+ }
+}
+
+static void AddSquigglyPath(CFX_PathData& PathData,
+ FX_FLOAT fStartX,
+ FX_FLOAT fEndX,
+ FX_FLOAT fY,
+ FX_FLOAT fStep) {
+ PathData.AddPointCount(1);
+ PathData.SetPoint(PathData.GetPointCount() - 1, fStartX, fY, FXPT_MOVETO);
+
+ FX_FLOAT fx;
+ int32_t i;
+
+ for (i = 1, fx = fStartX + fStep; fx < fEndX; fx += fStep, i++) {
+ PathData.AddPointCount(1);
+ PathData.SetPoint(PathData.GetPointCount() - 1, fx, fY + (i & 1) * fStep,
+ FXPT_LINETO);
+ }
+}
+
+static void AddSpellCheckObj(CFX_PathData& PathData,
+ IFX_Edit* pEdit,
+ const CPVT_WordRange& wrWord) {
+ FX_FLOAT fStartX = 0.0f;
+ FX_FLOAT fEndX = 0.0f;
+ FX_FLOAT fY = 0.0f;
+ FX_FLOAT fStep = 0.0f;
+
+ FX_BOOL bBreak = FALSE;
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ pIterator->SetAt(wrWord.BeginPos);
+
+ do {
+ CPVT_WordPlace place = pIterator->GetAt();
+
+ CPVT_Line line;
+ if (pIterator->GetLine(line)) {
+ fY = line.ptLine.y;
+ fStep = (line.fLineAscent - line.fLineDescent) / 16.0f;
+ }
+
+ if (place.LineCmp(wrWord.BeginPos) == 0) {
+ pIterator->SetAt(wrWord.BeginPos);
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ fStartX = word.ptWord.x;
+ }
+ } else {
+ fStartX = line.ptLine.x;
+ }
+
+ if (place.LineCmp(wrWord.EndPos) == 0) {
+ pIterator->SetAt(wrWord.EndPos);
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ fEndX = word.ptWord.x + word.fWidth;
+ }
+
+ bBreak = TRUE;
+ } else {
+ fEndX = line.ptLine.x + line.fLineWidth;
+ }
+
+ AddSquigglyPath(PathData, fStartX, fEndX, fY, fStep);
+
+ if (bBreak)
+ break;
+ } while (pIterator->NextLine());
+ }
+}
+
+void CPWL_Utils::DrawEditSpellCheck(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ IFX_Edit* pEdit,
+ const CPDF_Rect& rcClip,
+ const CPDF_Point& ptOffset,
+ const CPVT_WordRange* pRange,
+ IPWL_SpellCheck* pSpellCheck) {
+ const FX_COLORREF crSpell = ArgbEncode(255, 255, 0, 0);
+
+ // for spellcheck
+ FX_BOOL bLatinWord = FALSE;
+ CPVT_WordPlace wpWordStart;
+ CFX_ByteString sLatinWord;
+
+ CFX_PathData pathSpell;
+
+ pDevice->SaveState();
+
+ if (!rcClip.IsEmpty()) {
+ CPDF_Rect rcTemp = rcClip;
+ pUser2Device->TransformRect(rcTemp);
+ FX_RECT rcDevClip;
+ rcDevClip.left = (int32_t)rcTemp.left;
+ rcDevClip.right = (int32_t)rcTemp.right;
+ rcDevClip.top = (int32_t)rcTemp.top;
+ rcDevClip.bottom = (int32_t)rcTemp.bottom;
+ pDevice->SetClip_Rect(&rcDevClip);
+ }
+
+ if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
+ if (pEdit->GetFontMap()) {
+ if (pRange)
+ pIterator->SetAt(pRange->BeginPos);
+ else
+ pIterator->SetAt(0);
+
+ CPVT_WordPlace oldplace;
+
+ while (pIterator->NextWord()) {
+ CPVT_WordPlace place = pIterator->GetAt();
+ if (pRange && place.WordCmp(pRange->EndPos) > 0)
+ break;
+
+ CPVT_Word word;
+ if (pIterator->GetWord(word)) {
+ if (FX_EDIT_ISLATINWORD(word.Word)) {
+ if (!bLatinWord) {
+ wpWordStart = place;
+ bLatinWord = TRUE;
+ }
+
+ sLatinWord += (char)word.Word;
+ } else {
+ if (bLatinWord) {
+ if (!sLatinWord.IsEmpty()) {
+ if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) {
+ AddSpellCheckObj(pathSpell, pEdit,
+ CPVT_WordRange(wpWordStart, oldplace));
+ pIterator->SetAt(place);
+ }
+ }
+ bLatinWord = FALSE;
+ }
+
+ sLatinWord.Empty();
+ }
+
+ oldplace = place;
+ } else {
+ if (bLatinWord) {
+ if (!sLatinWord.IsEmpty()) {
+ if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) {
+ AddSpellCheckObj(pathSpell, pEdit,
+ CPVT_WordRange(wpWordStart, oldplace));
+ pIterator->SetAt(place);
+ }
+ }
+ bLatinWord = FALSE;
+ }
+
+ sLatinWord.Empty();
+ }
+ }
+
+ if (!sLatinWord.IsEmpty()) {
+ if (pSpellCheck && !pSpellCheck->CheckWord(sLatinWord)) {
+ AddSpellCheckObj(pathSpell, pEdit,
+ CPVT_WordRange(wpWordStart, oldplace));
+ }
+ }
+ }
+ }
+
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 0;
+ if (pathSpell.GetPointCount() > 0)
+ pDevice->DrawPath(&pathSpell, pUser2Device, &gsd, 0, crSpell,
+ FXFILL_ALTERNATE);
+
+ pDevice->RestoreState();
+}
+
+FX_BOOL CPWL_Utils::IsBlackOrWhite(const CPWL_Color& color) {
+ switch (color.nColorType) {
+ case COLORTYPE_TRANSPARENT:
+ return FALSE;
+ case COLORTYPE_GRAY:
+ return color.fColor1 < 0.5f;
+ case COLORTYPE_RGB:
+ return color.fColor1 + color.fColor2 + color.fColor3 < 1.5f;
+ case COLORTYPE_CMYK:
+ return color.fColor1 + color.fColor2 + color.fColor3 + color.fColor4 >
+ 2.0f;
+ }
+
+ return TRUE;
+}
+
+CPWL_Color CPWL_Utils::GetReverseColor(const CPWL_Color& color) {
+ CPWL_Color crRet = color;
+
+ switch (color.nColorType) {
+ case COLORTYPE_GRAY:
+ crRet.fColor1 = 1.0f - crRet.fColor1;
+ break;
+ case COLORTYPE_RGB:
+ crRet.fColor1 = 1.0f - crRet.fColor1;
+ crRet.fColor2 = 1.0f - crRet.fColor2;
+ crRet.fColor3 = 1.0f - crRet.fColor3;
+ break;
+ case COLORTYPE_CMYK:
+ crRet.fColor1 = 1.0f - crRet.fColor1;
+ crRet.fColor2 = 1.0f - crRet.fColor2;
+ crRet.fColor3 = 1.0f - crRet.fColor3;
+ crRet.fColor4 = 1.0f - crRet.fColor4;
+ break;
+ }
+
+ return crRet;
+}
+
+CFX_ByteString CPWL_Utils::GetIconAppStream(int32_t nType,
+ const CPDF_Rect& rect,
+ const CPWL_Color& crFill,
+ const CPWL_Color& crStroke) {
+ CFX_ByteString sAppStream = CPWL_Utils::GetColorAppStream(crStroke, FALSE);
+ sAppStream += CPWL_Utils::GetColorAppStream(crFill, TRUE);
+
+ CFX_ByteString sPath;
+ CFX_PathData path;
+
+ switch (nType) {
+ case PWL_ICONTYPE_CHECKMARK:
+ GetGraphics_Checkmark(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_CIRCLE:
+ GetGraphics_Circle(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_COMMENT:
+ GetGraphics_Comment(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_CROSS:
+ GetGraphics_Cross(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_HELP:
+ GetGraphics_Help(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_INSERTTEXT:
+ GetGraphics_InsertText(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_KEY:
+ GetGraphics_Key(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_NEWPARAGRAPH:
+ GetGraphics_NewParagraph(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_TEXTNOTE:
+ GetGraphics_TextNote(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_PARAGRAPH:
+ GetGraphics_Paragraph(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_RIGHTARROW:
+ GetGraphics_RightArrow(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_RIGHTPOINTER:
+ GetGraphics_RightPointer(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_STAR:
+ GetGraphics_Star(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_UPARROW:
+ GetGraphics_UpArrow(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_UPLEFTARROW:
+ GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_GRAPH:
+ GetGraphics_Graph(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_PAPERCLIP:
+ GetGraphics_Paperclip(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_ATTACHMENT:
+ GetGraphics_Attachment(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_TAG:
+ GetGraphics_Tag(sPath, path, rect, PWLPT_STREAM);
+ break;
+ case PWL_ICONTYPE_FOXIT:
+ GetGraphics_Foxit(sPath, path, rect, PWLPT_STREAM);
+ break;
+ }
+
+ sAppStream += sPath;
+ if (crStroke.nColorType != COLORTYPE_TRANSPARENT)
+ sAppStream += "B*\n";
+ else
+ sAppStream += "f*\n";
+
+ return sAppStream;
+}
+
+void CPWL_Utils::DrawIconAppStream(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device,
+ int32_t nType,
+ const CPDF_Rect& rect,
+ const CPWL_Color& crFill,
+ const CPWL_Color& crStroke,
+ const int32_t nTransparancy) {
+ CFX_GraphStateData gsd;
+ gsd.m_LineWidth = 1.0f;
+
+ CFX_ByteString sPath;
+ CFX_PathData path;
+
+ switch (nType) {
+ case PWL_ICONTYPE_CHECKMARK:
+ GetGraphics_Checkmark(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_CIRCLE:
+ GetGraphics_Circle(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_COMMENT:
+ GetGraphics_Comment(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_CROSS:
+ GetGraphics_Cross(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_HELP:
+ GetGraphics_Help(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_INSERTTEXT:
+ GetGraphics_InsertText(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_KEY:
+ GetGraphics_Key(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_NEWPARAGRAPH:
+ GetGraphics_NewParagraph(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_TEXTNOTE:
+ GetGraphics_TextNote(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_PARAGRAPH:
+ GetGraphics_Paragraph(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_RIGHTARROW:
+ GetGraphics_RightArrow(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_RIGHTPOINTER:
+ GetGraphics_RightPointer(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_STAR:
+ GetGraphics_Star(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_UPARROW:
+ GetGraphics_UpArrow(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_UPLEFTARROW:
+ GetGraphics_UpLeftArrow(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_GRAPH:
+ GetGraphics_Graph(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_PAPERCLIP:
+ GetGraphics_Paperclip(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_ATTACHMENT:
+ GetGraphics_Attachment(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_TAG:
+ GetGraphics_Tag(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ case PWL_ICONTYPE_FOXIT:
+ GetGraphics_Foxit(sPath, path, rect, PWLPT_PATHDATA);
+ break;
+ default:
+ return;
+ }
+
+ pDevice->DrawPath(
+ &path, pUser2Device, &gsd, PWLColorToFXColor(crFill, nTransparancy),
+ PWLColorToFXColor(crStroke, nTransparancy), FXFILL_ALTERNATE);
+}
+
+void CPWL_Utils::GetGraphics_Checkmark(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight * 2 / 5.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(
+ crBBox.left + fWidth / 15.0f +
+ PWL_BEZIER * (fWidth / 7.0f - fWidth / 15.0f),
+ crBBox.bottom + fHeight * 2 / 5.0f +
+ PWL_BEZIER * (fHeight * 2 / 7.0f - fHeight * 2 / 5.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 4.5f +
+ PWL_BEZIER * (fWidth / 5.0f - fWidth / 4.5f),
+ crBBox.bottom + fHeight / 16.0f +
+ PWL_BEZIER * (fHeight / 5.0f - fHeight / 16.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f,
+ crBBox.bottom + fHeight / 16.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 4.5f +
+ PWL_BEZIER * (fWidth / 4.4f - fWidth / 4.5f),
+ crBBox.bottom + fHeight / 16.0f -
+ PWL_BEZIER * fHeight / 16.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f +
+ PWL_BEZIER * (fWidth / 4.0f - fWidth / 3.0f),
+ crBBox.bottom),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f, crBBox.bottom),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.0f +
+ PWL_BEZIER * fWidth * (1 / 7.0f + 2 / 15.0f),
+ crBBox.bottom + PWL_BEZIER * fHeight * 4 / 5.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f +
+ PWL_BEZIER * fWidth * (1 / 7.0f - 7 / 15.0f),
+ crBBox.bottom + fHeight * 15 / 16.0f +
+ PWL_BEZIER * (fHeight * 4 / 5.0f -
+ fHeight * 15 / 16.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 14 / 15.0f,
+ crBBox.bottom + fHeight * 15 / 16.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(
+ crBBox.left + fWidth * 14 / 15.0f +
+ PWL_BEZIER * (fWidth * 7 / 15.0f - fWidth * 14 / 15.0f),
+ crBBox.bottom + fHeight * 15 / 16.0f +
+ PWL_BEZIER * (fHeight * 8 / 7.0f - fHeight * 15 / 16.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 3.6f +
+ PWL_BEZIER * (fWidth / 3.4f - fWidth / 3.6f),
+ crBBox.bottom + fHeight / 3.5f +
+ PWL_BEZIER * (fHeight / 3.5f - fHeight / 3.5f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 3.6f,
+ crBBox.bottom + fHeight / 3.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 3.6f,
+ crBBox.bottom + fHeight / 3.5f +
+ PWL_BEZIER * (fHeight / 4.0f - fHeight / 3.5f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(
+ crBBox.left + fWidth / 15.0f +
+ PWL_BEZIER * (fWidth / 3.5f - fWidth / 15.0f),
+ crBBox.bottom + fHeight * 2 / 5.0f +
+ PWL_BEZIER * (fHeight * 3.5f / 5.0f - fHeight * 2 / 5.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight * 2 / 5.0f),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 16);
+ else
+ GetPathDataFromArray(path, PathArray, 16);
+}
+
+void CPWL_Utils::GetGraphics_Circle(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight * 14 / 15.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * (fWidth / 2.0f - fWidth / 15.0f),
+ crBBox.top - fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * (fWidth * 14 / 15.0f - fWidth / 2.0f),
+ crBBox.top - fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight * 14 / 15.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f -
+ PWL_BEZIER * (fHeight / 2.0f - fHeight / 15.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * (fWidth * 14 / 15.0f - fWidth / 2.0f),
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * (fWidth / 2.0f - fWidth / 15.0f),
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f -
+ PWL_BEZIER * (fHeight / 2.0f - fHeight / 15.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight * 4 / 5.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * (fWidth / 2.0f - fWidth * 3 / 15.0f),
+ crBBox.top - fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.top - fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * (fWidth * 4 / 5.0f - fWidth / 2.0f),
+ crBBox.top - fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight * 4 / 5.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f -
+ PWL_BEZIER * (fHeight * 4 / 5.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * (fWidth * 4 / 5.0f - fWidth / 2.0f),
+ crBBox.bottom + fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.bottom + fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * (fWidth * 4 / 5.0f - fWidth / 2.0f),
+ crBBox.bottom + fHeight * 3 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f -
+ PWL_BEZIER * (fHeight * 4 / 5.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 3 / 15.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 26);
+ else
+ GetPathDataFromArray(path, PathArray, 26);
+}
+
+void CPWL_Utils::GetGraphics_Comment(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 15.0f, crBBox.top - fHeight / 6.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.top - fHeight / 6.0f +
+ PWL_BEZIER * (fHeight / 6.0f - fHeight / 10.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f -
+ PWL_BEZIER * fWidth / 15.0f,
+ crBBox.top - fHeight / 10.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f,
+ crBBox.top - fHeight / 10.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f,
+ crBBox.top - fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f +
+ PWL_BEZIER * fWidth / 15.0f,
+ crBBox.top - fHeight / 10.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.top - fHeight / 6 +
+ PWL_BEZIER * (fHeight / 6.0f - fHeight / 10.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.top - fHeight / 6.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.bottom + fHeight / 3.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f +
+ PWL_BEZIER * fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f +
+ PWL_BEZIER * fWidth / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 5 / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 5 / 15.0f,
+ crBBox.bottom + fHeight * 2 / 15 +
+ PWL_BEZIER * fHeight * 2 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 5 / 15.0f -
+ PWL_BEZIER * fWidth * 2 / 15.0f,
+ crBBox.bottom + fHeight * 2 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 6 / 30.0f,
+ crBBox.bottom + fHeight * 2 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 7 / 30.0f +
+ PWL_BEZIER * fWidth / 30.0f,
+ crBBox.bottom + fHeight * 2 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 7 / 30.0f,
+ crBBox.bottom + fHeight * 2 / 15.0f +
+ PWL_BEZIER * fHeight * 2 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 7 / 30.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f -
+ PWL_BEZIER * fWidth / 15.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 3.0f -
+ PWL_BEZIER * fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 15.0f,
+ crBBox.bottom + fHeight / 3.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 15.0f, crBBox.top - fHeight / 6.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f,
+ crBBox.top - fHeight * 8 / 30.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f,
+ crBBox.top - fHeight * 8 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15,
+ crBBox.top - fHeight * 25 / 60.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 2 / 15.0f,
+ crBBox.top - fHeight * 25 / 60.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 2 / 15.0f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 4 / 15.0f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 30);
+ else
+ GetPathDataFromArray(path, PathArray, 30);
+}
+
+void CPWL_Utils::GetGraphics_Cross(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ // FX_FLOAT fcatercorner = (FX_FLOAT)sqrt(fWidth*fWidth + fHeight*fHeight);
+ CPWL_Point center_point(crBBox.left + fWidth / 2,
+ crBBox.bottom + fHeight / 2);
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(center_point.x, center_point.y + fHeight / 10.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(center_point.x + fWidth * 0.3f,
+ center_point.y + fHeight / 10.0f + fWidth * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x + fWidth / 10.0f + fWidth * 0.3f,
+ center_point.y + fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x + fWidth / 10.0f, center_point.y),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x + fWidth / 10.0f + fWidth * 0.3f,
+ center_point.y - fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(center_point.x + fWidth * 0.3f,
+ center_point.y - fHeight / 10.0f - fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(center_point.x, center_point.y - fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x - fWidth * 0.3f,
+ center_point.y - fHeight / 10 - fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x - fWidth / 10.0f - fWidth * 0.3f,
+ center_point.y - fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x - fWidth / 10, center_point.y),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(center_point.x - fWidth / 10 - fWidth * 0.3f,
+ center_point.y + fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(center_point.x - fWidth * 0.3f,
+ center_point.y + fHeight / 10.0f + fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(center_point.x, center_point.y + fHeight / 10.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 13);
+ else
+ GetPathDataFromArray(path, PathArray, 13);
+}
+
+void CPWL_Utils::GetGraphics_Help(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight / 60.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * (fWidth / 2.0f - fWidth / 60.0f),
+ crBBox.bottom + fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.bottom + fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * fWidth * 29 / 60.0f,
+ crBBox.bottom + fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * (fHeight / 60.0f - fHeight / 2.0f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * fHeight * 29 / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f +
+ PWL_BEZIER * fWidth * 29 / 60.0f,
+ crBBox.top - fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f -
+ PWL_BEZIER * fWidth * 29 / 60.0f,
+ crBBox.top - fHeight / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f +
+ PWL_BEZIER * fHeight * 29 / 60.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60.0f,
+ crBBox.bottom + fHeight / 2.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f +
+ PWL_BEZIER * fHeight * 0.23f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f - PWL_BEZIER * fWidth * 0.23f,
+ crBBox.bottom + fHeight * 0.87f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.5f,
+ crBBox.bottom + fHeight * 0.87f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f + PWL_BEZIER * fWidth * 0.23f,
+ crBBox.bottom + fHeight * 0.87f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f +
+ PWL_BEZIER * fHeight * 0.23f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.27f - fWidth * 0.08f * 0.2f,
+ crBBox.top - fHeight * 0.36f - fHeight * 0.15f * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.35f + fWidth * 0.08f * 0.2f,
+ crBBox.top - fHeight * 0.51f + fHeight * 0.15f * 0.2f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.35f,
+ crBBox.top - fHeight * 0.51f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.35f - fWidth * 0.1f * 0.5f,
+ crBBox.top - fHeight * 0.51f - fHeight * 0.15f * 0.3f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.45f - fWidth * 0.1f * 0.5f,
+ crBBox.top - fHeight * 0.68f + fHeight * 0.15f * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.45f,
+ crBBox.top - fHeight * 0.68f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.45f,
+ crBBox.bottom + fHeight * 0.30f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.45f,
+ crBBox.bottom + fHeight * 0.30f - fWidth * 0.1f * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.55f,
+ crBBox.bottom + fHeight * 0.30f - fWidth * 0.1f * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.55f,
+ crBBox.bottom + fHeight * 0.30f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.55f,
+ crBBox.top - fHeight * 0.66f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.55f - fWidth * 0.1f * 0.05f,
+ crBBox.top - fHeight * 0.66f + fHeight * 0.18f * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.45f - fWidth * 0.1f * 0.05f,
+ crBBox.top - fHeight * 0.48f - fHeight * 0.18f * 0.3f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.45f,
+ crBBox.top - fHeight * 0.48f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.45f + fWidth * 0.08f * 0.2f,
+ crBBox.top - fHeight * 0.48f + fHeight * 0.18f * 0.2f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.37f - fWidth * 0.08f * 0.2f,
+ crBBox.top - fHeight * 0.36f - fHeight * 0.18f * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.37f,
+ crBBox.top - fHeight * 0.36f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.37f,
+ crBBox.top - fHeight * 0.36f +
+ PWL_BEZIER * fHeight * 0.13f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f + PWL_BEZIER * fWidth * 0.13f,
+ crBBox.bottom + fHeight * 0.77f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.5f,
+ crBBox.bottom + fHeight * 0.77f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f - PWL_BEZIER * fWidth * 0.13f,
+ crBBox.bottom + fHeight * 0.77f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.37f,
+ crBBox.top - fHeight * 0.36f +
+ PWL_BEZIER * fHeight * 0.13f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.37f,
+ crBBox.top - fHeight * 0.36f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.37f,
+ crBBox.top - fHeight * 0.36f - fWidth * 0.1f * 0.6f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f - fWidth * 0.1f * 0.6f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.27f,
+ crBBox.top - fHeight * 0.36f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.56f,
+ crBBox.bottom + fHeight * 0.13f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.56f,
+ crBBox.bottom + fHeight * 0.13f +
+ PWL_BEZIER * fHeight * 0.055f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f -
+ PWL_BEZIER * fWidth * 0.095f,
+ crBBox.bottom + fHeight * 0.185f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f,
+ crBBox.bottom + fHeight * 0.185f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f +
+ PWL_BEZIER * fWidth * 0.065f,
+ crBBox.bottom + fHeight * 0.185f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.44f,
+ crBBox.bottom + fHeight * 0.13f +
+ PWL_BEZIER * fHeight * 0.055f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.44f,
+ crBBox.bottom + fHeight * 0.13f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.44f,
+ crBBox.bottom + fHeight * 0.13f -
+ PWL_BEZIER * fHeight * 0.055f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f +
+ PWL_BEZIER * fWidth * 0.065f,
+ crBBox.bottom + fHeight * 0.075f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f,
+ crBBox.bottom + fHeight * 0.075f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.505f -
+ PWL_BEZIER * fWidth * 0.065f,
+ crBBox.bottom + fHeight * 0.075f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.56f,
+ crBBox.bottom + fHeight * 0.13f -
+ PWL_BEZIER * fHeight * 0.055f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.56f,
+ crBBox.bottom + fHeight * 0.13f),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 59);
+ else
+ GetPathDataFromArray(path, PathArray, 59);
+}
+
+void CPWL_Utils::GetGraphics_InsertText(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 10, crBBox.bottom + fHeight / 10),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2, crBBox.top - fHeight * 2 / 15),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 10, crBBox.bottom + fHeight / 10),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 10, crBBox.bottom + fHeight / 10),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 4);
+ else
+ GetPathDataFromArray(path, PathArray, 4);
+}
+
+void CPWL_Utils::GetGraphics_Key(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ FX_FLOAT k = -fHeight / fWidth;
+ CPWL_Point tail;
+ CPWL_Point CicleCenter;
+ tail.x = crBBox.left + fWidth * 0.9f;
+ tail.y = k * (tail.x - crBBox.right) + crBBox.bottom;
+ CicleCenter.x = crBBox.left + fWidth * 0.15f;
+ CicleCenter.y = k * (CicleCenter.x - crBBox.right) + crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30.0f, -fWidth / 30.0f / k + tail.y),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(tail.x + fWidth / 30.0f - fWidth * 0.18f,
+ -k * fWidth * 0.18f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.18f + fWidth * 0.07f,
+ -fWidth * 0.07f / k - k * fWidth * 0.18f -
+ fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20 +
+ fWidth * 0.07f,
+ -fWidth * 0.07f / k - k * fWidth / 20 -
+ k * fWidth * 0.18f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(
+ tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20,
+ -k * fWidth / 20 - k * fWidth * 0.18f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(
+ tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20 - fWidth / 15,
+ -k * fWidth / 15 - k * fWidth / 20 - k * fWidth * 0.18f -
+ fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20 -
+ fWidth / 15 + fWidth * 0.07f,
+ -fWidth * 0.07f / k - k * fWidth / 15 - k * fWidth / 20 -
+ k * fWidth * 0.18f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20 -
+ fWidth / 15 - fWidth / 20 + fWidth * 0.07f,
+ -fWidth * 0.07f / k + -k * fWidth / 20 + -k * fWidth / 15 -
+ k * fWidth / 20 - k * fWidth * 0.18f -
+ fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.18f - fWidth / 20 -
+ fWidth / 15 - fWidth / 20,
+ -k * fWidth / 20 + -k * fWidth / 15 - k * fWidth / 20 -
+ k * fWidth * 0.18f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.45f,
+ -k * fWidth * 0.45f - fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 30 - fWidth * 0.45f + fWidth * 0.2f,
+ -fWidth * 0.4f / k - k * fWidth * 0.45f - fWidth / 30 / k +
+ tail.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth * 0.2f,
+ -fWidth * 0.1f / k + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth / 60.0f,
+ -k * fWidth / 60 + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x - fWidth / 60,
+ -k * fWidth / 60 + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x, CicleCenter.y), PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(CicleCenter.x - fWidth * 0.22f,
+ fWidth * 0.35f / k + CicleCenter.y - fHeight * 0.05f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(tail.x - fWidth / 30 - fWidth * 0.45f - fWidth * 0.18f,
+ fWidth * 0.05f / k - k * fWidth * 0.45f + fWidth / 30 / k +
+ tail.y - fHeight * 0.05f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(tail.x - fWidth / 30.0f - fWidth * 0.45f,
+ -k * fWidth * 0.45f + fWidth / 30.0f / k + tail.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(tail.x - fWidth / 30.0f, fWidth / 30.0f / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(tail.x + fWidth / 30, -fWidth / 30 / k + tail.y),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth * 0.08f,
+ k * fWidth * 0.08f + CicleCenter.y),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(CicleCenter.x + fWidth * 0.08f + fWidth * 0.1f,
+ -fWidth * 0.1f / k + k * fWidth * 0.08f + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(CicleCenter.x + fWidth * 0.22f + fWidth * 0.1f,
+ k * fWidth * 0.22f + CicleCenter.y - fWidth * 0.1f / k),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth * 0.22f,
+ k * fWidth * 0.22f + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(CicleCenter.x + fWidth * 0.22f - fWidth * 0.1f,
+ fWidth * 0.1f / k + k * fWidth * 0.22f + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(CicleCenter.x + fWidth * 0.08f - fWidth * 0.1f,
+ fWidth * 0.1f / k + k * fWidth * 0.08f + CicleCenter.y),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(CicleCenter.x + fWidth * 0.08f,
+ k * fWidth * 0.08f + CicleCenter.y),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 28);
+ else
+ GetPathDataFromArray(path, PathArray, 28);
+}
+
+void CPWL_Utils::GetGraphics_NewParagraph(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 20.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 10.0f, crBBox.top - fHeight / 2.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 20.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.12f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.12f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.22f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.22f,
+ crBBox.top - fHeight * 17 / 30.0f - fWidth * 0.14f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.38f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.48f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.48f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.38f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.38f,
+ crBBox.bottom + fWidth * 0.24f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.22f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.12f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight / 10.0f + fHeight / 7.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.97f,
+ crBBox.bottom + fHeight / 10.0f + fHeight / 7.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.97f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.top - fHeight * 17 / 30.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.bottom + fHeight / 10.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight / 7 + fHeight * 0.18f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.85f,
+ crBBox.bottom + fHeight / 7 + fHeight * 0.18f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.85f,
+ crBBox.top - fHeight * 17 / 30.0f - fHeight * 0.08f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.top - fHeight * 17 / 30.0f - fHeight * 0.08f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight / 7 + fHeight * 0.18f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 28);
+ else
+ GetPathDataFromArray(path, PathArray, 28);
+}
+
+void CPWL_Utils::GetGraphics_TextNote(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 10.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 7 / 10.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.top - fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 10.0f,
+ crBBox.top - fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 10.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 10.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 10.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 10.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.bottom + fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 5.0f,
+ crBBox.top - fHeight * 4 / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 5.0f,
+ crBBox.top - fHeight * 4 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 5.0f,
+ crBBox.top - fHeight * 7 / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 5.0f,
+ crBBox.top - fHeight * 7 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 5.0f,
+ crBBox.top - fHeight * 10 / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 3 / 10.0f,
+ crBBox.top - fHeight * 10 / 15.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 17);
+ else
+ GetPathDataFromArray(path, PathArray, 17);
+}
+
+void CPWL_Utils::GetGraphics_Paragraph(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.7f, crBBox.top - fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.634f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.634f,
+ crBBox.top - fHeight * 2 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.566f,
+ crBBox.top - fHeight * 2 / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.566f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.top - fHeight / 15.0f - fHeight * 0.4f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.2f,
+ crBBox.top - fHeight / 15.0f - fHeight * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.2f, crBBox.top - fHeight / 15.0f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 15.0f),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 12);
+ else
+ GetPathDataFromArray(path, PathArray, 12);
+}
+
+void CPWL_Utils::GetGraphics_RightArrow(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f + fWidth / 8.0f,
+ crBBox.bottom + fHeight / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f,
+ crBBox.bottom + fHeight / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f - fWidth * 0.15f,
+ crBBox.top - fHeight / 2.0f - fWidth / 25.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.1f,
+ crBBox.top - fHeight / 2.0f - fWidth / 25.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.1f,
+ crBBox.top - fHeight / 2.0f + fWidth / 25.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f - fWidth * 0.15f,
+ crBBox.top - fHeight / 2.0f + fWidth / 25.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 2.0f + fWidth / 8.0f,
+ crBBox.top - fHeight / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 10);
+ else
+ GetPathDataFromArray(path, PathArray, 10);
+}
+
+void CPWL_Utils::GetGraphics_RightPointer(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 30.0f,
+ crBBox.bottom + fHeight / 6.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 4 / 15.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 30.0f, crBBox.top - fHeight / 6.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30.0f,
+ crBBox.top - fHeight / 2.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 5);
+ else
+ GetPathDataFromArray(path, PathArray, 5);
+}
+
+void CPWL_Utils::GetGraphics_Star(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fLongRadius =
+ (crBBox.top - crBBox.bottom) / (1 + (FX_FLOAT)cos(PWL_PI / 5.0f));
+ fLongRadius = fLongRadius * 0.7f;
+ FX_FLOAT fShortRadius = fLongRadius * 0.55f;
+ CPDF_Point ptCenter = CPDF_Point((crBBox.left + crBBox.right) / 2.0f,
+ (crBBox.top + crBBox.bottom) / 2.0f);
+
+ FX_FLOAT px1[5], py1[5];
+ FX_FLOAT px2[5], py2[5];
+
+ FX_FLOAT fAngel = PWL_PI / 10.0f;
+
+ for (int32_t i = 0; i < 5; i++) {
+ px1[i] = ptCenter.x + fLongRadius * (FX_FLOAT)cos(fAngel);
+ py1[i] = ptCenter.y + fLongRadius * (FX_FLOAT)sin(fAngel);
+
+ fAngel += PWL_PI * 2 / 5.0f;
+ }
+
+ fAngel = PWL_PI / 5.0f + PWL_PI / 10.0f;
+
+ for (int32_t j = 0; j < 5; j++) {
+ px2[j] = ptCenter.x + fShortRadius * (FX_FLOAT)cos(fAngel);
+ py2[j] = ptCenter.y + fShortRadius * (FX_FLOAT)sin(fAngel);
+
+ fAngel += PWL_PI * 2 / 5.0f;
+ }
+
+ CPWL_PathData PathArray[11];
+ PathArray[0] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_MOVETO);
+ PathArray[1] = CPWL_PathData(CPWL_Point(px2[0], py2[0]), PWLPT_LINETO);
+
+ for (int32_t k = 0; k < 4; k++) {
+ PathArray[(k + 1) * 2] =
+ CPWL_PathData(CPWL_Point(px1[k + 1], py1[k + 1]), PWLPT_LINETO);
+ PathArray[(k + 1) * 2 + 1] =
+ CPWL_PathData(CPWL_Point(px2[k + 1], py2[k + 1]), PWLPT_LINETO);
+ }
+
+ PathArray[10] = CPWL_PathData(CPWL_Point(px1[0], py1[0]), PWLPT_LINETO);
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 11);
+ else
+ GetPathDataFromArray(path, PathArray, 11);
+}
+
+void CPWL_Utils::GetGraphics_UpArrow(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 15.0f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 10.0f,
+ crBBox.top - fWidth * 3 / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.top - fWidth * 3 / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.4f,
+ crBBox.bottom + fHeight / 15.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.4f,
+ crBBox.top - fWidth * 3 / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 10, crBBox.top - fWidth * 3 / 5.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 2.0f, crBBox.top - fHeight / 15.0f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 8);
+ else
+ GetPathDataFromArray(path, PathArray, 8);
+}
+
+void CPWL_Utils::GetGraphics_UpLeftArrow(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+ CPWL_Point leftup(crBBox.left, crBBox.top);
+ CPWL_Point rightdown(crBBox.right, crBBox.bottom);
+ FX_FLOAT k = -fHeight / fWidth;
+ CPWL_Point tail;
+ tail.x = crBBox.left + fWidth * 4 / 5.0f;
+ tail.y = k * (tail.x - crBBox.right) + rightdown.y;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(
+ crBBox.left + fWidth / 20.0f,
+ k * (crBBox.left + fWidth / 20.0f - rightdown.x) + rightdown.y),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(fHeight * 17 / 60.0f / k + tail.x +
+ fWidth / 10.0f + fWidth / 5.0f,
+ -fWidth / 5.0f / k + tail.y -
+ fWidth / 10.0f / k + fHeight * 17 / 60.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(fHeight * 17 / 60.0f / k + tail.x + fWidth / 10.0f,
+ tail.y - fWidth / 10.0f / k + fHeight * 17 / 60.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x + fWidth / 10.0f, tail.y - fWidth / 10.0f / k),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(tail.x - fWidth / 10.0f, tail.y + fWidth / 10.0f / k),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(fHeight * 17 / 60.0f / k + tail.x - fWidth / 10.0f,
+ tail.y + fWidth / 10.0f / k + fHeight * 17 / 60.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(fHeight * 17 / 60.0f / k + tail.x -
+ fWidth / 10.0f - fWidth / 5.0f,
+ fWidth / 5.0f / k + tail.y + fWidth / 10.0f / k +
+ fHeight * 17 / 60.0f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(
+ crBBox.left + fWidth / 20.0f,
+ k * (crBBox.left + fWidth / 20.0f - rightdown.x) + rightdown.y),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 8);
+ else
+ GetPathDataFromArray(path, PathArray, 8);
+}
+
+void CPWL_Utils::GetGraphics_Graph(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.05f, crBBox.top - fWidth * 0.15f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.25f,
+ crBBox.top - fHeight * 0.15f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.275f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.05f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.05f, crBBox.top - fWidth * 0.15f),
+ PWLPT_LINETO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.275f,
+ crBBox.top - fWidth * 0.45f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.475f,
+ crBBox.top - fWidth * 0.45f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.475f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.275f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.275f,
+ crBBox.top - fWidth * 0.45f),
+ PWLPT_LINETO),
+
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f, crBBox.top - fHeight * 0.05f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.7f, crBBox.top - fHeight * 0.05f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.7f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.5f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f, crBBox.top - fHeight * 0.05f),
+ PWLPT_LINETO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.725f,
+ crBBox.top - fWidth * 0.35f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.925f,
+ crBBox.top - fWidth * 0.35f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.925f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.725f,
+ crBBox.bottom + fHeight * 0.08f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.725f,
+ crBBox.top - fWidth * 0.35f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 20);
+ else
+ GetPathDataFromArray(path, PathArray, 20);
+}
+
+void CPWL_Utils::GetGraphics_Paperclip(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 60, crBBox.top - fHeight * 0.25f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60,
+ crBBox.bottom + fHeight * 0.25f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60,
+ crBBox.bottom + fHeight * 0.25f -
+ fWidth * 57 / 60.0f * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30,
+ crBBox.bottom + fHeight * 0.25f -
+ fWidth * 57 / 60.0f * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30,
+ crBBox.bottom + fHeight * 0.25f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 30, crBBox.top - fHeight * 0.33f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 30,
+ crBBox.top - fHeight * 0.33f + fHeight / 15 * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 30 - fWidth * 0.12f,
+ crBBox.top - fHeight * 0.33f + fHeight / 15 * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30 - fWidth * 0.12f,
+ crBBox.top - fHeight * 0.33f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 30 - fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.2f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 30 - fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.2f -
+ (fWidth * 57 / 60.0f - fWidth * 0.24f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 60 + fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.2f -
+ (fWidth * 57 / 60.0f - fWidth * 0.24f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60 + fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.2f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60 + fWidth * 0.12f,
+ crBBox.top - fHeight * 0.2f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 60 + fWidth * 0.12f,
+ crBBox.top - fHeight * 0.2f +
+ (fWidth * 11 / 12.0f - fWidth * 0.36f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.24f,
+ crBBox.top - fHeight * 0.2f +
+ (fWidth * 11 / 12.0f - fWidth * 0.36f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.24f,
+ crBBox.top - fHeight * 0.2f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.24f,
+ crBBox.bottom + fHeight * 0.25f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.24f,
+ crBBox.bottom + fHeight * 0.25f -
+ (fWidth * 14 / 15.0f - fWidth * 0.53f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.29f,
+ crBBox.bottom + fHeight * 0.25f -
+ (fWidth * 14 / 15.0f - fWidth * 0.53f) * 0.25f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.29f,
+ crBBox.bottom + fHeight * 0.25f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.29f,
+ crBBox.top - fHeight * 0.33f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.29f,
+ crBBox.top - fHeight * 0.33f + fWidth * 0.12f * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.17f,
+ crBBox.top - fHeight * 0.33f + fWidth * 0.12f * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.17f,
+ crBBox.top - fHeight * 0.33f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.17f,
+ crBBox.bottom + fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.17f,
+ crBBox.bottom + fHeight * 0.3f -
+ fWidth * (14 / 15.0f - 0.29f) * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.3f -
+ fWidth * (14 / 15.0f - 0.29f) * 0.35f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.12f,
+ crBBox.bottom + fHeight * 0.3f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.12f,
+ crBBox.top - fHeight * 0.25f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth / 15 - fWidth * 0.12f,
+ crBBox.top - fHeight * 0.25f +
+ fWidth * 0.35f * (11 / 12.0f - 0.12f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth / 60,
+ crBBox.top - fHeight * 0.25f +
+ fWidth * 0.35f * (11 / 12.0f - 0.12f)),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth / 60, crBBox.top - fHeight * 0.25f),
+ PWLPT_BEZIERTO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 33);
+ else
+ GetPathDataFromArray(path, PathArray, 33);
+}
+
+void CPWL_Utils::GetGraphics_Attachment(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.25f, crBBox.top - fHeight * 0.1f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.23f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.5f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.4f,
+ crBBox.top - fHeight * 0.5f + fWidth * 0.04f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.top - fHeight * 0.5f + fWidth * 0.04f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.6f, crBBox.top - fHeight * 0.5f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.6f, crBBox.top - fHeight * 0.23f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.25f,
+ crBBox.top - fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.25f, crBBox.top - fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.23f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.6f, crBBox.top - fHeight * 0.23f),
+ PWLPT_LINETO),
+
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.5f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f - fWidth * 0.25f * 0.4f,
+ crBBox.top - fHeight * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.15f,
+ crBBox.top - fHeight * 0.65f + fHeight * 0.15f * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.15f,
+ crBBox.top - fHeight * 0.65f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.15f,
+ crBBox.top - fHeight * 0.65f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.15f,
+ crBBox.top - fHeight * 0.65f + fHeight * 0.15f * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.6f + fWidth * 0.25f * 0.4f,
+ crBBox.top - fHeight * 0.5f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.6f, crBBox.top - fHeight * 0.5f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.6f,
+ crBBox.top - fHeight * 0.5f + fWidth * 0.04f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.4f,
+ crBBox.top - fHeight * 0.5f + fWidth * 0.04f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.5f),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.5f, crBBox.top - fHeight * 0.65f),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.5f,
+ crBBox.bottom + fHeight * 0.1f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 24);
+ else
+ GetPathDataFromArray(path, PathArray, 24);
+}
+
+void CPWL_Utils::GetGraphics_Tag(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fHeight = crBBox.top - crBBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.1f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.1f, crBBox.top - fHeight * 0.5f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.left + fWidth * 0.3f,
+ crBBox.bottom + fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crBBox.right - fWidth * 0.1f,
+ crBBox.bottom + fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.1f, crBBox.top - fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.1f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.3f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.2f, crBBox.top - fHeight * 0.3f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.5f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.2f, crBBox.top - fHeight * 0.5f),
+ PWLPT_LINETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.left + fWidth * 0.4f, crBBox.top - fHeight * 0.7f),
+ PWLPT_MOVETO),
+ CPWL_PathData(
+ CPWL_Point(crBBox.right - fWidth * 0.2f, crBBox.top - fHeight * 0.7f),
+ PWLPT_LINETO)};
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 12);
+ else
+ GetPathDataFromArray(path, PathArray, 12);
+}
+
+void CPWL_Utils::GetGraphics_Foxit(CFX_ByteString& sPathData,
+ CFX_PathData& path,
+ const CPDF_Rect& crBBox,
+ const PWL_PATH_TYPE type) {
+ FX_FLOAT fOutWidth = crBBox.right - crBBox.left;
+ FX_FLOAT fOutHeight = crBBox.top - crBBox.bottom;
+
+ CPDF_Rect crInBox = crBBox;
+ crInBox.left = crBBox.left + fOutWidth * 0.08f;
+ crInBox.right = crBBox.right - fOutWidth * 0.08f;
+ crInBox.top = crBBox.top - fOutHeight * 0.08f;
+ crInBox.bottom = crBBox.bottom + fOutHeight * 0.08f;
+
+ FX_FLOAT fWidth = crInBox.right - crInBox.left;
+ FX_FLOAT fHeight = crInBox.top - crInBox.bottom;
+
+ CPWL_PathData PathArray[] = {
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.45f, crInBox.top),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.45f,
+ crInBox.top - PWL_BEZIER * fHeight * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.45f -
+ PWL_BEZIER * fWidth * 0.45f,
+ crInBox.top - fHeight * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight * 0.4f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top), PWLPT_LINETO),
+
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.75f, crInBox.top),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.75f,
+ crInBox.top - PWL_BEZIER * fHeight * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.75f -
+ PWL_BEZIER * fWidth * 0.75f,
+ crInBox.top - fHeight * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight * 0.7f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight * 0.55f),
+ PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + PWL_BEZIER * fWidth * 0.60f,
+ crInBox.top - fHeight * 0.55f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f,
+ crInBox.top - PWL_BEZIER * fHeight * 0.55f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.60f, crInBox.top),
+ PWLPT_BEZIERTO),
+
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.90f, crInBox.top),
+ PWLPT_MOVETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.90f,
+ crInBox.top - PWL_BEZIER * fHeight * 0.85f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.90f -
+ PWL_BEZIER * fWidth * 0.90f,
+ crInBox.top - fHeight * 0.85f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.top - fHeight * 0.85f),
+ PWLPT_BEZIERTO),
+ CPWL_PathData(CPWL_Point(crInBox.left, crInBox.bottom), PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.right, crInBox.bottom), PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.right, crInBox.top), PWLPT_LINETO),
+ CPWL_PathData(CPWL_Point(crInBox.left + fWidth * 0.90f, crInBox.top),
+ PWLPT_LINETO),
+ };
+
+ if (type == PWLPT_STREAM)
+ sPathData = GetAppStreamFromArray(PathArray, 23);
+ else
+ GetPathDataFromArray(path, PathArray, 23);
+}
+
+void CPWL_Color::ConvertColorType(int32_t other_nColorType) {
+ switch (other_nColorType) {
+ case COLORTYPE_TRANSPARENT:
+ break;
+ case COLORTYPE_GRAY:
+ switch (other_nColorType) {
+ case COLORTYPE_RGB:
+ CPWL_Utils::ConvertGRAY2RGB(fColor1, fColor1, fColor2, fColor3);
+ break;
+ case COLORTYPE_CMYK:
+ CPWL_Utils::ConvertGRAY2CMYK(fColor1, fColor1, fColor2, fColor3,
+ fColor4);
+ break;
+ }
+ break;
+ case COLORTYPE_RGB:
+ switch (other_nColorType) {
+ case COLORTYPE_GRAY:
+ CPWL_Utils::ConvertRGB2GRAY(fColor1, fColor2, fColor3, fColor1);
+ break;
+ case COLORTYPE_CMYK:
+ CPWL_Utils::ConvertRGB2CMYK(fColor1, fColor2, fColor3, fColor1,
+ fColor2, fColor3, fColor4);
+ break;
+ }
+ break;
+ case COLORTYPE_CMYK:
+ switch (other_nColorType) {
+ case COLORTYPE_GRAY:
+ CPWL_Utils::ConvertCMYK2GRAY(fColor1, fColor2, fColor3, fColor4,
+ fColor1);
+ break;
+ case COLORTYPE_RGB:
+ CPWL_Utils::ConvertCMYK2RGB(fColor1, fColor2, fColor3, fColor4,
+ fColor1, fColor2, fColor3);
+ break;
+ }
+ break;
+ }
+ nColorType = other_nColorType;
+}
diff --git a/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp b/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp
index 433b3c6846..81bbbbfe8e 100644
--- a/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp
@@ -13,545 +13,449 @@
/* -------------------------- CPWL_Timer -------------------------- */
-static std::map<int32_t, CPWL_Timer*>& GetPWLTimeMap()
-{
+static std::map<int32_t, CPWL_Timer*>& GetPWLTimeMap() {
// Leak the object at shutdown.
static auto timeMap = new std::map<int32_t, CPWL_Timer*>;
return *timeMap;
}
-CPWL_Timer::CPWL_Timer(CPWL_TimerHandler* pAttached, IFX_SystemHandler* pSystemHandler) :
- m_nTimerID(0),
- m_pAttached(pAttached),
- m_pSystemHandler(pSystemHandler)
-{
- ASSERT(m_pAttached != NULL);
- ASSERT(m_pSystemHandler != NULL);
+CPWL_Timer::CPWL_Timer(CPWL_TimerHandler* pAttached,
+ IFX_SystemHandler* pSystemHandler)
+ : m_nTimerID(0), m_pAttached(pAttached), m_pSystemHandler(pSystemHandler) {
+ ASSERT(m_pAttached != NULL);
+ ASSERT(m_pSystemHandler != NULL);
}
-CPWL_Timer::~CPWL_Timer()
-{
- KillPWLTimer();
+CPWL_Timer::~CPWL_Timer() {
+ KillPWLTimer();
}
-int32_t CPWL_Timer::SetPWLTimer(int32_t nElapse)
-{
- if (m_nTimerID != 0)
- KillPWLTimer();
- m_nTimerID = m_pSystemHandler->SetTimer(nElapse, TimerProc);
+int32_t CPWL_Timer::SetPWLTimer(int32_t nElapse) {
+ if (m_nTimerID != 0)
+ KillPWLTimer();
+ m_nTimerID = m_pSystemHandler->SetTimer(nElapse, TimerProc);
- GetPWLTimeMap()[m_nTimerID] = this;
- return m_nTimerID;
+ GetPWLTimeMap()[m_nTimerID] = this;
+ return m_nTimerID;
}
-void CPWL_Timer::KillPWLTimer()
-{
- if (m_nTimerID == 0)
- return;
+void CPWL_Timer::KillPWLTimer() {
+ if (m_nTimerID == 0)
+ return;
- m_pSystemHandler->KillTimer(m_nTimerID);
- GetPWLTimeMap().erase(m_nTimerID);
- m_nTimerID = 0;
+ m_pSystemHandler->KillTimer(m_nTimerID);
+ GetPWLTimeMap().erase(m_nTimerID);
+ m_nTimerID = 0;
}
-void CPWL_Timer::TimerProc(int32_t idEvent)
-{
- auto it = GetPWLTimeMap().find(idEvent);
- if (it == GetPWLTimeMap().end())
- return;
+void CPWL_Timer::TimerProc(int32_t idEvent) {
+ auto it = GetPWLTimeMap().find(idEvent);
+ if (it == GetPWLTimeMap().end())
+ return;
- CPWL_Timer* pTimer = it->second;
- if (pTimer->m_pAttached)
- pTimer->m_pAttached->TimerProc();
+ CPWL_Timer* pTimer = it->second;
+ if (pTimer->m_pAttached)
+ pTimer->m_pAttached->TimerProc();
}
/* -------------------------- CPWL_TimerHandler -------------------------- */
-CPWL_TimerHandler::CPWL_TimerHandler() : m_pTimer(NULL)
-{
-}
+CPWL_TimerHandler::CPWL_TimerHandler() : m_pTimer(NULL) {}
-CPWL_TimerHandler::~CPWL_TimerHandler()
-{
- delete m_pTimer;
+CPWL_TimerHandler::~CPWL_TimerHandler() {
+ delete m_pTimer;
}
-void CPWL_TimerHandler::BeginTimer(int32_t nElapse)
-{
- if (!m_pTimer)
- m_pTimer = new CPWL_Timer(this, GetSystemHandler());
+void CPWL_TimerHandler::BeginTimer(int32_t nElapse) {
+ if (!m_pTimer)
+ m_pTimer = new CPWL_Timer(this, GetSystemHandler());
- if (m_pTimer)
- m_pTimer->SetPWLTimer(nElapse);
+ if (m_pTimer)
+ m_pTimer->SetPWLTimer(nElapse);
}
-void CPWL_TimerHandler::EndTimer()
-{
- if (m_pTimer)
- m_pTimer->KillPWLTimer();
+void CPWL_TimerHandler::EndTimer() {
+ if (m_pTimer)
+ m_pTimer->KillPWLTimer();
}
-void CPWL_TimerHandler::TimerProc()
-{
-}
+void CPWL_TimerHandler::TimerProc() {}
/* --------------------------- CPWL_MsgControl ---------------------------- */
-class CPWL_MsgControl
-{
- friend class CPWL_Wnd;
-
-public:
- CPWL_MsgControl(CPWL_Wnd * pWnd)
- {
-// PWL_TRACE("new CPWL_MsgControl\n");
- m_pCreatedWnd = pWnd;
- Default();
- }
-
- ~CPWL_MsgControl()
- {
-// PWL_TRACE("~CPWL_MsgControl\n");
- Default();
- }
-
- void Default()
- {
- m_aMousePath.RemoveAll();
- m_aKeyboardPath.RemoveAll();
- m_pMainMouseWnd = NULL;
- m_pMainKeyboardWnd = NULL;
- }
-
- FX_BOOL IsWndCreated(const CPWL_Wnd * pWnd) const
- {
- return m_pCreatedWnd == pWnd;
- }
-
- FX_BOOL IsMainCaptureMouse(const CPWL_Wnd * pWnd) const
- {
- return pWnd == m_pMainMouseWnd;
- }
-
- FX_BOOL IsWndCaptureMouse(const CPWL_Wnd * pWnd) const
- {
- if (pWnd)
- for( int32_t i=0,sz=m_aMousePath.GetSize(); i<sz; i++)
- if (m_aMousePath.GetAt(i) == pWnd)
- return TRUE;
-
- return FALSE;
- }
+class CPWL_MsgControl {
+ friend class CPWL_Wnd;
+
+ public:
+ CPWL_MsgControl(CPWL_Wnd* pWnd) {
+ // PWL_TRACE("new CPWL_MsgControl\n");
+ m_pCreatedWnd = pWnd;
+ Default();
+ }
+
+ ~CPWL_MsgControl() {
+ // PWL_TRACE("~CPWL_MsgControl\n");
+ Default();
+ }
+
+ void Default() {
+ m_aMousePath.RemoveAll();
+ m_aKeyboardPath.RemoveAll();
+ m_pMainMouseWnd = NULL;
+ m_pMainKeyboardWnd = NULL;
+ }
+
+ FX_BOOL IsWndCreated(const CPWL_Wnd* pWnd) const {
+ return m_pCreatedWnd == pWnd;
+ }
+
+ FX_BOOL IsMainCaptureMouse(const CPWL_Wnd* pWnd) const {
+ return pWnd == m_pMainMouseWnd;
+ }
+
+ FX_BOOL IsWndCaptureMouse(const CPWL_Wnd* pWnd) const {
+ if (pWnd)
+ for (int32_t i = 0, sz = m_aMousePath.GetSize(); i < sz; i++)
+ if (m_aMousePath.GetAt(i) == pWnd)
+ return TRUE;
- FX_BOOL IsMainCaptureKeyboard(const CPWL_Wnd * pWnd) const
- {
- return pWnd == m_pMainKeyboardWnd;
- }
+ return FALSE;
+ }
+ FX_BOOL IsMainCaptureKeyboard(const CPWL_Wnd* pWnd) const {
+ return pWnd == m_pMainKeyboardWnd;
+ }
- FX_BOOL IsWndCaptureKeyboard(const CPWL_Wnd * pWnd) const
- {
- if (pWnd)
- for( int32_t i=0,sz=m_aKeyboardPath.GetSize(); i<sz; i++)
- if (m_aKeyboardPath.GetAt(i) == pWnd)
- return TRUE;
+ FX_BOOL IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const {
+ if (pWnd)
+ for (int32_t i = 0, sz = m_aKeyboardPath.GetSize(); i < sz; i++)
+ if (m_aKeyboardPath.GetAt(i) == pWnd)
+ return TRUE;
- return FALSE;
- }
+ return FALSE;
+ }
- void SetFocus(CPWL_Wnd * pWnd)
- {
- m_aKeyboardPath.RemoveAll();
+ void SetFocus(CPWL_Wnd* pWnd) {
+ m_aKeyboardPath.RemoveAll();
- if (pWnd)
- {
- m_pMainKeyboardWnd = pWnd;
+ if (pWnd) {
+ m_pMainKeyboardWnd = pWnd;
- CPWL_Wnd * pParent = pWnd;
- while (pParent)
- {
- m_aKeyboardPath.Add(pParent);
- pParent = pParent->GetParentWindow();
- }
+ CPWL_Wnd* pParent = pWnd;
+ while (pParent) {
+ m_aKeyboardPath.Add(pParent);
+ pParent = pParent->GetParentWindow();
+ }
- pWnd->OnSetFocus();
- }
+ pWnd->OnSetFocus();
}
+ }
- void KillFocus()
- {
- if (m_aKeyboardPath.GetSize() > 0)
- if (CPWL_Wnd* pWnd = m_aKeyboardPath.GetAt(0))
- pWnd->OnKillFocus();
-
- m_pMainKeyboardWnd = NULL;
- m_aKeyboardPath.RemoveAll();
- }
+ void KillFocus() {
+ if (m_aKeyboardPath.GetSize() > 0)
+ if (CPWL_Wnd* pWnd = m_aKeyboardPath.GetAt(0))
+ pWnd->OnKillFocus();
- void SetCapture(CPWL_Wnd * pWnd)
- {
- m_aMousePath.RemoveAll();
+ m_pMainKeyboardWnd = NULL;
+ m_aKeyboardPath.RemoveAll();
+ }
- if (pWnd)
- {
- m_pMainMouseWnd = pWnd;
+ void SetCapture(CPWL_Wnd* pWnd) {
+ m_aMousePath.RemoveAll();
- CPWL_Wnd * pParent = pWnd;
- while (pParent)
- {
- m_aMousePath.Add(pParent);
- pParent = pParent->GetParentWindow();
- }
- }
- }
+ if (pWnd) {
+ m_pMainMouseWnd = pWnd;
- void ReleaseCapture()
- {
- m_pMainMouseWnd = NULL;
- m_aMousePath.RemoveAll();
+ CPWL_Wnd* pParent = pWnd;
+ while (pParent) {
+ m_aMousePath.Add(pParent);
+ pParent = pParent->GetParentWindow();
+ }
}
-
-private:
- CFX_ArrayTemplate<CPWL_Wnd*> m_aMousePath;
- CFX_ArrayTemplate<CPWL_Wnd*> m_aKeyboardPath;
- CPWL_Wnd* m_pCreatedWnd;
- CPWL_Wnd* m_pMainMouseWnd;
- CPWL_Wnd* m_pMainKeyboardWnd;
+ }
+
+ void ReleaseCapture() {
+ m_pMainMouseWnd = NULL;
+ m_aMousePath.RemoveAll();
+ }
+
+ private:
+ CFX_ArrayTemplate<CPWL_Wnd*> m_aMousePath;
+ CFX_ArrayTemplate<CPWL_Wnd*> m_aKeyboardPath;
+ CPWL_Wnd* m_pCreatedWnd;
+ CPWL_Wnd* m_pMainMouseWnd;
+ CPWL_Wnd* m_pMainKeyboardWnd;
};
/* --------------------------- CPWL_Wnd ---------------------------- */
-CPWL_Wnd::CPWL_Wnd() :
- m_pVScrollBar(NULL),
- m_rcWindow(),
- m_rcClip(),
- m_bCreated(FALSE),
- m_bVisible(FALSE),
- m_bNotifying(FALSE),
- m_bEnabled(TRUE)
-{
-}
+CPWL_Wnd::CPWL_Wnd()
+ : m_pVScrollBar(NULL),
+ m_rcWindow(),
+ m_rcClip(),
+ m_bCreated(FALSE),
+ m_bVisible(FALSE),
+ m_bNotifying(FALSE),
+ m_bEnabled(TRUE) {}
-CPWL_Wnd::~CPWL_Wnd()
-{
- ASSERT(m_bCreated == FALSE);
+CPWL_Wnd::~CPWL_Wnd() {
+ ASSERT(m_bCreated == FALSE);
}
-CFX_ByteString CPWL_Wnd::GetClassName() const
-{
- return "CPWL_Wnd";
+CFX_ByteString CPWL_Wnd::GetClassName() const {
+ return "CPWL_Wnd";
}
-void CPWL_Wnd::Create(const PWL_CREATEPARAM & cp)
-{
- if (!IsValid())
- {
- m_sPrivateParam = cp;
+void CPWL_Wnd::Create(const PWL_CREATEPARAM& cp) {
+ if (!IsValid()) {
+ m_sPrivateParam = cp;
- OnCreate(m_sPrivateParam);
+ OnCreate(m_sPrivateParam);
- m_sPrivateParam.rcRectWnd.Normalize();
- m_rcWindow = m_sPrivateParam.rcRectWnd;
- m_rcClip = CPWL_Utils::InflateRect(m_rcWindow,1.0f);
+ m_sPrivateParam.rcRectWnd.Normalize();
+ m_rcWindow = m_sPrivateParam.rcRectWnd;
+ m_rcClip = CPWL_Utils::InflateRect(m_rcWindow, 1.0f);
- CreateMsgControl();
+ CreateMsgControl();
- if (m_sPrivateParam.pParentWnd)
- m_sPrivateParam.pParentWnd->OnNotify(this, PNM_ADDCHILD);
+ if (m_sPrivateParam.pParentWnd)
+ m_sPrivateParam.pParentWnd->OnNotify(this, PNM_ADDCHILD);
- PWL_CREATEPARAM ccp = m_sPrivateParam;
+ PWL_CREATEPARAM ccp = m_sPrivateParam;
- ccp.dwFlags &= 0xFFFF0000L; //remove sub styles
- ccp.mtChild = CPDF_Matrix(1,0,0,1,0,0);
+ ccp.dwFlags &= 0xFFFF0000L; // remove sub styles
+ ccp.mtChild = CPDF_Matrix(1, 0, 0, 1, 0, 0);
- CreateScrollBar(ccp);
- CreateChildWnd(ccp);
+ CreateScrollBar(ccp);
+ CreateChildWnd(ccp);
- m_bVisible = HasFlag(PWS_VISIBLE);
+ m_bVisible = HasFlag(PWS_VISIBLE);
- OnCreated();
+ OnCreated();
- RePosChildWnd();
- m_bCreated = TRUE;
- }
+ RePosChildWnd();
+ m_bCreated = TRUE;
+ }
}
-void CPWL_Wnd::OnCreate(PWL_CREATEPARAM & cp)
-{
-}
+void CPWL_Wnd::OnCreate(PWL_CREATEPARAM& cp) {}
-void CPWL_Wnd::OnCreated()
-{
-}
-
-void CPWL_Wnd::OnDestroy()
-{
-}
+void CPWL_Wnd::OnCreated() {}
-void CPWL_Wnd::Destroy()
-{
- KillFocus();
+void CPWL_Wnd::OnDestroy() {}
- OnDestroy();
+void CPWL_Wnd::Destroy() {
+ KillFocus();
- if (m_bCreated)
- {
- for (int32_t i = m_aChildren.GetSize()-1; i >= 0; i --)
- {
- if (CPWL_Wnd * pChild = m_aChildren[i])
- {
- pChild->Destroy();
- delete pChild;
- pChild = NULL;
- }
- }
+ OnDestroy();
- if (m_sPrivateParam.pParentWnd)
- m_sPrivateParam.pParentWnd->OnNotify(this, PNM_REMOVECHILD);
- m_bCreated = FALSE;
+ if (m_bCreated) {
+ for (int32_t i = m_aChildren.GetSize() - 1; i >= 0; i--) {
+ if (CPWL_Wnd* pChild = m_aChildren[i]) {
+ pChild->Destroy();
+ delete pChild;
+ pChild = NULL;
+ }
}
- DestroyMsgControl();
-
- FXSYS_memset(&m_sPrivateParam, 0, sizeof(PWL_CREATEPARAM));
- m_aChildren.RemoveAll();
- m_pVScrollBar = NULL;
-}
+ if (m_sPrivateParam.pParentWnd)
+ m_sPrivateParam.pParentWnd->OnNotify(this, PNM_REMOVECHILD);
+ m_bCreated = FALSE;
+ }
-void CPWL_Wnd::Move(const CPDF_Rect & rcNew, FX_BOOL bReset,FX_BOOL bRefresh)
-{
- if (IsValid())
- {
- CPDF_Rect rcOld = GetWindowRect();
+ DestroyMsgControl();
- m_rcWindow = rcNew;
- m_rcWindow.Normalize();
+ FXSYS_memset(&m_sPrivateParam, 0, sizeof(PWL_CREATEPARAM));
+ m_aChildren.RemoveAll();
+ m_pVScrollBar = NULL;
+}
- if (rcOld.left != rcNew.left || rcOld.right != rcNew.right ||
- rcOld.top != rcNew.top || rcOld.bottom != rcNew.bottom)
- {
- if (bReset)
- {
- RePosChildWnd();
- }
+void CPWL_Wnd::Move(const CPDF_Rect& rcNew, FX_BOOL bReset, FX_BOOL bRefresh) {
+ if (IsValid()) {
+ CPDF_Rect rcOld = GetWindowRect();
- }
- if (bRefresh)
- {
- InvalidateRectMove(rcOld,rcNew);
- }
+ m_rcWindow = rcNew;
+ m_rcWindow.Normalize();
- m_sPrivateParam.rcRectWnd = m_rcWindow;
+ if (rcOld.left != rcNew.left || rcOld.right != rcNew.right ||
+ rcOld.top != rcNew.top || rcOld.bottom != rcNew.bottom) {
+ if (bReset) {
+ RePosChildWnd();
+ }
+ }
+ if (bRefresh) {
+ InvalidateRectMove(rcOld, rcNew);
}
+
+ m_sPrivateParam.rcRectWnd = m_rcWindow;
+ }
}
-void CPWL_Wnd::InvalidateRectMove(const CPDF_Rect & rcOld, const CPDF_Rect & rcNew)
-{
- CPDF_Rect rcUnion = rcOld;
- rcUnion.Union(rcNew);
+void CPWL_Wnd::InvalidateRectMove(const CPDF_Rect& rcOld,
+ const CPDF_Rect& rcNew) {
+ CPDF_Rect rcUnion = rcOld;
+ rcUnion.Union(rcNew);
- InvalidateRect(&rcUnion);
+ InvalidateRect(&rcUnion);
}
-void CPWL_Wnd::GetAppearanceStream(CFX_ByteString & sAppStream)
-{
- if (IsValid())
- {
- CFX_ByteTextBuf sTextBuf;
- GetAppearanceStream(sTextBuf);
- sAppStream += sTextBuf.GetByteString();
- }
+void CPWL_Wnd::GetAppearanceStream(CFX_ByteString& sAppStream) {
+ if (IsValid()) {
+ CFX_ByteTextBuf sTextBuf;
+ GetAppearanceStream(sTextBuf);
+ sAppStream += sTextBuf.GetByteString();
+ }
}
-void CPWL_Wnd::GetAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- if (IsValid() && IsVisible())
- {
- GetThisAppearanceStream(sAppStream);
- GetChildAppearanceStream(sAppStream);
- }
+void CPWL_Wnd::GetAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ if (IsValid() && IsVisible()) {
+ GetThisAppearanceStream(sAppStream);
+ GetChildAppearanceStream(sAppStream);
+ }
}
-//if don't set,Get default apperance stream
-void CPWL_Wnd::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- CPDF_Rect rectWnd = GetWindowRect();
- if (!rectWnd.IsEmpty()) {
- CFX_ByteTextBuf sThis;
-
- if (HasFlag(PWS_BACKGROUND))
- sThis << CPWL_Utils::GetRectFillAppStream(rectWnd, GetBackgroundColor());
-
- if (HasFlag(PWS_BORDER)) {
- sThis << CPWL_Utils::GetBorderAppStream(
- rectWnd,
- (FX_FLOAT)GetBorderWidth(),
- GetBorderColor(),
- GetBorderLeftTopColor(GetBorderStyle()),
- GetBorderRightBottomColor(GetBorderStyle()),
- GetBorderStyle(),
- GetBorderDash());
- }
+// if don't set,Get default apperance stream
+void CPWL_Wnd::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ CPDF_Rect rectWnd = GetWindowRect();
+ if (!rectWnd.IsEmpty()) {
+ CFX_ByteTextBuf sThis;
- sAppStream << sThis;
- }
-}
+ if (HasFlag(PWS_BACKGROUND))
+ sThis << CPWL_Utils::GetRectFillAppStream(rectWnd, GetBackgroundColor());
-void CPWL_Wnd::GetChildAppearanceStream(CFX_ByteTextBuf & sAppStream)
-{
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- pChild->GetAppearanceStream(sAppStream);
- }
+ if (HasFlag(PWS_BORDER)) {
+ sThis << CPWL_Utils::GetBorderAppStream(
+ rectWnd, (FX_FLOAT)GetBorderWidth(), GetBorderColor(),
+ GetBorderLeftTopColor(GetBorderStyle()),
+ GetBorderRightBottomColor(GetBorderStyle()), GetBorderStyle(),
+ GetBorderDash());
}
-}
-void CPWL_Wnd::DrawAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- if (IsValid() && IsVisible())
- {
- DrawThisAppearance(pDevice,pUser2Device);
- DrawChildAppearance(pDevice,pUser2Device);
- }
+ sAppStream << sThis;
+ }
}
-void CPWL_Wnd::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- CPDF_Rect rectWnd = GetWindowRect();
- if (!rectWnd.IsEmpty())
- {
- if (HasFlag(PWS_BACKGROUND))
- {
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rectWnd,(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth()));
- CPWL_Utils::DrawFillRect(pDevice,pUser2Device,rcClient, GetBackgroundColor(), GetTransparency());
- }
-
- if (HasFlag(PWS_BORDER))
- CPWL_Utils::DrawBorder(pDevice,
- pUser2Device,
- rectWnd,
- (FX_FLOAT)GetBorderWidth(),
- GetBorderColor(),
- GetBorderLeftTopColor(GetBorderStyle()),
- GetBorderRightBottomColor(GetBorderStyle()),
- GetBorderStyle(),
- GetBorderDash(),
- GetTransparency());
+void CPWL_Wnd::GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ pChild->GetAppearanceStream(sAppStream);
+ }
+ }
+}
+
+void CPWL_Wnd::DrawAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ if (IsValid() && IsVisible()) {
+ DrawThisAppearance(pDevice, pUser2Device);
+ DrawChildAppearance(pDevice, pUser2Device);
+ }
+}
+
+void CPWL_Wnd::DrawThisAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ CPDF_Rect rectWnd = GetWindowRect();
+ if (!rectWnd.IsEmpty()) {
+ if (HasFlag(PWS_BACKGROUND)) {
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(
+ rectWnd, (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
+ CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcClient,
+ GetBackgroundColor(), GetTransparency());
}
-}
-void CPWL_Wnd::DrawChildAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device)
-{
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- CPDF_Matrix mt = pChild->GetChildMatrix();
- if (mt.IsIdentity())
- {
- pChild->DrawAppearance(pDevice,pUser2Device);
- }
- else
- {
- mt.Concat(*pUser2Device);
- pChild->DrawAppearance(pDevice,&mt);
- }
- }
+ if (HasFlag(PWS_BORDER))
+ CPWL_Utils::DrawBorder(
+ pDevice, pUser2Device, rectWnd, (FX_FLOAT)GetBorderWidth(),
+ GetBorderColor(), GetBorderLeftTopColor(GetBorderStyle()),
+ GetBorderRightBottomColor(GetBorderStyle()), GetBorderStyle(),
+ GetBorderDash(), GetTransparency());
+ }
+}
+
+void CPWL_Wnd::DrawChildAppearance(CFX_RenderDevice* pDevice,
+ CPDF_Matrix* pUser2Device) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ CPDF_Matrix mt = pChild->GetChildMatrix();
+ if (mt.IsIdentity()) {
+ pChild->DrawAppearance(pDevice, pUser2Device);
+ } else {
+ mt.Concat(*pUser2Device);
+ pChild->DrawAppearance(pDevice, &mt);
+ }
}
+ }
}
-void CPWL_Wnd::InvalidateRect(CPDF_Rect* pRect)
-{
- if (IsValid())
- {
- CPDF_Rect rcRefresh = pRect ? *pRect : GetWindowRect();
+void CPWL_Wnd::InvalidateRect(CPDF_Rect* pRect) {
+ if (IsValid()) {
+ CPDF_Rect rcRefresh = pRect ? *pRect : GetWindowRect();
- if (!HasFlag(PWS_NOREFRESHCLIP))
- {
- CPDF_Rect rcClip = GetClipRect();
- if (!rcClip.IsEmpty())
- {
- rcRefresh.Intersect(rcClip);
- }
- }
-
- FX_RECT rcWin = PWLtoWnd(rcRefresh);
- rcWin.left -= PWL_INVALIDATE_INFLATE;
- rcWin.top -= PWL_INVALIDATE_INFLATE;
- rcWin.right += PWL_INVALIDATE_INFLATE;
- rcWin.bottom += PWL_INVALIDATE_INFLATE;
-
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- {
- if (FX_HWND hWnd = GetAttachedHWnd())
- {
- pSH->InvalidateRect(hWnd, rcWin);
- }
- }
+ if (!HasFlag(PWS_NOREFRESHCLIP)) {
+ CPDF_Rect rcClip = GetClipRect();
+ if (!rcClip.IsEmpty()) {
+ rcRefresh.Intersect(rcClip);
+ }
}
-}
-#define PWL_IMPLEMENT_KEY_METHOD(key_method_name)\
-FX_BOOL CPWL_Wnd::key_method_name(FX_WORD nChar, FX_DWORD nFlag)\
-{\
- if (IsValid() && IsVisible() && IsEnabled())\
- {\
- if (IsWndCaptureKeyboard(this))\
- {\
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)\
- {\
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))\
- {\
- if (IsWndCaptureKeyboard(pChild))\
- {\
- return pChild->key_method_name(nChar,nFlag);\
- }\
- }\
- }\
- }\
- }\
- return FALSE;\
-}
-
-#define PWL_IMPLEMENT_MOUSE_METHOD(mouse_method_name)\
-FX_BOOL CPWL_Wnd::mouse_method_name(const CPDF_Point & point, FX_DWORD nFlag)\
-{\
- if (IsValid() && IsVisible() && IsEnabled())\
- {\
- if (IsWndCaptureMouse(this))\
- {\
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)\
- {\
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))\
- {\
- if (IsWndCaptureMouse(pChild))\
- {\
- return pChild->mouse_method_name(pChild->ParentToChild(point),nFlag);\
- }\
- }\
- }\
- SetCursor();\
- }\
- else\
- {\
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)\
- {\
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))\
- {\
- if (pChild->WndHitTest(pChild->ParentToChild(point)))\
- {\
- return pChild->mouse_method_name(pChild->ParentToChild(point),nFlag);\
- }\
- }\
- }\
- if (WndHitTest(point))\
- SetCursor();\
- }\
- }\
- return FALSE;\
-}
+ FX_RECT rcWin = PWLtoWnd(rcRefresh);
+ rcWin.left -= PWL_INVALIDATE_INFLATE;
+ rcWin.top -= PWL_INVALIDATE_INFLATE;
+ rcWin.right += PWL_INVALIDATE_INFLATE;
+ rcWin.bottom += PWL_INVALIDATE_INFLATE;
+
+ if (IFX_SystemHandler* pSH = GetSystemHandler()) {
+ if (FX_HWND hWnd = GetAttachedHWnd()) {
+ pSH->InvalidateRect(hWnd, rcWin);
+ }
+ }
+ }
+}
+
+#define PWL_IMPLEMENT_KEY_METHOD(key_method_name) \
+ FX_BOOL CPWL_Wnd::key_method_name(FX_WORD nChar, FX_DWORD nFlag) { \
+ if (IsValid() && IsVisible() && IsEnabled()) { \
+ if (IsWndCaptureKeyboard(this)) { \
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { \
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { \
+ if (IsWndCaptureKeyboard(pChild)) { \
+ return pChild->key_method_name(nChar, nFlag); \
+ } \
+ } \
+ } \
+ } \
+ } \
+ return FALSE; \
+ }
+
+#define PWL_IMPLEMENT_MOUSE_METHOD(mouse_method_name) \
+ FX_BOOL CPWL_Wnd::mouse_method_name(const CPDF_Point& point, \
+ FX_DWORD nFlag) { \
+ if (IsValid() && IsVisible() && IsEnabled()) { \
+ if (IsWndCaptureMouse(this)) { \
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { \
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { \
+ if (IsWndCaptureMouse(pChild)) { \
+ return pChild->mouse_method_name(pChild->ParentToChild(point), \
+ nFlag); \
+ } \
+ } \
+ } \
+ SetCursor(); \
+ } else { \
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { \
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { \
+ if (pChild->WndHitTest(pChild->ParentToChild(point))) { \
+ return pChild->mouse_method_name(pChild->ParentToChild(point), \
+ nFlag); \
+ } \
+ } \
+ } \
+ if (WndHitTest(point)) \
+ SetCursor(); \
+ } \
+ } \
+ return FALSE; \
+ }
PWL_IMPLEMENT_KEY_METHOD(OnKeyDown)
PWL_IMPLEMENT_KEY_METHOD(OnKeyUp)
@@ -567,726 +471,610 @@ PWL_IMPLEMENT_MOUSE_METHOD(OnRButtonDown)
PWL_IMPLEMENT_MOUSE_METHOD(OnRButtonUp)
PWL_IMPLEMENT_MOUSE_METHOD(OnMouseMove)
-FX_BOOL CPWL_Wnd::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag)
-{
- if (IsValid() && IsVisible() && IsEnabled())
- {
- SetCursor();
- if (IsWndCaptureKeyboard(this))
- {
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd * pChild = m_aChildren.GetAt(i))
- {
- if (IsWndCaptureKeyboard(pChild))
- {
- return pChild->OnMouseWheel(zDelta,pChild->ParentToChild(point), nFlag);
- }
- }
- }
+FX_BOOL CPWL_Wnd::OnMouseWheel(short zDelta,
+ const CPDF_Point& point,
+ FX_DWORD nFlag) {
+ if (IsValid() && IsVisible() && IsEnabled()) {
+ SetCursor();
+ if (IsWndCaptureKeyboard(this)) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (IsWndCaptureKeyboard(pChild)) {
+ return pChild->OnMouseWheel(zDelta, pChild->ParentToChild(point),
+ nFlag);
+ }
}
+ }
}
- return FALSE;
+ }
+ return FALSE;
}
-void CPWL_Wnd::AddChild(CPWL_Wnd * pWnd)
-{
- m_aChildren.Add(pWnd);
+void CPWL_Wnd::AddChild(CPWL_Wnd* pWnd) {
+ m_aChildren.Add(pWnd);
}
-void CPWL_Wnd::RemoveChild(CPWL_Wnd * pWnd)
-{
- for (int32_t i = m_aChildren.GetSize()-1; i >= 0; i --)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- if (pChild == pWnd)
- {
- m_aChildren.RemoveAt(i);
- break;
- }
- }
+void CPWL_Wnd::RemoveChild(CPWL_Wnd* pWnd) {
+ for (int32_t i = m_aChildren.GetSize() - 1; i >= 0; i--) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ if (pChild == pWnd) {
+ m_aChildren.RemoveAt(i);
+ break;
+ }
}
+ }
}
-void CPWL_Wnd::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intptr_t lParam)
-{
- switch (msg)
- {
+void CPWL_Wnd::OnNotify(CPWL_Wnd* pWnd,
+ FX_DWORD msg,
+ intptr_t wParam,
+ intptr_t lParam) {
+ switch (msg) {
case PNM_ADDCHILD:
- AddChild(pWnd);
- break;
+ AddChild(pWnd);
+ break;
case PNM_REMOVECHILD:
- RemoveChild(pWnd);
- break;
+ RemoveChild(pWnd);
+ break;
default:
- break;
- }
+ break;
+ }
}
-FX_BOOL CPWL_Wnd::IsValid() const
-{
- return m_bCreated;
+FX_BOOL CPWL_Wnd::IsValid() const {
+ return m_bCreated;
}
-PWL_CREATEPARAM CPWL_Wnd::GetCreationParam() const
-{
- return m_sPrivateParam;
+PWL_CREATEPARAM CPWL_Wnd::GetCreationParam() const {
+ return m_sPrivateParam;
}
-CPWL_Wnd* CPWL_Wnd::GetParentWindow() const
-{
- return m_sPrivateParam.pParentWnd;
+CPWL_Wnd* CPWL_Wnd::GetParentWindow() const {
+ return m_sPrivateParam.pParentWnd;
}
-CPDF_Rect CPWL_Wnd::GetOriginWindowRect() const
-{
- return m_sPrivateParam.rcRectWnd;
+CPDF_Rect CPWL_Wnd::GetOriginWindowRect() const {
+ return m_sPrivateParam.rcRectWnd;
}
-CPDF_Rect CPWL_Wnd::GetWindowRect() const
-{
- return m_rcWindow;
+CPDF_Rect CPWL_Wnd::GetWindowRect() const {
+ return m_rcWindow;
}
-CPDF_Rect CPWL_Wnd::GetClientRect() const
-{
- CPDF_Rect rcWindow = GetWindowRect();
- CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow,(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth()));
- if (CPWL_ScrollBar* pVSB = GetVScrollBar())
- rcClient.right -= pVSB->GetScrollBarWidth();
+CPDF_Rect CPWL_Wnd::GetClientRect() const {
+ CPDF_Rect rcWindow = GetWindowRect();
+ CPDF_Rect rcClient = CPWL_Utils::DeflateRect(
+ rcWindow, (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
+ if (CPWL_ScrollBar* pVSB = GetVScrollBar())
+ rcClient.right -= pVSB->GetScrollBarWidth();
- rcClient.Normalize();
- return rcWindow.Contains(rcClient) ? rcClient : CPDF_Rect();
+ rcClient.Normalize();
+ return rcWindow.Contains(rcClient) ? rcClient : CPDF_Rect();
}
-CPDF_Point CPWL_Wnd::GetCenterPoint() const
-{
- CPDF_Rect rcClient = GetClientRect();
- return CPDF_Point((rcClient.left + rcClient.right) * 0.5f,
- (rcClient.top + rcClient.bottom) * 0.5f);
+CPDF_Point CPWL_Wnd::GetCenterPoint() const {
+ CPDF_Rect rcClient = GetClientRect();
+ return CPDF_Point((rcClient.left + rcClient.right) * 0.5f,
+ (rcClient.top + rcClient.bottom) * 0.5f);
}
-CPDF_Rect CPWL_Wnd::GetClientCenterSquare() const
-{
- return CPWL_Utils::GetCenterSquare(GetClientRect());
+CPDF_Rect CPWL_Wnd::GetClientCenterSquare() const {
+ return CPWL_Utils::GetCenterSquare(GetClientRect());
}
-CPDF_Rect CPWL_Wnd::GetWindowCenterSquare() const
-{
- return CPWL_Utils::GetCenterSquare(CPWL_Utils::DeflateRect(GetWindowRect(),0.1f));
+CPDF_Rect CPWL_Wnd::GetWindowCenterSquare() const {
+ return CPWL_Utils::GetCenterSquare(
+ CPWL_Utils::DeflateRect(GetWindowRect(), 0.1f));
}
-FX_BOOL CPWL_Wnd::HasFlag(FX_DWORD dwFlags) const
-{
- return (m_sPrivateParam.dwFlags & dwFlags) != 0;
+FX_BOOL CPWL_Wnd::HasFlag(FX_DWORD dwFlags) const {
+ return (m_sPrivateParam.dwFlags & dwFlags) != 0;
}
-void CPWL_Wnd::RemoveFlag(FX_DWORD dwFlags)
-{
- m_sPrivateParam.dwFlags &= ~dwFlags;
+void CPWL_Wnd::RemoveFlag(FX_DWORD dwFlags) {
+ m_sPrivateParam.dwFlags &= ~dwFlags;
}
-void CPWL_Wnd::AddFlag(FX_DWORD dwFlags)
-{
- m_sPrivateParam.dwFlags |= dwFlags;
+void CPWL_Wnd::AddFlag(FX_DWORD dwFlags) {
+ m_sPrivateParam.dwFlags |= dwFlags;
}
-CPWL_Color CPWL_Wnd::GetBackgroundColor() const
-{
- return m_sPrivateParam.sBackgroundColor;
+CPWL_Color CPWL_Wnd::GetBackgroundColor() const {
+ return m_sPrivateParam.sBackgroundColor;
}
-void CPWL_Wnd::SetBackgroundColor(const CPWL_Color & color)
-{
- m_sPrivateParam.sBackgroundColor = color;
+void CPWL_Wnd::SetBackgroundColor(const CPWL_Color& color) {
+ m_sPrivateParam.sBackgroundColor = color;
}
-void CPWL_Wnd::SetTextColor(const CPWL_Color & color)
-{
- m_sPrivateParam.sTextColor = color;
+void CPWL_Wnd::SetTextColor(const CPWL_Color& color) {
+ m_sPrivateParam.sTextColor = color;
}
-void CPWL_Wnd::SetTextStrokeColor(const CPWL_Color & color)
-{
- m_sPrivateParam.sTextStrokeColor = color;
+void CPWL_Wnd::SetTextStrokeColor(const CPWL_Color& color) {
+ m_sPrivateParam.sTextStrokeColor = color;
}
-CPWL_Color CPWL_Wnd::GetTextColor() const
-{
- return m_sPrivateParam.sTextColor;
+CPWL_Color CPWL_Wnd::GetTextColor() const {
+ return m_sPrivateParam.sTextColor;
}
-CPWL_Color CPWL_Wnd::GetTextStrokeColor() const
-{
- return m_sPrivateParam.sTextStrokeColor;
+CPWL_Color CPWL_Wnd::GetTextStrokeColor() const {
+ return m_sPrivateParam.sTextStrokeColor;
}
-int32_t CPWL_Wnd::GetBorderStyle() const
-{
- return m_sPrivateParam.nBorderStyle;
+int32_t CPWL_Wnd::GetBorderStyle() const {
+ return m_sPrivateParam.nBorderStyle;
}
-void CPWL_Wnd::SetBorderStyle(int32_t nBorderStyle)
-{
- if (HasFlag(PWS_BORDER))
- m_sPrivateParam.nBorderStyle = nBorderStyle;
+void CPWL_Wnd::SetBorderStyle(int32_t nBorderStyle) {
+ if (HasFlag(PWS_BORDER))
+ m_sPrivateParam.nBorderStyle = nBorderStyle;
}
-int32_t CPWL_Wnd::GetBorderWidth() const
-{
- if (HasFlag(PWS_BORDER))
- return m_sPrivateParam.dwBorderWidth;
+int32_t CPWL_Wnd::GetBorderWidth() const {
+ if (HasFlag(PWS_BORDER))
+ return m_sPrivateParam.dwBorderWidth;
- return 0;
+ return 0;
}
-int32_t CPWL_Wnd::GetInnerBorderWidth() const
-{
- /*
- switch (GetBorderStyle())
- {
- case PBS_BEVELED:
- case PBS_INSET:
- return GetBorderWidth() / 2;
- }
- */
- return 0;
+int32_t CPWL_Wnd::GetInnerBorderWidth() const {
+ /*
+ switch (GetBorderStyle())
+ {
+ case PBS_BEVELED:
+ case PBS_INSET:
+ return GetBorderWidth() / 2;
+ }
+ */
+ return 0;
}
-void CPWL_Wnd::SetBorderWidth(int32_t nBorderWidth)
-{
- if (HasFlag(PWS_BORDER))
- m_sPrivateParam.dwBorderWidth = nBorderWidth;
+void CPWL_Wnd::SetBorderWidth(int32_t nBorderWidth) {
+ if (HasFlag(PWS_BORDER))
+ m_sPrivateParam.dwBorderWidth = nBorderWidth;
}
-CPWL_Color CPWL_Wnd::GetBorderColor() const
-{
- if (HasFlag(PWS_BORDER))
- return m_sPrivateParam.sBorderColor;
+CPWL_Color CPWL_Wnd::GetBorderColor() const {
+ if (HasFlag(PWS_BORDER))
+ return m_sPrivateParam.sBorderColor;
- return CPWL_Color();
+ return CPWL_Color();
}
-void CPWL_Wnd::SetBorderColor(const CPWL_Color & color)
-{
- if (HasFlag(PWS_BORDER))
- m_sPrivateParam.sBorderColor = color;
+void CPWL_Wnd::SetBorderColor(const CPWL_Color& color) {
+ if (HasFlag(PWS_BORDER))
+ m_sPrivateParam.sBorderColor = color;
}
-CPWL_Dash CPWL_Wnd::GetBorderDash() const
-{
- return m_sPrivateParam.sDash;
+CPWL_Dash CPWL_Wnd::GetBorderDash() const {
+ return m_sPrivateParam.sDash;
}
-void* CPWL_Wnd::GetAttachedData() const
-{
- return m_sPrivateParam.pAttachedData;
+void* CPWL_Wnd::GetAttachedData() const {
+ return m_sPrivateParam.pAttachedData;
}
-void CPWL_Wnd::SetBorderDash(const CPWL_Dash & sDash)
-{
- if (HasFlag(PWS_BORDER))
- m_sPrivateParam.sDash = sDash;
+void CPWL_Wnd::SetBorderDash(const CPWL_Dash& sDash) {
+ if (HasFlag(PWS_BORDER))
+ m_sPrivateParam.sDash = sDash;
}
-CPWL_ScrollBar* CPWL_Wnd::GetVScrollBar() const
-{
- if (HasFlag(PWS_VSCROLL))
- return m_pVScrollBar;
+CPWL_ScrollBar* CPWL_Wnd::GetVScrollBar() const {
+ if (HasFlag(PWS_VSCROLL))
+ return m_pVScrollBar;
- return NULL;
+ return NULL;
}
-void CPWL_Wnd::CreateScrollBar(const PWL_CREATEPARAM & cp)
-{
- CreateVScrollBar(cp);
+void CPWL_Wnd::CreateScrollBar(const PWL_CREATEPARAM& cp) {
+ CreateVScrollBar(cp);
}
-void CPWL_Wnd::CreateVScrollBar(const PWL_CREATEPARAM & cp)
-{
- if (!m_pVScrollBar && HasFlag(PWS_VSCROLL))
- {
- PWL_CREATEPARAM scp = cp;
+void CPWL_Wnd::CreateVScrollBar(const PWL_CREATEPARAM& cp) {
+ if (!m_pVScrollBar && HasFlag(PWS_VSCROLL)) {
+ PWL_CREATEPARAM scp = cp;
- //flags
- scp.dwFlags = PWS_CHILD| PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP;
+ // flags
+ scp.dwFlags =
+ PWS_CHILD | PWS_BACKGROUND | PWS_AUTOTRANSPARENT | PWS_NOREFRESHCLIP;
- scp.pParentWnd = this;
- scp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
- scp.eCursorType = FXCT_ARROW;
- scp.nTransparency = PWL_SCROLLBAR_TRANSPARANCY;
+ scp.pParentWnd = this;
+ scp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR;
+ scp.eCursorType = FXCT_ARROW;
+ scp.nTransparency = PWL_SCROLLBAR_TRANSPARANCY;
- if ((m_pVScrollBar = new CPWL_ScrollBar(SBT_VSCROLL)))
- m_pVScrollBar->Create(scp);
- }
+ if ((m_pVScrollBar = new CPWL_ScrollBar(SBT_VSCROLL)))
+ m_pVScrollBar->Create(scp);
+ }
}
-void CPWL_Wnd::SetCapture()
-{
- if (CPWL_MsgControl * pMsgCtrl = GetMsgControl())
- pMsgCtrl->SetCapture(this);
+void CPWL_Wnd::SetCapture() {
+ if (CPWL_MsgControl* pMsgCtrl = GetMsgControl())
+ pMsgCtrl->SetCapture(this);
}
-void CPWL_Wnd::ReleaseCapture()
-{
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- pChild->ReleaseCapture();
+void CPWL_Wnd::ReleaseCapture() {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++)
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
+ pChild->ReleaseCapture();
- if (CPWL_MsgControl * pMsgCtrl = GetMsgControl())
- pMsgCtrl->ReleaseCapture();
+ if (CPWL_MsgControl* pMsgCtrl = GetMsgControl())
+ pMsgCtrl->ReleaseCapture();
}
-void CPWL_Wnd::SetFocus()
-{
- if (CPWL_MsgControl * pMsgCtrl = GetMsgControl())
- {
- if (!pMsgCtrl->IsMainCaptureKeyboard(this))
- pMsgCtrl->KillFocus();
- pMsgCtrl->SetFocus(this);
- }
+void CPWL_Wnd::SetFocus() {
+ if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) {
+ if (!pMsgCtrl->IsMainCaptureKeyboard(this))
+ pMsgCtrl->KillFocus();
+ pMsgCtrl->SetFocus(this);
+ }
}
-void CPWL_Wnd::KillFocus()
-{
- if (CPWL_MsgControl * pMsgCtrl = GetMsgControl())
- {
- if (pMsgCtrl->IsWndCaptureKeyboard(this))
- pMsgCtrl->KillFocus();
- }
+void CPWL_Wnd::KillFocus() {
+ if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) {
+ if (pMsgCtrl->IsWndCaptureKeyboard(this))
+ pMsgCtrl->KillFocus();
+ }
}
-void CPWL_Wnd::OnSetFocus()
-{
-}
+void CPWL_Wnd::OnSetFocus() {}
-void CPWL_Wnd::OnKillFocus()
-{
-}
+void CPWL_Wnd::OnKillFocus() {}
-FX_BOOL CPWL_Wnd::WndHitTest(const CPDF_Point & point) const
-{
- return IsValid() && IsVisible() && GetWindowRect().Contains(point.x,point.y);
+FX_BOOL CPWL_Wnd::WndHitTest(const CPDF_Point& point) const {
+ return IsValid() && IsVisible() && GetWindowRect().Contains(point.x, point.y);
}
-FX_BOOL CPWL_Wnd::ClientHitTest(const CPDF_Point & point) const
-{
- return IsValid() && IsVisible() && GetClientRect().Contains(point.x,point.y);
+FX_BOOL CPWL_Wnd::ClientHitTest(const CPDF_Point& point) const {
+ return IsValid() && IsVisible() && GetClientRect().Contains(point.x, point.y);
}
-const CPWL_Wnd* CPWL_Wnd::GetRootWnd() const
-{
- if (m_sPrivateParam.pParentWnd)
- return m_sPrivateParam.pParentWnd->GetRootWnd();
+const CPWL_Wnd* CPWL_Wnd::GetRootWnd() const {
+ if (m_sPrivateParam.pParentWnd)
+ return m_sPrivateParam.pParentWnd->GetRootWnd();
- return this;
+ return this;
}
-void CPWL_Wnd::SetVisible(FX_BOOL bVisible)
-{
- if (IsValid())
- {
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- pChild->SetVisible(bVisible);
- }
- }
+void CPWL_Wnd::SetVisible(FX_BOOL bVisible) {
+ if (IsValid()) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ pChild->SetVisible(bVisible);
+ }
+ }
- if (bVisible != m_bVisible)
- {
- m_bVisible = bVisible;
- RePosChildWnd();
- InvalidateRect();
- }
+ if (bVisible != m_bVisible) {
+ m_bVisible = bVisible;
+ RePosChildWnd();
+ InvalidateRect();
}
+ }
}
-void CPWL_Wnd::SetClipRect(const CPDF_Rect & rect)
-{
- m_rcClip = rect;
- m_rcClip.Normalize();
+void CPWL_Wnd::SetClipRect(const CPDF_Rect& rect) {
+ m_rcClip = rect;
+ m_rcClip.Normalize();
}
-CPDF_Rect CPWL_Wnd::GetClipRect() const
-{
- return m_rcClip;
+CPDF_Rect CPWL_Wnd::GetClipRect() const {
+ return m_rcClip;
}
-FX_BOOL CPWL_Wnd::IsReadOnly() const
-{
- return HasFlag(PWS_READONLY);
+FX_BOOL CPWL_Wnd::IsReadOnly() const {
+ return HasFlag(PWS_READONLY);
}
-void CPWL_Wnd::RePosChildWnd()
-{
- CPDF_Rect rcContent = CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth()));
+void CPWL_Wnd::RePosChildWnd() {
+ CPDF_Rect rcContent = CPWL_Utils::DeflateRect(
+ GetWindowRect(), (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
- CPWL_ScrollBar * pVSB = GetVScrollBar();
+ CPWL_ScrollBar* pVSB = GetVScrollBar();
- CPDF_Rect rcVScroll = CPDF_Rect(rcContent.right - PWL_SCROLLBAR_WIDTH,
- rcContent.bottom,
- rcContent.right-1.0f,
- rcContent.top);
+ CPDF_Rect rcVScroll =
+ CPDF_Rect(rcContent.right - PWL_SCROLLBAR_WIDTH, rcContent.bottom,
+ rcContent.right - 1.0f, rcContent.top);
- if (pVSB) pVSB->Move(rcVScroll,TRUE,FALSE);
+ if (pVSB)
+ pVSB->Move(rcVScroll, TRUE, FALSE);
}
-void CPWL_Wnd::CreateChildWnd(const PWL_CREATEPARAM & cp)
-{
-}
+void CPWL_Wnd::CreateChildWnd(const PWL_CREATEPARAM& cp) {}
-void CPWL_Wnd::SetCursor()
-{
- if (IsValid())
- {
- if (IFX_SystemHandler* pSH = GetSystemHandler())
- {
- int32_t nCursorType = GetCreationParam().eCursorType;
- pSH->SetCursor(nCursorType);
- }
+void CPWL_Wnd::SetCursor() {
+ if (IsValid()) {
+ if (IFX_SystemHandler* pSH = GetSystemHandler()) {
+ int32_t nCursorType = GetCreationParam().eCursorType;
+ pSH->SetCursor(nCursorType);
}
+ }
}
-void CPWL_Wnd::CreateMsgControl()
-{
- if (!m_sPrivateParam.pMsgControl)
- m_sPrivateParam.pMsgControl = new CPWL_MsgControl(this);
+void CPWL_Wnd::CreateMsgControl() {
+ if (!m_sPrivateParam.pMsgControl)
+ m_sPrivateParam.pMsgControl = new CPWL_MsgControl(this);
}
-void CPWL_Wnd::DestroyMsgControl()
-{
- if (CPWL_MsgControl* pMsgControl = GetMsgControl())
- if (pMsgControl->IsWndCreated(this))
- delete pMsgControl;
+void CPWL_Wnd::DestroyMsgControl() {
+ if (CPWL_MsgControl* pMsgControl = GetMsgControl())
+ if (pMsgControl->IsWndCreated(this))
+ delete pMsgControl;
}
-CPWL_MsgControl* CPWL_Wnd::GetMsgControl() const
-{
- return m_sPrivateParam.pMsgControl;
+CPWL_MsgControl* CPWL_Wnd::GetMsgControl() const {
+ return m_sPrivateParam.pMsgControl;
}
-FX_BOOL CPWL_Wnd::IsCaptureMouse() const
-{
- return IsWndCaptureMouse(this);
+FX_BOOL CPWL_Wnd::IsCaptureMouse() const {
+ return IsWndCaptureMouse(this);
}
-FX_BOOL CPWL_Wnd::IsWndCaptureMouse(const CPWL_Wnd * pWnd) const
-{
- if (CPWL_MsgControl * pCtrl = GetMsgControl())
- return pCtrl->IsWndCaptureMouse(pWnd);
+FX_BOOL CPWL_Wnd::IsWndCaptureMouse(const CPWL_Wnd* pWnd) const {
+ if (CPWL_MsgControl* pCtrl = GetMsgControl())
+ return pCtrl->IsWndCaptureMouse(pWnd);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_Wnd::IsWndCaptureKeyboard(const CPWL_Wnd * pWnd) const
-{
- if (CPWL_MsgControl * pCtrl = GetMsgControl())
- return pCtrl->IsWndCaptureKeyboard(pWnd);
+FX_BOOL CPWL_Wnd::IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const {
+ if (CPWL_MsgControl* pCtrl = GetMsgControl())
+ return pCtrl->IsWndCaptureKeyboard(pWnd);
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_Wnd::IsFocused() const
-{
- if (CPWL_MsgControl * pCtrl = GetMsgControl())
- return pCtrl->IsMainCaptureKeyboard(this);
+FX_BOOL CPWL_Wnd::IsFocused() const {
+ if (CPWL_MsgControl* pCtrl = GetMsgControl())
+ return pCtrl->IsMainCaptureKeyboard(this);
- return FALSE;
+ return FALSE;
}
-CPDF_Rect CPWL_Wnd::GetFocusRect() const
-{
- return CPWL_Utils::InflateRect(GetWindowRect(),1);
+CPDF_Rect CPWL_Wnd::GetFocusRect() const {
+ return CPWL_Utils::InflateRect(GetWindowRect(), 1);
}
-FX_FLOAT CPWL_Wnd::GetFontSize() const
-{
- return m_sPrivateParam.fFontSize;
+FX_FLOAT CPWL_Wnd::GetFontSize() const {
+ return m_sPrivateParam.fFontSize;
}
-void CPWL_Wnd::SetFontSize(FX_FLOAT fFontSize)
-{
- m_sPrivateParam.fFontSize = fFontSize;
+void CPWL_Wnd::SetFontSize(FX_FLOAT fFontSize) {
+ m_sPrivateParam.fFontSize = fFontSize;
}
-IFX_SystemHandler* CPWL_Wnd::GetSystemHandler() const
-{
- return m_sPrivateParam.pSystemHandler;
+IFX_SystemHandler* CPWL_Wnd::GetSystemHandler() const {
+ return m_sPrivateParam.pSystemHandler;
}
-IPWL_FocusHandler* CPWL_Wnd::GetFocusHandler() const
-{
- return m_sPrivateParam.pFocusHandler;
+IPWL_FocusHandler* CPWL_Wnd::GetFocusHandler() const {
+ return m_sPrivateParam.pFocusHandler;
}
-IPWL_Provider* CPWL_Wnd::GetProvider() const
-{
- return m_sPrivateParam.pProvider;
+IPWL_Provider* CPWL_Wnd::GetProvider() const {
+ return m_sPrivateParam.pProvider;
}
-IFX_Edit_FontMap* CPWL_Wnd::GetFontMap() const
-{
- return m_sPrivateParam.pFontMap;
+IFX_Edit_FontMap* CPWL_Wnd::GetFontMap() const {
+ return m_sPrivateParam.pFontMap;
}
-CPWL_Color CPWL_Wnd::GetBorderLeftTopColor(int32_t nBorderStyle) const
-{
- CPWL_Color color;
+CPWL_Color CPWL_Wnd::GetBorderLeftTopColor(int32_t nBorderStyle) const {
+ CPWL_Color color;
- switch (nBorderStyle)
- {
- case PBS_SOLID:
- break;
- case PBS_DASH:
- break;
- case PBS_BEVELED:
- color = CPWL_Color(COLORTYPE_GRAY,1);
- break;
- case PBS_INSET:
- color = CPWL_Color(COLORTYPE_GRAY,0.5f);
- break;
- case PBS_UNDERLINED:
- break;
- }
+ switch (nBorderStyle) {
+ case PBS_SOLID:
+ break;
+ case PBS_DASH:
+ break;
+ case PBS_BEVELED:
+ color = CPWL_Color(COLORTYPE_GRAY, 1);
+ break;
+ case PBS_INSET:
+ color = CPWL_Color(COLORTYPE_GRAY, 0.5f);
+ break;
+ case PBS_UNDERLINED:
+ break;
+ }
- return color;
-}
-
-CPWL_Color CPWL_Wnd::GetBorderRightBottomColor(int32_t nBorderStyle) const
-{
- CPWL_Color color;
-
- switch (nBorderStyle)
- {
- case PBS_SOLID:
- break;
- case PBS_DASH:
- break;
- case PBS_BEVELED:
- color = CPWL_Utils::DevideColor(GetBackgroundColor(),2);
- break;
- case PBS_INSET:
- color = CPWL_Color(COLORTYPE_GRAY,0.75f);
- break;
- case PBS_UNDERLINED:
- break;
- }
+ return color;
+}
+
+CPWL_Color CPWL_Wnd::GetBorderRightBottomColor(int32_t nBorderStyle) const {
+ CPWL_Color color;
- return color;
+ switch (nBorderStyle) {
+ case PBS_SOLID:
+ break;
+ case PBS_DASH:
+ break;
+ case PBS_BEVELED:
+ color = CPWL_Utils::DevideColor(GetBackgroundColor(), 2);
+ break;
+ case PBS_INSET:
+ color = CPWL_Color(COLORTYPE_GRAY, 0.75f);
+ break;
+ case PBS_UNDERLINED:
+ break;
+ }
+
+ return color;
}
/* ----------------------------------------------------------------- */
-int32_t CPWL_Wnd::GetTransparency()
-{
- return m_sPrivateParam.nTransparency;
+int32_t CPWL_Wnd::GetTransparency() {
+ return m_sPrivateParam.nTransparency;
}
-void CPWL_Wnd::SetTransparency(int32_t nTransparency)
-{
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- pChild->SetTransparency(nTransparency);
- }
+void CPWL_Wnd::SetTransparency(int32_t nTransparency) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ pChild->SetTransparency(nTransparency);
}
+ }
- m_sPrivateParam.nTransparency = nTransparency;
+ m_sPrivateParam.nTransparency = nTransparency;
}
-CPDF_Matrix CPWL_Wnd::GetWindowMatrix() const
-{
- CPDF_Matrix mt = GetChildToRoot();
-
- if (IPWL_Provider* pProvider = GetProvider())
- {
- mt.Concat(pProvider->GetWindowMatrix(GetAttachedData()));
- return mt;
- }
+CPDF_Matrix CPWL_Wnd::GetWindowMatrix() const {
+ CPDF_Matrix mt = GetChildToRoot();
+ if (IPWL_Provider* pProvider = GetProvider()) {
+ mt.Concat(pProvider->GetWindowMatrix(GetAttachedData()));
return mt;
+ }
+
+ return mt;
}
-void CPWL_Wnd::PWLtoWnd(const CPDF_Point& point, int32_t& x, int32_t& y) const
-{
- CPDF_Matrix mt = GetWindowMatrix();
- CPDF_Point pt = point;
- mt.Transform(pt.x,pt.y);
- x = (int32_t)(pt.x+0.5);
- y = (int32_t)(pt.y+0.5);
+void CPWL_Wnd::PWLtoWnd(const CPDF_Point& point, int32_t& x, int32_t& y) const {
+ CPDF_Matrix mt = GetWindowMatrix();
+ CPDF_Point pt = point;
+ mt.Transform(pt.x, pt.y);
+ x = (int32_t)(pt.x + 0.5);
+ y = (int32_t)(pt.y + 0.5);
}
-FX_RECT CPWL_Wnd::PWLtoWnd(const CPDF_Rect & rect) const
-{
- CPDF_Rect rcTemp = rect;
- CPDF_Matrix mt = GetWindowMatrix();
- mt.TransformRect(rcTemp);
- return FX_RECT((int32_t)(rcTemp.left+0.5), (int32_t)(rcTemp.bottom+0.5), (int32_t)(rcTemp.right+0.5), (int32_t)(rcTemp.top+0.5));
+FX_RECT CPWL_Wnd::PWLtoWnd(const CPDF_Rect& rect) const {
+ CPDF_Rect rcTemp = rect;
+ CPDF_Matrix mt = GetWindowMatrix();
+ mt.TransformRect(rcTemp);
+ return FX_RECT((int32_t)(rcTemp.left + 0.5), (int32_t)(rcTemp.bottom + 0.5),
+ (int32_t)(rcTemp.right + 0.5), (int32_t)(rcTemp.top + 0.5));
}
-FX_HWND CPWL_Wnd::GetAttachedHWnd() const
-{
- return m_sPrivateParam.hAttachedWnd;
+FX_HWND CPWL_Wnd::GetAttachedHWnd() const {
+ return m_sPrivateParam.hAttachedWnd;
}
-CPDF_Point CPWL_Wnd::ChildToParent(const CPDF_Point& point) const
-{
- CPDF_Matrix mt = GetChildMatrix();
- if (mt.IsIdentity())
- return point;
+CPDF_Point CPWL_Wnd::ChildToParent(const CPDF_Point& point) const {
+ CPDF_Matrix mt = GetChildMatrix();
+ if (mt.IsIdentity())
+ return point;
- CPDF_Point pt = point;
- mt.Transform(pt.x,pt.y);
- return pt;
+ CPDF_Point pt = point;
+ mt.Transform(pt.x, pt.y);
+ return pt;
}
-CPDF_Rect CPWL_Wnd::ChildToParent(const CPDF_Rect& rect) const
-{
- CPDF_Matrix mt = GetChildMatrix();
- if (mt.IsIdentity())
- return rect;
+CPDF_Rect CPWL_Wnd::ChildToParent(const CPDF_Rect& rect) const {
+ CPDF_Matrix mt = GetChildMatrix();
+ if (mt.IsIdentity())
+ return rect;
- CPDF_Rect rc = rect;
- mt.TransformRect(rc);
- return rc;
+ CPDF_Rect rc = rect;
+ mt.TransformRect(rc);
+ return rc;
}
-CPDF_Point CPWL_Wnd::ParentToChild(const CPDF_Point& point) const
-{
- CPDF_Matrix mt = GetChildMatrix();
- if (mt.IsIdentity())
- return point;
+CPDF_Point CPWL_Wnd::ParentToChild(const CPDF_Point& point) const {
+ CPDF_Matrix mt = GetChildMatrix();
+ if (mt.IsIdentity())
+ return point;
- mt.SetReverse(mt);
- CPDF_Point pt = point;
- mt.Transform(pt.x,pt.y);
- return pt;
+ mt.SetReverse(mt);
+ CPDF_Point pt = point;
+ mt.Transform(pt.x, pt.y);
+ return pt;
}
-CPDF_Rect CPWL_Wnd::ParentToChild(const CPDF_Rect& rect) const
-{
- CPDF_Matrix mt = GetChildMatrix();
- if (mt.IsIdentity())
- return rect;
+CPDF_Rect CPWL_Wnd::ParentToChild(const CPDF_Rect& rect) const {
+ CPDF_Matrix mt = GetChildMatrix();
+ if (mt.IsIdentity())
+ return rect;
- mt.SetReverse(mt);
- CPDF_Rect rc = rect;
- mt.TransformRect(rc);
- return rc;
+ mt.SetReverse(mt);
+ CPDF_Rect rc = rect;
+ mt.TransformRect(rc);
+ return rc;
}
-CPDF_Matrix CPWL_Wnd::GetChildToRoot() const
-{
- CPDF_Matrix mt(1, 0, 0, 1, 0, 0);
- if (HasFlag(PWS_CHILD))
- {
- const CPWL_Wnd* pParent = this;
- while (pParent)
- {
- mt.Concat(pParent->GetChildMatrix());
- pParent = pParent->GetParentWindow();
- }
+CPDF_Matrix CPWL_Wnd::GetChildToRoot() const {
+ CPDF_Matrix mt(1, 0, 0, 1, 0, 0);
+ if (HasFlag(PWS_CHILD)) {
+ const CPWL_Wnd* pParent = this;
+ while (pParent) {
+ mt.Concat(pParent->GetChildMatrix());
+ pParent = pParent->GetParentWindow();
}
- return mt;
+ }
+ return mt;
}
-CPDF_Matrix CPWL_Wnd::GetChildMatrix() const
-{
- if (HasFlag(PWS_CHILD))
- return m_sPrivateParam.mtChild;
+CPDF_Matrix CPWL_Wnd::GetChildMatrix() const {
+ if (HasFlag(PWS_CHILD))
+ return m_sPrivateParam.mtChild;
- return CPDF_Matrix(1,0,0,1,0,0);
+ return CPDF_Matrix(1, 0, 0, 1, 0, 0);
}
-void CPWL_Wnd::SetChildMatrix(const CPDF_Matrix& mt)
-{
- m_sPrivateParam.mtChild = mt;
+void CPWL_Wnd::SetChildMatrix(const CPDF_Matrix& mt) {
+ m_sPrivateParam.mtChild = mt;
}
-const CPWL_Wnd* CPWL_Wnd::GetFocused() const
-{
- if (CPWL_MsgControl * pMsgCtrl = GetMsgControl())
- {
- return pMsgCtrl->m_pMainKeyboardWnd;
- }
+const CPWL_Wnd* CPWL_Wnd::GetFocused() const {
+ if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) {
+ return pMsgCtrl->m_pMainKeyboardWnd;
+ }
- return NULL;
+ return NULL;
}
-void CPWL_Wnd::EnableWindow(FX_BOOL bEnable)
-{
- if (m_bEnabled != bEnable)
- {
- for (int32_t i=0,sz=m_aChildren.GetSize(); i<sz; i++)
- {
- if (CPWL_Wnd* pChild = m_aChildren.GetAt(i))
- {
- pChild->EnableWindow(bEnable);
- }
- }
+void CPWL_Wnd::EnableWindow(FX_BOOL bEnable) {
+ if (m_bEnabled != bEnable) {
+ for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) {
+ if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) {
+ pChild->EnableWindow(bEnable);
+ }
+ }
- m_bEnabled = bEnable;
+ m_bEnabled = bEnable;
- if (bEnable)
- OnEnabled();
- else
- OnDisabled();
- }
+ if (bEnable)
+ OnEnabled();
+ else
+ OnDisabled();
+ }
}
-FX_BOOL CPWL_Wnd::IsEnabled()
-{
- return m_bEnabled;
+FX_BOOL CPWL_Wnd::IsEnabled() {
+ return m_bEnabled;
}
-void CPWL_Wnd::OnEnabled()
-{
-}
+void CPWL_Wnd::OnEnabled() {}
-void CPWL_Wnd::OnDisabled()
-{
-}
+void CPWL_Wnd::OnDisabled() {}
-FX_BOOL CPWL_Wnd::IsCTRLpressed(FX_DWORD nFlag) const
-{
- if (IFX_SystemHandler* pSystemHandler = GetSystemHandler())
- {
- return pSystemHandler->IsCTRLKeyDown(nFlag);
- }
+FX_BOOL CPWL_Wnd::IsCTRLpressed(FX_DWORD nFlag) const {
+ if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) {
+ return pSystemHandler->IsCTRLKeyDown(nFlag);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_Wnd::IsSHIFTpressed(FX_DWORD nFlag) const
-{
- if (IFX_SystemHandler* pSystemHandler = GetSystemHandler())
- {
- return pSystemHandler->IsSHIFTKeyDown(nFlag);
- }
+FX_BOOL CPWL_Wnd::IsSHIFTpressed(FX_DWORD nFlag) const {
+ if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) {
+ return pSystemHandler->IsSHIFTKeyDown(nFlag);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_Wnd::IsALTpressed(FX_DWORD nFlag) const
-{
- if (IFX_SystemHandler* pSystemHandler = GetSystemHandler())
- {
- return pSystemHandler->IsALTKeyDown(nFlag);
- }
+FX_BOOL CPWL_Wnd::IsALTpressed(FX_DWORD nFlag) const {
+ if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) {
+ return pSystemHandler->IsALTKeyDown(nFlag);
+ }
- return FALSE;
+ return FALSE;
}
-FX_BOOL CPWL_Wnd::IsINSERTpressed(FX_DWORD nFlag) const
-{
- if (IFX_SystemHandler* pSystemHandler = GetSystemHandler())
- {
- return pSystemHandler->IsINSERTKeyDown(nFlag);
- }
+FX_BOOL CPWL_Wnd::IsINSERTpressed(FX_DWORD nFlag) const {
+ if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) {
+ return pSystemHandler->IsINSERTKeyDown(nFlag);
+ }
- return FALSE;
+ return FALSE;
}
diff --git a/fpdfsdk/src/resource.h b/fpdfsdk/src/resource.h
index 1729807951..a30a4ef45f 100644
--- a/fpdfsdk/src/resource.h
+++ b/fpdfsdk/src/resource.h
@@ -15,10 +15,10 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 104
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1000
-#define _APS_NEXT_SYMED_VALUE 101
+#define _APS_NEXT_RESOURCE_VALUE 104
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif