OLD | NEW |
1 /** | 1 /** |
2 * This file is part of the theme implementation for form controls in WebCore. | 2 * This file is part of the theme implementation for form controls in WebCore. |
3 * | 3 * |
4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. | 4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 #include "public/platform/WebFallbackThemeEngine.h" | 59 #include "public/platform/WebFallbackThemeEngine.h" |
60 #include "public/platform/WebRect.h" | 60 #include "public/platform/WebRect.h" |
61 #include "wtf/text/StringBuilder.h" | 61 #include "wtf/text/StringBuilder.h" |
62 | 62 |
63 // The methods in this file are shared by all themes on every platform. | 63 // The methods in this file are shared by all themes on every platform. |
64 | 64 |
65 namespace blink { | 65 namespace blink { |
66 | 66 |
67 using namespace HTMLNames; | 67 using namespace HTMLNames; |
68 | 68 |
69 static blink::WebFallbackThemeEngine::State getWebFallbackThemeState(const Rende
rTheme* theme, const RenderObject* o) | 69 static WebFallbackThemeEngine::State getWebFallbackThemeState(const RenderTheme*
theme, const RenderObject* o) |
70 { | 70 { |
71 if (!theme->isEnabled(o)) | 71 if (!theme->isEnabled(o)) |
72 return blink::WebFallbackThemeEngine::StateDisabled; | 72 return WebFallbackThemeEngine::StateDisabled; |
73 if (theme->isPressed(o)) | 73 if (theme->isPressed(o)) |
74 return blink::WebFallbackThemeEngine::StatePressed; | 74 return WebFallbackThemeEngine::StatePressed; |
75 if (theme->isHovered(o)) | 75 if (theme->isHovered(o)) |
76 return blink::WebFallbackThemeEngine::StateHover; | 76 return WebFallbackThemeEngine::StateHover; |
77 | 77 |
78 return blink::WebFallbackThemeEngine::StateNormal; | 78 return WebFallbackThemeEngine::StateNormal; |
79 } | 79 } |
80 | 80 |
81 RenderTheme::RenderTheme() | 81 RenderTheme::RenderTheme() |
82 : m_hasCustomFocusRingColor(false) | 82 : m_hasCustomFocusRingColor(false) |
83 #if USE(NEW_THEME) | 83 #if USE(NEW_THEME) |
84 , m_platformTheme(platformTheme()) | 84 , m_platformTheme(platformTheme()) |
85 #endif | 85 #endif |
86 { | 86 { |
87 } | 87 } |
88 | 88 |
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1054 return m_hasCustomFocusRingColor ? m_customFocusRingColor : theme().platform
FocusRingColor(); | 1054 return m_hasCustomFocusRingColor ? m_customFocusRingColor : theme().platform
FocusRingColor(); |
1055 } | 1055 } |
1056 | 1056 |
1057 String RenderTheme::fileListNameForWidth(Locale& locale, const FileList* fileLis
t, const Font& font, int width) const | 1057 String RenderTheme::fileListNameForWidth(Locale& locale, const FileList* fileLis
t, const Font& font, int width) const |
1058 { | 1058 { |
1059 if (width <= 0) | 1059 if (width <= 0) |
1060 return String(); | 1060 return String(); |
1061 | 1061 |
1062 String string; | 1062 String string; |
1063 if (fileList->isEmpty()) { | 1063 if (fileList->isEmpty()) { |
1064 string = locale.queryString(blink::WebLocalizedString::FileButtonNoFileS
electedLabel); | 1064 string = locale.queryString(WebLocalizedString::FileButtonNoFileSelected
Label); |
1065 } else if (fileList->length() == 1) { | 1065 } else if (fileList->length() == 1) { |
1066 string = fileList->item(0)->name(); | 1066 string = fileList->item(0)->name(); |
1067 } else { | 1067 } else { |
1068 // FIXME: Localization of fileList->length(). | 1068 // FIXME: Localization of fileList->length(). |
1069 return StringTruncator::rightTruncate(locale.queryString(blink::WebLocal
izedString::MultipleFileUploadText, String::number(fileList->length())), width,
font); | 1069 return StringTruncator::rightTruncate(locale.queryString(WebLocalizedStr
ing::MultipleFileUploadText, String::number(fileList->length())), width, font); |
1070 } | 1070 } |
1071 | 1071 |
1072 return StringTruncator::centerTruncate(string, width, font); | 1072 return StringTruncator::centerTruncate(string, width, font); |
1073 } | 1073 } |
1074 | 1074 |
1075 bool RenderTheme::shouldOpenPickerWithF4Key() const | 1075 bool RenderTheme::shouldOpenPickerWithF4Key() const |
1076 { | 1076 { |
1077 return false; | 1077 return false; |
1078 } | 1078 } |
1079 | 1079 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1124 void RenderTheme::setSizeIfAuto(RenderStyle* style, const IntSize& size) | 1124 void RenderTheme::setSizeIfAuto(RenderStyle* style, const IntSize& size) |
1125 { | 1125 { |
1126 if (style->width().isIntrinsicOrAuto()) | 1126 if (style->width().isIntrinsicOrAuto()) |
1127 style->setWidth(Length(size.width(), Fixed)); | 1127 style->setWidth(Length(size.width(), Fixed)); |
1128 if (style->height().isAuto()) | 1128 if (style->height().isAuto()) |
1129 style->setHeight(Length(size.height(), Fixed)); | 1129 style->setHeight(Length(size.height(), Fixed)); |
1130 } | 1130 } |
1131 | 1131 |
1132 bool RenderTheme::paintCheckboxUsingFallbackTheme(RenderObject* o, const PaintIn
fo& i, const IntRect& r) | 1132 bool RenderTheme::paintCheckboxUsingFallbackTheme(RenderObject* o, const PaintIn
fo& i, const IntRect& r) |
1133 { | 1133 { |
1134 blink::WebFallbackThemeEngine::ExtraParams extraParams; | 1134 WebFallbackThemeEngine::ExtraParams extraParams; |
1135 blink::WebCanvas* canvas = i.context->canvas(); | 1135 WebCanvas* canvas = i.context->canvas(); |
1136 extraParams.button.checked = isChecked(o); | 1136 extraParams.button.checked = isChecked(o); |
1137 extraParams.button.indeterminate = isIndeterminate(o); | 1137 extraParams.button.indeterminate = isIndeterminate(o); |
1138 | 1138 |
1139 float zoomLevel = o->style()->effectiveZoom(); | 1139 float zoomLevel = o->style()->effectiveZoom(); |
1140 GraphicsContextStateSaver stateSaver(*i.context); | 1140 GraphicsContextStateSaver stateSaver(*i.context); |
1141 IntRect unzoomedRect = r; | 1141 IntRect unzoomedRect = r; |
1142 if (zoomLevel != 1) { | 1142 if (zoomLevel != 1) { |
1143 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); | 1143 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); |
1144 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); | 1144 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); |
1145 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); | 1145 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); |
1146 i.context->scale(zoomLevel, zoomLevel); | 1146 i.context->scale(zoomLevel, zoomLevel); |
1147 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); | 1147 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); |
1148 } | 1148 } |
1149 | 1149 |
1150 blink::Platform::current()->fallbackThemeEngine()->paint(canvas, blink::WebF
allbackThemeEngine::PartCheckbox, getWebFallbackThemeState(this, o), blink::WebR
ect(unzoomedRect), &extraParams); | 1150 Platform::current()->fallbackThemeEngine()->paint(canvas, WebFallbackThemeEn
gine::PartCheckbox, getWebFallbackThemeState(this, o), WebRect(unzoomedRect), &e
xtraParams); |
1151 return false; | 1151 return false; |
1152 } | 1152 } |
1153 | 1153 |
1154 void RenderTheme::adjustCheckboxStyleUsingFallbackTheme(RenderStyle* style, Elem
ent*) const | 1154 void RenderTheme::adjustCheckboxStyleUsingFallbackTheme(RenderStyle* style, Elem
ent*) const |
1155 { | 1155 { |
1156 // If the width and height are both specified, then we have nothing to do. | 1156 // If the width and height are both specified, then we have nothing to do. |
1157 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) | 1157 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) |
1158 return; | 1158 return; |
1159 | 1159 |
1160 IntSize size = blink::Platform::current()->fallbackThemeEngine()->getSize(bl
ink::WebFallbackThemeEngine::PartCheckbox); | 1160 IntSize size = Platform::current()->fallbackThemeEngine()->getSize(WebFallba
ckThemeEngine::PartCheckbox); |
1161 float zoomLevel = style->effectiveZoom(); | 1161 float zoomLevel = style->effectiveZoom(); |
1162 size.setWidth(size.width() * zoomLevel); | 1162 size.setWidth(size.width() * zoomLevel); |
1163 size.setHeight(size.height() * zoomLevel); | 1163 size.setHeight(size.height() * zoomLevel); |
1164 setSizeIfAuto(style, size); | 1164 setSizeIfAuto(style, size); |
1165 | 1165 |
1166 // padding - not honored by WinIE, needs to be removed. | 1166 // padding - not honored by WinIE, needs to be removed. |
1167 style->resetPadding(); | 1167 style->resetPadding(); |
1168 | 1168 |
1169 // border - honored by WinIE, but looks terrible (just paints in the control
box and turns off the Windows XP theme) | 1169 // border - honored by WinIE, but looks terrible (just paints in the control
box and turns off the Windows XP theme) |
1170 // for now, we will not honor it. | 1170 // for now, we will not honor it. |
1171 style->resetBorder(); | 1171 style->resetBorder(); |
1172 } | 1172 } |
1173 | 1173 |
1174 bool RenderTheme::paintRadioUsingFallbackTheme(RenderObject* o, const PaintInfo&
i, const IntRect& r) | 1174 bool RenderTheme::paintRadioUsingFallbackTheme(RenderObject* o, const PaintInfo&
i, const IntRect& r) |
1175 { | 1175 { |
1176 blink::WebFallbackThemeEngine::ExtraParams extraParams; | 1176 WebFallbackThemeEngine::ExtraParams extraParams; |
1177 blink::WebCanvas* canvas = i.context->canvas(); | 1177 WebCanvas* canvas = i.context->canvas(); |
1178 extraParams.button.checked = isChecked(o); | 1178 extraParams.button.checked = isChecked(o); |
1179 extraParams.button.indeterminate = isIndeterminate(o); | 1179 extraParams.button.indeterminate = isIndeterminate(o); |
1180 | 1180 |
1181 float zoomLevel = o->style()->effectiveZoom(); | 1181 float zoomLevel = o->style()->effectiveZoom(); |
1182 GraphicsContextStateSaver stateSaver(*i.context); | 1182 GraphicsContextStateSaver stateSaver(*i.context); |
1183 IntRect unzoomedRect = r; | 1183 IntRect unzoomedRect = r; |
1184 if (zoomLevel != 1) { | 1184 if (zoomLevel != 1) { |
1185 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); | 1185 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); |
1186 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); | 1186 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); |
1187 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); | 1187 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); |
1188 i.context->scale(zoomLevel, zoomLevel); | 1188 i.context->scale(zoomLevel, zoomLevel); |
1189 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); | 1189 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); |
1190 } | 1190 } |
1191 | 1191 |
1192 blink::Platform::current()->fallbackThemeEngine()->paint(canvas, blink::WebF
allbackThemeEngine::PartRadio, getWebFallbackThemeState(this, o), blink::WebRect
(unzoomedRect), &extraParams); | 1192 Platform::current()->fallbackThemeEngine()->paint(canvas, WebFallbackThemeEn
gine::PartRadio, getWebFallbackThemeState(this, o), WebRect(unzoomedRect), &extr
aParams); |
1193 return false; | 1193 return false; |
1194 } | 1194 } |
1195 | 1195 |
1196 void RenderTheme::adjustRadioStyleUsingFallbackTheme(RenderStyle* style, Element
*) const | 1196 void RenderTheme::adjustRadioStyleUsingFallbackTheme(RenderStyle* style, Element
*) const |
1197 { | 1197 { |
1198 // If the width and height are both specified, then we have nothing to do. | 1198 // If the width and height are both specified, then we have nothing to do. |
1199 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) | 1199 if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto()) |
1200 return; | 1200 return; |
1201 | 1201 |
1202 IntSize size = blink::Platform::current()->fallbackThemeEngine()->getSize(bl
ink::WebFallbackThemeEngine::PartRadio); | 1202 IntSize size = Platform::current()->fallbackThemeEngine()->getSize(WebFallba
ckThemeEngine::PartRadio); |
1203 float zoomLevel = style->effectiveZoom(); | 1203 float zoomLevel = style->effectiveZoom(); |
1204 size.setWidth(size.width() * zoomLevel); | 1204 size.setWidth(size.width() * zoomLevel); |
1205 size.setHeight(size.height() * zoomLevel); | 1205 size.setHeight(size.height() * zoomLevel); |
1206 setSizeIfAuto(style, size); | 1206 setSizeIfAuto(style, size); |
1207 | 1207 |
1208 // padding - not honored by WinIE, needs to be removed. | 1208 // padding - not honored by WinIE, needs to be removed. |
1209 style->resetPadding(); | 1209 style->resetPadding(); |
1210 | 1210 |
1211 // border - honored by WinIE, but looks terrible (just paints in the control
box and turns off the Windows XP theme) | 1211 // border - honored by WinIE, but looks terrible (just paints in the control
box and turns off the Windows XP theme) |
1212 // for now, we will not honor it. | 1212 // for now, we will not honor it. |
1213 style->resetBorder(); | 1213 style->resetBorder(); |
1214 } | 1214 } |
1215 | 1215 |
1216 } // namespace blink | 1216 } // namespace blink |
OLD | NEW |