| 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 "xfa/fwl/core/ifwl_caret.h" | 7 #include "xfa/fwl/core/ifwl_caret.h" |
| 8 | 8 |
| 9 #include "third_party/base/ptr_util.h" | 9 #include "third_party/base/ptr_util.h" |
| 10 #include "xfa/fwl/core/cfwl_themebackground.h" | 10 #include "xfa/fwl/core/cfwl_themebackground.h" |
| 11 #include "xfa/fwl/core/cfwl_widgetimpproperties.h" | 11 #include "xfa/fwl/core/cfwl_widgetimpproperties.h" |
| 12 #include "xfa/fwl/core/fwl_noteimp.h" | 12 #include "xfa/fwl/core/fwl_noteimp.h" |
| 13 #include "xfa/fwl/core/ifwl_caret.h" | 13 #include "xfa/fwl/core/ifwl_caret.h" |
| 14 #include "xfa/fwl/core/ifwl_themeprovider.h" | 14 #include "xfa/fwl/core/ifwl_themeprovider.h" |
| 15 | 15 |
| 16 IFWL_Caret::IFWL_Caret(const IFWL_App* app, | 16 IFWL_Caret::IFWL_Caret(const IFWL_App* app, |
| 17 const CFWL_WidgetImpProperties& properties, | 17 const CFWL_WidgetImpProperties& properties, |
| 18 IFWL_Widget* pOuter) | 18 IFWL_Widget* pOuter) |
| 19 : IFWL_Widget(app, properties, pOuter), | 19 : IFWL_Widget(app, properties, pOuter), |
| 20 m_pTimer(new IFWL_Caret::Timer(this)), | 20 m_pTimer(new IFWL_Caret::Timer(this)), |
| 21 m_pTimerInfo(nullptr), | 21 m_pTimerInfo(nullptr), |
| 22 m_dwElapse(400), | 22 m_dwElapse(400), |
| 23 m_bSetColor(FALSE) { | 23 m_bSetColor(false) { |
| 24 SetStates(FWL_STATE_CAT_HightLight); | 24 SetStates(FWL_STATE_CAT_HightLight); |
| 25 } | 25 } |
| 26 | 26 |
| 27 IFWL_Caret::~IFWL_Caret() { | 27 IFWL_Caret::~IFWL_Caret() { |
| 28 if (m_pTimerInfo) { | 28 if (m_pTimerInfo) { |
| 29 m_pTimerInfo->StopTimer(); | 29 m_pTimerInfo->StopTimer(); |
| 30 m_pTimerInfo = nullptr; | 30 m_pTimerInfo = nullptr; |
| 31 } | 31 } |
| 32 } | 32 } |
| 33 | 33 |
| 34 FWL_Type IFWL_Caret::GetClassID() const { | 34 FWL_Type IFWL_Caret::GetClassID() const { |
| 35 return FWL_Type::Caret; | 35 return FWL_Type::Caret; |
| 36 } | 36 } |
| 37 | 37 |
| 38 FWL_Error IFWL_Caret::DrawWidget(CFX_Graphics* pGraphics, | 38 FWL_Error IFWL_Caret::DrawWidget(CFX_Graphics* pGraphics, |
| 39 const CFX_Matrix* pMatrix) { | 39 const CFX_Matrix* pMatrix) { |
| 40 if (!pGraphics) | 40 if (!pGraphics) |
| 41 return FWL_Error::Indefinite; | 41 return FWL_Error::Indefinite; |
| 42 if (!m_pProperties->m_pThemeProvider) | 42 if (!m_pProperties->m_pThemeProvider) |
| 43 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 43 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 44 if (!m_pProperties->m_pThemeProvider) | 44 if (!m_pProperties->m_pThemeProvider) |
| 45 return FWL_Error::Indefinite; | 45 return FWL_Error::Indefinite; |
| 46 | 46 |
| 47 DrawCaretBK(pGraphics, m_pProperties->m_pThemeProvider, pMatrix); | 47 DrawCaretBK(pGraphics, m_pProperties->m_pThemeProvider, pMatrix); |
| 48 return FWL_Error::Succeeded; | 48 return FWL_Error::Succeeded; |
| 49 } | 49 } |
| 50 | 50 |
| 51 void IFWL_Caret::ShowCaret(FX_BOOL bFlag) { | 51 void IFWL_Caret::ShowCaret(bool bFlag) { |
| 52 if (m_pTimerInfo) { | 52 if (m_pTimerInfo) { |
| 53 m_pTimerInfo->StopTimer(); | 53 m_pTimerInfo->StopTimer(); |
| 54 m_pTimerInfo = nullptr; | 54 m_pTimerInfo = nullptr; |
| 55 } | 55 } |
| 56 if (bFlag) | 56 if (bFlag) |
| 57 m_pTimerInfo = m_pTimer->StartTimer(m_dwElapse, true); | 57 m_pTimerInfo = m_pTimer->StartTimer(m_dwElapse, true); |
| 58 | 58 |
| 59 SetStates(FWL_WGTSTATE_Invisible, !bFlag); | 59 SetStates(FWL_WGTSTATE_Invisible, !bFlag); |
| 60 } | 60 } |
| 61 | 61 |
| 62 FWL_Error IFWL_Caret::GetFrequency(uint32_t& elapse) { | 62 FWL_Error IFWL_Caret::GetFrequency(uint32_t& elapse) { |
| 63 elapse = m_dwElapse; | 63 elapse = m_dwElapse; |
| 64 return FWL_Error::Succeeded; | 64 return FWL_Error::Succeeded; |
| 65 } | 65 } |
| 66 | 66 |
| 67 FWL_Error IFWL_Caret::SetFrequency(uint32_t elapse) { | 67 FWL_Error IFWL_Caret::SetFrequency(uint32_t elapse) { |
| 68 m_dwElapse = elapse; | 68 m_dwElapse = elapse; |
| 69 return FWL_Error::Succeeded; | 69 return FWL_Error::Succeeded; |
| 70 } | 70 } |
| 71 | 71 |
| 72 FWL_Error IFWL_Caret::SetColor(CFX_Color crFill) { | 72 FWL_Error IFWL_Caret::SetColor(CFX_Color crFill) { |
| 73 m_bSetColor = TRUE; | 73 m_bSetColor = true; |
| 74 m_crFill = crFill; | 74 m_crFill = crFill; |
| 75 return FWL_Error::Succeeded; | 75 return FWL_Error::Succeeded; |
| 76 } | 76 } |
| 77 | 77 |
| 78 void IFWL_Caret::DrawCaretBK(CFX_Graphics* pGraphics, | 78 void IFWL_Caret::DrawCaretBK(CFX_Graphics* pGraphics, |
| 79 IFWL_ThemeProvider* pTheme, | 79 IFWL_ThemeProvider* pTheme, |
| 80 const CFX_Matrix* pMatrix) { | 80 const CFX_Matrix* pMatrix) { |
| 81 CFX_RectF rect; | 81 CFX_RectF rect; |
| 82 GetWidgetRect(rect); | 82 GetWidgetRect(rect); |
| 83 rect.Set(0, 0, rect.width, rect.height); | 83 rect.Set(0, 0, rect.width, rect.height); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 110 void IFWL_Caret::Timer::Run(IFWL_TimerInfo* pTimerInfo) { | 110 void IFWL_Caret::Timer::Run(IFWL_TimerInfo* pTimerInfo) { |
| 111 IFWL_Caret* pCaret = static_cast<IFWL_Caret*>(m_pWidget); | 111 IFWL_Caret* pCaret = static_cast<IFWL_Caret*>(m_pWidget); |
| 112 bool toggle = !(pCaret->GetStates() & FWL_STATE_CAT_HightLight); | 112 bool toggle = !(pCaret->GetStates() & FWL_STATE_CAT_HightLight); |
| 113 pCaret->SetStates(FWL_STATE_CAT_HightLight, toggle); | 113 pCaret->SetStates(FWL_STATE_CAT_HightLight, toggle); |
| 114 | 114 |
| 115 CFX_RectF rt; | 115 CFX_RectF rt; |
| 116 pCaret->GetWidgetRect(rt); | 116 pCaret->GetWidgetRect(rt); |
| 117 rt.Set(0, 0, rt.width + 1, rt.height); | 117 rt.Set(0, 0, rt.width + 1, rt.height); |
| 118 pCaret->Repaint(&rt); | 118 pCaret->Repaint(&rt); |
| 119 } | 119 } |
| OLD | NEW |