1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ios/chrome/browser/ui/background_generator.h"
7 #import <QuartzCore/QuartzCore.h>
9 #include "base/mac/bundle_locations.h"
10 #include "base/mac/foundation_util.h"
11 #include "base/mac/scoped_cftyperef.h"
12 #import "base/mac/scoped_nsobject.h"
13 #import "ios/chrome/browser/ui/ui_util.h"
15 // This is a utility function that may be used as a standalone helper function
16 // to generate a radial gradient UIImage.
17 UIImage* GetRadialGradient(CGRect backgroundRect,
24 UIGraphicsBeginImageContextWithOptions(backgroundRect.size, YES, 0);
25 CGContextRef context = UIGraphicsGetCurrentContext();
26 CGFloat gradient_colors[4] = {centerColor, 1.0, outsideColor, 1.0};
27 const size_t kColorCount = 2;
28 base::ScopedCFTypeRef<CGColorSpaceRef> grey_space(
29 CGColorSpaceCreateDeviceGray());
30 DCHECK_EQ(2u, CGColorSpaceGetNumberOfComponents(grey_space));
31 base::ScopedCFTypeRef<CGGradientRef> gradient(
32 CGGradientCreateWithColorComponents(grey_space, gradient_colors, nullptr,
34 CGContextDrawRadialGradient(context, gradient, centerPoint, 0, centerPoint,
35 radius, kCGGradientDrawsAfterEndLocation);
37 [tileImage drawAsPatternInRect:backgroundRect];
39 CGPoint corner = AlignPointToPixel(
40 CGPointMake(centerPoint.x - logoImage.size.width / 2.0,
41 centerPoint.y - logoImage.size.height / 2.0));
42 [logoImage drawAtPoint:corner];
44 UIImage* background = UIGraphicsGetImageFromCurrentImageContext();
45 UIGraphicsEndImageContext();
49 void InstallBackgroundInView(UIView* view) {
50 UIImageView* imageView =
51 [[[UIImageView alloc] initWithFrame:view.bounds] autorelease];
52 imageView.image = [UIImage imageNamed:@"stack_view_background_noise.jpg"];
53 imageView.contentMode = UIViewContentModeScaleAspectFill;
54 imageView.autoresizingMask =
55 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
56 [view insertSubview:imageView atIndex:0];