Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: ui/gfx/image/image_skia_operations.cc

Issue 10704199: Implement remaining SkBitmapOperations as ImageSkiaOperations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "ui/gfx/image/image_skia_operations.h" 5 #include "ui/gfx/image/image_skia_operations.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "skia/ext/image_operations.h" 9 #include "skia/ext/image_operations.h"
10 #include "skia/ext/platform_canvas.h" 10 #include "skia/ext/platform_canvas.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 private: 173 private:
174 const ImageSkia& source_; 174 const ImageSkia& source_;
175 const int src_x_; 175 const int src_x_;
176 const int src_y_; 176 const int src_y_;
177 const int dst_w_; 177 const int dst_w_;
178 const int dst_h_; 178 const int dst_h_;
179 179
180 DISALLOW_COPY_AND_ASSIGN(TiledImageSource); 180 DISALLOW_COPY_AND_ASSIGN(TiledImageSource);
181 }; 181 };
182 182
183 class ButtonImageSource: public gfx::ImageSkiaSource {
184 public:
185 ButtonImageSource(SkColor color,
186 const ImageSkia& image,
187 const ImageSkia& mask)
188 : color_(color),
189 image_(image),
190 mask_(mask) {
191 }
oshima 2012/07/13 16:54:55 destructor
pkotwicz 2012/07/15 03:36:48 Done.
192
193 // gfx::ImageSkiaSource overrides:
194 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
195 ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor);
196 ImageSkiaRep mask_rep = mask_.GetRepresentation(scale_factor);
197 MatchScale(&image_rep, &mask_rep);
198 return ImageSkiaRep(
199 SkBitmapOperations::CreateButtonBackground(color_,
200 image_rep.sk_bitmap(), mask_rep.sk_bitmap()),
201 image_rep.scale_factor());
202 }
203
204 private:
205 const SkColor color_;
206 const ImageSkia image_;
207 const ImageSkia mask_;
208
209 DISALLOW_COPY_AND_ASSIGN(ButtonImageSource);
210 };
211
212 class HSLImageSource: public gfx::ImageSkiaSource {
213 public:
214 HSLImageSource(const ImageSkia& image,
215 const color_utils::HSL& hsl_shift)
216 : image_(image),
217 hsl_shift_(hsl_shift) {
218 }
oshima 2012/07/13 16:54:55 ditto
219
220 // gfx::ImageSkiaSource overrides:
221 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
222 ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor);
223 return gfx::ImageSkiaRep(
224 SkBitmapOperations::CreateHSLShiftedBitmap(image_rep.sk_bitmap(),
225 hsl_shift_), image_rep.scale_factor());
226 }
227
228 private:
229 const gfx::ImageSkia image_;
230 const color_utils::HSL hsl_shift_;
231
232 DISALLOW_COPY_AND_ASSIGN(HSLImageSource);
233 };
234
235 class ColorMaskImageSource: public gfx::ImageSkiaSource {
236 public:
237 ColorMaskImageSource(const gfx::ImageSkia& image,
238 SkColor color)
239 : image_(image),
240 color_(color) {
241 }
oshima 2012/07/13 16:54:55 ditto
242
243 // gfx::ImageSkiaSource overrides:
244 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
245 ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor);
246 return gfx::ImageSkiaRep(
247 SkBitmapOperations::CreateColorMask(image_rep.sk_bitmap(), color_),
248 image_rep.scale_factor());
249 }
250
251 private:
252 const gfx::ImageSkia image_;
253 const SkColor color_;
254
255 DISALLOW_COPY_AND_ASSIGN(ColorMaskImageSource);
256 };
257
258 class ExtractSubsetImageSource: public gfx::ImageSkiaSource {
259 public:
260 ExtractSubsetImageSource(const gfx::ImageSkia& image,
261 const gfx::Rect& subset_bounds)
262 : image_(image),
263 subset_bounds_(subset_bounds) {
264 }
oshima 2012/07/13 16:54:55 ditto
265
266 // gfx::ImageSkiaSource overrides:
267 virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE {
268 ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor);
269 SkIRect subset_bounds_in_pixel = RectToSkIRect(
270 subset_bounds_.Scale(ui::GetScaleFactorScale(scale_factor)));
271 SkBitmap dst;
272 image_rep.sk_bitmap().extractSubset(&dst, subset_bounds_in_pixel);
273 return gfx::ImageSkiaRep(dst, image_rep.scale_factor());
274 }
275
276 private:
277 const gfx::ImageSkia image_;
278 const gfx::Rect subset_bounds_;
279
280 DISALLOW_COPY_AND_ASSIGN(ExtractSubsetImageSource);
281 };
282
183 } // namespace; 283 } // namespace;
184 284
185 // static 285 // static
186 ImageSkia ImageSkiaOperations::CreateBlendedImage(const ImageSkia& first, 286 ImageSkia ImageSkiaOperations::CreateBlendedImage(const ImageSkia& first,
187 const ImageSkia& second, 287 const ImageSkia& second,
188 double alpha) { 288 double alpha) {
189 return ImageSkia(new BlendingImageSource(first, second, alpha), first.size()); 289 return ImageSkia(new BlendingImageSource(first, second, alpha), first.size());
190 } 290 }
191 291
192 // static 292 // static
(...skipping 11 matching lines...) Expand all
204 } 304 }
205 305
206 // static 306 // static
207 ImageSkia ImageSkiaOperations::CreateResizedImage( 307 ImageSkia ImageSkiaOperations::CreateResizedImage(
208 const ImageSkia& source, 308 const ImageSkia& source,
209 const gfx::Size& target_size_in_dip) { 309 const gfx::Size& target_size_in_dip) {
210 return ImageSkia(new ResizingImageSource(source, target_size_in_dip), 310 return ImageSkia(new ResizingImageSource(source, target_size_in_dip),
211 target_size_in_dip); 311 target_size_in_dip);
212 } 312 }
213 313
314 // static
315 ImageSkia ImageSkiaOperations::CreateButtonBackground(
316 SkColor color,
317 const ImageSkia& image,
318 const ImageSkia& mask) {
319 return ImageSkia(new ButtonImageSource(color, image, mask), image.size());
320 }
321
322 // static
323 ImageSkia ImageSkiaOperations::CreateHSLShiftedImage(
324 const ImageSkia& image,
325 const color_utils::HSL& hsl_shift) {
326 return ImageSkia(new HSLImageSource(image, hsl_shift), image.size());
327 }
328
329 // static
330 ImageSkia ImageSkiaOperations::CreateColorMask(
331 const ImageSkia& image,
332 SkColor color) {
oshima 2012/07/13 16:54:55 can these be alined to at (?
333 return ImageSkia(new ColorMaskImageSource(image, color), image.size());
334 }
335
336 // static
337 ImageSkia ImageSkiaOperations::ExtractSubset(
338 const ImageSkia& image,
339 const Rect& subset_bounds) {
oshima 2012/07/13 16:54:55 can these be alined to at (?
pkotwicz 2012/07/15 03:36:48 Done.
340 if (image.isNull())
341 return ImageSkia();
oshima 2012/07/13 16:54:55 i wonder "return image" is better. you may keep it
pkotwicz 2012/07/15 03:36:48 I prefer it this way. SkBitmap::extractSubset retu
342
343 return ImageSkia(new ExtractSubsetImageSource(image, subset_bounds),
344 subset_bounds.size());
345 }
346
214 } // namespace gfx 347 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698