OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/glue/webthemeengine_impl_linux.h" | 5 #include "webkit/glue/webthemeengine_impl_linux.h" |
6 | 6 |
7 #include "gfx/native_theme_linux.h" | 7 #include "gfx/native_theme_linux.h" |
8 #include "skia/ext/platform_canvas.h" | 8 #include "skia/ext/platform_canvas.h" |
9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" | 9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" |
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" | 10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 case WebKit::WebThemeEngine::PartScrollbarUpArrow: | 31 case WebKit::WebThemeEngine::PartScrollbarUpArrow: |
32 return gfx::NativeThemeLinux::kScrollbarUpArrow; | 32 return gfx::NativeThemeLinux::kScrollbarUpArrow; |
33 case WebKit::WebThemeEngine::PartScrollbarHorizontalThumb: | 33 case WebKit::WebThemeEngine::PartScrollbarHorizontalThumb: |
34 return gfx::NativeThemeLinux::kScrollbarHorizontalThumb; | 34 return gfx::NativeThemeLinux::kScrollbarHorizontalThumb; |
35 case WebKit::WebThemeEngine::PartScrollbarVerticalThumb: | 35 case WebKit::WebThemeEngine::PartScrollbarVerticalThumb: |
36 return gfx::NativeThemeLinux::kScrollbarVerticalThumb; | 36 return gfx::NativeThemeLinux::kScrollbarVerticalThumb; |
37 case WebKit::WebThemeEngine::PartScrollbarHorizontalTrack: | 37 case WebKit::WebThemeEngine::PartScrollbarHorizontalTrack: |
38 return gfx::NativeThemeLinux::kScrollbarHorizontalTrack; | 38 return gfx::NativeThemeLinux::kScrollbarHorizontalTrack; |
39 case WebKit::WebThemeEngine::PartScrollbarVerticalTrack: | 39 case WebKit::WebThemeEngine::PartScrollbarVerticalTrack: |
40 return gfx::NativeThemeLinux::kScrollbarVerticalTrack; | 40 return gfx::NativeThemeLinux::kScrollbarVerticalTrack; |
| 41 case WebKit::WebThemeEngine::PartCheckbox: |
| 42 return gfx::NativeThemeLinux::kCheckbox; |
| 43 case WebKit::WebThemeEngine::PartRadio: |
| 44 return gfx::NativeThemeLinux::kRadio; |
| 45 case WebKit::WebThemeEngine::PartButton: |
| 46 return gfx::NativeThemeLinux::kPushButton; |
| 47 case WebKit::WebThemeEngine::PartTextField: |
| 48 return gfx::NativeThemeLinux::kTextField; |
| 49 case WebKit::WebThemeEngine::PartMenuList: |
| 50 return gfx::NativeThemeLinux::kMenuList; |
| 51 case WebKit::WebThemeEngine::PartSliderTrack: |
| 52 return gfx::NativeThemeLinux::kSliderTrack; |
| 53 case WebKit::WebThemeEngine::PartSliderThumb: |
| 54 return gfx::NativeThemeLinux::kSliderThumb; |
| 55 case WebKit::WebThemeEngine::PartInnerSpinButton: |
| 56 return gfx::NativeThemeLinux::kInnerSpinButton; |
| 57 case WebKit::WebThemeEngine::PartProgressBar: |
| 58 return gfx::NativeThemeLinux::kProgressBar; |
41 default: | 59 default: |
42 return gfx::NativeThemeLinux::kScrollbarDownArrow; | 60 return gfx::NativeThemeLinux::kScrollbarDownArrow; |
43 } | 61 } |
44 } | 62 } |
45 | 63 |
46 static gfx::NativeThemeLinux::State NativeThemeState( | 64 static gfx::NativeThemeLinux::State NativeThemeState( |
47 WebKit::WebThemeEngine::State state) { | 65 WebKit::WebThemeEngine::State state) { |
48 switch (state) { | 66 switch (state) { |
49 case WebKit::WebThemeEngine::StateDisabled: | 67 case WebKit::WebThemeEngine::StateDisabled: |
50 return gfx::NativeThemeLinux::kDisabled; | 68 return gfx::NativeThemeLinux::kDisabled; |
51 case WebKit::WebThemeEngine::StateHover: | 69 case WebKit::WebThemeEngine::StateHover: |
52 return gfx::NativeThemeLinux::kHover; | 70 return gfx::NativeThemeLinux::kHovered; |
53 case WebKit::WebThemeEngine::StateNormal: | 71 case WebKit::WebThemeEngine::StateNormal: |
54 return gfx::NativeThemeLinux::kNormal; | 72 return gfx::NativeThemeLinux::kNormal; |
55 case WebKit::WebThemeEngine::StatePressed: | 73 case WebKit::WebThemeEngine::StatePressed: |
56 return gfx::NativeThemeLinux::kPressed; | 74 return gfx::NativeThemeLinux::kPressed; |
57 default: | 75 default: |
58 return gfx::NativeThemeLinux::kDisabled; | 76 return gfx::NativeThemeLinux::kDisabled; |
59 } | 77 } |
60 } | 78 } |
61 | 79 |
62 static void GetNativeThemeExtraParams( | 80 static void GetNativeThemeExtraParams( |
63 WebKit::WebThemeEngine::Part part, | 81 WebKit::WebThemeEngine::Part part, |
64 WebKit::WebThemeEngine::State state, | 82 WebKit::WebThemeEngine::State state, |
65 const WebKit::WebThemeEngine::ExtraParams* extra_params, | 83 const WebKit::WebThemeEngine::ExtraParams* extra_params, |
66 gfx::NativeThemeLinux::ExtraParams* native_theme_extra_params) { | 84 gfx::NativeThemeLinux::ExtraParams* native_theme_extra_params) { |
67 if (part == WebKit::WebThemeEngine::PartScrollbarHorizontalTrack || | 85 switch (part) { |
68 part == WebKit::WebThemeEngine::PartScrollbarVerticalTrack) { | 86 case WebKit::WebThemeEngine::PartScrollbarHorizontalTrack: |
69 native_theme_extra_params->scrollbar_track.track_x = | 87 case WebKit::WebThemeEngine::PartScrollbarVerticalTrack: |
70 extra_params->scrollbarTrack.trackX; | 88 native_theme_extra_params->scrollbar_track.track_x = |
71 native_theme_extra_params->scrollbar_track.track_y = | 89 extra_params->scrollbarTrack.trackX; |
72 extra_params->scrollbarTrack.trackY; | 90 native_theme_extra_params->scrollbar_track.track_y = |
73 native_theme_extra_params->scrollbar_track.track_width = | 91 extra_params->scrollbarTrack.trackY; |
74 extra_params->scrollbarTrack.trackWidth; | 92 native_theme_extra_params->scrollbar_track.track_width = |
75 native_theme_extra_params->scrollbar_track.track_height = | 93 extra_params->scrollbarTrack.trackWidth; |
76 extra_params->scrollbarTrack.trackHeight; | 94 native_theme_extra_params->scrollbar_track.track_height = |
| 95 extra_params->scrollbarTrack.trackHeight; |
| 96 break; |
| 97 case WebKit::WebThemeEngine::PartCheckbox: |
| 98 native_theme_extra_params->button.checked = extra_params->button.checked; |
| 99 native_theme_extra_params->button.indeterminate = |
| 100 extra_params->button.indeterminate; |
| 101 break; |
| 102 case WebKit::WebThemeEngine::PartRadio: |
| 103 native_theme_extra_params->button.checked = extra_params->button.checked; |
| 104 break; |
| 105 case WebKit::WebThemeEngine::PartButton: |
| 106 native_theme_extra_params->button.is_default = |
| 107 extra_params->button.isDefault; |
| 108 native_theme_extra_params->button.background_color = |
| 109 extra_params->button.backgroundColor; |
| 110 break; |
| 111 case WebKit::WebThemeEngine::PartTextField: |
| 112 native_theme_extra_params->text_field.is_text_area = |
| 113 extra_params->textField.isTextArea; |
| 114 native_theme_extra_params->text_field.is_listbox = |
| 115 extra_params->textField.isListbox; |
| 116 native_theme_extra_params->text_field.background_color = |
| 117 extra_params->textField.backgroundColor; |
| 118 break; |
| 119 case WebKit::WebThemeEngine::PartMenuList: |
| 120 native_theme_extra_params->menu_list.arrow_x = |
| 121 extra_params->menuList.arrowX; |
| 122 native_theme_extra_params->menu_list.arrow_y = |
| 123 extra_params->menuList.arrowY; |
| 124 native_theme_extra_params->menu_list.background_color = |
| 125 extra_params->menuList.backgroundColor; |
| 126 break; |
| 127 case WebKit::WebThemeEngine::PartSliderTrack: |
| 128 case WebKit::WebThemeEngine::PartSliderThumb: |
| 129 native_theme_extra_params->slider.vertical = |
| 130 extra_params->slider.vertical; |
| 131 native_theme_extra_params->slider.in_drag = extra_params->slider.inDrag; |
| 132 break; |
| 133 case WebKit::WebThemeEngine::PartInnerSpinButton: |
| 134 native_theme_extra_params->inner_spin.spin_up = |
| 135 extra_params->innerSpin.spinUp; |
| 136 native_theme_extra_params->inner_spin.read_only = |
| 137 extra_params->innerSpin.readOnly; |
| 138 break; |
| 139 case WebKit::WebThemeEngine::PartProgressBar: |
| 140 native_theme_extra_params->progress_bar.determinate = |
| 141 extra_params->progressBar.determinate; |
| 142 native_theme_extra_params->progress_bar.value_rect_x = |
| 143 extra_params->progressBar.valueRectX; |
| 144 native_theme_extra_params->progress_bar.value_rect_y = |
| 145 extra_params->progressBar.valueRectY; |
| 146 native_theme_extra_params->progress_bar.value_rect_width = |
| 147 extra_params->progressBar.valueRectWidth; |
| 148 native_theme_extra_params->progress_bar.value_rect_height = |
| 149 extra_params->progressBar.valueRectHeight; |
| 150 break; |
| 151 default: |
| 152 break; // Parts that have no extra params get here. |
77 } | 153 } |
78 } | 154 } |
79 | 155 |
80 WebKit::WebSize WebThemeEngineImpl::getSize(WebKit::WebThemeEngine::Part part) { | 156 WebKit::WebSize WebThemeEngineImpl::getSize(WebKit::WebThemeEngine::Part part) { |
81 return gfx::NativeThemeLinux::instance()->GetSize(NativeThemePart(part)); | 157 return gfx::NativeThemeLinux::instance()->GetPartSize(NativeThemePart(part)); |
82 } | 158 } |
83 | 159 |
84 void WebThemeEngineImpl::paint( | 160 void WebThemeEngineImpl::paint( |
85 WebKit::WebCanvas* canvas, | 161 WebKit::WebCanvas* canvas, |
86 WebKit::WebThemeEngine::Part part, | 162 WebKit::WebThemeEngine::Part part, |
87 WebKit::WebThemeEngine::State state, | 163 WebKit::WebThemeEngine::State state, |
88 const WebKit::WebRect& rect, | 164 const WebKit::WebRect& rect, |
89 const WebKit::WebThemeEngine::ExtraParams* extra_params) { | 165 const WebKit::WebThemeEngine::ExtraParams* extra_params) { |
90 gfx::NativeThemeLinux::ExtraParams native_theme_extra_params; | 166 gfx::NativeThemeLinux::ExtraParams native_theme_extra_params; |
91 GetNativeThemeExtraParams( | 167 GetNativeThemeExtraParams( |
92 part, state, extra_params, &native_theme_extra_params); | 168 part, state, extra_params, &native_theme_extra_params); |
93 gfx::NativeThemeLinux::instance()->Paint( | 169 gfx::NativeThemeLinux::instance()->Paint( |
94 canvas, | 170 canvas, |
95 NativeThemePart(part), | 171 NativeThemePart(part), |
96 NativeThemeState(state), | 172 NativeThemeState(state), |
97 WebRectToRect(rect), | 173 WebRectToRect(rect), |
98 native_theme_extra_params); | 174 native_theme_extra_params); |
99 } | 175 } |
100 } // namespace webkit_glue | 176 } // namespace webkit_glue |
OLD | NEW |