// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "xfa/fwl/lightwidget/cfwl_scrollbar.h" #include <memory> #include "xfa/fwl/basewidget/ifwl_scrollbar.h" CFWL_ScrollBar* CFWL_ScrollBar::Create() { return new CFWL_ScrollBar; } CFWL_ScrollBar::CFWL_ScrollBar() {} CFWL_ScrollBar::~CFWL_ScrollBar() {} FWL_Error CFWL_ScrollBar::Initialize(const CFWL_WidgetProperties* pProperties) { if (m_pIface) return FWL_Error::Indefinite; if (pProperties) { *m_pProperties = *pProperties; } std::unique_ptr<IFWL_ScrollBar> pScrollBar(IFWL_ScrollBar::Create( m_pProperties->MakeWidgetImpProperties(nullptr), nullptr)); FWL_Error ret = pScrollBar->Initialize(); if (ret != FWL_Error::Succeeded) { return ret; } m_pIface = pScrollBar.release(); CFWL_Widget::Initialize(); return FWL_Error::Succeeded; } FX_BOOL CFWL_ScrollBar::IsVertical() { if (!m_pIface) return FALSE; return static_cast<IFWL_ScrollBar*>(m_pIface)->IsVertical(); } FWL_Error CFWL_ScrollBar::GetRange(FX_FLOAT& fMin, FX_FLOAT& fMax) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->GetRange(fMin, fMax); } FWL_Error CFWL_ScrollBar::SetRange(FX_FLOAT fMin, FX_FLOAT fMax) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->SetRange(fMin, fMax); } FX_FLOAT CFWL_ScrollBar::GetPageSize() { if (!m_pIface) return 0; return static_cast<IFWL_ScrollBar*>(m_pIface)->GetPageSize(); } FWL_Error CFWL_ScrollBar::SetPageSize(FX_FLOAT fPageSize) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->SetPageSize(fPageSize); } FX_FLOAT CFWL_ScrollBar::GetStepSize() { if (!m_pIface) return 0; return static_cast<IFWL_ScrollBar*>(m_pIface)->GetStepSize(); } FWL_Error CFWL_ScrollBar::SetStepSize(FX_FLOAT fStepSize) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->SetStepSize(fStepSize); } FX_FLOAT CFWL_ScrollBar::GetPos() { if (!m_pIface) return -1; return static_cast<IFWL_ScrollBar*>(m_pIface)->GetPos(); } FWL_Error CFWL_ScrollBar::SetPos(FX_FLOAT fPos) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->SetPos(fPos); } FX_FLOAT CFWL_ScrollBar::GetTrackPos() { if (!m_pIface) return -1; return static_cast<IFWL_ScrollBar*>(m_pIface)->GetTrackPos(); } FWL_Error CFWL_ScrollBar::SetTrackPos(FX_FLOAT fTrackPos) { if (!m_pIface) return FWL_Error::Indefinite; return static_cast<IFWL_ScrollBar*>(m_pIface)->SetTrackPos(fTrackPos); } FX_BOOL CFWL_ScrollBar::DoScroll(uint32_t dwCode, FX_FLOAT fPos) { if (!m_pIface) return FALSE; return static_cast<IFWL_ScrollBar*>(m_pIface)->DoScroll(dwCode, fPos); }