blob: 0bae463d39ea965ec4857e84d68a7be167a2a558 [file] [log] [blame] [edit]
// 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"
namespace pdfium {
IFWL_ThemeProvider::IFWL_ThemeProvider(cppgc::Heap* pHeap)
: check_box_tp_(cppgc::MakeGarbageCollected<CFWL_CheckBoxTP>(
pHeap->GetAllocationHandle())),
list_box_tp_(cppgc::MakeGarbageCollected<CFWL_ListBoxTP>(
pHeap->GetAllocationHandle())),
picture_box_tp_(cppgc::MakeGarbageCollected<CFWL_PictureBoxTP>(
pHeap->GetAllocationHandle())),
sroll_bar_tp_(cppgc::MakeGarbageCollected<CFWL_ScrollBarTP>(
pHeap->GetAllocationHandle())),
edit_tp_(cppgc::MakeGarbageCollected<CFWL_EditTP>(
pHeap->GetAllocationHandle())),
combo_box_tp_(cppgc::MakeGarbageCollected<CFWL_ComboBoxTP>(
pHeap->GetAllocationHandle())),
month_calendar_tp_(cppgc::MakeGarbageCollected<CFWL_MonthCalendarTP>(
pHeap->GetAllocationHandle())),
date_time_picker_tp_(cppgc::MakeGarbageCollected<CFWL_DateTimePickerTP>(
pHeap->GetAllocationHandle())),
push_button_tp_(cppgc::MakeGarbageCollected<CFWL_PushButtonTP>(
pHeap->GetAllocationHandle())),
caret_tp_(cppgc::MakeGarbageCollected<CFWL_CaretTP>(
pHeap->GetAllocationHandle())),
barcode_tp_(cppgc::MakeGarbageCollected<CFWL_BarcodeTP>(
pHeap->GetAllocationHandle())) {}
IFWL_ThemeProvider::~IFWL_ThemeProvider() = default;
void IFWL_ThemeProvider::Trace(cppgc::Visitor* visitor) const {
visitor->Trace(check_box_tp_);
visitor->Trace(list_box_tp_);
visitor->Trace(picture_box_tp_);
visitor->Trace(sroll_bar_tp_);
visitor->Trace(edit_tp_);
visitor->Trace(combo_box_tp_);
visitor->Trace(month_calendar_tp_);
visitor->Trace(date_time_picker_tp_);
visitor->Trace(push_button_tp_);
visitor->Trace(caret_tp_);
visitor->Trace(barcode_tp_);
}
CFWL_WidgetTP* IFWL_ThemeProvider::GetTheme(const CFWL_Widget* pWidget) const {
switch (pWidget->GetClassID()) {
case FWL_Type::CheckBox:
return check_box_tp_;
case FWL_Type::ListBox:
return list_box_tp_;
case FWL_Type::PictureBox:
return picture_box_tp_;
case FWL_Type::ScrollBar:
return sroll_bar_tp_;
case FWL_Type::Edit:
return edit_tp_;
case FWL_Type::ComboBox:
return combo_box_tp_;
case FWL_Type::MonthCalendar:
return month_calendar_tp_;
case FWL_Type::DateTimePicker:
return date_time_picker_tp_;
case FWL_Type::PushButton:
return push_button_tp_;
case FWL_Type::Caret:
return caret_tp_;
case FWL_Type::Barcode:
return barcode_tp_;
default:
return nullptr;
}
}
} // namespace pdfium