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 #ifndef FPDFSDK_INCLUDE_FSDK_MGR_H_ | 7 #ifndef FPDFSDK_INCLUDE_FSDK_MGR_H_ |
8 #define FPDFSDK_INCLUDE_FSDK_MGR_H_ | 8 #define FPDFSDK_INCLUDE_FSDK_MGR_H_ |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 private: | 285 private: |
286 std::map<UnderlyingPageType*, CPDFSDK_PageView*> m_pageMap; | 286 std::map<UnderlyingPageType*, CPDFSDK_PageView*> m_pageMap; |
287 UnderlyingDocumentType* m_pDoc; | 287 UnderlyingDocumentType* m_pDoc; |
288 std::unique_ptr<CPDFSDK_InterForm> m_pInterForm; | 288 std::unique_ptr<CPDFSDK_InterForm> m_pInterForm; |
289 CPDFSDK_Annot* m_pFocusAnnot; | 289 CPDFSDK_Annot* m_pFocusAnnot; |
290 CPDFDoc_Environment* m_pEnv; | 290 CPDFDoc_Environment* m_pEnv; |
291 std::unique_ptr<CPDF_OCContext> m_pOccontent; | 291 std::unique_ptr<CPDF_OCContext> m_pOccontent; |
292 FX_BOOL m_bChangeMask; | 292 FX_BOOL m_bChangeMask; |
293 FX_BOOL m_bBeingDestroyed; | 293 FX_BOOL m_bBeingDestroyed; |
294 }; | 294 }; |
| 295 |
295 class CPDFSDK_PageView final { | 296 class CPDFSDK_PageView final { |
296 public: | 297 public: |
297 CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc, UnderlyingPageType* page); | 298 CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc, UnderlyingPageType* page); |
298 ~CPDFSDK_PageView(); | 299 ~CPDFSDK_PageView(); |
299 void PageView_OnDraw(CFX_RenderDevice* pDevice, | 300 void PageView_OnDraw(CFX_RenderDevice* pDevice, |
300 CFX_Matrix* pUser2Device, | 301 CFX_Matrix* pUser2Device, |
301 CPDF_RenderOptions* pOptions); | 302 CPDF_RenderOptions* pOptions); |
302 const CPDF_Annot* GetPDFAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); | 303 const CPDF_Annot* GetPDFAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); |
303 CPDFSDK_Annot* GetFXAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); | 304 CPDFSDK_Annot* GetFXAnnotAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); |
304 const CPDF_Annot* GetPDFWidgetAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); | 305 const CPDF_Annot* GetPDFWidgetAtPoint(FX_FLOAT pageX, FX_FLOAT pageY); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 CPDFSDK_Document* m_pSDKDoc; | 362 CPDFSDK_Document* m_pSDKDoc; |
362 CPDFSDK_Widget* m_CaptureWidget; | 363 CPDFSDK_Widget* m_CaptureWidget; |
363 FX_BOOL m_bEnterWidget; | 364 FX_BOOL m_bEnterWidget; |
364 FX_BOOL m_bExitWidget; | 365 FX_BOOL m_bExitWidget; |
365 FX_BOOL m_bOnWidget; | 366 FX_BOOL m_bOnWidget; |
366 FX_BOOL m_bValid; | 367 FX_BOOL m_bValid; |
367 FX_BOOL m_bLocked; | 368 FX_BOOL m_bLocked; |
368 FX_BOOL m_bTakeOverPage; | 369 FX_BOOL m_bTakeOverPage; |
369 }; | 370 }; |
370 | 371 |
371 template <class TYPE> | |
372 class CGW_ArrayTemplate : public CFX_ArrayTemplate<TYPE> { | |
373 public: | |
374 CGW_ArrayTemplate() {} | |
375 ~CGW_ArrayTemplate() {} | |
376 | |
377 typedef int (*LP_COMPARE)(TYPE p1, TYPE p2); | |
378 | |
379 void Sort(LP_COMPARE pCompare, FX_BOOL bAscent = TRUE) { | |
380 int nSize = this->GetSize(); | |
381 QuickSort(0, nSize - 1, bAscent, pCompare); | |
382 } | |
383 | |
384 private: | |
385 void QuickSort(FX_UINT nStartPos, | |
386 FX_UINT nStopPos, | |
387 FX_BOOL bAscend, | |
388 LP_COMPARE pCompare) { | |
389 if (nStartPos >= nStopPos) | |
390 return; | |
391 | |
392 if ((nStopPos - nStartPos) == 1) { | |
393 TYPE Value1 = this->GetAt(nStartPos); | |
394 TYPE Value2 = this->GetAt(nStopPos); | |
395 | |
396 int iGreate = (*pCompare)(Value1, Value2); | |
397 if ((bAscend && iGreate > 0) || (!bAscend && iGreate < 0)) { | |
398 this->SetAt(nStartPos, Value2); | |
399 this->SetAt(nStopPos, Value1); | |
400 } | |
401 return; | |
402 } | |
403 | |
404 FX_UINT m = nStartPos + (nStopPos - nStartPos) / 2; | |
405 FX_UINT i = nStartPos; | |
406 | |
407 TYPE Value = this->GetAt(m); | |
408 | |
409 while (i < m) { | |
410 TYPE temp = this->GetAt(i); | |
411 | |
412 int iGreate = (*pCompare)(temp, Value); | |
413 if ((bAscend && iGreate > 0) || (!bAscend && iGreate < 0)) { | |
414 this->InsertAt(m + 1, temp); | |
415 this->RemoveAt(i); | |
416 m--; | |
417 } else { | |
418 i++; | |
419 } | |
420 } | |
421 | |
422 FX_UINT j = nStopPos; | |
423 | |
424 while (j > m) { | |
425 TYPE temp = this->GetAt(j); | |
426 | |
427 int iGreate = (*pCompare)(temp, Value); | |
428 if ((bAscend && iGreate < 0) || (!bAscend && iGreate > 0)) { | |
429 this->RemoveAt(j); | |
430 this->InsertAt(m, temp); | |
431 m++; | |
432 } else { | |
433 j--; | |
434 } | |
435 } | |
436 | |
437 if (nStartPos < m) | |
438 QuickSort(nStartPos, m, bAscend, pCompare); | |
439 if (nStopPos > m) | |
440 QuickSort(m, nStopPos, bAscend, pCompare); | |
441 } | |
442 }; | |
443 | |
444 #endif // FPDFSDK_INCLUDE_FSDK_MGR_H_ | 372 #endif // FPDFSDK_INCLUDE_FSDK_MGR_H_ |
OLD | NEW |