blob: 80188e5412465c269907832f4ae8117c641c38e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "chrome/browser/cocoa/image_utils.h"
@implementation NSImage (FlippedAdditions)
- (void)drawInRect:(NSRect)dstRect
fromRect:(NSRect)srcRect
operation:(NSCompositingOperation)op
fraction:(CGFloat)requestedAlpha
neverFlipped:(BOOL)neverFlipped {
NSAffineTransform *transform = nil;
// Flip drawing and adjust the origin to make the image come out
// right.
if (neverFlipped && [[NSGraphicsContext currentContext] isFlipped]) {
transform = [NSAffineTransform transform];
[transform scaleXBy:1.0 yBy:-1.0];
[transform concat];
// The lower edge of the image is as far from the origin as the
// upper edge was, plus it's on the other side of the origin.
dstRect.origin.y -= NSMaxY(dstRect) + NSMinY(dstRect);
}
[self drawInRect:dstRect
fromRect:srcRect
operation:op
fraction:requestedAlpha];
// Flip drawing back, if needed.
[transform concat];
}
@end
|