1545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch/* 2545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2010 Google Inc. All rights reserved. 3545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 4545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Redistribution and use in source and binary forms, with or without 5545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * modification, are permitted provided that the following conditions are 6545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * met: 7545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * * Redistributions of source code must retain the above copyright 9545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * notice, this list of conditions and the following disclaimer. 10545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * * Redistributions in binary form must reproduce the above 11545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * copyright notice, this list of conditions and the following disclaimer 12545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * in the documentation and/or other materials provided with the 13545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * distribution. 14545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * * Neither the name of Google Inc. nor the names of its 15545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * contributors may be used to endorse or promote products derived from 16545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * this software without specific prior written permission. 17545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 18545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch */ 30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "config.h" 32f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebThemeEngineDRTWin.h" 33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "WebRect.h" 35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebThemeControlDRTWin.h" 36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "third_party/skia/include/core/SkRect.h" 37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch// Although all this code is generic, we include these headers 39545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch// to pull in the Windows #defines for the parts and states of 40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch// the controls. 41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <vsstyle.h> 42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <windows.h> 43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 44545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <wtf/Assertions.h> 45545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 46545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochusing namespace WebKit; 47545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 48545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch// We define this for clarity, although there really should be a DFCS_NORMAL in winuser.h. 49545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic const int dfcsNormal = 0x0000; 50545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 51545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic SkIRect webRectToSkIRect(const WebRect& webRect) 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch SkIRect irect; 54545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch irect.set(webRect.x, webRect.y, webRect.x + webRect.width, webRect.y + webRect.height); 55545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return irect; 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic void drawControl(WebCanvas* canvas, 59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch const WebRect& rect, 60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype, 61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate) 62545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin control(canvas, webRectToSkIRect(rect), ctype, cstate); 64545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch control.draw(); 65545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 67545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic void drawTextField(WebCanvas* canvas, 68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch const WebRect& rect, 69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype, 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate, 71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool drawEdges, 72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool fillContentArea, 73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WebColor color) 74545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 75f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin control(canvas, webRectToSkIRect(rect), ctype, cstate); 76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch control.drawTextField(drawEdges, fillContentArea, color); 77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 78545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochstatic void drawProgressBar(WebCanvas* canvas, 80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype, 81f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate, 82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch const WebRect& barRect, 83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch const WebRect& fillRect) 84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 85f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin control(canvas, webRectToSkIRect(barRect), ctype, cstate); 86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch control.drawProgressBar(webRectToSkIRect(fillRect)); 87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 89f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// WebThemeEngineDRTWin 90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 91f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintButton(WebCanvas* canvas, 92f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 93f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 94f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 95f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 96545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 97f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 98f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch if (part == BP_CHECKBOX) { 101545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 102545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_UNCHECKEDNORMAL: 103545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 104f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedBoxType; 105f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 106545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 107545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_UNCHECKEDHOT: 109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_HOT)); 110f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedBoxType; 111f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 112545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 113545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_UNCHECKEDPRESSED: 115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_PUSHED)); 116f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedBoxType; 117f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_UNCHECKEDDISABLED: 121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_INACTIVE)); 122f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedBoxType; 123f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 125545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 126545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_CHECKEDNORMAL: 127545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_CHECKED)); 128f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedBoxType; 129f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 130545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 131545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 132545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_CHECKEDHOT: 133545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_HOT)); 134f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedBoxType; 135f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 136545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 137545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 138545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_CHECKEDPRESSED: 139545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_PUSHED)); 140f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedBoxType; 141f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 142545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 143545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 144545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBS_CHECKEDDISABLED: 145545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_INACTIVE)); 146f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedBoxType; 147f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 148545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 149545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 150e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke case CBS_MIXEDNORMAL: 151e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // Classic theme can't represent mixed state checkbox. We assume 152e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // it's equivalent to unchecked. 153e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(classicState == DFCS_BUTTONCHECK); 154f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::IndeterminateCheckboxType; 155f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 156e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke break; 157e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 158e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke case CBS_MIXEDHOT: 159e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_HOT)); 160f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::IndeterminateCheckboxType; 161f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 162e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke break; 163e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 164e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke case CBS_MIXEDPRESSED: 165e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_PUSHED)); 166f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::IndeterminateCheckboxType; 167f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 168e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke break; 169e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 170e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke case CBS_MIXEDDISABLED: 171e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_INACTIVE)); 172f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::IndeterminateCheckboxType; 173f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 174e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke break; 175e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 176545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 177545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 178545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 179545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 180545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else if (BP_RADIOBUTTON == part) { 181545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 182545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_UNCHECKEDNORMAL: 183545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_BUTTONRADIO); 184f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedRadioType; 185f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 186545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 187545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 188545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_UNCHECKEDHOT: 189545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_HOT)); 190f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedRadioType; 191f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 192545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 193545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 194545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_UNCHECKEDPRESSED: 195545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_PUSHED)); 196f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedRadioType; 197f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 198545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 199545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 200545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_UNCHECKEDDISABLED: 201545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_INACTIVE)); 202f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UncheckedRadioType; 203f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 204545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 205545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 206545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_CHECKEDNORMAL: 207545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_CHECKED)); 208f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedRadioType; 209f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 210545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 211545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 212545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_CHECKEDHOT: 213545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_HOT)); 214f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedRadioType; 215f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 216545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 217545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 218545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_CHECKEDPRESSED: 219545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_PUSHED)); 220f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedRadioType; 221f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 222545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 223545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 224545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case RBS_CHECKEDDISABLED: 225545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_INACTIVE)); 226f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::CheckedRadioType; 227f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 228545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 229545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 230545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 231545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 232545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 233545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 234545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else if (BP_PUSHBUTTON == part) { 235545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 236545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case PBS_NORMAL: 237545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_BUTTONPUSH); 238f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::PushButtonType; 239f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 240545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 241545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 242545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case PBS_HOT: 243545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONPUSH | DFCS_HOT)); 244f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::PushButtonType; 245f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 246545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 247545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 248545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case PBS_PRESSED: 249545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONPUSH | DFCS_PUSHED)); 250f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::PushButtonType; 251f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 252545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 253545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 254545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case PBS_DISABLED: 255545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_BUTTONPUSH | DFCS_INACTIVE)); 256f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::PushButtonType; 257f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 258545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 259545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 260545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case PBS_DEFAULTED: 261545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_BUTTONPUSH); 262f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::PushButtonType; 263f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::FocusedState; 264545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 265545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 266545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 267545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 268545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 269545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 270545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else { 271545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 272545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 273545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 274545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 275545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 276545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 277545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 278f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintMenuList(WebCanvas* canvas, 279f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 280f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 281f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 282f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 283545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 284f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 285f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 286545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 287545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch if (CP_DROPDOWNBUTTON == part) { 288f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DropDownButtonType; 289545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 290545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBXS_NORMAL: 291545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_MENUARROW); 292f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 293545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 294545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 295545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBXS_HOT: 296545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_MENUARROW | DFCS_HOT)); 297f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 298545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 299545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 300545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBXS_PRESSED: 301545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_MENUARROW | DFCS_PUSHED)); 302f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 303545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 304545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 305545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case CBXS_DISABLED: 306545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_MENUARROW | DFCS_INACTIVE)); 307f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 308545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 309545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 310545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 311545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch CRASH(); 312545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 313545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 314545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else { 315545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch CRASH(); 316545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 317545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 318545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 319545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 320545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 321f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintScrollbarArrow(WebCanvas* canvas, 322f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 323f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 324f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 325545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 326f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 327f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 328545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 329545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 330545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_UPNORMAL: 331545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLUP); 332f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 333f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 334545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 335545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 336545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_DOWNNORMAL: 337545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLDOWN); 338f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 339f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 340545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 341545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 342545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_LEFTNORMAL: 343545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLLEFT); 344f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::LeftArrowType; 345f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 346545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 347545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 348545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_RIGHTNORMAL: 349545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLRIGHT); 350f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::RightArrowType; 351f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 352545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 353545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 354545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_UPHOT: 355545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_HOT)); 356f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 357f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 358545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 359545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 360545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_DOWNHOT: 361545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_HOT)); 362f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 363f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 364545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 365545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 366545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_LEFTHOT: 367545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLLEFT | DFCS_HOT)); 368f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::LeftArrowType; 369f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 370545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 371545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 372545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_RIGHTHOT: 373545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLRIGHT | DFCS_HOT)); 374f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::RightArrowType; 375f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 376545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 377545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 378545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_UPHOVER: 379545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLUP); 380f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 381f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 382545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 383545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 384545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_DOWNHOVER: 385545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLDOWN); 386f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 387f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 388545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 389545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 390545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_LEFTHOVER: 391545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLLEFT); 392f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::LeftArrowType; 393f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 394545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 395545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 396545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_RIGHTHOVER: 397545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_SCROLLRIGHT); 398f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::RightArrowType; 399f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 400545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 401545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 402545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_UPPRESSED: 403545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_PUSHED | DFCS_FLAT)); 404f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 405f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 406545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 407545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 408545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_DOWNPRESSED: 409545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_PUSHED | DFCS_FLAT)); 410f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 411f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 412545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 413545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 414545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_LEFTPRESSED: 415545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLLEFT | DFCS_PUSHED | DFCS_FLAT)); 416f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::LeftArrowType; 417f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 418545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 419545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 420545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_RIGHTPRESSED: 421545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLRIGHT | DFCS_PUSHED | DFCS_FLAT)); 422f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::RightArrowType; 423f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 424545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 425545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 426545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_UPDISABLED: 427545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_INACTIVE)); 428f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 429f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 430545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 431545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 432545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_DOWNDISABLED: 433545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_INACTIVE)); 434f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 435f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 436545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 437545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 438545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_LEFTDISABLED: 439545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLLEFT | DFCS_INACTIVE)); 440f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::LeftArrowType; 441f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 442545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 443545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 444545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ABS_RIGHTDISABLED: 445545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == (DFCS_SCROLLRIGHT | DFCS_INACTIVE)); 446f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::RightArrowType; 447f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 448545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 449545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 450545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 451545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 452545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 453545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 454545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 455545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 456545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 457545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 458f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintScrollbarThumb(WebCanvas* canvas, 459f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 460f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 461f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 462f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 463545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 464f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 465f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 466545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 467545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (part) { 468545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_THUMBBTNHORZ: 469f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalScrollThumbType; 470545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 471545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 472545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_THUMBBTNVERT: 473f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::VerticalScrollThumbType; 474545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 475545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 476545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_GRIPPERHORZ: 477f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalScrollGripType; 478545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 479545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 480545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_GRIPPERVERT: 481f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::VerticalScrollGripType; 482545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 483545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 484545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 485545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 486545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 487545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 488545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 489545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 490545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_NORMAL: 491545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 492f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 493545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 494545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 495545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_HOT: 496545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_HOT); 497f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 498545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 499545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 500545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_HOVER: 501545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 502f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 503545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 504545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 505545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_PRESSED: 506545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 507f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 508545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 509545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 510545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_DISABLED: 511545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); // This should never happen in practice. 512545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 513545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 514545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 515545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 516545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 517545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 518545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 519545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 520545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 521545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 522f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintScrollbarTrack(WebCanvas* canvas, 523f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 524f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 525f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 526f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect, 527f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& alignRect) 528545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 529f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 530f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 531545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 532545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (part) { 533545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_UPPERTRACKHORZ: 534f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalScrollTrackBackType; 535545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 536545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 537545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_LOWERTRACKHORZ: 538f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalScrollTrackForwardType; 539545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 540545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 541545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_UPPERTRACKVERT: 542f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::VerticalScrollTrackBackType; 543545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 544545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 545545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SBP_LOWERTRACKVERT: 546f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::VerticalScrollTrackForwardType; 547545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 548545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 549545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 550545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 551545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 552545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 553545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 554545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 555545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_NORMAL: 556545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 557f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 558545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 559545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 560545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_HOT: 561545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); // This should never happen in practice. 562545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 563545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 564545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_HOVER: 565545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 566f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 567545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 568545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 569545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_PRESSED: 570545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); // This should never happen in practice. 571545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 572545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 573545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case SCRBS_DISABLED: 574545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_INACTIVE); 575f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 576545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 577545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 578545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 579545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch CRASH(); 580545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 581545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 582545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 583545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 584545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 585545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 586f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintSpinButton(WebCanvas* canvas, 587f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 588f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 589f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 590f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 591967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 592f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 593f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 594967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 595967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch if (part == SPNP_UP) { 596f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::UpArrowType; 597967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch switch (state) { 598967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case UPS_NORMAL: 599967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == DFCS_SCROLLUP); 600f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 601967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 602967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case UPS_DISABLED: 603967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_INACTIVE)); 604f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 605967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 606967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case UPS_PRESSED: 607967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_PUSHED)); 608f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 609967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 610967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case UPS_HOT: 611967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLUP | DFCS_HOT)); 612f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 613967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 614967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch default: 615967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT_NOT_REACHED(); 616967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch } 617967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch } else if (part == SPNP_DOWN) { 618f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::DownArrowType; 619967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch switch (state) { 620967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case DNS_NORMAL: 621967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == DFCS_SCROLLDOWN); 622f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 623967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 624967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case DNS_DISABLED: 625967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_INACTIVE)); 626f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 627967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 628967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case DNS_PRESSED: 629967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_PUSHED)); 630f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 631967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 632967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch case DNS_HOT: 633967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_HOT)); 634f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HoverState; 635967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch break; 636967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch default: 637967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT_NOT_REACHED(); 638967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch } 639967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch } else 640967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch ASSERT_NOT_REACHED(); 641967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch drawControl(canvas, rect, ctype, cstate); 642967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 643967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 644f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintTextField(WebCanvas* canvas, 645f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 646f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 647f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 648f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect, 649f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebColor color, 650f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool fillContentArea, 651f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool drawEdges) 652545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 653f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 654f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 655545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 656545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(EP_EDITTEXT == part); 657f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::TextFieldType; 658545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 659545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 660545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_NORMAL: 661545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 662f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 663545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 664545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 665545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_HOT: 666545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_HOT); 667f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 668545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 669545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 670545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_DISABLED: 671545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_INACTIVE); 672f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 673545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 674545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 675545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_SELECTED: 676545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_PUSHED); 677f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 678545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 679545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 680545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_FOCUSED: 681545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 682f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::FocusedState; 683545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 684545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 685545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case ETS_READONLY: 686545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 687f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::ReadOnlyState; 688545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 689545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 690545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 691545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 692545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 693545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 694545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 695545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawTextField(canvas, rect, ctype, cstate, drawEdges, fillContentArea, color); 696545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 697545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 698f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintTrackbar(WebCanvas* canvas, 699f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int part, 700f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int state, 701f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch int classicState, 702f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebRect& rect) 703545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 704f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::UnknownType; 705f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = WebThemeControlDRTWin::UnknownState; 706545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 707545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch if (TKP_THUMBBOTTOM == part) { 708f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalSliderThumbType; 709545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch switch (state) { 710545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case TUS_NORMAL: 711545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 712f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 713545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 714545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 715545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case TUS_HOT: 716545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_HOT); 717f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::HotState; 718545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 719545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 720545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case TUS_DISABLED: 721545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_INACTIVE); 722f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::DisabledState; 723545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 724545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 725545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch case TUS_PRESSED: 726545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == DFCS_PUSHED); 727f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::PressedState; 728545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 729545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 730545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch default: 731545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 732545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch break; 733545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 734545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else if (TKP_TRACK == part) { 735f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch ctype = WebThemeControlDRTWin::HorizontalSliderTrackType; 736545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(part == TUS_NORMAL); 737545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT(classicState == dfcsNormal); 738f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch cstate = WebThemeControlDRTWin::NormalState; 739545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } else { 740545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ASSERT_NOT_REACHED(); 741545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 742545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 743545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawControl(canvas, rect, ctype, cstate); 744545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 745545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 746545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 747f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid WebThemeEngineDRTWin::paintProgressBar(WebKit::WebCanvas* canvas, 748f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebKit::WebRect& barRect, 749f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const WebKit::WebRect& valueRect, 750f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch bool determinate, 751f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch double) 752545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 753f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::Type ctype = WebThemeControlDRTWin::ProgressBarType; 754f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebThemeControlDRTWin::State cstate = determinate ? WebThemeControlDRTWin::NormalState 755f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch : WebThemeControlDRTWin::IndeterminateState; 756545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch drawProgressBar(canvas, ctype, cstate, barRect, valueRect); 757545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 758545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 759