OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "fpdfsdk/include/fsdk_baseform.h" | 7 #include "fpdfsdk/include/fsdk_baseform.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 CPDF_Annot::AppearanceMode mode, | 809 CPDF_Annot::AppearanceMode mode, |
810 const CPDF_RenderOptions* pOptions) { | 810 const CPDF_RenderOptions* pOptions) { |
811 int nFieldType = GetFieldType(); | 811 int nFieldType = GetFieldType(); |
812 | 812 |
813 if ((nFieldType == FIELDTYPE_CHECKBOX || | 813 if ((nFieldType == FIELDTYPE_CHECKBOX || |
814 nFieldType == FIELDTYPE_RADIOBUTTON) && | 814 nFieldType == FIELDTYPE_RADIOBUTTON) && |
815 mode == CPDF_Annot::Normal && | 815 mode == CPDF_Annot::Normal && |
816 !IsWidgetAppearanceValid(CPDF_Annot::Normal)) { | 816 !IsWidgetAppearanceValid(CPDF_Annot::Normal)) { |
817 CFX_PathData pathData; | 817 CFX_PathData pathData; |
818 | 818 |
819 CPDF_Rect rcAnnot = GetRect(); | 819 CFX_FloatRect rcAnnot = GetRect(); |
820 | 820 |
821 pathData.AppendRect(rcAnnot.left, rcAnnot.bottom, rcAnnot.right, | 821 pathData.AppendRect(rcAnnot.left, rcAnnot.bottom, rcAnnot.right, |
822 rcAnnot.top); | 822 rcAnnot.top); |
823 | 823 |
824 CFX_GraphStateData gsd; | 824 CFX_GraphStateData gsd; |
825 gsd.m_LineWidth = 0.0f; | 825 gsd.m_LineWidth = 0.0f; |
826 | 826 |
827 pDevice->DrawPath(&pathData, pUser2Device, &gsd, 0, 0xFFAAAAAA, | 827 pDevice->DrawPath(&pathData, pUser2Device, &gsd, 0, 0xFFAAAAAA, |
828 FXFILL_ALTERNATE); | 828 FXFILL_ALTERNATE); |
829 } else { | 829 } else { |
830 CPDFSDK_BAAnnot::DrawAppearance(pDevice, pUser2Device, mode, pOptions); | 830 CPDFSDK_BAAnnot::DrawAppearance(pDevice, pUser2Device, mode, pOptions); |
831 } | 831 } |
832 } | 832 } |
833 | 833 |
834 void CPDFSDK_Widget::UpdateField() { | 834 void CPDFSDK_Widget::UpdateField() { |
835 CPDF_FormField* pFormField = GetFormField(); | 835 CPDF_FormField* pFormField = GetFormField(); |
836 ASSERT(pFormField); | 836 ASSERT(pFormField); |
837 m_pInterForm->UpdateField(pFormField); | 837 m_pInterForm->UpdateField(pFormField); |
838 } | 838 } |
839 | 839 |
840 void CPDFSDK_Widget::DrawShadow(CFX_RenderDevice* pDevice, | 840 void CPDFSDK_Widget::DrawShadow(CFX_RenderDevice* pDevice, |
841 CPDFSDK_PageView* pPageView) { | 841 CPDFSDK_PageView* pPageView) { |
842 int nFieldType = GetFieldType(); | 842 int nFieldType = GetFieldType(); |
843 if (m_pInterForm->IsNeedHighLight(nFieldType)) { | 843 if (m_pInterForm->IsNeedHighLight(nFieldType)) { |
844 CPDF_Rect rc = GetRect(); | 844 CFX_FloatRect rc = GetRect(); |
845 FX_COLORREF color = m_pInterForm->GetHighlightColor(nFieldType); | 845 FX_COLORREF color = m_pInterForm->GetHighlightColor(nFieldType); |
846 uint8_t alpha = m_pInterForm->GetHighlightAlpha(); | 846 uint8_t alpha = m_pInterForm->GetHighlightAlpha(); |
847 | 847 |
848 CFX_FloatRect rcDevice; | 848 CFX_FloatRect rcDevice; |
849 ASSERT(m_pInterForm->GetDocument()); | 849 ASSERT(m_pInterForm->GetDocument()); |
850 CPDFDoc_Environment* pEnv = m_pInterForm->GetDocument()->GetEnv(); | 850 CPDFDoc_Environment* pEnv = m_pInterForm->GetDocument()->GetEnv(); |
851 if (!pEnv) | 851 if (!pEnv) |
852 return; | 852 return; |
853 CFX_Matrix page2device; | 853 CFX_Matrix page2device; |
854 pPageView->GetCurrentMatrix(page2device); | 854 pPageView->GetCurrentMatrix(page2device); |
855 page2device.Transform(((FX_FLOAT)rc.left), ((FX_FLOAT)rc.bottom), | 855 page2device.Transform(((FX_FLOAT)rc.left), ((FX_FLOAT)rc.bottom), |
856 rcDevice.left, rcDevice.bottom); | 856 rcDevice.left, rcDevice.bottom); |
857 page2device.Transform(((FX_FLOAT)rc.right), ((FX_FLOAT)rc.top), | 857 page2device.Transform(((FX_FLOAT)rc.right), ((FX_FLOAT)rc.top), |
858 rcDevice.right, rcDevice.top); | 858 rcDevice.right, rcDevice.top); |
859 | 859 |
860 rcDevice.Normalize(); | 860 rcDevice.Normalize(); |
861 | 861 |
862 FX_ARGB argb = ArgbEncode((int)alpha, color); | 862 FX_ARGB argb = ArgbEncode((int)alpha, color); |
863 FX_RECT rcDev((int)rcDevice.left, (int)rcDevice.top, (int)rcDevice.right, | 863 FX_RECT rcDev((int)rcDevice.left, (int)rcDevice.top, (int)rcDevice.right, |
864 (int)rcDevice.bottom); | 864 (int)rcDevice.bottom); |
865 pDevice->FillRect(&rcDev, argb); | 865 pDevice->FillRect(&rcDev, argb); |
866 } | 866 } |
867 } | 867 } |
868 | 868 |
869 void CPDFSDK_Widget::ResetAppearance_PushButton() { | 869 void CPDFSDK_Widget::ResetAppearance_PushButton() { |
870 CPDF_FormControl* pControl = GetFormControl(); | 870 CPDF_FormControl* pControl = GetFormControl(); |
871 CPDF_Rect rcWindow = GetRotatedRect(); | 871 CFX_FloatRect rcWindow = GetRotatedRect(); |
872 int32_t nLayout = 0; | 872 int32_t nLayout = 0; |
873 switch (pControl->GetTextPosition()) { | 873 switch (pControl->GetTextPosition()) { |
874 case TEXTPOS_ICON: | 874 case TEXTPOS_ICON: |
875 nLayout = PPBL_ICON; | 875 nLayout = PPBL_ICON; |
876 break; | 876 break; |
877 case TEXTPOS_BELOW: | 877 case TEXTPOS_BELOW: |
878 nLayout = PPBL_ICONTOPLABELBOTTOM; | 878 nLayout = PPBL_ICONTOPLABELBOTTOM; |
879 break; | 879 break; |
880 case TEXTPOS_ABOVE: | 880 case TEXTPOS_ABOVE: |
881 nLayout = PPBL_LABELTOPICONBOTTOM; | 881 nLayout = PPBL_LABELTOPICONBOTTOM; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); | 930 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); |
931 break; | 931 break; |
932 case BBS_UNDERLINE: | 932 case BBS_UNDERLINE: |
933 nBorderStyle = PBS_UNDERLINED; | 933 nBorderStyle = PBS_UNDERLINED; |
934 break; | 934 break; |
935 default: | 935 default: |
936 nBorderStyle = PBS_SOLID; | 936 nBorderStyle = PBS_SOLID; |
937 break; | 937 break; |
938 } | 938 } |
939 | 939 |
940 CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); | 940 CFX_FloatRect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); |
941 | 941 |
942 CPWL_Color crText(COLORTYPE_GRAY, 0); | 942 CPWL_Color crText(COLORTYPE_GRAY, 0); |
943 | 943 |
944 FX_FLOAT fFontSize = 12.0f; | 944 FX_FLOAT fFontSize = 12.0f; |
945 CFX_ByteString csNameTag; | 945 CFX_ByteString csNameTag; |
946 | 946 |
947 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); | 947 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); |
948 if (da.HasColor()) { | 948 if (da.HasColor()) { |
949 da.GetColor(iColorType, fc); | 949 da.GetColor(iColorType, fc); |
950 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); | 950 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1118 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); | 1118 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); |
1119 break; | 1119 break; |
1120 case BBS_UNDERLINE: | 1120 case BBS_UNDERLINE: |
1121 nBorderStyle = PBS_UNDERLINED; | 1121 nBorderStyle = PBS_UNDERLINED; |
1122 break; | 1122 break; |
1123 default: | 1123 default: |
1124 nBorderStyle = PBS_SOLID; | 1124 nBorderStyle = PBS_SOLID; |
1125 break; | 1125 break; |
1126 } | 1126 } |
1127 | 1127 |
1128 CPDF_Rect rcWindow = GetRotatedRect(); | 1128 CFX_FloatRect rcWindow = GetRotatedRect(); |
1129 CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); | 1129 CFX_FloatRect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); |
1130 | 1130 |
1131 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); | 1131 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); |
1132 if (da.HasColor()) { | 1132 if (da.HasColor()) { |
1133 da.GetColor(iColorType, fc); | 1133 da.GetColor(iColorType, fc); |
1134 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); | 1134 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); |
1135 } | 1135 } |
1136 | 1136 |
1137 int32_t nStyle = 0; | 1137 int32_t nStyle = 0; |
1138 | 1138 |
1139 CFX_WideString csWCaption = pControl->GetNormalCaption(); | 1139 CFX_WideString csWCaption = pControl->GetNormalCaption(); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1244 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); | 1244 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); |
1245 break; | 1245 break; |
1246 case BBS_UNDERLINE: | 1246 case BBS_UNDERLINE: |
1247 nBorderStyle = PBS_UNDERLINED; | 1247 nBorderStyle = PBS_UNDERLINED; |
1248 break; | 1248 break; |
1249 default: | 1249 default: |
1250 nBorderStyle = PBS_SOLID; | 1250 nBorderStyle = PBS_SOLID; |
1251 break; | 1251 break; |
1252 } | 1252 } |
1253 | 1253 |
1254 CPDF_Rect rcWindow = GetRotatedRect(); | 1254 CFX_FloatRect rcWindow = GetRotatedRect(); |
1255 CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); | 1255 CFX_FloatRect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); |
1256 | 1256 |
1257 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); | 1257 CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); |
1258 if (da.HasColor()) { | 1258 if (da.HasColor()) { |
1259 da.GetColor(iColorType, fc); | 1259 da.GetColor(iColorType, fc); |
1260 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); | 1260 crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); |
1261 } | 1261 } |
1262 | 1262 |
1263 int32_t nStyle = 0; | 1263 int32_t nStyle = 0; |
1264 | 1264 |
1265 CFX_WideString csWCaption = pControl->GetNormalCaption(); | 1265 CFX_WideString csWCaption = pControl->GetNormalCaption(); |
(...skipping 17 matching lines...) Expand all Loading... |
1283 case L'4': | 1283 case L'4': |
1284 nStyle = PCS_CHECK; | 1284 nStyle = PCS_CHECK; |
1285 break; | 1285 break; |
1286 } | 1286 } |
1287 } else { | 1287 } else { |
1288 nStyle = PCS_CIRCLE; | 1288 nStyle = PCS_CIRCLE; |
1289 } | 1289 } |
1290 | 1290 |
1291 CFX_ByteString csAP_N_ON; | 1291 CFX_ByteString csAP_N_ON; |
1292 | 1292 |
1293 CPDF_Rect rcCenter = | 1293 CFX_FloatRect rcCenter = |
1294 CPWL_Utils::DeflateRect(CPWL_Utils::GetCenterSquare(rcWindow), 1.0f); | 1294 CPWL_Utils::DeflateRect(CPWL_Utils::GetCenterSquare(rcWindow), 1.0f); |
1295 | 1295 |
1296 if (nStyle == PCS_CIRCLE) { | 1296 if (nStyle == PCS_CIRCLE) { |
1297 if (nBorderStyle == PBS_BEVELED) { | 1297 if (nBorderStyle == PBS_BEVELED) { |
1298 crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1); | 1298 crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1); |
1299 crRightBottom = CPWL_Utils::SubstractColor(crBackground, 0.25f); | 1299 crRightBottom = CPWL_Utils::SubstractColor(crBackground, 0.25f); |
1300 } else if (nBorderStyle == PBS_INSET) { | 1300 } else if (nBorderStyle == PBS_INSET) { |
1301 crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5f); | 1301 crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5f); |
1302 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75f); | 1302 crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75f); |
1303 } | 1303 } |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 CFX_ByteString csAS = GetAppState(); | 1368 CFX_ByteString csAS = GetAppState(); |
1369 if (csAS.IsEmpty()) | 1369 if (csAS.IsEmpty()) |
1370 SetAppState("Off"); | 1370 SetAppState("Off"); |
1371 } | 1371 } |
1372 | 1372 |
1373 void CPDFSDK_Widget::ResetAppearance_ComboBox(const FX_WCHAR* sValue) { | 1373 void CPDFSDK_Widget::ResetAppearance_ComboBox(const FX_WCHAR* sValue) { |
1374 CPDF_FormControl* pControl = GetFormControl(); | 1374 CPDF_FormControl* pControl = GetFormControl(); |
1375 CPDF_FormField* pField = pControl->GetField(); | 1375 CPDF_FormField* pField = pControl->GetField(); |
1376 CFX_ByteTextBuf sBody, sLines; | 1376 CFX_ByteTextBuf sBody, sLines; |
1377 | 1377 |
1378 CPDF_Rect rcClient = GetClientRect(); | 1378 CFX_FloatRect rcClient = GetClientRect(); |
1379 CPDF_Rect rcButton = rcClient; | 1379 CFX_FloatRect rcButton = rcClient; |
1380 rcButton.left = rcButton.right - 13; | 1380 rcButton.left = rcButton.right - 13; |
1381 rcButton.Normalize(); | 1381 rcButton.Normalize(); |
1382 | 1382 |
1383 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { | 1383 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { |
1384 pEdit->EnableRefresh(FALSE); | 1384 pEdit->EnableRefresh(FALSE); |
1385 | 1385 |
1386 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); | 1386 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); |
1387 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); | 1387 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); |
1388 CBA_FontMap font_map(this, pEnv->GetSysHandler()); | 1388 CBA_FontMap font_map(this, pEnv->GetSysHandler()); |
1389 pEdit->SetFontMap(&font_map); | 1389 pEdit->SetFontMap(&font_map); |
1390 | 1390 |
1391 CPDF_Rect rcEdit = rcClient; | 1391 CFX_FloatRect rcEdit = rcClient; |
1392 rcEdit.right = rcButton.left; | 1392 rcEdit.right = rcButton.left; |
1393 rcEdit.Normalize(); | 1393 rcEdit.Normalize(); |
1394 | 1394 |
1395 pEdit->SetPlateRect(rcEdit); | 1395 pEdit->SetPlateRect(rcEdit); |
1396 pEdit->SetAlignmentV(1); | 1396 pEdit->SetAlignmentV(1); |
1397 | 1397 |
1398 FX_FLOAT fFontSize = GetFontSize(); | 1398 FX_FLOAT fFontSize = GetFontSize(); |
1399 if (IsFloatZero(fFontSize)) | 1399 if (IsFloatZero(fFontSize)) |
1400 pEdit->SetAutoFontSize(TRUE); | 1400 pEdit->SetAutoFontSize(TRUE); |
1401 else | 1401 else |
1402 pEdit->SetFontSize(fFontSize); | 1402 pEdit->SetFontSize(fFontSize); |
1403 | 1403 |
1404 pEdit->Initialize(); | 1404 pEdit->Initialize(); |
1405 | 1405 |
1406 if (sValue) { | 1406 if (sValue) { |
1407 pEdit->SetText(sValue); | 1407 pEdit->SetText(sValue); |
1408 } else { | 1408 } else { |
1409 int32_t nCurSel = pField->GetSelectedIndex(0); | 1409 int32_t nCurSel = pField->GetSelectedIndex(0); |
1410 | 1410 |
1411 if (nCurSel < 0) | 1411 if (nCurSel < 0) |
1412 pEdit->SetText(pField->GetValue().c_str()); | 1412 pEdit->SetText(pField->GetValue().c_str()); |
1413 else | 1413 else |
1414 pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str()); | 1414 pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str()); |
1415 } | 1415 } |
1416 | 1416 |
1417 CPDF_Rect rcContent = pEdit->GetContentRect(); | 1417 CFX_FloatRect rcContent = pEdit->GetContentRect(); |
1418 | 1418 |
1419 CFX_ByteString sEdit = | 1419 CFX_ByteString sEdit = |
1420 CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, 0.0f)); | 1420 CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, 0.0f)); |
1421 if (sEdit.GetLength() > 0) { | 1421 if (sEdit.GetLength() > 0) { |
1422 sBody << "/Tx BMC\n" | 1422 sBody << "/Tx BMC\n" |
1423 << "q\n"; | 1423 << "q\n"; |
1424 if (rcContent.Width() > rcEdit.Width() || | 1424 if (rcContent.Width() > rcEdit.Width() || |
1425 rcContent.Height() > rcEdit.Height()) { | 1425 rcContent.Height() > rcEdit.Height()) { |
1426 sBody << rcEdit.left << " " << rcEdit.bottom << " " << rcEdit.Width() | 1426 sBody << rcEdit.left << " " << rcEdit.bottom << " " << rcEdit.Width() |
1427 << " " << rcEdit.Height() << " re\nW\nn\n"; | 1427 << " " << rcEdit.Height() << " re\nW\nn\n"; |
1428 } | 1428 } |
1429 | 1429 |
1430 CPWL_Color crText = GetTextPWLColor(); | 1430 CPWL_Color crText = GetTextPWLColor(); |
1431 sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit | 1431 sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit |
1432 << "ET\n" | 1432 << "ET\n" |
1433 << "Q\nEMC\n"; | 1433 << "Q\nEMC\n"; |
1434 } | 1434 } |
1435 | 1435 |
1436 IFX_Edit::DelEdit(pEdit); | 1436 IFX_Edit::DelEdit(pEdit); |
1437 } | 1437 } |
1438 | 1438 |
1439 sBody << CPWL_Utils::GetDropButtonAppStream(rcButton); | 1439 sBody << CPWL_Utils::GetDropButtonAppStream(rcButton); |
1440 | 1440 |
1441 CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + | 1441 CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + |
1442 sLines.GetByteString() + sBody.GetByteString(); | 1442 sLines.GetByteString() + sBody.GetByteString(); |
1443 | 1443 |
1444 WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); | 1444 WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); |
1445 } | 1445 } |
1446 | 1446 |
1447 void CPDFSDK_Widget::ResetAppearance_ListBox() { | 1447 void CPDFSDK_Widget::ResetAppearance_ListBox() { |
1448 CPDF_FormControl* pControl = GetFormControl(); | 1448 CPDF_FormControl* pControl = GetFormControl(); |
1449 CPDF_FormField* pField = pControl->GetField(); | 1449 CPDF_FormField* pField = pControl->GetField(); |
1450 CPDF_Rect rcClient = GetClientRect(); | 1450 CFX_FloatRect rcClient = GetClientRect(); |
1451 CFX_ByteTextBuf sBody, sLines; | 1451 CFX_ByteTextBuf sBody, sLines; |
1452 | 1452 |
1453 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { | 1453 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { |
1454 pEdit->EnableRefresh(FALSE); | 1454 pEdit->EnableRefresh(FALSE); |
1455 | 1455 |
1456 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); | 1456 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); |
1457 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); | 1457 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); |
1458 | 1458 |
1459 CBA_FontMap font_map(this, pEnv->GetSysHandler()); | 1459 CBA_FontMap font_map(this, pEnv->GetSysHandler()); |
1460 pEdit->SetFontMap(&font_map); | 1460 pEdit->SetFontMap(&font_map); |
1461 | 1461 |
1462 pEdit->SetPlateRect(CPDF_Rect(rcClient.left, 0.0f, rcClient.right, 0.0f)); | 1462 pEdit->SetPlateRect( |
| 1463 CFX_FloatRect(rcClient.left, 0.0f, rcClient.right, 0.0f)); |
1463 | 1464 |
1464 FX_FLOAT fFontSize = GetFontSize(); | 1465 FX_FLOAT fFontSize = GetFontSize(); |
1465 | 1466 |
1466 if (IsFloatZero(fFontSize)) | 1467 if (IsFloatZero(fFontSize)) |
1467 pEdit->SetFontSize(12.0f); | 1468 pEdit->SetFontSize(12.0f); |
1468 else | 1469 else |
1469 pEdit->SetFontSize(fFontSize); | 1470 pEdit->SetFontSize(fFontSize); |
1470 | 1471 |
1471 pEdit->Initialize(); | 1472 pEdit->Initialize(); |
1472 | 1473 |
1473 CFX_ByteTextBuf sList; | 1474 CFX_ByteTextBuf sList; |
1474 FX_FLOAT fy = rcClient.top; | 1475 FX_FLOAT fy = rcClient.top; |
1475 | 1476 |
1476 int32_t nTop = pField->GetTopVisibleIndex(); | 1477 int32_t nTop = pField->GetTopVisibleIndex(); |
1477 int32_t nCount = pField->CountOptions(); | 1478 int32_t nCount = pField->CountOptions(); |
1478 int32_t nSelCount = pField->CountSelectedItems(); | 1479 int32_t nSelCount = pField->CountSelectedItems(); |
1479 | 1480 |
1480 for (int32_t i = nTop; i < nCount; i++) { | 1481 for (int32_t i = nTop; i < nCount; i++) { |
1481 FX_BOOL bSelected = FALSE; | 1482 FX_BOOL bSelected = FALSE; |
1482 for (int32_t j = 0; j < nSelCount; j++) { | 1483 for (int32_t j = 0; j < nSelCount; j++) { |
1483 if (pField->GetSelectedIndex(j) == i) { | 1484 if (pField->GetSelectedIndex(j) == i) { |
1484 bSelected = TRUE; | 1485 bSelected = TRUE; |
1485 break; | 1486 break; |
1486 } | 1487 } |
1487 } | 1488 } |
1488 | 1489 |
1489 pEdit->SetText(pField->GetOptionLabel(i).c_str()); | 1490 pEdit->SetText(pField->GetOptionLabel(i).c_str()); |
1490 | 1491 |
1491 CPDF_Rect rcContent = pEdit->GetContentRect(); | 1492 CFX_FloatRect rcContent = pEdit->GetContentRect(); |
1492 FX_FLOAT fItemHeight = rcContent.Height(); | 1493 FX_FLOAT fItemHeight = rcContent.Height(); |
1493 | 1494 |
1494 if (bSelected) { | 1495 if (bSelected) { |
1495 CPDF_Rect rcItem = | 1496 CFX_FloatRect rcItem = |
1496 CPDF_Rect(rcClient.left, fy - fItemHeight, rcClient.right, fy); | 1497 CFX_FloatRect(rcClient.left, fy - fItemHeight, rcClient.right, fy); |
1497 sList << "q\n" << CPWL_Utils::GetColorAppStream( | 1498 sList << "q\n" << CPWL_Utils::GetColorAppStream( |
1498 CPWL_Color(COLORTYPE_RGB, 0, 51.0f / 255.0f, | 1499 CPWL_Color(COLORTYPE_RGB, 0, 51.0f / 255.0f, |
1499 113.0f / 255.0f), | 1500 113.0f / 255.0f), |
1500 TRUE) | 1501 TRUE) |
1501 << rcItem.left << " " << rcItem.bottom << " " << rcItem.Width() | 1502 << rcItem.left << " " << rcItem.bottom << " " << rcItem.Width() |
1502 << " " << rcItem.Height() << " re f\n" | 1503 << " " << rcItem.Height() << " re f\n" |
1503 << "Q\n"; | 1504 << "Q\n"; |
1504 | 1505 |
1505 sList << "BT\n" << CPWL_Utils::GetColorAppStream( | 1506 sList << "BT\n" << CPWL_Utils::GetColorAppStream( |
1506 CPWL_Color(COLORTYPE_GRAY, 1), TRUE) | 1507 CPWL_Color(COLORTYPE_GRAY, 1), TRUE) |
1507 << CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, fy)) | 1508 << CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, fy)) |
1508 << "ET\n"; | 1509 << "ET\n"; |
1509 } else { | 1510 } else { |
1510 CPWL_Color crText = GetTextPWLColor(); | 1511 CPWL_Color crText = GetTextPWLColor(); |
1511 sList << "BT\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) | 1512 sList << "BT\n" << CPWL_Utils::GetColorAppStream(crText, TRUE) |
1512 << CPWL_Utils::GetEditAppStream(pEdit, CPDF_Point(0.0f, fy)) | 1513 << CPWL_Utils::GetEditAppStream(pEdit, CFX_FloatPoint(0.0f, fy)) |
1513 << "ET\n"; | 1514 << "ET\n"; |
1514 } | 1515 } |
1515 | 1516 |
1516 fy -= fItemHeight; | 1517 fy -= fItemHeight; |
1517 } | 1518 } |
1518 | 1519 |
1519 if (sList.GetSize() > 0) { | 1520 if (sList.GetSize() > 0) { |
1520 sBody << "/Tx BMC\n" | 1521 sBody << "/Tx BMC\n" |
1521 << "q\n" << rcClient.left << " " << rcClient.bottom << " " | 1522 << "q\n" << rcClient.left << " " << rcClient.bottom << " " |
1522 << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; | 1523 << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; |
(...skipping 16 matching lines...) Expand all Loading... |
1539 | 1540 |
1540 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { | 1541 if (IFX_Edit* pEdit = IFX_Edit::NewEdit()) { |
1541 pEdit->EnableRefresh(FALSE); | 1542 pEdit->EnableRefresh(FALSE); |
1542 | 1543 |
1543 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); | 1544 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); |
1544 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); | 1545 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); |
1545 | 1546 |
1546 CBA_FontMap font_map(this, pEnv->GetSysHandler()); | 1547 CBA_FontMap font_map(this, pEnv->GetSysHandler()); |
1547 pEdit->SetFontMap(&font_map); | 1548 pEdit->SetFontMap(&font_map); |
1548 | 1549 |
1549 CPDF_Rect rcClient = GetClientRect(); | 1550 CFX_FloatRect rcClient = GetClientRect(); |
1550 pEdit->SetPlateRect(rcClient); | 1551 pEdit->SetPlateRect(rcClient); |
1551 pEdit->SetAlignmentH(pControl->GetControlAlignment()); | 1552 pEdit->SetAlignmentH(pControl->GetControlAlignment()); |
1552 | 1553 |
1553 FX_DWORD dwFieldFlags = pField->GetFieldFlags(); | 1554 FX_DWORD dwFieldFlags = pField->GetFieldFlags(); |
1554 FX_BOOL bMultiLine = (dwFieldFlags >> 12) & 1; | 1555 FX_BOOL bMultiLine = (dwFieldFlags >> 12) & 1; |
1555 | 1556 |
1556 if (bMultiLine) { | 1557 if (bMultiLine) { |
1557 pEdit->SetMultiLine(TRUE); | 1558 pEdit->SetMultiLine(TRUE); |
1558 pEdit->SetAutoReturn(TRUE); | 1559 pEdit->SetAutoReturn(TRUE); |
1559 } else { | 1560 } else { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1598 else | 1599 else |
1599 pEdit->SetFontSize(fFontSize); | 1600 pEdit->SetFontSize(fFontSize); |
1600 | 1601 |
1601 pEdit->Initialize(); | 1602 pEdit->Initialize(); |
1602 | 1603 |
1603 if (sValue) | 1604 if (sValue) |
1604 pEdit->SetText(sValue); | 1605 pEdit->SetText(sValue); |
1605 else | 1606 else |
1606 pEdit->SetText(pField->GetValue().c_str()); | 1607 pEdit->SetText(pField->GetValue().c_str()); |
1607 | 1608 |
1608 CPDF_Rect rcContent = pEdit->GetContentRect(); | 1609 CFX_FloatRect rcContent = pEdit->GetContentRect(); |
1609 | 1610 |
1610 CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream( | 1611 CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream( |
1611 pEdit, CPDF_Point(0.0f, 0.0f), NULL, !bCharArray, subWord); | 1612 pEdit, CFX_FloatPoint(0.0f, 0.0f), NULL, !bCharArray, subWord); |
1612 | 1613 |
1613 if (sEdit.GetLength() > 0) { | 1614 if (sEdit.GetLength() > 0) { |
1614 sBody << "/Tx BMC\n" | 1615 sBody << "/Tx BMC\n" |
1615 << "q\n"; | 1616 << "q\n"; |
1616 if (rcContent.Width() > rcClient.Width() || | 1617 if (rcContent.Width() > rcClient.Width() || |
1617 rcContent.Height() > rcClient.Height()) { | 1618 rcContent.Height() > rcClient.Height()) { |
1618 sBody << rcClient.left << " " << rcClient.bottom << " " | 1619 sBody << rcClient.left << " " << rcClient.bottom << " " |
1619 << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; | 1620 << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; |
1620 } | 1621 } |
1621 CPWL_Color crText = GetTextPWLColor(); | 1622 CPWL_Color crText = GetTextPWLColor(); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1673 } | 1674 } |
1674 | 1675 |
1675 IFX_Edit::DelEdit(pEdit); | 1676 IFX_Edit::DelEdit(pEdit); |
1676 } | 1677 } |
1677 | 1678 |
1678 CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + | 1679 CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + |
1679 sLines.GetByteString() + sBody.GetByteString(); | 1680 sLines.GetByteString() + sBody.GetByteString(); |
1680 WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); | 1681 WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); |
1681 } | 1682 } |
1682 | 1683 |
1683 CPDF_Rect CPDFSDK_Widget::GetClientRect() const { | 1684 CFX_FloatRect CPDFSDK_Widget::GetClientRect() const { |
1684 CPDF_Rect rcWindow = GetRotatedRect(); | 1685 CFX_FloatRect rcWindow = GetRotatedRect(); |
1685 FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); | 1686 FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); |
1686 switch (GetBorderStyle()) { | 1687 switch (GetBorderStyle()) { |
1687 case BBS_BEVELED: | 1688 case BBS_BEVELED: |
1688 case BBS_INSET: | 1689 case BBS_INSET: |
1689 fBorderWidth *= 2.0f; | 1690 fBorderWidth *= 2.0f; |
1690 break; | 1691 break; |
1691 } | 1692 } |
1692 | 1693 |
1693 return CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); | 1694 return CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); |
1694 } | 1695 } |
1695 | 1696 |
1696 CPDF_Rect CPDFSDK_Widget::GetRotatedRect() const { | 1697 CFX_FloatRect CPDFSDK_Widget::GetRotatedRect() const { |
1697 CPDF_Rect rectAnnot = GetRect(); | 1698 CFX_FloatRect rectAnnot = GetRect(); |
1698 FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left; | 1699 FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left; |
1699 FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom; | 1700 FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom; |
1700 | 1701 |
1701 CPDF_FormControl* pControl = GetFormControl(); | 1702 CPDF_FormControl* pControl = GetFormControl(); |
1702 CPDF_Rect rcPDFWindow; | 1703 CFX_FloatRect rcPDFWindow; |
1703 switch (abs(pControl->GetRotation() % 360)) { | 1704 switch (abs(pControl->GetRotation() % 360)) { |
1704 case 0: | 1705 case 0: |
1705 case 180: | 1706 case 180: |
1706 default: | 1707 default: |
1707 rcPDFWindow = CPDF_Rect(0, 0, fWidth, fHeight); | 1708 rcPDFWindow = CFX_FloatRect(0, 0, fWidth, fHeight); |
1708 break; | 1709 break; |
1709 case 90: | 1710 case 90: |
1710 case 270: | 1711 case 270: |
1711 rcPDFWindow = CPDF_Rect(0, 0, fHeight, fWidth); | 1712 rcPDFWindow = CFX_FloatRect(0, 0, fHeight, fWidth); |
1712 break; | 1713 break; |
1713 } | 1714 } |
1714 | 1715 |
1715 return rcPDFWindow; | 1716 return rcPDFWindow; |
1716 } | 1717 } |
1717 | 1718 |
1718 CFX_ByteString CPDFSDK_Widget::GetBackgroundAppStream() const { | 1719 CFX_ByteString CPDFSDK_Widget::GetBackgroundAppStream() const { |
1719 CPWL_Color crBackground = GetFillPWLColor(); | 1720 CPWL_Color crBackground = GetFillPWLColor(); |
1720 if (crBackground.nColorType != COLORTYPE_TRANSPARENT) { | 1721 if (crBackground.nColorType != COLORTYPE_TRANSPARENT) { |
1721 return CPWL_Utils::GetRectFillAppStream(GetRotatedRect(), crBackground); | 1722 return CPWL_Utils::GetRectFillAppStream(GetRotatedRect(), crBackground); |
1722 } | 1723 } |
1723 return ""; | 1724 return ""; |
1724 } | 1725 } |
1725 | 1726 |
1726 CFX_ByteString CPDFSDK_Widget::GetBorderAppStream() const { | 1727 CFX_ByteString CPDFSDK_Widget::GetBorderAppStream() const { |
1727 CPDF_Rect rcWindow = GetRotatedRect(); | 1728 CFX_FloatRect rcWindow = GetRotatedRect(); |
1728 CPWL_Color crBorder = GetBorderPWLColor(); | 1729 CPWL_Color crBorder = GetBorderPWLColor(); |
1729 CPWL_Color crBackground = GetFillPWLColor(); | 1730 CPWL_Color crBackground = GetFillPWLColor(); |
1730 CPWL_Color crLeftTop, crRightBottom; | 1731 CPWL_Color crLeftTop, crRightBottom; |
1731 | 1732 |
1732 FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); | 1733 FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); |
1733 int32_t nBorderStyle = 0; | 1734 int32_t nBorderStyle = 0; |
1734 CPWL_Dash dsBorder(3, 0, 0); | 1735 CPWL_Dash dsBorder(3, 0, 0); |
1735 | 1736 |
1736 switch (GetBorderStyle()) { | 1737 switch (GetBorderStyle()) { |
1737 case BBS_DASH: | 1738 case BBS_DASH: |
(...skipping 21 matching lines...) Expand all Loading... |
1759 } | 1760 } |
1760 | 1761 |
1761 return CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, | 1762 return CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, |
1762 crLeftTop, crRightBottom, nBorderStyle, | 1763 crLeftTop, crRightBottom, nBorderStyle, |
1763 dsBorder); | 1764 dsBorder); |
1764 } | 1765 } |
1765 | 1766 |
1766 CFX_Matrix CPDFSDK_Widget::GetMatrix() const { | 1767 CFX_Matrix CPDFSDK_Widget::GetMatrix() const { |
1767 CFX_Matrix mt; | 1768 CFX_Matrix mt; |
1768 CPDF_FormControl* pControl = GetFormControl(); | 1769 CPDF_FormControl* pControl = GetFormControl(); |
1769 CPDF_Rect rcAnnot = GetRect(); | 1770 CFX_FloatRect rcAnnot = GetRect(); |
1770 FX_FLOAT fWidth = rcAnnot.right - rcAnnot.left; | 1771 FX_FLOAT fWidth = rcAnnot.right - rcAnnot.left; |
1771 FX_FLOAT fHeight = rcAnnot.top - rcAnnot.bottom; | 1772 FX_FLOAT fHeight = rcAnnot.top - rcAnnot.bottom; |
1772 | 1773 |
1773 switch (abs(pControl->GetRotation() % 360)) { | 1774 switch (abs(pControl->GetRotation() % 360)) { |
1774 case 0: | 1775 case 0: |
1775 default: | 1776 default: |
1776 mt = CFX_Matrix(1, 0, 0, 1, 0, 0); | 1777 mt = CFX_Matrix(1, 0, 0, 1, 0, 0); |
1777 break; | 1778 break; |
1778 case 90: | 1779 case 90: |
1779 mt = CFX_Matrix(0, 1, -1, 0, fWidth, 0); | 1780 mt = CFX_Matrix(0, 1, -1, 0, fWidth, 0); |
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2778 CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); | 2779 CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); |
2779 if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType) | 2780 if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType) |
2780 sa.push_back(pAnnot); | 2781 sa.push_back(pAnnot); |
2781 } | 2782 } |
2782 | 2783 |
2783 std::sort(sa.begin(), sa.end(), CompareByLeftAscending); | 2784 std::sort(sa.begin(), sa.end(), CompareByLeftAscending); |
2784 while (!sa.empty()) { | 2785 while (!sa.empty()) { |
2785 int nLeftTopIndex = -1; | 2786 int nLeftTopIndex = -1; |
2786 FX_FLOAT fTop = 0.0f; | 2787 FX_FLOAT fTop = 0.0f; |
2787 for (int i = sa.size() - 1; i >= 0; i--) { | 2788 for (int i = sa.size() - 1; i >= 0; i--) { |
2788 CPDF_Rect rcAnnot = GetAnnotRect(sa[i]); | 2789 CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]); |
2789 if (rcAnnot.top > fTop) { | 2790 if (rcAnnot.top > fTop) { |
2790 nLeftTopIndex = i; | 2791 nLeftTopIndex = i; |
2791 fTop = rcAnnot.top; | 2792 fTop = rcAnnot.top; |
2792 } | 2793 } |
2793 } | 2794 } |
2794 if (nLeftTopIndex >= 0) { | 2795 if (nLeftTopIndex >= 0) { |
2795 CPDFSDK_Annot* pLeftTopAnnot = sa[nLeftTopIndex]; | 2796 CPDFSDK_Annot* pLeftTopAnnot = sa[nLeftTopIndex]; |
2796 CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot); | 2797 CFX_FloatRect rcLeftTop = GetAnnotRect(pLeftTopAnnot); |
2797 m_Annots.push_back(pLeftTopAnnot); | 2798 m_Annots.push_back(pLeftTopAnnot); |
2798 sa.erase(sa.begin() + nLeftTopIndex); | 2799 sa.erase(sa.begin() + nLeftTopIndex); |
2799 | 2800 |
2800 std::vector<int> aSelect; | 2801 std::vector<int> aSelect; |
2801 for (int i = 0; i < sa.size(); ++i) { | 2802 for (int i = 0; i < sa.size(); ++i) { |
2802 CPDF_Rect rcAnnot = GetAnnotRect(sa[i]); | 2803 CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]); |
2803 FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f; | 2804 FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f; |
2804 if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top) | 2805 if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top) |
2805 aSelect.push_back(i); | 2806 aSelect.push_back(i); |
2806 } | 2807 } |
2807 for (int i = 0; i < aSelect.size(); ++i) | 2808 for (int i = 0; i < aSelect.size(); ++i) |
2808 m_Annots.push_back(sa[aSelect[i]]); | 2809 m_Annots.push_back(sa[aSelect[i]]); |
2809 | 2810 |
2810 for (int i = aSelect.size() - 1; i >= 0; --i) | 2811 for (int i = aSelect.size() - 1; i >= 0; --i) |
2811 sa.erase(sa.begin() + aSelect[i]); | 2812 sa.erase(sa.begin() + aSelect[i]); |
2812 } | 2813 } |
2813 } | 2814 } |
2814 } break; | 2815 } break; |
2815 case COLUMN: { | 2816 case COLUMN: { |
2816 std::vector<CPDFSDK_Annot*> sa; | 2817 std::vector<CPDFSDK_Annot*> sa; |
2817 for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) { | 2818 for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) { |
2818 CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); | 2819 CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); |
2819 if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType) | 2820 if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType) |
2820 sa.push_back(pAnnot); | 2821 sa.push_back(pAnnot); |
2821 } | 2822 } |
2822 | 2823 |
2823 std::sort(sa.begin(), sa.end(), CompareByTopDescending); | 2824 std::sort(sa.begin(), sa.end(), CompareByTopDescending); |
2824 while (!sa.empty()) { | 2825 while (!sa.empty()) { |
2825 int nLeftTopIndex = -1; | 2826 int nLeftTopIndex = -1; |
2826 FX_FLOAT fLeft = -1.0f; | 2827 FX_FLOAT fLeft = -1.0f; |
2827 for (int i = sa.size() - 1; i >= 0; --i) { | 2828 for (int i = sa.size() - 1; i >= 0; --i) { |
2828 CPDF_Rect rcAnnot = GetAnnotRect(sa[i]); | 2829 CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]); |
2829 if (fLeft < 0) { | 2830 if (fLeft < 0) { |
2830 nLeftTopIndex = 0; | 2831 nLeftTopIndex = 0; |
2831 fLeft = rcAnnot.left; | 2832 fLeft = rcAnnot.left; |
2832 } else if (rcAnnot.left < fLeft) { | 2833 } else if (rcAnnot.left < fLeft) { |
2833 nLeftTopIndex = i; | 2834 nLeftTopIndex = i; |
2834 fLeft = rcAnnot.left; | 2835 fLeft = rcAnnot.left; |
2835 } | 2836 } |
2836 } | 2837 } |
2837 | 2838 |
2838 if (nLeftTopIndex >= 0) { | 2839 if (nLeftTopIndex >= 0) { |
2839 CPDFSDK_Annot* pLeftTopAnnot = sa[nLeftTopIndex]; | 2840 CPDFSDK_Annot* pLeftTopAnnot = sa[nLeftTopIndex]; |
2840 CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot); | 2841 CFX_FloatRect rcLeftTop = GetAnnotRect(pLeftTopAnnot); |
2841 m_Annots.push_back(pLeftTopAnnot); | 2842 m_Annots.push_back(pLeftTopAnnot); |
2842 sa.erase(sa.begin() + nLeftTopIndex); | 2843 sa.erase(sa.begin() + nLeftTopIndex); |
2843 | 2844 |
2844 std::vector<int> aSelect; | 2845 std::vector<int> aSelect; |
2845 for (int i = 0; i < sa.size(); ++i) { | 2846 for (int i = 0; i < sa.size(); ++i) { |
2846 CPDF_Rect rcAnnot = GetAnnotRect(sa[i]); | 2847 CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]); |
2847 FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f; | 2848 FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f; |
2848 if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right) | 2849 if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right) |
2849 aSelect.push_back(i); | 2850 aSelect.push_back(i); |
2850 } | 2851 } |
2851 for (int i = 0; i < aSelect.size(); ++i) | 2852 for (int i = 0; i < aSelect.size(); ++i) |
2852 m_Annots.push_back(sa[aSelect[i]]); | 2853 m_Annots.push_back(sa[aSelect[i]]); |
2853 | 2854 |
2854 for (int i = aSelect.size() - 1; i >= 0; --i) | 2855 for (int i = aSelect.size() - 1; i >= 0; --i) |
2855 sa.erase(sa.begin() + aSelect[i]); | 2856 sa.erase(sa.begin() + aSelect[i]); |
2856 } | 2857 } |
2857 } | 2858 } |
2858 break; | 2859 break; |
2859 } | 2860 } |
2860 } | 2861 } |
2861 } | 2862 } |
2862 | 2863 |
2863 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(const CPDFSDK_Annot* pAnnot) { | 2864 CFX_FloatRect CBA_AnnotIterator::GetAnnotRect(const CPDFSDK_Annot* pAnnot) { |
2864 CPDF_Rect rcAnnot; | 2865 CFX_FloatRect rcAnnot; |
2865 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); | 2866 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); |
2866 return rcAnnot; | 2867 return rcAnnot; |
2867 } | 2868 } |
OLD | NEW |