aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m
diff options
context:
space:
mode:
authoravenjamin <avenjamin@gmail.com>2009-06-24 15:46:27 +0000
committeravenjamin <avenjamin@gmail.com>2009-06-24 15:46:27 +0000
commit5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40 (patch)
treef0eaf423f2c13f2091fe9cfceaa2e0a6f2169723 /Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m
parent37bd86b2879c107ebb026954693540979cf25e2a (diff)
downloadsequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.tar.gz
sequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.tar.bz2
sequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.zip
- Changed the way the BWToolkit framework was included to allow modifications to be made easily.
- Fixed show/hide info pane toggle button image states to now show correctly
Diffstat (limited to 'Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m')
-rw-r--r--Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m83
1 files changed, 83 insertions, 0 deletions
diff --git a/Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m b/Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m
new file mode 100644
index 00000000..eef2b972
--- /dev/null
+++ b/Frameworks/BWToolkitFramework.framework/NSImage+BWAdditions.m
@@ -0,0 +1,83 @@
+//
+// NSImage+BWAdditions.m
+// BWToolkit
+//
+// Created by Brandon Walkin (www.brandonwalkin.com)
+// All code is provided under the New BSD license.
+//
+
+#import "NSImage+BWAdditions.h"
+
+@implementation NSImage (BWAdditions)
+
+// Draw a solid color over an image - taking into account alpha. Useful for coloring template images.
+
+- (NSImage *)tintedImageWithColor:(NSColor *)tint
+{
+ NSSize size = [self size];
+ NSRect imageBounds = NSMakeRect(0, 0, size.width, size.height);
+
+ NSImage *copiedImage = [self copy];
+
+ [copiedImage lockFocus];
+
+ [tint set];
+ NSRectFillUsingOperation(imageBounds, NSCompositeSourceAtop);
+
+ [copiedImage unlockFocus];
+
+ return [copiedImage autorelease];
+}
+
+// Rotate an image 90 degrees clockwise or counterclockwise
+// Code from http://swik.net/User:marc/Chipmunk+Ninja+Technical+Articles/Rotating+an+NSImage+object+in+Cocoa/zgha
+
+- (NSImage *)rotateImage90DegreesClockwise:(BOOL)clockwise
+{
+ NSImage *existingImage = self;
+ NSSize existingSize;
+
+ /**
+ * Get the size of the original image in its raw bitmap format.
+ * The bestRepresentationForDevice: nil tells the NSImage to just
+ * give us the raw image instead of it's wacky DPI-translated version.
+ */
+ existingSize.width = [[existingImage bestRepresentationForDevice:nil] pixelsWide];
+ existingSize.height = [[existingImage bestRepresentationForDevice:nil] pixelsHigh];
+
+ NSSize newSize = NSMakeSize(existingSize.height, existingSize.width);
+ NSImage *rotatedImage = [[[NSImage alloc] initWithSize:newSize] autorelease];
+
+ [rotatedImage lockFocus];
+
+ /**
+ * Apply the following transformations:
+ *
+ * - bring the rotation point to the centre of the image instead of
+ * the default lower, left corner (0,0).
+ * - rotate it by 90 degrees, either clock or counter clockwise.
+ * - re-translate the rotated image back down to the lower left corner
+ * so that it appears in the right place.
+ */
+ NSAffineTransform *rotateTF = [NSAffineTransform transform];
+ NSPoint centerPoint = NSMakePoint(newSize.width / 2, newSize.height / 2);
+
+ [rotateTF translateXBy: centerPoint.x yBy: centerPoint.y];
+ [rotateTF rotateByDegrees: (clockwise) ? - 90 : 90];
+ [rotateTF translateXBy: -centerPoint.y yBy: -centerPoint.x];
+ [rotateTF concat];
+
+ /**
+ * We have to get the image representation to do its drawing directly,
+ * because otherwise the stupid NSImage DPI thingie bites us in the butt
+ * again.
+ */
+ NSRect r1 = NSMakeRect(0, 0, newSize.height, newSize.width);
+ [[existingImage bestRepresentationForDevice:nil] drawInRect:r1];
+
+ [rotatedImage unlockFocus];
+
+ return rotatedImage;
+}
+
+@end