OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007 Apple Inc. | 2 * Copyright (C) 2007 Apple Inc. |
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
4 * Copyright (C) 2008 Collabora Ltd. | 4 * Copyright (C) 2008 Collabora Ltd. |
5 * Copyright (C) 2008, 2009 Google Inc. | 5 * Copyright (C) 2008, 2009 Google Inc. |
6 * Copyright (C) 2009 Kenneth Rohde Christiansen | 6 * Copyright (C) 2009 Kenneth Rohde Christiansen |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 bool m_needsFlipping; | 74 bool m_needsFlipping; |
75 const PaintInfo& m_paintInfo; | 75 const PaintInfo& m_paintInfo; |
76 }; | 76 }; |
77 | 77 |
78 DirectionFlippingScope::DirectionFlippingScope(const LayoutObject& layoutObject,
const PaintInfo& paintInfo, const IntRect& rect) | 78 DirectionFlippingScope::DirectionFlippingScope(const LayoutObject& layoutObject,
const PaintInfo& paintInfo, const IntRect& rect) |
79 : m_needsFlipping(!layoutObject.styleRef().isLeftToRightDirection()) | 79 : m_needsFlipping(!layoutObject.styleRef().isLeftToRightDirection()) |
80 , m_paintInfo(paintInfo) | 80 , m_paintInfo(paintInfo) |
81 { | 81 { |
82 if (!m_needsFlipping) | 82 if (!m_needsFlipping) |
83 return; | 83 return; |
84 m_paintInfo.context->save(); | 84 m_paintInfo.context.save(); |
85 m_paintInfo.context->translate(2 * rect.x() + rect.width(), 0); | 85 m_paintInfo.context.translate(2 * rect.x() + rect.width(), 0); |
86 m_paintInfo.context->scale(-1, 1); | 86 m_paintInfo.context.scale(-1, 1); |
87 } | 87 } |
88 | 88 |
89 DirectionFlippingScope::~DirectionFlippingScope() | 89 DirectionFlippingScope::~DirectionFlippingScope() |
90 { | 90 { |
91 if (!m_needsFlipping) | 91 if (!m_needsFlipping) |
92 return; | 92 return; |
93 m_paintInfo.context->restore(); | 93 m_paintInfo.context.restore(); |
94 } | 94 } |
95 | 95 |
96 IntRect determinateProgressValueRectFor(const LayoutProgress& layoutProgress, co
nst IntRect& rect) | 96 IntRect determinateProgressValueRectFor(const LayoutProgress& layoutProgress, co
nst IntRect& rect) |
97 { | 97 { |
98 int dx = rect.width() * layoutProgress.position(); | 98 int dx = rect.width() * layoutProgress.position(); |
99 return IntRect(rect.x(), rect.y(), dx, rect.height()); | 99 return IntRect(rect.x(), rect.y(), dx, rect.height()); |
100 } | 100 } |
101 | 101 |
102 IntRect indeterminateProgressValueRectFor(const LayoutProgress& layoutProgress,
const IntRect& rect) | 102 IntRect indeterminateProgressValueRectFor(const LayoutProgress& layoutProgress,
const IntRect& rect) |
103 { | 103 { |
(...skipping 26 matching lines...) Expand all Loading... |
130 partRect.move(localOffset.x(), localOffset.y()); | 130 partRect.move(localOffset.x(), localOffset.y()); |
131 | 131 |
132 return pixelSnappedIntRect(partRect); | 132 return pixelSnappedIntRect(partRect); |
133 } | 133 } |
134 | 134 |
135 } // namespace | 135 } // namespace |
136 | 136 |
137 bool ThemePainterDefault::paintCheckbox(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) | 137 bool ThemePainterDefault::paintCheckbox(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) |
138 { | 138 { |
139 WebThemeEngine::ExtraParams extraParams; | 139 WebThemeEngine::ExtraParams extraParams; |
140 WebCanvas* canvas = i.context->canvas(); | 140 WebCanvas* canvas = i.context.canvas(); |
141 extraParams.button.checked = LayoutTheme::isChecked(o); | 141 extraParams.button.checked = LayoutTheme::isChecked(o); |
142 extraParams.button.indeterminate = LayoutTheme::isIndeterminate(o); | 142 extraParams.button.indeterminate = LayoutTheme::isIndeterminate(o); |
143 | 143 |
144 float zoomLevel = o.styleRef().effectiveZoom(); | 144 float zoomLevel = o.styleRef().effectiveZoom(); |
145 GraphicsContextStateSaver stateSaver(*i.context, false); | 145 GraphicsContextStateSaver stateSaver(i.context, false); |
146 IntRect unzoomedRect = rect; | 146 IntRect unzoomedRect = rect; |
147 if (zoomLevel != 1) { | 147 if (zoomLevel != 1) { |
148 stateSaver.save(); | 148 stateSaver.save(); |
149 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); | 149 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); |
150 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); | 150 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); |
151 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); | 151 i.context.translate(unzoomedRect.x(), unzoomedRect.y()); |
152 i.context->scale(zoomLevel, zoomLevel); | 152 i.context.scale(zoomLevel, zoomLevel); |
153 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); | 153 i.context.translate(-unzoomedRect.x(), -unzoomedRect.y()); |
154 } | 154 } |
155 | 155 |
156 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartCheckb
ox, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); | 156 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartCheckb
ox, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); |
157 return false; | 157 return false; |
158 } | 158 } |
159 | 159 |
160 bool ThemePainterDefault::paintRadio(const LayoutObject& o, const PaintInfo& i,
const IntRect& rect) | 160 bool ThemePainterDefault::paintRadio(const LayoutObject& o, const PaintInfo& i,
const IntRect& rect) |
161 { | 161 { |
162 WebThemeEngine::ExtraParams extraParams; | 162 WebThemeEngine::ExtraParams extraParams; |
163 WebCanvas* canvas = i.context->canvas(); | 163 WebCanvas* canvas = i.context.canvas(); |
164 extraParams.button.checked = LayoutTheme::isChecked(o); | 164 extraParams.button.checked = LayoutTheme::isChecked(o); |
165 | 165 |
166 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartRadio,
getWebThemeState(o), WebRect(rect), &extraParams); | 166 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartRadio,
getWebThemeState(o), WebRect(rect), &extraParams); |
167 return false; | 167 return false; |
168 } | 168 } |
169 | 169 |
170 bool ThemePainterDefault::paintButton(const LayoutObject& o, const PaintInfo& i,
const IntRect& rect) | 170 bool ThemePainterDefault::paintButton(const LayoutObject& o, const PaintInfo& i,
const IntRect& rect) |
171 { | 171 { |
172 WebThemeEngine::ExtraParams extraParams; | 172 WebThemeEngine::ExtraParams extraParams; |
173 WebCanvas* canvas = i.context->canvas(); | 173 WebCanvas* canvas = i.context.canvas(); |
174 extraParams.button.hasBorder = true; | 174 extraParams.button.hasBorder = true; |
175 extraParams.button.backgroundColor = useMockTheme() ? 0xffc0c0c0 : defaultBu
ttonBackgroundColor; | 175 extraParams.button.backgroundColor = useMockTheme() ? 0xffc0c0c0 : defaultBu
ttonBackgroundColor; |
176 if (o.hasBackground()) | 176 if (o.hasBackground()) |
177 extraParams.button.backgroundColor = o.resolveColor(CSSPropertyBackgroun
dColor).rgb(); | 177 extraParams.button.backgroundColor = o.resolveColor(CSSPropertyBackgroun
dColor).rgb(); |
178 | 178 |
179 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartButton
, getWebThemeState(o), WebRect(rect), &extraParams); | 179 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartButton
, getWebThemeState(o), WebRect(rect), &extraParams); |
180 return false; | 180 return false; |
181 } | 181 } |
182 | 182 |
183 bool ThemePainterDefault::paintTextField(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) | 183 bool ThemePainterDefault::paintTextField(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) |
184 { | 184 { |
185 // WebThemeEngine does not handle border rounded corner and background image | 185 // WebThemeEngine does not handle border rounded corner and background image |
186 // so return true to draw CSS border and background. | 186 // so return true to draw CSS border and background. |
187 if (o.styleRef().hasBorderRadius() || o.styleRef().hasBackgroundImage()) | 187 if (o.styleRef().hasBorderRadius() || o.styleRef().hasBackgroundImage()) |
188 return true; | 188 return true; |
189 | 189 |
190 ControlPart part = o.styleRef().appearance(); | 190 ControlPart part = o.styleRef().appearance(); |
191 | 191 |
192 WebThemeEngine::ExtraParams extraParams; | 192 WebThemeEngine::ExtraParams extraParams; |
193 extraParams.textField.isTextArea = part == TextAreaPart; | 193 extraParams.textField.isTextArea = part == TextAreaPart; |
194 extraParams.textField.isListbox = part == ListboxPart; | 194 extraParams.textField.isListbox = part == ListboxPart; |
195 | 195 |
196 WebCanvas* canvas = i.context->canvas(); | 196 WebCanvas* canvas = i.context.canvas(); |
197 | 197 |
198 Color backgroundColor = o.resolveColor(CSSPropertyBackgroundColor); | 198 Color backgroundColor = o.resolveColor(CSSPropertyBackgroundColor); |
199 extraParams.textField.backgroundColor = backgroundColor.rgb(); | 199 extraParams.textField.backgroundColor = backgroundColor.rgb(); |
200 | 200 |
201 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartTextFi
eld, getWebThemeState(o), WebRect(rect), &extraParams); | 201 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartTextFi
eld, getWebThemeState(o), WebRect(rect), &extraParams); |
202 return false; | 202 return false; |
203 } | 203 } |
204 | 204 |
205 bool ThemePainterDefault::paintMenuList(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) | 205 bool ThemePainterDefault::paintMenuList(const LayoutObject& o, const PaintInfo&
i, const IntRect& rect) |
206 { | 206 { |
(...skipping 13 matching lines...) Expand all Loading... |
220 | 220 |
221 // If we have a background image, don't fill the content area to expose the | 221 // If we have a background image, don't fill the content area to expose the |
222 // parent's background. Also, we shouldn't fill the content area if the | 222 // parent's background. Also, we shouldn't fill the content area if the |
223 // alpha of the color is 0. The API of Windows GDI ignores the alpha. | 223 // alpha of the color is 0. The API of Windows GDI ignores the alpha. |
224 // FIXME: the normal Aura theme doesn't care about this, so we should | 224 // FIXME: the normal Aura theme doesn't care about this, so we should |
225 // investigate if we really need fillContentArea. | 225 // investigate if we really need fillContentArea. |
226 extraParams.menuList.fillContentArea = !o.styleRef().hasBackgroundImage() &&
backgroundColor.alpha(); | 226 extraParams.menuList.fillContentArea = !o.styleRef().hasBackgroundImage() &&
backgroundColor.alpha(); |
227 | 227 |
228 setupMenuListArrow(box, rect, extraParams); | 228 setupMenuListArrow(box, rect, extraParams); |
229 | 229 |
230 WebCanvas* canvas = i.context->canvas(); | 230 WebCanvas* canvas = i.context.canvas(); |
231 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartMenuLi
st, getWebThemeState(o), WebRect(rect), &extraParams); | 231 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartMenuLi
st, getWebThemeState(o), WebRect(rect), &extraParams); |
232 return false; | 232 return false; |
233 } | 233 } |
234 | 234 |
235 bool ThemePainterDefault::paintMenuListButton(const LayoutObject& o, const Paint
Info& i, const IntRect& rect) | 235 bool ThemePainterDefault::paintMenuListButton(const LayoutObject& o, const Paint
Info& i, const IntRect& rect) |
236 { | 236 { |
237 if (!o.isBox()) | 237 if (!o.isBox()) |
238 return false; | 238 return false; |
239 | 239 |
240 WebThemeEngine::ExtraParams extraParams; | 240 WebThemeEngine::ExtraParams extraParams; |
241 extraParams.menuList.hasBorder = false; | 241 extraParams.menuList.hasBorder = false; |
242 extraParams.menuList.hasBorderRadius = o.styleRef().hasBorderRadius(); | 242 extraParams.menuList.hasBorderRadius = o.styleRef().hasBorderRadius(); |
243 extraParams.menuList.backgroundColor = Color::transparent; | 243 extraParams.menuList.backgroundColor = Color::transparent; |
244 extraParams.menuList.fillContentArea = false; | 244 extraParams.menuList.fillContentArea = false; |
245 setupMenuListArrow(toLayoutBox(o), rect, extraParams); | 245 setupMenuListArrow(toLayoutBox(o), rect, extraParams); |
246 | 246 |
247 WebCanvas* canvas = i.context->canvas(); | 247 WebCanvas* canvas = i.context.canvas(); |
248 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartMenuLi
st, getWebThemeState(o), WebRect(rect), &extraParams); | 248 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartMenuLi
st, getWebThemeState(o), WebRect(rect), &extraParams); |
249 return false; | 249 return false; |
250 } | 250 } |
251 | 251 |
252 void ThemePainterDefault::setupMenuListArrow(const LayoutBox& box, const IntRect
& rect, WebThemeEngine::ExtraParams& extraParams) | 252 void ThemePainterDefault::setupMenuListArrow(const LayoutBox& box, const IntRect
& rect, WebThemeEngine::ExtraParams& extraParams) |
253 { | 253 { |
254 const int right = rect.x() + rect.width(); | 254 const int right = rect.x() + rect.width(); |
255 const int middle = rect.y() + rect.height() / 2; | 255 const int middle = rect.y() + rect.height() / 2; |
256 | 256 |
257 extraParams.menuList.arrowY = middle; | 257 extraParams.menuList.arrowY = middle; |
(...skipping 12 matching lines...) Expand all Loading... |
270 ? rect.x() + arrowPadding * box.styleRef().effectiveZoom() | 270 ? rect.x() + arrowPadding * box.styleRef().effectiveZoom() |
271 : right - (arrowSize + arrowPadding) * box.styleRef().effectiveZoom(
); | 271 : right - (arrowSize + arrowPadding) * box.styleRef().effectiveZoom(
); |
272 extraParams.menuList.arrowSize = arrowSize * box.styleRef().effectiveZoo
m(); | 272 extraParams.menuList.arrowSize = arrowSize * box.styleRef().effectiveZoo
m(); |
273 } | 273 } |
274 extraParams.menuList.arrowColor = box.resolveColor(CSSPropertyColor).rgb(); | 274 extraParams.menuList.arrowColor = box.resolveColor(CSSPropertyColor).rgb(); |
275 } | 275 } |
276 | 276 |
277 bool ThemePainterDefault::paintSliderTrack(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) | 277 bool ThemePainterDefault::paintSliderTrack(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) |
278 { | 278 { |
279 WebThemeEngine::ExtraParams extraParams; | 279 WebThemeEngine::ExtraParams extraParams; |
280 WebCanvas* canvas = i.context->canvas(); | 280 WebCanvas* canvas = i.context.canvas(); |
281 extraParams.slider.vertical = o.styleRef().appearance() == SliderVerticalPar
t; | 281 extraParams.slider.vertical = o.styleRef().appearance() == SliderVerticalPar
t; |
282 | 282 |
283 paintSliderTicks(o, i, rect); | 283 paintSliderTicks(o, i, rect); |
284 | 284 |
285 // FIXME: Mock theme doesn't handle zoomed sliders. | 285 // FIXME: Mock theme doesn't handle zoomed sliders. |
286 float zoomLevel = useMockTheme() ? 1 : o.styleRef().effectiveZoom(); | 286 float zoomLevel = useMockTheme() ? 1 : o.styleRef().effectiveZoom(); |
287 GraphicsContextStateSaver stateSaver(*i.context, false); | 287 GraphicsContextStateSaver stateSaver(i.context, false); |
288 IntRect unzoomedRect = rect; | 288 IntRect unzoomedRect = rect; |
289 if (zoomLevel != 1) { | 289 if (zoomLevel != 1) { |
290 stateSaver.save(); | 290 stateSaver.save(); |
291 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); | 291 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); |
292 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); | 292 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); |
293 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); | 293 i.context.translate(unzoomedRect.x(), unzoomedRect.y()); |
294 i.context->scale(zoomLevel, zoomLevel); | 294 i.context.scale(zoomLevel, zoomLevel); |
295 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); | 295 i.context.translate(-unzoomedRect.x(), -unzoomedRect.y()); |
296 } | 296 } |
297 | 297 |
298 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartSlider
Track, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); | 298 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartSlider
Track, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); |
299 | 299 |
300 return false; | 300 return false; |
301 } | 301 } |
302 | 302 |
303 bool ThemePainterDefault::paintSliderThumb(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) | 303 bool ThemePainterDefault::paintSliderThumb(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) |
304 { | 304 { |
305 WebThemeEngine::ExtraParams extraParams; | 305 WebThemeEngine::ExtraParams extraParams; |
306 WebCanvas* canvas = i.context->canvas(); | 306 WebCanvas* canvas = i.context.canvas(); |
307 extraParams.slider.vertical = o.styleRef().appearance() == SliderThumbVertic
alPart; | 307 extraParams.slider.vertical = o.styleRef().appearance() == SliderThumbVertic
alPart; |
308 extraParams.slider.inDrag = LayoutTheme::isPressed(o); | 308 extraParams.slider.inDrag = LayoutTheme::isPressed(o); |
309 | 309 |
310 // FIXME: Mock theme doesn't handle zoomed sliders. | 310 // FIXME: Mock theme doesn't handle zoomed sliders. |
311 float zoomLevel = useMockTheme() ? 1 : o.styleRef().effectiveZoom(); | 311 float zoomLevel = useMockTheme() ? 1 : o.styleRef().effectiveZoom(); |
312 GraphicsContextStateSaver stateSaver(*i.context, false); | 312 GraphicsContextStateSaver stateSaver(i.context, false); |
313 IntRect unzoomedRect = rect; | 313 IntRect unzoomedRect = rect; |
314 if (zoomLevel != 1) { | 314 if (zoomLevel != 1) { |
315 stateSaver.save(); | 315 stateSaver.save(); |
316 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); | 316 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); |
317 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); | 317 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); |
318 i.context->translate(unzoomedRect.x(), unzoomedRect.y()); | 318 i.context.translate(unzoomedRect.x(), unzoomedRect.y()); |
319 i.context->scale(zoomLevel, zoomLevel); | 319 i.context.scale(zoomLevel, zoomLevel); |
320 i.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); | 320 i.context.translate(-unzoomedRect.x(), -unzoomedRect.y()); |
321 } | 321 } |
322 | 322 |
323 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartSlider
Thumb, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); | 323 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartSlider
Thumb, getWebThemeState(o), WebRect(unzoomedRect), &extraParams); |
324 return false; | 324 return false; |
325 } | 325 } |
326 | 326 |
327 bool ThemePainterDefault::paintInnerSpinButton(const LayoutObject& o, const Pain
tInfo& i, const IntRect& rect) | 327 bool ThemePainterDefault::paintInnerSpinButton(const LayoutObject& o, const Pain
tInfo& i, const IntRect& rect) |
328 { | 328 { |
329 WebThemeEngine::ExtraParams extraParams; | 329 WebThemeEngine::ExtraParams extraParams; |
330 WebCanvas* canvas = i.context->canvas(); | 330 WebCanvas* canvas = i.context.canvas(); |
331 extraParams.innerSpin.spinUp = (LayoutTheme::controlStatesForLayoutObject(o)
& SpinUpControlState); | 331 extraParams.innerSpin.spinUp = (LayoutTheme::controlStatesForLayoutObject(o)
& SpinUpControlState); |
332 extraParams.innerSpin.readOnly = LayoutTheme::isReadOnlyControl(o); | 332 extraParams.innerSpin.readOnly = LayoutTheme::isReadOnlyControl(o); |
333 | 333 |
334 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartInnerS
pinButton, getWebThemeState(o), WebRect(rect), &extraParams); | 334 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartInnerS
pinButton, getWebThemeState(o), WebRect(rect), &extraParams); |
335 return false; | 335 return false; |
336 } | 336 } |
337 | 337 |
338 bool ThemePainterDefault::paintProgressBar(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) | 338 bool ThemePainterDefault::paintProgressBar(const LayoutObject& o, const PaintInf
o& i, const IntRect& rect) |
339 { | 339 { |
340 if (!o.isProgress()) | 340 if (!o.isProgress()) |
341 return true; | 341 return true; |
342 | 342 |
343 const LayoutProgress& layoutProgress = toLayoutProgress(o); | 343 const LayoutProgress& layoutProgress = toLayoutProgress(o); |
344 IntRect valueRect = progressValueRectFor(layoutProgress, rect); | 344 IntRect valueRect = progressValueRectFor(layoutProgress, rect); |
345 | 345 |
346 WebThemeEngine::ExtraParams extraParams; | 346 WebThemeEngine::ExtraParams extraParams; |
347 extraParams.progressBar.determinate = layoutProgress.isDeterminate(); | 347 extraParams.progressBar.determinate = layoutProgress.isDeterminate(); |
348 extraParams.progressBar.valueRectX = valueRect.x(); | 348 extraParams.progressBar.valueRectX = valueRect.x(); |
349 extraParams.progressBar.valueRectY = valueRect.y(); | 349 extraParams.progressBar.valueRectY = valueRect.y(); |
350 extraParams.progressBar.valueRectWidth = valueRect.width(); | 350 extraParams.progressBar.valueRectWidth = valueRect.width(); |
351 extraParams.progressBar.valueRectHeight = valueRect.height(); | 351 extraParams.progressBar.valueRectHeight = valueRect.height(); |
352 | 352 |
353 DirectionFlippingScope scope(o, i, rect); | 353 DirectionFlippingScope scope(o, i, rect); |
354 WebCanvas* canvas = i.context->canvas(); | 354 WebCanvas* canvas = i.context.canvas(); |
355 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartProgre
ssBar, getWebThemeState(o), WebRect(rect), &extraParams); | 355 Platform::current()->themeEngine()->paint(canvas, WebThemeEngine::PartProgre
ssBar, getWebThemeState(o), WebRect(rect), &extraParams); |
356 return false; | 356 return false; |
357 } | 357 } |
358 | 358 |
359 bool ThemePainterDefault::paintTextArea(const LayoutObject& o, const PaintInfo&
i, const IntRect& r) | 359 bool ThemePainterDefault::paintTextArea(const LayoutObject& o, const PaintInfo&
i, const IntRect& r) |
360 { | 360 { |
361 return paintTextField(o, i, r); | 361 return paintTextField(o, i, r); |
362 } | 362 } |
363 | 363 |
364 bool ThemePainterDefault::paintSearchField(const LayoutObject& o, const PaintInf
o& i, const IntRect& r) | 364 bool ThemePainterDefault::paintSearchField(const LayoutObject& o, const PaintInf
o& i, const IntRect& r) |
(...skipping 18 matching lines...) Expand all Loading... |
383 // Calculate cancel button's coordinates relative to the input element. | 383 // Calculate cancel button's coordinates relative to the input element. |
384 // Center the button vertically. Round up though, so if it has to be one pi
xel off-center, it will | 384 // Center the button vertically. Round up though, so if it has to be one pi
xel off-center, it will |
385 // be one pixel closer to the bottom of the field. This tends to look bette
r with the text. | 385 // be one pixel closer to the bottom of the field. This tends to look bette
r with the text. |
386 LayoutRect cancelButtonRect(cancelButtonObject.offsetFromAncestorContainer(&
inputLayoutBox).width(), | 386 LayoutRect cancelButtonRect(cancelButtonObject.offsetFromAncestorContainer(&
inputLayoutBox).width(), |
387 inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1)
/ 2, | 387 inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1)
/ 2, |
388 cancelButtonSize, cancelButtonSize); | 388 cancelButtonSize, cancelButtonSize); |
389 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, cancelButtonObj
ect, cancelButtonRect, r); | 389 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, cancelButtonObj
ect, cancelButtonRect, r); |
390 | 390 |
391 DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCa
ncel"))); | 391 DEFINE_STATIC_REF(Image, cancelImage, (Image::loadPlatformResource("searchCa
ncel"))); |
392 DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("s
earchCancelPressed"))); | 392 DEFINE_STATIC_REF(Image, cancelPressedImage, (Image::loadPlatformResource("s
earchCancelPressed"))); |
393 paintInfo.context->drawImage(LayoutTheme::isPressed(cancelButtonObject) ? ca
ncelPressedImage : cancelImage, paintingRect); | 393 paintInfo.context.drawImage(LayoutTheme::isPressed(cancelButtonObject) ? can
celPressedImage : cancelImage, paintingRect); |
394 return false; | 394 return false; |
395 } | 395 } |
396 | 396 |
397 bool ThemePainterDefault::paintSearchFieldResultsDecoration(const LayoutObject&
magnifierObject, const PaintInfo& paintInfo, const IntRect& r) | 397 bool ThemePainterDefault::paintSearchFieldResultsDecoration(const LayoutObject&
magnifierObject, const PaintInfo& paintInfo, const IntRect& r) |
398 { | 398 { |
399 // Get the layoutObject of <input> element. | 399 // Get the layoutObject of <input> element. |
400 if (!magnifierObject.node()) | 400 if (!magnifierObject.node()) |
401 return false; | 401 return false; |
402 Node* input = magnifierObject.node()->shadowHost(); | 402 Node* input = magnifierObject.node()->shadowHost(); |
403 const LayoutObject& baseLayoutObject = input ? *input->layoutObject() : magn
ifierObject; | 403 const LayoutObject& baseLayoutObject = input ? *input->layoutObject() : magn
ifierObject; |
404 if (!baseLayoutObject.isBox()) | 404 if (!baseLayoutObject.isBox()) |
405 return false; | 405 return false; |
406 const LayoutBox& inputLayoutBox = toLayoutBox(baseLayoutObject); | 406 const LayoutBox& inputLayoutBox = toLayoutBox(baseLayoutObject); |
407 LayoutRect inputContentBox = inputLayoutBox.contentBoxRect(); | 407 LayoutRect inputContentBox = inputLayoutBox.contentBoxRect(); |
408 | 408 |
409 // Make sure the scaled decoration stays square and will fit in its parent's
box. | 409 // Make sure the scaled decoration stays square and will fit in its parent's
box. |
410 LayoutUnit magnifierSize = std::min(inputContentBox.width(), std::min<Layout
Unit>(inputContentBox.height(), r.height())); | 410 LayoutUnit magnifierSize = std::min(inputContentBox.width(), std::min<Layout
Unit>(inputContentBox.height(), r.height())); |
411 // Calculate decoration's coordinates relative to the input element. | 411 // Calculate decoration's coordinates relative to the input element. |
412 // Center the decoration vertically. Round up though, so if it has to be on
e pixel off-center, it will | 412 // Center the decoration vertically. Round up though, so if it has to be on
e pixel off-center, it will |
413 // be one pixel closer to the bottom of the field. This tends to look bette
r with the text. | 413 // be one pixel closer to the bottom of the field. This tends to look bette
r with the text. |
414 LayoutRect magnifierRect(magnifierObject.offsetFromAncestorContainer(&inputL
ayoutBox).width(), | 414 LayoutRect magnifierRect(magnifierObject.offsetFromAncestorContainer(&inputL
ayoutBox).width(), |
415 inputContentBox.y() + (inputContentBox.height() - magnifierSize + 1) / 2
, | 415 inputContentBox.y() + (inputContentBox.height() - magnifierSize + 1) / 2
, |
416 magnifierSize, magnifierSize); | 416 magnifierSize, magnifierSize); |
417 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, magnifierObject
, magnifierRect, r); | 417 IntRect paintingRect = convertToPaintingRect(inputLayoutBox, magnifierObject
, magnifierRect, r); |
418 | 418 |
419 DEFINE_STATIC_REF(Image, magnifierImage, (Image::loadPlatformResource("searc
hMagnifier"))); | 419 DEFINE_STATIC_REF(Image, magnifierImage, (Image::loadPlatformResource("searc
hMagnifier"))); |
420 paintInfo.context->drawImage(magnifierImage, paintingRect); | 420 paintInfo.context.drawImage(magnifierImage, paintingRect); |
421 return false; | 421 return false; |
422 } | 422 } |
423 | 423 |
424 } // namespace blink | 424 } // namespace blink |
OLD | NEW |