| 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 <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "fpdfsdk/include/pdfwindow/PDFWindow.h" | 9 #include "fpdfsdk/include/pdfwindow/PDFWindow.h" |
| 10 #include "fpdfsdk/include/pdfwindow/PWL_ScrollBar.h" | 10 #include "fpdfsdk/include/pdfwindow/PWL_ScrollBar.h" |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 m_rcClip = CPWL_Utils::InflateRect(m_rcWindow, 1.0f); | 217 m_rcClip = CPWL_Utils::InflateRect(m_rcWindow, 1.0f); |
| 218 | 218 |
| 219 CreateMsgControl(); | 219 CreateMsgControl(); |
| 220 | 220 |
| 221 if (m_sPrivateParam.pParentWnd) | 221 if (m_sPrivateParam.pParentWnd) |
| 222 m_sPrivateParam.pParentWnd->OnNotify(this, PNM_ADDCHILD); | 222 m_sPrivateParam.pParentWnd->OnNotify(this, PNM_ADDCHILD); |
| 223 | 223 |
| 224 PWL_CREATEPARAM ccp = m_sPrivateParam; | 224 PWL_CREATEPARAM ccp = m_sPrivateParam; |
| 225 | 225 |
| 226 ccp.dwFlags &= 0xFFFF0000L; // remove sub styles | 226 ccp.dwFlags &= 0xFFFF0000L; // remove sub styles |
| 227 ccp.mtChild = CPDF_Matrix(1, 0, 0, 1, 0, 0); | 227 ccp.mtChild = CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 228 | 228 |
| 229 CreateScrollBar(ccp); | 229 CreateScrollBar(ccp); |
| 230 CreateChildWnd(ccp); | 230 CreateChildWnd(ccp); |
| 231 | 231 |
| 232 m_bVisible = HasFlag(PWS_VISIBLE); | 232 m_bVisible = HasFlag(PWS_VISIBLE); |
| 233 | 233 |
| 234 OnCreated(); | 234 OnCreated(); |
| 235 | 235 |
| 236 RePosChildWnd(); | 236 RePosChildWnd(); |
| 237 m_bCreated = TRUE; | 237 m_bCreated = TRUE; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 | 337 |
| 338 void CPWL_Wnd::GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream) { | 338 void CPWL_Wnd::GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream) { |
| 339 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { | 339 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { |
| 340 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { | 340 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { |
| 341 pChild->GetAppearanceStream(sAppStream); | 341 pChild->GetAppearanceStream(sAppStream); |
| 342 } | 342 } |
| 343 } | 343 } |
| 344 } | 344 } |
| 345 | 345 |
| 346 void CPWL_Wnd::DrawAppearance(CFX_RenderDevice* pDevice, | 346 void CPWL_Wnd::DrawAppearance(CFX_RenderDevice* pDevice, |
| 347 CPDF_Matrix* pUser2Device) { | 347 CFX_Matrix* pUser2Device) { |
| 348 if (IsValid() && IsVisible()) { | 348 if (IsValid() && IsVisible()) { |
| 349 DrawThisAppearance(pDevice, pUser2Device); | 349 DrawThisAppearance(pDevice, pUser2Device); |
| 350 DrawChildAppearance(pDevice, pUser2Device); | 350 DrawChildAppearance(pDevice, pUser2Device); |
| 351 } | 351 } |
| 352 } | 352 } |
| 353 | 353 |
| 354 void CPWL_Wnd::DrawThisAppearance(CFX_RenderDevice* pDevice, | 354 void CPWL_Wnd::DrawThisAppearance(CFX_RenderDevice* pDevice, |
| 355 CPDF_Matrix* pUser2Device) { | 355 CFX_Matrix* pUser2Device) { |
| 356 CPDF_Rect rectWnd = GetWindowRect(); | 356 CPDF_Rect rectWnd = GetWindowRect(); |
| 357 if (!rectWnd.IsEmpty()) { | 357 if (!rectWnd.IsEmpty()) { |
| 358 if (HasFlag(PWS_BACKGROUND)) { | 358 if (HasFlag(PWS_BACKGROUND)) { |
| 359 CPDF_Rect rcClient = CPWL_Utils::DeflateRect( | 359 CPDF_Rect rcClient = CPWL_Utils::DeflateRect( |
| 360 rectWnd, (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth())); | 360 rectWnd, (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth())); |
| 361 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcClient, | 361 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcClient, |
| 362 GetBackgroundColor(), GetTransparency()); | 362 GetBackgroundColor(), GetTransparency()); |
| 363 } | 363 } |
| 364 | 364 |
| 365 if (HasFlag(PWS_BORDER)) | 365 if (HasFlag(PWS_BORDER)) |
| 366 CPWL_Utils::DrawBorder( | 366 CPWL_Utils::DrawBorder( |
| 367 pDevice, pUser2Device, rectWnd, (FX_FLOAT)GetBorderWidth(), | 367 pDevice, pUser2Device, rectWnd, (FX_FLOAT)GetBorderWidth(), |
| 368 GetBorderColor(), GetBorderLeftTopColor(GetBorderStyle()), | 368 GetBorderColor(), GetBorderLeftTopColor(GetBorderStyle()), |
| 369 GetBorderRightBottomColor(GetBorderStyle()), GetBorderStyle(), | 369 GetBorderRightBottomColor(GetBorderStyle()), GetBorderStyle(), |
| 370 GetBorderDash(), GetTransparency()); | 370 GetBorderDash(), GetTransparency()); |
| 371 } | 371 } |
| 372 } | 372 } |
| 373 | 373 |
| 374 void CPWL_Wnd::DrawChildAppearance(CFX_RenderDevice* pDevice, | 374 void CPWL_Wnd::DrawChildAppearance(CFX_RenderDevice* pDevice, |
| 375 CPDF_Matrix* pUser2Device) { | 375 CFX_Matrix* pUser2Device) { |
| 376 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { | 376 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { |
| 377 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { | 377 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { |
| 378 CPDF_Matrix mt = pChild->GetChildMatrix(); | 378 CFX_Matrix mt = pChild->GetChildMatrix(); |
| 379 if (mt.IsIdentity()) { | 379 if (mt.IsIdentity()) { |
| 380 pChild->DrawAppearance(pDevice, pUser2Device); | 380 pChild->DrawAppearance(pDevice, pUser2Device); |
| 381 } else { | 381 } else { |
| 382 mt.Concat(*pUser2Device); | 382 mt.Concat(*pUser2Device); |
| 383 pChild->DrawAppearance(pDevice, &mt); | 383 pChild->DrawAppearance(pDevice, &mt); |
| 384 } | 384 } |
| 385 } | 385 } |
| 386 } | 386 } |
| 387 } | 387 } |
| 388 | 388 |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 void CPWL_Wnd::SetTransparency(int32_t nTransparency) { | 911 void CPWL_Wnd::SetTransparency(int32_t nTransparency) { |
| 912 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { | 912 for (int32_t i = 0, sz = m_aChildren.GetSize(); i < sz; i++) { |
| 913 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { | 913 if (CPWL_Wnd* pChild = m_aChildren.GetAt(i)) { |
| 914 pChild->SetTransparency(nTransparency); | 914 pChild->SetTransparency(nTransparency); |
| 915 } | 915 } |
| 916 } | 916 } |
| 917 | 917 |
| 918 m_sPrivateParam.nTransparency = nTransparency; | 918 m_sPrivateParam.nTransparency = nTransparency; |
| 919 } | 919 } |
| 920 | 920 |
| 921 CPDF_Matrix CPWL_Wnd::GetWindowMatrix() const { | 921 CFX_Matrix CPWL_Wnd::GetWindowMatrix() const { |
| 922 CPDF_Matrix mt = GetChildToRoot(); | 922 CFX_Matrix mt = GetChildToRoot(); |
| 923 | 923 |
| 924 if (IPWL_Provider* pProvider = GetProvider()) { | 924 if (IPWL_Provider* pProvider = GetProvider()) { |
| 925 mt.Concat(pProvider->GetWindowMatrix(GetAttachedData())); | 925 mt.Concat(pProvider->GetWindowMatrix(GetAttachedData())); |
| 926 return mt; | 926 return mt; |
| 927 } | 927 } |
| 928 | 928 |
| 929 return mt; | 929 return mt; |
| 930 } | 930 } |
| 931 | 931 |
| 932 void CPWL_Wnd::PWLtoWnd(const CPDF_Point& point, int32_t& x, int32_t& y) const { | 932 void CPWL_Wnd::PWLtoWnd(const CPDF_Point& point, int32_t& x, int32_t& y) const { |
| 933 CPDF_Matrix mt = GetWindowMatrix(); | 933 CFX_Matrix mt = GetWindowMatrix(); |
| 934 CPDF_Point pt = point; | 934 CPDF_Point pt = point; |
| 935 mt.Transform(pt.x, pt.y); | 935 mt.Transform(pt.x, pt.y); |
| 936 x = (int32_t)(pt.x + 0.5); | 936 x = (int32_t)(pt.x + 0.5); |
| 937 y = (int32_t)(pt.y + 0.5); | 937 y = (int32_t)(pt.y + 0.5); |
| 938 } | 938 } |
| 939 | 939 |
| 940 FX_RECT CPWL_Wnd::PWLtoWnd(const CPDF_Rect& rect) const { | 940 FX_RECT CPWL_Wnd::PWLtoWnd(const CPDF_Rect& rect) const { |
| 941 CPDF_Rect rcTemp = rect; | 941 CPDF_Rect rcTemp = rect; |
| 942 CPDF_Matrix mt = GetWindowMatrix(); | 942 CFX_Matrix mt = GetWindowMatrix(); |
| 943 mt.TransformRect(rcTemp); | 943 mt.TransformRect(rcTemp); |
| 944 return FX_RECT((int32_t)(rcTemp.left + 0.5), (int32_t)(rcTemp.bottom + 0.5), | 944 return FX_RECT((int32_t)(rcTemp.left + 0.5), (int32_t)(rcTemp.bottom + 0.5), |
| 945 (int32_t)(rcTemp.right + 0.5), (int32_t)(rcTemp.top + 0.5)); | 945 (int32_t)(rcTemp.right + 0.5), (int32_t)(rcTemp.top + 0.5)); |
| 946 } | 946 } |
| 947 | 947 |
| 948 FX_HWND CPWL_Wnd::GetAttachedHWnd() const { | 948 FX_HWND CPWL_Wnd::GetAttachedHWnd() const { |
| 949 return m_sPrivateParam.hAttachedWnd; | 949 return m_sPrivateParam.hAttachedWnd; |
| 950 } | 950 } |
| 951 | 951 |
| 952 CPDF_Point CPWL_Wnd::ChildToParent(const CPDF_Point& point) const { | 952 CPDF_Point CPWL_Wnd::ChildToParent(const CPDF_Point& point) const { |
| 953 CPDF_Matrix mt = GetChildMatrix(); | 953 CFX_Matrix mt = GetChildMatrix(); |
| 954 if (mt.IsIdentity()) | 954 if (mt.IsIdentity()) |
| 955 return point; | 955 return point; |
| 956 | 956 |
| 957 CPDF_Point pt = point; | 957 CPDF_Point pt = point; |
| 958 mt.Transform(pt.x, pt.y); | 958 mt.Transform(pt.x, pt.y); |
| 959 return pt; | 959 return pt; |
| 960 } | 960 } |
| 961 | 961 |
| 962 CPDF_Rect CPWL_Wnd::ChildToParent(const CPDF_Rect& rect) const { | 962 CPDF_Rect CPWL_Wnd::ChildToParent(const CPDF_Rect& rect) const { |
| 963 CPDF_Matrix mt = GetChildMatrix(); | 963 CFX_Matrix mt = GetChildMatrix(); |
| 964 if (mt.IsIdentity()) | 964 if (mt.IsIdentity()) |
| 965 return rect; | 965 return rect; |
| 966 | 966 |
| 967 CPDF_Rect rc = rect; | 967 CPDF_Rect rc = rect; |
| 968 mt.TransformRect(rc); | 968 mt.TransformRect(rc); |
| 969 return rc; | 969 return rc; |
| 970 } | 970 } |
| 971 | 971 |
| 972 CPDF_Point CPWL_Wnd::ParentToChild(const CPDF_Point& point) const { | 972 CPDF_Point CPWL_Wnd::ParentToChild(const CPDF_Point& point) const { |
| 973 CPDF_Matrix mt = GetChildMatrix(); | 973 CFX_Matrix mt = GetChildMatrix(); |
| 974 if (mt.IsIdentity()) | 974 if (mt.IsIdentity()) |
| 975 return point; | 975 return point; |
| 976 | 976 |
| 977 mt.SetReverse(mt); | 977 mt.SetReverse(mt); |
| 978 CPDF_Point pt = point; | 978 CPDF_Point pt = point; |
| 979 mt.Transform(pt.x, pt.y); | 979 mt.Transform(pt.x, pt.y); |
| 980 return pt; | 980 return pt; |
| 981 } | 981 } |
| 982 | 982 |
| 983 CPDF_Rect CPWL_Wnd::ParentToChild(const CPDF_Rect& rect) const { | 983 CPDF_Rect CPWL_Wnd::ParentToChild(const CPDF_Rect& rect) const { |
| 984 CPDF_Matrix mt = GetChildMatrix(); | 984 CFX_Matrix mt = GetChildMatrix(); |
| 985 if (mt.IsIdentity()) | 985 if (mt.IsIdentity()) |
| 986 return rect; | 986 return rect; |
| 987 | 987 |
| 988 mt.SetReverse(mt); | 988 mt.SetReverse(mt); |
| 989 CPDF_Rect rc = rect; | 989 CPDF_Rect rc = rect; |
| 990 mt.TransformRect(rc); | 990 mt.TransformRect(rc); |
| 991 return rc; | 991 return rc; |
| 992 } | 992 } |
| 993 | 993 |
| 994 CPDF_Matrix CPWL_Wnd::GetChildToRoot() const { | 994 CFX_Matrix CPWL_Wnd::GetChildToRoot() const { |
| 995 CPDF_Matrix mt(1, 0, 0, 1, 0, 0); | 995 CFX_Matrix mt(1, 0, 0, 1, 0, 0); |
| 996 if (HasFlag(PWS_CHILD)) { | 996 if (HasFlag(PWS_CHILD)) { |
| 997 const CPWL_Wnd* pParent = this; | 997 const CPWL_Wnd* pParent = this; |
| 998 while (pParent) { | 998 while (pParent) { |
| 999 mt.Concat(pParent->GetChildMatrix()); | 999 mt.Concat(pParent->GetChildMatrix()); |
| 1000 pParent = pParent->GetParentWindow(); | 1000 pParent = pParent->GetParentWindow(); |
| 1001 } | 1001 } |
| 1002 } | 1002 } |
| 1003 return mt; | 1003 return mt; |
| 1004 } | 1004 } |
| 1005 | 1005 |
| 1006 CPDF_Matrix CPWL_Wnd::GetChildMatrix() const { | 1006 CFX_Matrix CPWL_Wnd::GetChildMatrix() const { |
| 1007 if (HasFlag(PWS_CHILD)) | 1007 if (HasFlag(PWS_CHILD)) |
| 1008 return m_sPrivateParam.mtChild; | 1008 return m_sPrivateParam.mtChild; |
| 1009 | 1009 |
| 1010 return CPDF_Matrix(1, 0, 0, 1, 0, 0); | 1010 return CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 1011 } | 1011 } |
| 1012 | 1012 |
| 1013 void CPWL_Wnd::SetChildMatrix(const CPDF_Matrix& mt) { | 1013 void CPWL_Wnd::SetChildMatrix(const CFX_Matrix& mt) { |
| 1014 m_sPrivateParam.mtChild = mt; | 1014 m_sPrivateParam.mtChild = mt; |
| 1015 } | 1015 } |
| 1016 | 1016 |
| 1017 const CPWL_Wnd* CPWL_Wnd::GetFocused() const { | 1017 const CPWL_Wnd* CPWL_Wnd::GetFocused() const { |
| 1018 if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) { | 1018 if (CPWL_MsgControl* pMsgCtrl = GetMsgControl()) { |
| 1019 return pMsgCtrl->m_pMainKeyboardWnd; | 1019 return pMsgCtrl->m_pMainKeyboardWnd; |
| 1020 } | 1020 } |
| 1021 | 1021 |
| 1022 return NULL; | 1022 return NULL; |
| 1023 } | 1023 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 return FALSE; | 1071 return FALSE; |
| 1072 } | 1072 } |
| 1073 | 1073 |
| 1074 FX_BOOL CPWL_Wnd::IsINSERTpressed(FX_DWORD nFlag) const { | 1074 FX_BOOL CPWL_Wnd::IsINSERTpressed(FX_DWORD nFlag) const { |
| 1075 if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) { | 1075 if (IFX_SystemHandler* pSystemHandler = GetSystemHandler()) { |
| 1076 return pSystemHandler->IsINSERTKeyDown(nFlag); | 1076 return pSystemHandler->IsINSERTKeyDown(nFlag); |
| 1077 } | 1077 } |
| 1078 | 1078 |
| 1079 return FALSE; | 1079 return FALSE; |
| 1080 } | 1080 } |
| OLD | NEW |