90 lines
3.3 KiB
C++
90 lines
3.3 KiB
C++
// Copyright 2020 The PDFium Authors
|
|
// 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/ifwl_themeprovider.h"
|
|
|
|
#include "xfa/fwl/cfwl_widget.h"
|
|
#include "xfa/fwl/theme/cfwl_barcodetp.h"
|
|
#include "xfa/fwl/theme/cfwl_carettp.h"
|
|
#include "xfa/fwl/theme/cfwl_checkboxtp.h"
|
|
#include "xfa/fwl/theme/cfwl_comboboxtp.h"
|
|
#include "xfa/fwl/theme/cfwl_datetimepickertp.h"
|
|
#include "xfa/fwl/theme/cfwl_edittp.h"
|
|
#include "xfa/fwl/theme/cfwl_listboxtp.h"
|
|
#include "xfa/fwl/theme/cfwl_monthcalendartp.h"
|
|
#include "xfa/fwl/theme/cfwl_pictureboxtp.h"
|
|
#include "xfa/fwl/theme/cfwl_pushbuttontp.h"
|
|
#include "xfa/fwl/theme/cfwl_scrollbartp.h"
|
|
|
|
IFWL_ThemeProvider::IFWL_ThemeProvider(cppgc::Heap* pHeap)
|
|
: m_pCheckBoxTP(cppgc::MakeGarbageCollected<CFWL_CheckBoxTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pListBoxTP(cppgc::MakeGarbageCollected<CFWL_ListBoxTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pPictureBoxTP(cppgc::MakeGarbageCollected<CFWL_PictureBoxTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pSrollBarTP(cppgc::MakeGarbageCollected<CFWL_ScrollBarTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pEditTP(cppgc::MakeGarbageCollected<CFWL_EditTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pComboBoxTP(cppgc::MakeGarbageCollected<CFWL_ComboBoxTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pMonthCalendarTP(cppgc::MakeGarbageCollected<CFWL_MonthCalendarTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pDateTimePickerTP(cppgc::MakeGarbageCollected<CFWL_DateTimePickerTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pPushButtonTP(cppgc::MakeGarbageCollected<CFWL_PushButtonTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pCaretTP(cppgc::MakeGarbageCollected<CFWL_CaretTP>(
|
|
pHeap->GetAllocationHandle())),
|
|
m_pBarcodeTP(cppgc::MakeGarbageCollected<CFWL_BarcodeTP>(
|
|
pHeap->GetAllocationHandle())) {}
|
|
|
|
IFWL_ThemeProvider::~IFWL_ThemeProvider() = default;
|
|
|
|
void IFWL_ThemeProvider::Trace(cppgc::Visitor* visitor) const {
|
|
visitor->Trace(m_pCheckBoxTP);
|
|
visitor->Trace(m_pListBoxTP);
|
|
visitor->Trace(m_pPictureBoxTP);
|
|
visitor->Trace(m_pSrollBarTP);
|
|
visitor->Trace(m_pEditTP);
|
|
visitor->Trace(m_pComboBoxTP);
|
|
visitor->Trace(m_pMonthCalendarTP);
|
|
visitor->Trace(m_pDateTimePickerTP);
|
|
visitor->Trace(m_pPushButtonTP);
|
|
visitor->Trace(m_pCaretTP);
|
|
visitor->Trace(m_pBarcodeTP);
|
|
}
|
|
|
|
CFWL_WidgetTP* IFWL_ThemeProvider::GetTheme(const CFWL_Widget* pWidget) const {
|
|
switch (pWidget->GetClassID()) {
|
|
case FWL_Type::CheckBox:
|
|
return m_pCheckBoxTP;
|
|
case FWL_Type::ListBox:
|
|
return m_pListBoxTP;
|
|
case FWL_Type::PictureBox:
|
|
return m_pPictureBoxTP;
|
|
case FWL_Type::ScrollBar:
|
|
return m_pSrollBarTP;
|
|
case FWL_Type::Edit:
|
|
return m_pEditTP;
|
|
case FWL_Type::ComboBox:
|
|
return m_pComboBoxTP;
|
|
case FWL_Type::MonthCalendar:
|
|
return m_pMonthCalendarTP;
|
|
case FWL_Type::DateTimePicker:
|
|
return m_pDateTimePickerTP;
|
|
case FWL_Type::PushButton:
|
|
return m_pPushButtonTP;
|
|
case FWL_Type::Caret:
|
|
return m_pCaretTP;
|
|
case FWL_Type::Barcode:
|
|
return m_pBarcodeTP;
|
|
default:
|
|
return nullptr;
|
|
}
|
|
}
|