/* * This file is part of the WebKit project. * * Copyright (C) 2006 Dirk Mueller * 2006 Nikolas Zimmermann * Copyright (C) 2007 Ryan Leavengood * Copyright (C) 2009 Maxime Simon * * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * */ #include "config.h" #include "RenderThemeHaiku.h" #include "GraphicsContext.h" #include "NotImplemented.h" #include #include namespace WebCore { PassRefPtr RenderThemeHaiku::create() { return adoptRef(new RenderThemeHaiku()); } PassRefPtr RenderTheme::themeForPage(Page*) { static RenderTheme* renderTheme = RenderThemeHaiku::create().releaseRef(); return renderTheme; } RenderThemeHaiku::RenderThemeHaiku() { } RenderThemeHaiku::~RenderThemeHaiku() { } static bool supportsFocus(ControlPart appearance) { switch (appearance) { case PushButtonPart: case ButtonPart: case TextFieldPart: case TextAreaPart: case SearchFieldPart: case MenulistPart: case RadioPart: case CheckboxPart: return true; default: return false; } } bool RenderThemeHaiku::supportsFocusRing(const RenderStyle* style) const { return supportsFocus(style->appearance()); } Color RenderThemeHaiku::platformActiveSelectionBackgroundColor() const { return Color(ui_color(B_CONTROL_HIGHLIGHT_COLOR)); } Color RenderThemeHaiku::platformInactiveSelectionBackgroundColor() const { return Color(ui_color(B_CONTROL_HIGHLIGHT_COLOR)); } Color RenderThemeHaiku::platformActiveSelectionForegroundColor() const { return Color(ui_color(B_CONTROL_TEXT_COLOR)); } Color RenderThemeHaiku::platformInactiveSelectionForegroundColor() const { return Color(ui_color(B_CONTROL_TEXT_COLOR)); } Color RenderThemeHaiku::platformTextSearchHighlightColor() const { return Color(ui_color(B_MENU_SELECTED_BACKGROUND_COLOR)); } void RenderThemeHaiku::systemFont(int propId, FontDescription&) const { notImplemented(); } bool RenderThemeHaiku::paintCheckbox(RenderObject*, const RenderObject::PaintInfo& info, const IntRect& intRect) { if (info.context->paintingDisabled()) return false; rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); BRect rect = intRect; BView* view = info.context->platformContext(); if (!be_control_look) return false; be_control_look->DrawCheckBox(view, rect, rect, base); return true; } void RenderThemeHaiku::setCheckboxSize(RenderStyle* style) const { int size = 10; // If the width and height are both specified, then we have nothing to do. if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) return; // FIXME: A hard-coded size of 'size' is used. This is wrong but necessary for now. if (style->width().isIntrinsicOrAuto()) style->setWidth(Length(size, Fixed)); if (style->height().isAuto()) style->setHeight(Length(size, Fixed)); } bool RenderThemeHaiku::paintRadio(RenderObject*, const RenderObject::PaintInfo& info, const IntRect& intRect) { if (info.context->paintingDisabled()) return false; rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); BRect rect = intRect; BView* view = info.context->platformContext(); if (!be_control_look) return false; be_control_look->DrawRadioButton(view, rect, rect, base); return true; } void RenderThemeHaiku::setRadioSize(RenderStyle* style) const { // This is the same as checkboxes. setCheckboxSize(style); } void RenderThemeHaiku::adjustMenuListStyle(CSSStyleSelector*, RenderStyle* style, Element*) const { // Leave some space for the arrow. style->setPaddingRight(Length(22, Fixed)); const int minHeight = 20; style->setMinHeight(Length(minHeight, Fixed)); } bool RenderThemeHaiku::paintMenuList(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { notImplemented(); return false; } } // namespace WebCore