| 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/pdfwindow/PWL_ScrollBar.h" | 7 #include "fpdfsdk/pdfwindow/PWL_ScrollBar.h" |
| 8 | 8 |
| 9 #include "core/fxge/cfx_pathdata.h" | 9 #include "core/fxge/cfx_pathdata.h" |
| 10 #include "core/fxge/cfx_renderdevice.h" | 10 #include "core/fxge/cfx_renderdevice.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 void PWL_FLOATRANGE::Set(FX_FLOAT min, FX_FLOAT max) { | 27 void PWL_FLOATRANGE::Set(FX_FLOAT min, FX_FLOAT max) { |
| 28 if (min > max) { | 28 if (min > max) { |
| 29 fMin = max; | 29 fMin = max; |
| 30 fMax = min; | 30 fMax = min; |
| 31 } else { | 31 } else { |
| 32 fMin = min; | 32 fMin = min; |
| 33 fMax = max; | 33 fMax = max; |
| 34 } | 34 } |
| 35 } | 35 } |
| 36 | 36 |
| 37 FX_BOOL PWL_FLOATRANGE::In(FX_FLOAT x) const { | 37 bool PWL_FLOATRANGE::In(FX_FLOAT x) const { |
| 38 return (IsFloatBigger(x, fMin) || IsFloatEqual(x, fMin)) && | 38 return (IsFloatBigger(x, fMin) || IsFloatEqual(x, fMin)) && |
| 39 (IsFloatSmaller(x, fMax) || IsFloatEqual(x, fMax)); | 39 (IsFloatSmaller(x, fMax) || IsFloatEqual(x, fMax)); |
| 40 } | 40 } |
| 41 | 41 |
| 42 FX_FLOAT PWL_FLOATRANGE::GetWidth() const { | 42 FX_FLOAT PWL_FLOATRANGE::GetWidth() const { |
| 43 return fMax - fMin; | 43 return fMax - fMin; |
| 44 } | 44 } |
| 45 | 45 |
| 46 PWL_SCROLL_PRIVATEDATA::PWL_SCROLL_PRIVATEDATA() { | 46 PWL_SCROLL_PRIVATEDATA::PWL_SCROLL_PRIVATEDATA() { |
| 47 Default(); | 47 Default(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 69 } | 69 } |
| 70 | 70 |
| 71 void PWL_SCROLL_PRIVATEDATA::SetSmallStep(FX_FLOAT step) { | 71 void PWL_SCROLL_PRIVATEDATA::SetSmallStep(FX_FLOAT step) { |
| 72 fSmallStep = step; | 72 fSmallStep = step; |
| 73 } | 73 } |
| 74 | 74 |
| 75 void PWL_SCROLL_PRIVATEDATA::SetBigStep(FX_FLOAT step) { | 75 void PWL_SCROLL_PRIVATEDATA::SetBigStep(FX_FLOAT step) { |
| 76 fBigStep = step; | 76 fBigStep = step; |
| 77 } | 77 } |
| 78 | 78 |
| 79 FX_BOOL PWL_SCROLL_PRIVATEDATA::SetPos(FX_FLOAT pos) { | 79 bool PWL_SCROLL_PRIVATEDATA::SetPos(FX_FLOAT pos) { |
| 80 if (ScrollRange.In(pos)) { | 80 if (ScrollRange.In(pos)) { |
| 81 fScrollPos = pos; | 81 fScrollPos = pos; |
| 82 return TRUE; | 82 return true; |
| 83 } | 83 } |
| 84 return FALSE; | 84 return false; |
| 85 } | 85 } |
| 86 | 86 |
| 87 void PWL_SCROLL_PRIVATEDATA::AddSmall() { | 87 void PWL_SCROLL_PRIVATEDATA::AddSmall() { |
| 88 if (!SetPos(fScrollPos + fSmallStep)) | 88 if (!SetPos(fScrollPos + fSmallStep)) |
| 89 SetPos(ScrollRange.fMax); | 89 SetPos(ScrollRange.fMax); |
| 90 } | 90 } |
| 91 | 91 |
| 92 void PWL_SCROLL_PRIVATEDATA::SubSmall() { | 92 void PWL_SCROLL_PRIVATEDATA::SubSmall() { |
| 93 if (!SetPos(fScrollPos - fSmallStep)) | 93 if (!SetPos(fScrollPos - fSmallStep)) |
| 94 SetPos(ScrollRange.fMin); | 94 SetPos(ScrollRange.fMin); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void PWL_SCROLL_PRIVATEDATA::AddBig() { | 97 void PWL_SCROLL_PRIVATEDATA::AddBig() { |
| 98 if (!SetPos(fScrollPos + fBigStep)) | 98 if (!SetPos(fScrollPos + fBigStep)) |
| 99 SetPos(ScrollRange.fMax); | 99 SetPos(ScrollRange.fMax); |
| 100 } | 100 } |
| 101 | 101 |
| 102 void PWL_SCROLL_PRIVATEDATA::SubBig() { | 102 void PWL_SCROLL_PRIVATEDATA::SubBig() { |
| 103 if (!SetPos(fScrollPos - fBigStep)) | 103 if (!SetPos(fScrollPos - fBigStep)) |
| 104 SetPos(ScrollRange.fMin); | 104 SetPos(ScrollRange.fMin); |
| 105 } | 105 } |
| 106 | 106 |
| 107 CPWL_SBButton::CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType, | 107 CPWL_SBButton::CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType, |
| 108 PWL_SBBUTTON_TYPE eButtonType) { | 108 PWL_SBBUTTON_TYPE eButtonType) { |
| 109 m_eScrollBarType = eScrollBarType; | 109 m_eScrollBarType = eScrollBarType; |
| 110 m_eSBButtonType = eButtonType; | 110 m_eSBButtonType = eButtonType; |
| 111 | 111 |
| 112 m_bMouseDown = FALSE; | 112 m_bMouseDown = false; |
| 113 } | 113 } |
| 114 | 114 |
| 115 CPWL_SBButton::~CPWL_SBButton() {} | 115 CPWL_SBButton::~CPWL_SBButton() {} |
| 116 | 116 |
| 117 CFX_ByteString CPWL_SBButton::GetClassName() const { | 117 CFX_ByteString CPWL_SBButton::GetClassName() const { |
| 118 return "CPWL_SBButton"; | 118 return "CPWL_SBButton"; |
| 119 } | 119 } |
| 120 | 120 |
| 121 void CPWL_SBButton::OnCreate(PWL_CREATEPARAM& cp) { | 121 void CPWL_SBButton::OnCreate(PWL_CREATEPARAM& cp) { |
| 122 cp.eCursorType = FXCT_ARROW; | 122 cp.eCursorType = FXCT_ARROW; |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); | 316 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); |
| 317 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 317 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
| 318 ArgbEncode(nTransparancy, 255, 255, 255), | 318 ArgbEncode(nTransparancy, 255, 255, 255), |
| 319 1.0f); | 319 1.0f); |
| 320 | 320 |
| 321 // draw background | 321 // draw background |
| 322 | 322 |
| 323 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); | 323 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); |
| 324 | 324 |
| 325 if (IsEnabled()) | 325 if (IsEnabled()) |
| 326 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, | 326 CPWL_Utils::DrawShadow(pDevice, pUser2Device, true, false, rcDraw, |
| 327 nTransparancy, 80, 220); | 327 nTransparancy, 80, 220); |
| 328 else | 328 else |
| 329 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, | 329 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, |
| 330 ArgbEncode(255, 255, 255, 255)); | 330 ArgbEncode(255, 255, 255, 255)); |
| 331 | 331 |
| 332 // draw arrow | 332 // draw arrow |
| 333 | 333 |
| 334 if (rectWnd.top - rectWnd.bottom > 6.0f) { | 334 if (rectWnd.top - rectWnd.bottom > 6.0f) { |
| 335 FX_FLOAT fX = rectWnd.left + 1.5f; | 335 FX_FLOAT fX = rectWnd.left + 1.5f; |
| 336 FX_FLOAT fY = rectWnd.bottom; | 336 FX_FLOAT fY = rectWnd.bottom; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 361 | 361 |
| 362 // draw inner border | 362 // draw inner border |
| 363 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); | 363 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 0.5f); |
| 364 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, | 364 CPWL_Utils::DrawStrokeRect(pDevice, pUser2Device, rcDraw, |
| 365 ArgbEncode(nTransparancy, 255, 255, 255), | 365 ArgbEncode(nTransparancy, 255, 255, 255), |
| 366 1.0f); | 366 1.0f); |
| 367 | 367 |
| 368 // draw background | 368 // draw background |
| 369 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); | 369 rcDraw = CPWL_Utils::DeflateRect(rectWnd, 1.0f); |
| 370 if (IsEnabled()) | 370 if (IsEnabled()) |
| 371 CPWL_Utils::DrawShadow(pDevice, pUser2Device, TRUE, FALSE, rcDraw, | 371 CPWL_Utils::DrawShadow(pDevice, pUser2Device, true, false, rcDraw, |
| 372 nTransparancy, 80, 220); | 372 nTransparancy, 80, 220); |
| 373 else | 373 else |
| 374 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, | 374 CPWL_Utils::DrawFillRect(pDevice, pUser2Device, rcDraw, |
| 375 ArgbEncode(255, 255, 255, 255)); | 375 ArgbEncode(255, 255, 255, 255)); |
| 376 | 376 |
| 377 // draw arrow | 377 // draw arrow |
| 378 | 378 |
| 379 if (rectWnd.top - rectWnd.bottom > 6.0f) { | 379 if (rectWnd.top - rectWnd.bottom > 6.0f) { |
| 380 FX_FLOAT fX = rectWnd.left + 1.5f; | 380 FX_FLOAT fX = rectWnd.left + 1.5f; |
| 381 FX_FLOAT fY = rectWnd.bottom; | 381 FX_FLOAT fY = rectWnd.bottom; |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 } break; | 529 } break; |
| 530 default: | 530 default: |
| 531 break; | 531 break; |
| 532 } | 532 } |
| 533 break; | 533 break; |
| 534 default: | 534 default: |
| 535 break; | 535 break; |
| 536 } | 536 } |
| 537 } | 537 } |
| 538 | 538 |
| 539 FX_BOOL CPWL_SBButton::OnLButtonDown(const CFX_FloatPoint& point, | 539 bool CPWL_SBButton::OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag) { |
| 540 uint32_t nFlag) { | |
| 541 CPWL_Wnd::OnLButtonDown(point, nFlag); | 540 CPWL_Wnd::OnLButtonDown(point, nFlag); |
| 542 | 541 |
| 543 if (CPWL_Wnd* pParent = GetParentWindow()) | 542 if (CPWL_Wnd* pParent = GetParentWindow()) |
| 544 pParent->OnNotify(this, PNM_LBUTTONDOWN, 0, (intptr_t)&point); | 543 pParent->OnNotify(this, PNM_LBUTTONDOWN, 0, (intptr_t)&point); |
| 545 | 544 |
| 546 m_bMouseDown = TRUE; | 545 m_bMouseDown = true; |
| 547 SetCapture(); | 546 SetCapture(); |
| 548 | 547 |
| 549 return TRUE; | 548 return true; |
| 550 } | 549 } |
| 551 | 550 |
| 552 FX_BOOL CPWL_SBButton::OnLButtonUp(const CFX_FloatPoint& point, | 551 bool CPWL_SBButton::OnLButtonUp(const CFX_FloatPoint& point, uint32_t nFlag) { |
| 553 uint32_t nFlag) { | |
| 554 CPWL_Wnd::OnLButtonUp(point, nFlag); | 552 CPWL_Wnd::OnLButtonUp(point, nFlag); |
| 555 | 553 |
| 556 if (CPWL_Wnd* pParent = GetParentWindow()) | 554 if (CPWL_Wnd* pParent = GetParentWindow()) |
| 557 pParent->OnNotify(this, PNM_LBUTTONUP, 0, (intptr_t)&point); | 555 pParent->OnNotify(this, PNM_LBUTTONUP, 0, (intptr_t)&point); |
| 558 | 556 |
| 559 m_bMouseDown = FALSE; | 557 m_bMouseDown = false; |
| 560 ReleaseCapture(); | 558 ReleaseCapture(); |
| 561 | 559 |
| 562 return TRUE; | 560 return true; |
| 563 } | 561 } |
| 564 | 562 |
| 565 FX_BOOL CPWL_SBButton::OnMouseMove(const CFX_FloatPoint& point, | 563 bool CPWL_SBButton::OnMouseMove(const CFX_FloatPoint& point, uint32_t nFlag) { |
| 566 uint32_t nFlag) { | |
| 567 CPWL_Wnd::OnMouseMove(point, nFlag); | 564 CPWL_Wnd::OnMouseMove(point, nFlag); |
| 568 | 565 |
| 569 if (CPWL_Wnd* pParent = GetParentWindow()) { | 566 if (CPWL_Wnd* pParent = GetParentWindow()) { |
| 570 pParent->OnNotify(this, PNM_MOUSEMOVE, 0, (intptr_t)&point); | 567 pParent->OnNotify(this, PNM_MOUSEMOVE, 0, (intptr_t)&point); |
| 571 } | 568 } |
| 572 | 569 |
| 573 return TRUE; | 570 return true; |
| 574 } | 571 } |
| 575 | 572 |
| 576 CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType) | 573 CPWL_ScrollBar::CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType) |
| 577 : m_sbType(sbType), | 574 : m_sbType(sbType), |
| 578 m_pMinButton(nullptr), | 575 m_pMinButton(nullptr), |
| 579 m_pMaxButton(nullptr), | 576 m_pMaxButton(nullptr), |
| 580 m_pPosButton(nullptr), | 577 m_pPosButton(nullptr), |
| 581 m_bMouseDown(FALSE), | 578 m_bMouseDown(false), |
| 582 m_bMinOrMax(FALSE), | 579 m_bMinOrMax(false), |
| 583 m_bNotifyForever(TRUE) {} | 580 m_bNotifyForever(true) {} |
| 584 | 581 |
| 585 CPWL_ScrollBar::~CPWL_ScrollBar() {} | 582 CPWL_ScrollBar::~CPWL_ScrollBar() {} |
| 586 | 583 |
| 587 CFX_ByteString CPWL_ScrollBar::GetClassName() const { | 584 CFX_ByteString CPWL_ScrollBar::GetClassName() const { |
| 588 return "CPWL_ScrollBar"; | 585 return "CPWL_ScrollBar"; |
| 589 } | 586 } |
| 590 | 587 |
| 591 void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) { | 588 void CPWL_ScrollBar::OnCreate(PWL_CREATEPARAM& cp) { |
| 592 cp.eCursorType = FXCT_ARROW; | 589 cp.eCursorType = FXCT_ARROW; |
| 593 } | 590 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 612 fBWidth = (rcClient.right - rcClient.left - | 609 fBWidth = (rcClient.right - rcClient.left - |
| 613 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / | 610 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / |
| 614 2; | 611 2; |
| 615 | 612 |
| 616 if (fBWidth > 0) { | 613 if (fBWidth > 0) { |
| 617 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.bottom, | 614 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.bottom, |
| 618 rcClient.left + fBWidth, rcClient.top); | 615 rcClient.left + fBWidth, rcClient.top); |
| 619 rcMaxButton = CFX_FloatRect(rcClient.right - fBWidth, rcClient.bottom, | 616 rcMaxButton = CFX_FloatRect(rcClient.right - fBWidth, rcClient.bottom, |
| 620 rcClient.right, rcClient.top); | 617 rcClient.right, rcClient.top); |
| 621 } else { | 618 } else { |
| 622 SetVisible(FALSE); | 619 SetVisible(false); |
| 623 } | 620 } |
| 624 } | 621 } |
| 625 break; | 622 break; |
| 626 case SBT_VSCROLL: | 623 case SBT_VSCROLL: |
| 627 if (IsFloatBigger(rcClient.top - rcClient.bottom, | 624 if (IsFloatBigger(rcClient.top - rcClient.bottom, |
| 628 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + | 625 PWL_SCROLLBAR_BUTTON_WIDTH * 2 + |
| 629 PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)) { | 626 PWL_SCROLLBAR_POSBUTTON_MINWIDTH + 2)) { |
| 630 rcMinButton = CFX_FloatRect(rcClient.left, | 627 rcMinButton = CFX_FloatRect(rcClient.left, |
| 631 rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH, | 628 rcClient.top - PWL_SCROLLBAR_BUTTON_WIDTH, |
| 632 rcClient.right, rcClient.top); | 629 rcClient.right, rcClient.top); |
| 633 rcMaxButton = | 630 rcMaxButton = |
| 634 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, | 631 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, |
| 635 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH); | 632 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH); |
| 636 } else { | 633 } else { |
| 637 fBWidth = (rcClient.top - rcClient.bottom - | 634 fBWidth = (rcClient.top - rcClient.bottom - |
| 638 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / | 635 PWL_SCROLLBAR_POSBUTTON_MINWIDTH - 2) / |
| 639 2; | 636 2; |
| 640 | 637 |
| 641 if (IsFloatBigger(fBWidth, 0)) { | 638 if (IsFloatBigger(fBWidth, 0)) { |
| 642 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.top - fBWidth, | 639 rcMinButton = CFX_FloatRect(rcClient.left, rcClient.top - fBWidth, |
| 643 rcClient.right, rcClient.top); | 640 rcClient.right, rcClient.top); |
| 644 rcMaxButton = | 641 rcMaxButton = |
| 645 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, | 642 CFX_FloatRect(rcClient.left, rcClient.bottom, rcClient.right, |
| 646 rcClient.bottom + fBWidth); | 643 rcClient.bottom + fBWidth); |
| 647 } else { | 644 } else { |
| 648 SetVisible(FALSE); | 645 SetVisible(false); |
| 649 } | 646 } |
| 650 } | 647 } |
| 651 break; | 648 break; |
| 652 } | 649 } |
| 653 | 650 |
| 654 if (m_pMinButton) | 651 if (m_pMinButton) |
| 655 m_pMinButton->Move(rcMinButton, TRUE, FALSE); | 652 m_pMinButton->Move(rcMinButton, true, false); |
| 656 if (m_pMaxButton) | 653 if (m_pMaxButton) |
| 657 m_pMaxButton->Move(rcMaxButton, TRUE, FALSE); | 654 m_pMaxButton->Move(rcMaxButton, true, false); |
| 658 MovePosButton(FALSE); | 655 MovePosButton(false); |
| 659 } | 656 } |
| 660 | 657 |
| 661 void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { | 658 void CPWL_ScrollBar::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { |
| 662 CFX_FloatRect rectWnd = GetWindowRect(); | 659 CFX_FloatRect rectWnd = GetWindowRect(); |
| 663 | 660 |
| 664 if (IsVisible() && !rectWnd.IsEmpty()) { | 661 if (IsVisible() && !rectWnd.IsEmpty()) { |
| 665 CFX_ByteTextBuf sButton; | 662 CFX_ByteTextBuf sButton; |
| 666 | 663 |
| 667 sButton << "q\n"; | 664 sButton << "q\n"; |
| 668 sButton << "0 w\n" | 665 sButton << "0 w\n" |
| 669 << CPWL_Utils::GetColorAppStream(GetBackgroundColor(), TRUE) | 666 << CPWL_Utils::GetColorAppStream(GetBackgroundColor(), true) |
| 670 .AsStringC(); | 667 .AsStringC(); |
| 671 sButton << rectWnd.left << " " << rectWnd.bottom << " " | 668 sButton << rectWnd.left << " " << rectWnd.bottom << " " |
| 672 << rectWnd.right - rectWnd.left << " " | 669 << rectWnd.right - rectWnd.left << " " |
| 673 << rectWnd.top - rectWnd.bottom << " re b Q\n"; | 670 << rectWnd.top - rectWnd.bottom << " re b Q\n"; |
| 674 | 671 |
| 675 sAppStream << sButton; | 672 sAppStream << sButton; |
| 676 } | 673 } |
| 677 } | 674 } |
| 678 | 675 |
| 679 void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice, | 676 void CPWL_ScrollBar::DrawThisAppearance(CFX_RenderDevice* pDevice, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 691 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); | 688 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); |
| 692 | 689 |
| 693 CPWL_Utils::DrawStrokeLine( | 690 CPWL_Utils::DrawStrokeLine( |
| 694 pDevice, pUser2Device, | 691 pDevice, pUser2Device, |
| 695 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.top - 2.0f), | 692 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.top - 2.0f), |
| 696 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.bottom + 2.0f), | 693 CFX_FloatPoint(rectWnd.right - 2.0f, rectWnd.bottom + 2.0f), |
| 697 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); | 694 ArgbEncode(GetTransparency(), 100, 100, 100), 1.0f); |
| 698 } | 695 } |
| 699 } | 696 } |
| 700 | 697 |
| 701 FX_BOOL CPWL_ScrollBar::OnLButtonDown(const CFX_FloatPoint& point, | 698 bool CPWL_ScrollBar::OnLButtonDown(const CFX_FloatPoint& point, |
| 702 uint32_t nFlag) { | 699 uint32_t nFlag) { |
| 703 CPWL_Wnd::OnLButtonDown(point, nFlag); | 700 CPWL_Wnd::OnLButtonDown(point, nFlag); |
| 704 | 701 |
| 705 if (HasFlag(PWS_AUTOTRANSPARENT)) { | 702 if (HasFlag(PWS_AUTOTRANSPARENT)) { |
| 706 if (GetTransparency() != 255) { | 703 if (GetTransparency() != 255) { |
| 707 SetTransparency(255); | 704 SetTransparency(255); |
| 708 InvalidateRect(); | 705 InvalidateRect(); |
| 709 } | 706 } |
| 710 } | 707 } |
| 711 | 708 |
| 712 CFX_FloatRect rcMinArea, rcMaxArea; | 709 CFX_FloatRect rcMinArea, rcMaxArea; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 733 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH, | 730 rcClient.bottom + PWL_SCROLLBAR_BUTTON_WIDTH, |
| 734 rcClient.right, rcPosButton.bottom); | 731 rcClient.right, rcPosButton.bottom); |
| 735 break; | 732 break; |
| 736 } | 733 } |
| 737 | 734 |
| 738 rcMinArea.Normalize(); | 735 rcMinArea.Normalize(); |
| 739 rcMaxArea.Normalize(); | 736 rcMaxArea.Normalize(); |
| 740 | 737 |
| 741 if (rcMinArea.Contains(point.x, point.y)) { | 738 if (rcMinArea.Contains(point.x, point.y)) { |
| 742 m_sData.SubBig(); | 739 m_sData.SubBig(); |
| 743 MovePosButton(TRUE); | 740 MovePosButton(true); |
| 744 NotifyScrollWindow(); | 741 NotifyScrollWindow(); |
| 745 } | 742 } |
| 746 | 743 |
| 747 if (rcMaxArea.Contains(point.x, point.y)) { | 744 if (rcMaxArea.Contains(point.x, point.y)) { |
| 748 m_sData.AddBig(); | 745 m_sData.AddBig(); |
| 749 MovePosButton(TRUE); | 746 MovePosButton(true); |
| 750 NotifyScrollWindow(); | 747 NotifyScrollWindow(); |
| 751 } | 748 } |
| 752 } | 749 } |
| 753 | 750 |
| 754 return TRUE; | 751 return true; |
| 755 } | 752 } |
| 756 | 753 |
| 757 FX_BOOL CPWL_ScrollBar::OnLButtonUp(const CFX_FloatPoint& point, | 754 bool CPWL_ScrollBar::OnLButtonUp(const CFX_FloatPoint& point, uint32_t nFlag) { |
| 758 uint32_t nFlag) { | |
| 759 CPWL_Wnd::OnLButtonUp(point, nFlag); | 755 CPWL_Wnd::OnLButtonUp(point, nFlag); |
| 760 | 756 |
| 761 if (HasFlag(PWS_AUTOTRANSPARENT)) { | 757 if (HasFlag(PWS_AUTOTRANSPARENT)) { |
| 762 if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY) { | 758 if (GetTransparency() != PWL_SCROLLBAR_TRANSPARANCY) { |
| 763 SetTransparency(PWL_SCROLLBAR_TRANSPARANCY); | 759 SetTransparency(PWL_SCROLLBAR_TRANSPARANCY); |
| 764 InvalidateRect(); | 760 InvalidateRect(); |
| 765 } | 761 } |
| 766 } | 762 } |
| 767 | 763 |
| 768 EndTimer(); | 764 EndTimer(); |
| 769 m_bMouseDown = FALSE; | 765 m_bMouseDown = false; |
| 770 | 766 |
| 771 return TRUE; | 767 return true; |
| 772 } | 768 } |
| 773 | 769 |
| 774 void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd, | 770 void CPWL_ScrollBar::OnNotify(CPWL_Wnd* pWnd, |
| 775 uint32_t msg, | 771 uint32_t msg, |
| 776 intptr_t wParam, | 772 intptr_t wParam, |
| 777 intptr_t lParam) { | 773 intptr_t lParam) { |
| 778 CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam); | 774 CPWL_Wnd::OnNotify(pWnd, msg, wParam, lParam); |
| 779 | 775 |
| 780 switch (msg) { | 776 switch (msg) { |
| 781 case PNM_LBUTTONDOWN: | 777 case PNM_LBUTTONDOWN: |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 857 m_pMinButton->Create(scp); | 853 m_pMinButton->Create(scp); |
| 858 } | 854 } |
| 859 | 855 |
| 860 if (!m_pMaxButton) { | 856 if (!m_pMaxButton) { |
| 861 m_pMaxButton = new CPWL_SBButton(m_sbType, PSBT_MAX); | 857 m_pMaxButton = new CPWL_SBButton(m_sbType, PSBT_MAX); |
| 862 m_pMaxButton->Create(scp); | 858 m_pMaxButton->Create(scp); |
| 863 } | 859 } |
| 864 | 860 |
| 865 if (!m_pPosButton) { | 861 if (!m_pPosButton) { |
| 866 m_pPosButton = new CPWL_SBButton(m_sbType, PSBT_POS); | 862 m_pPosButton = new CPWL_SBButton(m_sbType, PSBT_POS); |
| 867 m_pPosButton->SetVisible(FALSE); | 863 m_pPosButton->SetVisible(false); |
| 868 m_pPosButton->Create(scp); | 864 m_pPosButton->Create(scp); |
| 869 } | 865 } |
| 870 } | 866 } |
| 871 | 867 |
| 872 FX_FLOAT CPWL_ScrollBar::GetScrollBarWidth() const { | 868 FX_FLOAT CPWL_ScrollBar::GetScrollBarWidth() const { |
| 873 if (!IsVisible()) | 869 if (!IsVisible()) |
| 874 return 0; | 870 return 0; |
| 875 | 871 |
| 876 return PWL_SCROLLBAR_WIDTH; | 872 return PWL_SCROLLBAR_WIDTH; |
| 877 } | 873 } |
| 878 | 874 |
| 879 void CPWL_ScrollBar::SetScrollRange(FX_FLOAT fMin, | 875 void CPWL_ScrollBar::SetScrollRange(FX_FLOAT fMin, |
| 880 FX_FLOAT fMax, | 876 FX_FLOAT fMax, |
| 881 FX_FLOAT fClientWidth) { | 877 FX_FLOAT fClientWidth) { |
| 882 if (m_pPosButton) { | 878 if (m_pPosButton) { |
| 883 m_sData.SetScrollRange(fMin, fMax); | 879 m_sData.SetScrollRange(fMin, fMax); |
| 884 m_sData.SetClientWidth(fClientWidth); | 880 m_sData.SetClientWidth(fClientWidth); |
| 885 | 881 |
| 886 if (IsFloatSmaller(m_sData.ScrollRange.GetWidth(), 0.0f)) { | 882 if (IsFloatSmaller(m_sData.ScrollRange.GetWidth(), 0.0f)) { |
| 887 m_pPosButton->SetVisible(FALSE); | 883 m_pPosButton->SetVisible(false); |
| 888 } else { | 884 } else { |
| 889 m_pPosButton->SetVisible(TRUE); | 885 m_pPosButton->SetVisible(true); |
| 890 MovePosButton(TRUE); | 886 MovePosButton(true); |
| 891 } | 887 } |
| 892 } | 888 } |
| 893 } | 889 } |
| 894 | 890 |
| 895 void CPWL_ScrollBar::SetScrollPos(FX_FLOAT fPos) { | 891 void CPWL_ScrollBar::SetScrollPos(FX_FLOAT fPos) { |
| 896 FX_FLOAT fOldPos = m_sData.fScrollPos; | 892 FX_FLOAT fOldPos = m_sData.fScrollPos; |
| 897 | 893 |
| 898 m_sData.SetPos(fPos); | 894 m_sData.SetPos(fPos); |
| 899 | 895 |
| 900 if (!IsFloatEqual(m_sData.fScrollPos, fOldPos)) | 896 if (!IsFloatEqual(m_sData.fScrollPos, fOldPos)) |
| 901 MovePosButton(TRUE); | 897 MovePosButton(true); |
| 902 } | 898 } |
| 903 | 899 |
| 904 void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep) { | 900 void CPWL_ScrollBar::SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep) { |
| 905 m_sData.SetBigStep(fBigStep); | 901 m_sData.SetBigStep(fBigStep); |
| 906 m_sData.SetSmallStep(fSmallStep); | 902 m_sData.SetSmallStep(fSmallStep); |
| 907 } | 903 } |
| 908 | 904 |
| 909 void CPWL_ScrollBar::MovePosButton(FX_BOOL bRefresh) { | 905 void CPWL_ScrollBar::MovePosButton(bool bRefresh) { |
| 910 ASSERT(m_pMinButton); | 906 ASSERT(m_pMinButton); |
| 911 ASSERT(m_pMaxButton); | 907 ASSERT(m_pMaxButton); |
| 912 | 908 |
| 913 if (m_pPosButton->IsVisible()) { | 909 if (m_pPosButton->IsVisible()) { |
| 914 CFX_FloatRect rcClient; | 910 CFX_FloatRect rcClient; |
| 915 CFX_FloatRect rcPosArea, rcPosButton; | 911 CFX_FloatRect rcPosArea, rcPosButton; |
| 916 | 912 |
| 917 rcClient = GetClientRect(); | 913 rcClient = GetClientRect(); |
| 918 rcPosArea = GetScrollArea(); | 914 rcPosArea = GetScrollArea(); |
| 919 | 915 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 947 fBottom = rcPosArea.bottom; | 943 fBottom = rcPosArea.bottom; |
| 948 fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; | 944 fTop = fBottom + PWL_SCROLLBAR_POSBUTTON_MINWIDTH; |
| 949 } | 945 } |
| 950 | 946 |
| 951 rcPosButton = | 947 rcPosButton = |
| 952 CFX_FloatRect(rcPosArea.left, fBottom, rcPosArea.right, fTop); | 948 CFX_FloatRect(rcPosArea.left, fBottom, rcPosArea.right, fTop); |
| 953 | 949 |
| 954 break; | 950 break; |
| 955 } | 951 } |
| 956 | 952 |
| 957 m_pPosButton->Move(rcPosButton, TRUE, bRefresh); | 953 m_pPosButton->Move(rcPosButton, true, bRefresh); |
| 958 } | 954 } |
| 959 } | 955 } |
| 960 | 956 |
| 961 void CPWL_ScrollBar::OnMinButtonLBDown(const CFX_FloatPoint& point) { | 957 void CPWL_ScrollBar::OnMinButtonLBDown(const CFX_FloatPoint& point) { |
| 962 m_sData.SubSmall(); | 958 m_sData.SubSmall(); |
| 963 MovePosButton(TRUE); | 959 MovePosButton(true); |
| 964 NotifyScrollWindow(); | 960 NotifyScrollWindow(); |
| 965 | 961 |
| 966 m_bMinOrMax = TRUE; | 962 m_bMinOrMax = true; |
| 967 | 963 |
| 968 EndTimer(); | 964 EndTimer(); |
| 969 BeginTimer(100); | 965 BeginTimer(100); |
| 970 } | 966 } |
| 971 | 967 |
| 972 void CPWL_ScrollBar::OnMinButtonLBUp(const CFX_FloatPoint& point) {} | 968 void CPWL_ScrollBar::OnMinButtonLBUp(const CFX_FloatPoint& point) {} |
| 973 | 969 |
| 974 void CPWL_ScrollBar::OnMinButtonMouseMove(const CFX_FloatPoint& point) {} | 970 void CPWL_ScrollBar::OnMinButtonMouseMove(const CFX_FloatPoint& point) {} |
| 975 | 971 |
| 976 void CPWL_ScrollBar::OnMaxButtonLBDown(const CFX_FloatPoint& point) { | 972 void CPWL_ScrollBar::OnMaxButtonLBDown(const CFX_FloatPoint& point) { |
| 977 m_sData.AddSmall(); | 973 m_sData.AddSmall(); |
| 978 MovePosButton(TRUE); | 974 MovePosButton(true); |
| 979 NotifyScrollWindow(); | 975 NotifyScrollWindow(); |
| 980 | 976 |
| 981 m_bMinOrMax = FALSE; | 977 m_bMinOrMax = false; |
| 982 | 978 |
| 983 EndTimer(); | 979 EndTimer(); |
| 984 BeginTimer(100); | 980 BeginTimer(100); |
| 985 } | 981 } |
| 986 | 982 |
| 987 void CPWL_ScrollBar::OnMaxButtonLBUp(const CFX_FloatPoint& point) {} | 983 void CPWL_ScrollBar::OnMaxButtonLBUp(const CFX_FloatPoint& point) {} |
| 988 | 984 |
| 989 void CPWL_ScrollBar::OnMaxButtonMouseMove(const CFX_FloatPoint& point) {} | 985 void CPWL_ScrollBar::OnMaxButtonMouseMove(const CFX_FloatPoint& point) {} |
| 990 | 986 |
| 991 void CPWL_ScrollBar::OnPosButtonLBDown(const CFX_FloatPoint& point) { | 987 void CPWL_ScrollBar::OnPosButtonLBDown(const CFX_FloatPoint& point) { |
| 992 m_bMouseDown = TRUE; | 988 m_bMouseDown = true; |
| 993 | 989 |
| 994 if (m_pPosButton) { | 990 if (m_pPosButton) { |
| 995 CFX_FloatRect rcPosButton = m_pPosButton->GetWindowRect(); | 991 CFX_FloatRect rcPosButton = m_pPosButton->GetWindowRect(); |
| 996 | 992 |
| 997 switch (m_sbType) { | 993 switch (m_sbType) { |
| 998 case SBT_HSCROLL: | 994 case SBT_HSCROLL: |
| 999 m_nOldPos = point.x; | 995 m_nOldPos = point.x; |
| 1000 m_fOldPosButton = rcPosButton.left; | 996 m_fOldPosButton = rcPosButton.left; |
| 1001 break; | 997 break; |
| 1002 case SBT_VSCROLL: | 998 case SBT_VSCROLL: |
| 1003 m_nOldPos = point.y; | 999 m_nOldPos = point.y; |
| 1004 m_fOldPosButton = rcPosButton.top; | 1000 m_fOldPosButton = rcPosButton.top; |
| 1005 break; | 1001 break; |
| 1006 } | 1002 } |
| 1007 } | 1003 } |
| 1008 } | 1004 } |
| 1009 | 1005 |
| 1010 void CPWL_ScrollBar::OnPosButtonLBUp(const CFX_FloatPoint& point) { | 1006 void CPWL_ScrollBar::OnPosButtonLBUp(const CFX_FloatPoint& point) { |
| 1011 if (m_bMouseDown) { | 1007 if (m_bMouseDown) { |
| 1012 if (!m_bNotifyForever) | 1008 if (!m_bNotifyForever) |
| 1013 NotifyScrollWindow(); | 1009 NotifyScrollWindow(); |
| 1014 } | 1010 } |
| 1015 m_bMouseDown = FALSE; | 1011 m_bMouseDown = false; |
| 1016 } | 1012 } |
| 1017 | 1013 |
| 1018 void CPWL_ScrollBar::OnPosButtonMouseMove(const CFX_FloatPoint& point) { | 1014 void CPWL_ScrollBar::OnPosButtonMouseMove(const CFX_FloatPoint& point) { |
| 1019 FX_FLOAT fOldScrollPos = m_sData.fScrollPos; | 1015 FX_FLOAT fOldScrollPos = m_sData.fScrollPos; |
| 1020 | 1016 |
| 1021 FX_FLOAT fNewPos = 0; | 1017 FX_FLOAT fNewPos = 0; |
| 1022 | 1018 |
| 1023 switch (m_sbType) { | 1019 switch (m_sbType) { |
| 1024 case SBT_HSCROLL: | 1020 case SBT_HSCROLL: |
| 1025 if (FXSYS_fabs(point.x - m_nOldPos) < 1) | 1021 if (FXSYS_fabs(point.x - m_nOldPos) < 1) |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax)) { | 1053 if (IsFloatBigger(fNewPos, m_sData.ScrollRange.fMax)) { |
| 1058 fNewPos = m_sData.ScrollRange.fMax; | 1054 fNewPos = m_sData.ScrollRange.fMax; |
| 1059 } | 1055 } |
| 1060 | 1056 |
| 1061 m_sData.SetPos(fNewPos); | 1057 m_sData.SetPos(fNewPos); |
| 1062 | 1058 |
| 1063 break; | 1059 break; |
| 1064 } | 1060 } |
| 1065 | 1061 |
| 1066 if (!IsFloatEqual(fOldScrollPos, m_sData.fScrollPos)) { | 1062 if (!IsFloatEqual(fOldScrollPos, m_sData.fScrollPos)) { |
| 1067 MovePosButton(TRUE); | 1063 MovePosButton(true); |
| 1068 | 1064 |
| 1069 if (m_bNotifyForever) | 1065 if (m_bNotifyForever) |
| 1070 NotifyScrollWindow(); | 1066 NotifyScrollWindow(); |
| 1071 } | 1067 } |
| 1072 } | 1068 } |
| 1073 } | 1069 } |
| 1074 | 1070 |
| 1075 void CPWL_ScrollBar::NotifyScrollWindow() { | 1071 void CPWL_ScrollBar::NotifyScrollWindow() { |
| 1076 if (CPWL_Wnd* pParent = GetParentWindow()) { | 1072 if (CPWL_Wnd* pParent = GetParentWindow()) { |
| 1077 FX_FLOAT fPos; | 1073 FX_FLOAT fPos; |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1181 } | 1177 } |
| 1182 | 1178 |
| 1183 void CPWL_ScrollBar::TimerProc() { | 1179 void CPWL_ScrollBar::TimerProc() { |
| 1184 PWL_SCROLL_PRIVATEDATA sTemp = m_sData; | 1180 PWL_SCROLL_PRIVATEDATA sTemp = m_sData; |
| 1185 if (m_bMinOrMax) | 1181 if (m_bMinOrMax) |
| 1186 m_sData.SubSmall(); | 1182 m_sData.SubSmall(); |
| 1187 else | 1183 else |
| 1188 m_sData.AddSmall(); | 1184 m_sData.AddSmall(); |
| 1189 | 1185 |
| 1190 if (sTemp != m_sData) { | 1186 if (sTemp != m_sData) { |
| 1191 MovePosButton(TRUE); | 1187 MovePosButton(true); |
| 1192 NotifyScrollWindow(); | 1188 NotifyScrollWindow(); |
| 1193 } | 1189 } |
| 1194 } | 1190 } |
| OLD | NEW |