OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ash/drag_drop/drag_image_view.h" | 5 #include "ash/drag_drop/drag_image_view.h" |
6 | 6 |
7 #include "skia/ext/image_operations.h" | 7 #include "skia/ext/image_operations.h" |
8 #include "ui/aura/window.h" | 8 #include "ui/aura/window.h" |
9 #include "ui/base/resource/resource_bundle.h" | 9 #include "ui/base/resource/resource_bundle.h" |
10 #include "ui/compositor/dip_util.h" | 10 #include "ui/compositor/dip_util.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
125 SkBitmap scaled = skia::ImageOperations::Resize( | 125 SkBitmap scaled = skia::ImageOperations::Resize( |
126 image_rep.sk_bitmap(), skia::ImageOperations::RESIZE_LANCZOS3, | 126 image_rep.sk_bitmap(), skia::ImageOperations::RESIZE_LANCZOS3, |
127 scaled_widget_size.width(), scaled_widget_size.height()); | 127 scaled_widget_size.width(), scaled_widget_size.height()); |
128 gfx::ImageSkia image_skia(gfx::ImageSkiaRep(scaled, device_scale)); | 128 gfx::ImageSkia image_skia(gfx::ImageSkiaRep(scaled, device_scale)); |
129 canvas->DrawImageInt(image_skia, 0, 0); | 129 canvas->DrawImageInt(image_skia, 0, 0); |
130 } | 130 } |
131 | 131 |
132 if (drag_event_source_ != ui::DragDropTypes::DRAG_EVENT_SOURCE_TOUCH) | 132 if (drag_event_source_ != ui::DragDropTypes::DRAG_EVENT_SOURCE_TOUCH) |
133 return; | 133 return; |
134 | 134 |
135 gfx::Image* drag_hint = DragHint(); | |
136 if (!drag_hint) | |
mfomitchev
2015/12/11 15:37:01
Shouldn't this be drag_hint->IsEmpty()?
| |
137 return; | |
138 | |
139 // Make sure drag hint image is positioned within the widget. | |
140 gfx::Size drag_hint_size = drag_hint->Size(); | |
141 gfx::Point drag_hint_position = touch_drag_operation_indicator_position_; | |
142 drag_hint_position.Offset(-drag_hint_size.width() / 2, 0); | |
143 gfx::Rect drag_hint_bounds(drag_hint_position, drag_hint_size); | |
144 drag_hint_bounds.AdjustToFit(gfx::Rect(widget_size_)); | |
145 | |
146 // Draw image. | |
147 canvas->DrawImageInt(*(drag_hint->ToImageSkia()), drag_hint_bounds.x(), | |
148 drag_hint_bounds.y()); | |
149 } | |
150 | |
151 gfx::Image* DragImageView::DragHint() const { | |
135 // Select appropriate drag hint. | 152 // Select appropriate drag hint. |
136 gfx::Image* drag_hint = | 153 gfx::Image* drag_hint = |
137 &ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 154 &ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
138 IDR_TOUCH_DRAG_TIP_NODROP); | 155 IDR_TOUCH_DRAG_TIP_NODROP); |
139 if (touch_drag_operation_ & ui::DragDropTypes::DRAG_COPY) { | 156 if (touch_drag_operation_ & ui::DragDropTypes::DRAG_COPY) { |
140 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 157 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
141 IDR_TOUCH_DRAG_TIP_COPY); | 158 IDR_TOUCH_DRAG_TIP_COPY); |
142 } else if (touch_drag_operation_ & ui::DragDropTypes::DRAG_MOVE) { | 159 } else if (touch_drag_operation_ & ui::DragDropTypes::DRAG_MOVE) { |
143 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 160 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
144 IDR_TOUCH_DRAG_TIP_MOVE); | 161 IDR_TOUCH_DRAG_TIP_MOVE); |
145 } else if (touch_drag_operation_ & ui::DragDropTypes::DRAG_LINK) { | 162 } else if (touch_drag_operation_ & ui::DragDropTypes::DRAG_LINK) { |
146 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 163 drag_hint = &ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
147 IDR_TOUCH_DRAG_TIP_LINK); | 164 IDR_TOUCH_DRAG_TIP_LINK); |
148 } | 165 } |
149 if (!drag_hint->IsEmpty()) { | 166 return drag_hint; |
150 gfx::Size drag_hint_size = drag_hint->Size(); | 167 } |
151 | 168 |
152 // Enlarge widget if required to fit the drag hint image. | 169 void DragImageView::Layout() { |
153 if (drag_hint_size.width() > widget_size_.width() || | 170 View::Layout(); |
154 drag_hint_size.height() > widget_size_.height()) { | |
155 gfx::Size new_widget_size = widget_size_; | |
156 new_widget_size.SetToMax(drag_hint_size); | |
157 widget_->SetSize(new_widget_size); | |
158 } | |
159 | 171 |
160 // Make sure drag hint image is positioned within the widget. | 172 gfx::Image* drag_hint = DragHint(); |
161 gfx::Point drag_hint_position = touch_drag_operation_indicator_position_; | 173 if (!drag_hint) |
162 drag_hint_position.Offset(-drag_hint_size.width() / 2, 0); | 174 return; |
163 gfx::Rect drag_hint_bounds(drag_hint_position, drag_hint_size); | |
164 drag_hint_bounds.AdjustToFit(gfx::Rect(widget_size_)); | |
165 | 175 |
166 // Draw image. | 176 gfx::Size drag_hint_size = drag_hint->Size(); |
167 canvas->DrawImageInt(*(drag_hint->ToImageSkia()), | 177 |
168 drag_hint_bounds.x(), drag_hint_bounds.y()); | 178 // Enlarge widget if required to fit the drag hint image. |
179 if (drag_hint_size.width() > widget_size_.width() || | |
180 drag_hint_size.height() > widget_size_.height()) { | |
181 gfx::Size new_widget_size = widget_size_; | |
182 new_widget_size.SetToMax(drag_hint_size); | |
183 widget_->SetSize(new_widget_size); | |
169 } | 184 } |
170 } | 185 } |
171 | 186 |
172 } // namespace ash | 187 } // namespace ash |
OLD | NEW |