Index: branches/diebuche/ChameleonPrefPane/CTGradient.m
===================================================================
--- branches/diebuche/ChameleonPrefPane/CTGradient.m (revision 85)
+++ branches/diebuche/ChameleonPrefPane/CTGradient.m (revision 86)
@@ -1,1308 +0,0 @@
-//
-// CTGradient.m
-//
-// Created by Chad Weider on 2/14/07.
-// Copyright (c) 2007 Chad Weider.
-// Some rights reserved:
-//
-// Version: 1.6
-
-#import "CTGradient.h"
-
-@interface CTGradient (Private)
-- (void)_commonInit;
-- (void)setBlendingMode:(CTGradientBlendingMode)mode;
-- (void)addElement:(CTGradientElement*)newElement;
-
-- (CTGradientElement *)elementAtIndex:(unsigned)index;
-
-- (CTGradientElement)removeElementAtIndex:(unsigned)index;
-- (CTGradientElement)removeElementAtPosition:(float)position;
-@end
-
-//C Fuctions for color blending
-static void linearEvaluation (void *info, const float *in, float *out);
-static void chromaticEvaluation(void *info, const float *in, float *out);
-static void inverseChromaticEvaluation(void *info, const float *in, float *out);
-static void transformRGB_HSV(float *components);
-static void transformHSV_RGB(float *components);
-static void resolveHSV(float *color1, float *color2);
-
-
-@implementation CTGradient
-/////////////////////////////////////Initialization Type Stuff
-- (id)init
-{
- self = [super init];
-
- if (self != nil)
- {
- [self _commonInit];
- [self setBlendingMode:CTLinearBlendingMode];
- }
- return self;
-}
-
-- (void)_commonInit
-{
- elementList = nil;
-}
-
-- (void)dealloc
-{
- CGFunctionRelease(gradientFunction);
-
- CTGradientElement *elementToRemove = elementList;
- while(elementList != nil)
- {
- elementToRemove = elementList;
- elementList = elementList->nextElement;
- free(elementToRemove);
- }
-
- [super dealloc];
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
- CTGradient *copy = [[[self class] allocWithZone:zone] init];
-
- //now just copy my elementlist
- CTGradientElement *currentElement = elementList;
- while(currentElement != nil)
- {
- [copy addElement:currentElement];
- currentElement = currentElement->nextElement;
- }
-
- [copy setBlendingMode:blendingMode];
-
- return copy;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- if([coder allowsKeyedCoding])
- {
- unsigned count = 0;
- CTGradientElement *currentElement = elementList;
- while(currentElement != nil)
- {
- [coder encodeValueOfObjCType:@encode(float) at:&(currentElement->red)];
- [coder encodeValueOfObjCType:@encode(float) at:&(currentElement->green)];
- [coder encodeValueOfObjCType:@encode(float) at:&(currentElement->blue)];
- [coder encodeValueOfObjCType:@encode(float) at:&(currentElement->alpha)];
- [coder encodeValueOfObjCType:@encode(float) at:&(currentElement->position)];
-
- count++;
- currentElement = currentElement->nextElement;
- }
- [coder encodeInt:count forKey:@"CTGradientElementCount"];
- [coder encodeInt:blendingMode forKey:@"CTGradientBlendingMode"];
- }
- else
- [NSException raise:NSInvalidArchiveOperationException format:@"Only supports NSKeyedArchiver coders"];
-}
-
-- (id)initWithCoder:(NSCoder *)coder
-{
- [self _commonInit];
-
- [self setBlendingMode:[coder decodeIntForKey:@"CTGradientBlendingMode"]];
- unsigned count = [coder decodeIntForKey:@"CTGradientElementCount"];
-
- while(count != 0)
- {
- CTGradientElement newElement;
-
- [coder decodeValueOfObjCType:@encode(float) at:&(newElement.red)];
- [coder decodeValueOfObjCType:@encode(float) at:&(newElement.green)];
- [coder decodeValueOfObjCType:@encode(float) at:&(newElement.blue)];
- [coder decodeValueOfObjCType:@encode(float) at:&(newElement.alpha)];
- [coder decodeValueOfObjCType:@encode(float) at:&(newElement.position)];
-
- count--;
- [self addElement:&newElement];
- }
- return self;
-}
-#pragma mark -
-
-
-
-#pragma mark Creation
-+ (id)gradientWithBeginningColor:(NSColor *)begin endingColor:(NSColor *)end
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- CTGradientElement color2;
-
- [[begin colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color1.red
- green:&color1.green
- blue:&color1.blue
- alpha:&color1.alpha];
-
- [[end colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color2.red
- green:&color2.green
- blue:&color2.blue
- alpha:&color2.alpha];
- color1.position = 0;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-
-+ (id)dividerGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.84;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.90;
- color2.alpha = 1.00;
- color2.position = 0.5;
-
- CTGradientElement color3;
- color3.red = color3.green = color3.blue = 0.84;
- color3.alpha = 1.00;
- color3.position = 1.0;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
- [newInstance addElement:&color3];
-
- return [newInstance autorelease];
-}
-
-
-+ (id)statusBarGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.872;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.77;
- color2.alpha = 1.00;
- color2.position = 0.618;
-
- CTGradientElement color3;
- color3.red = color3.green = color3.blue = 0.74;
- color3.alpha = 1.00;
- color3.position = 1.0;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
- [newInstance addElement:&color3];
-
- return [newInstance autorelease];
-}
-
-
-+ (id)aquaSelectedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = 0.58;
- color1.green = 0.86;
- color1.blue = 0.98;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = 0.42;
- color2.green = 0.68;
- color2.blue = 0.90;
- color2.alpha = 1.00;
- color2.position = 11.5/23;
-
- CTGradientElement color3;
- color3.red = 0.64;
- color3.green = 0.80;
- color3.blue = 0.94;
- color3.alpha = 1.00;
- color3.position = 11.5/23;
-
- CTGradientElement color4;
- color4.red = 0.56;
- color4.green = 0.70;
- color4.blue = 0.90;
- color4.alpha = 1.00;
- color4.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
- [newInstance addElement:&color3];
- [newInstance addElement:&color4];
-
- return [newInstance autorelease];
-}
-
-+ (id)aquaNormalGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.95;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.83;
- color2.alpha = 1.00;
- color2.position = 11.5/23;
-
- CTGradientElement color3;
- color3.red = color3.green = color3.blue = 0.95;
- color3.alpha = 1.00;
- color3.position = 11.5/23;
-
- CTGradientElement color4;
- color4.red = color4.green = color4.blue = 0.92;
- color4.alpha = 1.00;
- color4.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
- [newInstance addElement:&color3];
- [newInstance addElement:&color4];
-
- return [newInstance autorelease];
-}
-
-+ (id)aquaPressedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.80;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.64;
- color2.alpha = 1.00;
- color2.position = 11.5/23;
-
- CTGradientElement color3;
- color3.red = color3.green = color3.blue = 0.80;
- color3.alpha = 1.00;
- color3.position = 11.5/23;
-
- CTGradientElement color4;
- color4.red = color4.green = color4.blue = 0.77;
- color4.alpha = 1.00;
- color4.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
- [newInstance addElement:&color3];
- [newInstance addElement:&color4];
-
- return [newInstance autorelease];
-}
-
-+ (id)unifiedSelectedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.85;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.95;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)unifiedNormalGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.75;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.90;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)unifiedPressedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.60;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.75;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)unifiedDarkGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = color1.green = color1.blue = 0.68;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = color2.green = color2.blue = 0.83;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)sourceListSelectedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = 0.06;
- color1.green = 0.37;
- color1.blue = 0.85;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = 0.30;
- color2.green = 0.60;
- color2.blue = 0.92;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)sourceListUnselectedGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = 0.43;
- color1.green = 0.43;
- color1.blue = 0.43;
- color1.alpha = 1.00;
- color1.position = 0;
-
- CTGradientElement color2;
- color2.red = 0.60;
- color2.green = 0.60;
- color2.blue = 0.60;
- color2.alpha = 1.00;
- color2.position = 1;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- return [newInstance autorelease];
-}
-
-+ (id)rainbowGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement color1;
- color1.red = 1.00;
- color1.green = 0.00;
- color1.blue = 0.00;
- color1.alpha = 1.00;
- color1.position = 0.0;
-
- CTGradientElement color2;
- color2.red = 0.54;
- color2.green = 0.00;
- color2.blue = 1.00;
- color2.alpha = 1.00;
- color2.position = 1.0;
-
- [newInstance addElement:&color1];
- [newInstance addElement:&color2];
-
- [newInstance setBlendingMode:CTChromaticBlendingMode];
-
- return [newInstance autorelease];
-}
-
-+ (id)hydrogenSpectrumGradient
-{
- id newInstance = [[[self class] alloc] init];
-
- struct {float hue; float position; float width;} colorBands[4];
-
- colorBands[0].hue = 22;
- colorBands[0].position = .145;
- colorBands[0].width = .01;
-
- colorBands[1].hue = 200;
- colorBands[1].position = .71;
- colorBands[1].width = .008;
-
- colorBands[2].hue = 253;
- colorBands[2].position = .885;
- colorBands[2].width = .005;
-
- colorBands[3].hue = 275;
- colorBands[3].position = .965;
- colorBands[3].width = .003;
-
- int i;
- /////////////////////////////
- for(i = 0; i < 4; i++)
- {
- float color[4];
- color[0] = colorBands[i].hue - 180*colorBands[i].width;
- color[1] = 1;
- color[2] = 0.001;
- color[3] = 1;
- transformHSV_RGB(color);
- CTGradientElement fadeIn;
- fadeIn.red = color[0];
- fadeIn.green = color[1];
- fadeIn.blue = color[2];
- fadeIn.alpha = color[3];
- fadeIn.position = colorBands[i].position - colorBands[i].width;
-
-
- color[0] = colorBands[i].hue;
- color[1] = 1;
- color[2] = 1;
- color[3] = 1;
- transformHSV_RGB(color);
- CTGradientElement band;
- band.red = color[0];
- band.green = color[1];
- band.blue = color[2];
- band.alpha = color[3];
- band.position = colorBands[i].position;
-
- color[0] = colorBands[i].hue + 180*colorBands[i].width;
- color[1] = 1;
- color[2] = 0.001;
- color[3] = 1;
- transformHSV_RGB(color);
- CTGradientElement fadeOut;
- fadeOut.red = color[0];
- fadeOut.green = color[1];
- fadeOut.blue = color[2];
- fadeOut.alpha = color[3];
- fadeOut.position = colorBands[i].position + colorBands[i].width;
-
-
- [newInstance addElement:&fadeIn];
- [newInstance addElement:&band];
- [newInstance addElement:&fadeOut];
- }
-
- [newInstance setBlendingMode:CTChromaticBlendingMode];
-
- return [newInstance autorelease];
-}
-
-#pragma mark -
-
-
-
-#pragma mark Modification
-- (CTGradient *)gradientWithAlphaComponent:(float)alpha
-{
- id newInstance = [[[self class] alloc] init];
-
- CTGradientElement *curElement = elementList;
- CTGradientElement tempElement;
-
- while(curElement != nil)
- {
- tempElement = *curElement;
- tempElement.alpha = alpha;
- [newInstance addElement:&tempElement];
-
- curElement = curElement->nextElement;
- }
-
- return [newInstance autorelease];
-}
-
-- (CTGradient *)gradientWithBlendingMode:(CTGradientBlendingMode)mode
-{
- CTGradient *newGradient = [self copy];
-
- [newGradient setBlendingMode:mode];
-
- return [newGradient autorelease];
-}
-
-
-//Adds a color stop with at in elementList
-//(if two elements are at the same position then added imediatly after the one that was there already)
-- (CTGradient *)addColorStop:(NSColor *)color atPosition:(float)position
-{
- CTGradient *newGradient = [self copy];
- CTGradientElement newGradientElement;
-
- //put the components of color into the newGradientElement - must make sure it is a RGB color (not Gray or CMYK)
- [[color colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&newGradientElement.red
- green:&newGradientElement.green
- blue:&newGradientElement.blue
- alpha:&newGradientElement.alpha];
- newGradientElement.position = position;
-
- //Pass it off to addElement to take care of adding it to the elementList
- [newGradient addElement:&newGradientElement];
-
- return [newGradient autorelease];
-}
-
-
-//Removes the color stop at from elementList
-- (CTGradient *)removeColorStopAtPosition:(float)position
-{
- CTGradient *newGradient = [self copy];
- CTGradientElement removedElement = [newGradient removeElementAtPosition:position];
-
- if(isnan(removedElement.position))
- [NSException raise:NSRangeException format:@"-[%@ removeColorStopAtPosition:]: no such colorStop at position (%f)", [self class], position];
-
- return [newGradient autorelease];
-}
-
-- (CTGradient *)removeColorStopAtIndex:(unsigned)index
-{
- CTGradient *newGradient = [self copy];
- CTGradientElement removedElement = [newGradient removeElementAtIndex:index];
-
- if(isnan(removedElement.position))
- [NSException raise:NSRangeException format:@"-[%@ removeColorStopAtIndex:]: index (%i) beyond bounds", [self class], index];
-
- return [newGradient autorelease];
-}
-#pragma mark -
-
-
-
-#pragma mark Information
-- (CTGradientBlendingMode)blendingMode
-{
- return blendingMode;
-}
-
-//Returns color at in gradient
-- (NSColor *)colorStopAtIndex:(unsigned)index
-{
- CTGradientElement *element = [self elementAtIndex:index];
-
- if(element != nil)
- return [NSColor colorWithCalibratedRed:element->red
- green:element->green
- blue:element->blue
- alpha:element->alpha];
-
- [NSException raise:NSRangeException format:@"-[%@ removeColorStopAtIndex:]: index (%i) beyond bounds", [self class], index];
-
- return nil;
-}
-
-- (NSColor *)colorAtPosition:(float)position
-{
- float components[4];
-
- switch(blendingMode)
- {
- case CTLinearBlendingMode:
- linearEvaluation(&elementList, &position, components); break;
- case CTChromaticBlendingMode:
- chromaticEvaluation(&elementList, &position, components); break;
- case CTInverseChromaticBlendingMode:
- inverseChromaticEvaluation(&elementList, &position, components); break;
- }
-
-
- return [NSColor colorWithCalibratedRed:components[0]
- green:components[1]
- blue:components[2]
- alpha:components[3]];
-}
-#pragma mark -
-
-
-
-#pragma mark Drawing
-- (void)drawSwatchInRect:(NSRect)rect
-{
- [self fillRect:rect angle:45];
-}
-
-- (void)fillRect:(NSRect)rect angle:(float)angle
-{
- //First Calculate where the beginning and ending points should be
- CGPoint startPoint;
- CGPoint endPoint;
-
- if(angle == 0) //screw the calculations - we know the answer
- {
- startPoint = CGPointMake(NSMinX(rect), NSMinY(rect)); //right of rect
- endPoint = CGPointMake(NSMaxX(rect), NSMinY(rect)); //left of rect
- }
- else if(angle == 90) //same as above
- {
- startPoint = CGPointMake(NSMinX(rect), NSMinY(rect)); //bottom of rect
- endPoint = CGPointMake(NSMinX(rect), NSMaxY(rect)); //top of rect
- }
- else //ok, we'll do the calculations now
- {
- float x,y;
- float sina, cosa, tana;
-
- float length;
- float deltax,
- deltay;
-
- float rangle = angle * pi/180; //convert the angle to radians
-
- if(fabsf(tan(rangle))<=1) //for range [-45,45], [135,225]
- {
- x = NSWidth(rect);
- y = NSHeight(rect);
-
- sina = sin(rangle);
- cosa = cos(rangle);
- tana = tan(rangle);
-
- length = x/fabsf(cosa)+(y-x*fabsf(tana))*fabsf(sina);
-
- deltax = length*cosa/2;
- deltay = length*sina/2;
- }
- else //for range [45,135], [225,315]
- {
- x = NSHeight(rect);
- y = NSWidth(rect);
-
- sina = sin(rangle - 90*pi/180);
- cosa = cos(rangle - 90*pi/180);
- tana = tan(rangle - 90*pi/180);
-
- length = x/fabsf(cosa)+(y-x*fabsf(tana))*fabsf(sina);
-
- deltax =-length*sina/2;
- deltay = length*cosa/2;
- }
-
- startPoint = CGPointMake(NSMidX(rect)-deltax, NSMidY(rect)-deltay);
- endPoint = CGPointMake(NSMidX(rect)+deltax, NSMidY(rect)+deltay);
- }
-
- //Calls to CoreGraphics
- CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- CGContextSaveGState(currentContext);
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
- CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
-#else
- CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
-#endif
- CGShadingRef myCGShading = CGShadingCreateAxial(colorspace, startPoint, endPoint, gradientFunction, false, false);
-
- CGContextClipToRect (currentContext, *(CGRect *)&rect); //This is where the action happens
- CGContextDrawShading(currentContext, myCGShading);
-
- CGShadingRelease(myCGShading);
- CGColorSpaceRelease(colorspace );
- CGContextRestoreGState(currentContext);
-}
-
-- (void)radialFillRect:(NSRect)rect
-{
- CGPoint startPoint , endPoint;
- float startRadius, endRadius;
- float scalex, scaley, transx, transy;
-
- startPoint = endPoint = CGPointMake(NSMidX(rect), NSMidY(rect));
-
- startRadius = -1;
- if(NSHeight(rect)>NSWidth(rect))
- {
- scalex = NSWidth(rect)/NSHeight(rect);
- transx = (NSHeight(rect)-NSWidth(rect))/2;
- scaley = 1;
- transy = 1;
- endRadius = NSHeight(rect)/2;
- }
- else
- {
- scalex = 1;
- transx = 1;
- scaley = NSHeight(rect)/NSWidth(rect);
- transy = (NSWidth(rect)-NSHeight(rect))/2;
- endRadius = NSWidth(rect)/2;
- }
-
- //Calls to CoreGraphics
- CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- CGContextSaveGState(currentContext);
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
- CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
-#else
- CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
-#endif
- CGShadingRef myCGShading = CGShadingCreateRadial(colorspace, startPoint, startRadius, endPoint, endRadius, gradientFunction, true, true);
-
- CGContextClipToRect (currentContext, *(CGRect *)&rect);
- CGContextScaleCTM (currentContext, scalex, scaley);
- CGContextTranslateCTM(currentContext, transx, transy);
- CGContextDrawShading (currentContext, myCGShading); //This is where the action happens
-
- CGShadingRelease(myCGShading);
- CGColorSpaceRelease(colorspace);
- CGContextRestoreGState(currentContext);
-}
-
-- (void)fillBezierPath:(NSBezierPath *)path angle:(float)angle
-{
- NSGraphicsContext *currentContext = [NSGraphicsContext currentContext];
- [currentContext saveGraphicsState];
- NSAffineTransform *transform = [[NSAffineTransform alloc] init];
-
- [transform rotateByDegrees:-angle];
- [path transformUsingAffineTransform:transform];
- [transform invert];
- [transform concat];
-
- [path addClip];
- [self fillRect:[path bounds] angle:0];
- [path transformUsingAffineTransform:transform];
- [transform release];
- [currentContext restoreGraphicsState];
-}
-- (void)radialFillBezierPath:(NSBezierPath *)path
-{
- NSGraphicsContext *currentContext = [NSGraphicsContext currentContext];
- [currentContext saveGraphicsState];
- [path addClip];
- [self radialFillRect:[path bounds]];
- [currentContext restoreGraphicsState];
-}
-#pragma mark -
-
-
-
-#pragma mark Private Methods
-- (void)setBlendingMode:(CTGradientBlendingMode)mode;
-{
- blendingMode = mode;
-
- //Choose what blending function to use
- void *evaluationFunction;
- switch(blendingMode)
- {
- case CTLinearBlendingMode:
- evaluationFunction = &linearEvaluation; break;
- case CTChromaticBlendingMode:
- evaluationFunction = &chromaticEvaluation; break;
- case CTInverseChromaticBlendingMode:
- evaluationFunction = &inverseChromaticEvaluation; break;
- }
-
- //replace the current CoreGraphics Function with new one
- if(gradientFunction != NULL)
- CGFunctionRelease(gradientFunction);
-
- CGFunctionCallbacks evaluationCallbackInfo = {0 , evaluationFunction, NULL}; //Version, evaluator function, cleanup function
-
- static const float input_value_range [2] = { 0, 1 }; //range for the evaluator input
- static const float output_value_ranges [8] = { 0, 1, 0, 1, 0, 1, 0, 1 }; //ranges for the evaluator output (4 returned values)
-
- gradientFunction = CGFunctionCreate(&elementList, //the two transition colors
- 1, input_value_range , //number of inputs (just fraction of progression)
- 4, output_value_ranges, //number of outputs (4 - RGBa)
- &evaluationCallbackInfo); //info for using the evaluator function
-}
-
-- (void)addElement:(CTGradientElement *)newElement
-{
- if(elementList == nil || newElement->position < elementList->position) //inserting at beginning of list
- {
- CTGradientElement *tmpNext = elementList;
- elementList = malloc(sizeof(CTGradientElement));
- *elementList = *newElement;
- elementList->nextElement = tmpNext;
- }
- else //inserting somewhere inside list
- {
- CTGradientElement *curElement = elementList;
-
- while(curElement->nextElement != nil && !((curElement->position <= newElement->position) && (newElement->position < curElement->nextElement->position)))
- {
- curElement = curElement->nextElement;
- }
-
- CTGradientElement *tmpNext = curElement->nextElement;
- curElement->nextElement = malloc(sizeof(CTGradientElement));
- *(curElement->nextElement) = *newElement;
- curElement->nextElement->nextElement = tmpNext;
- }
-}
-
-- (CTGradientElement)removeElementAtIndex:(unsigned)index
-{
- CTGradientElement removedElement;
-
- if(elementList != nil)
- {
- if(index == 0)
- {
- CTGradientElement *tmpNext = elementList;
- elementList = elementList->nextElement;
-
- removedElement = *tmpNext;
- free(tmpNext);
-
- return removedElement;
- }
-
- unsigned count = 1; //we want to start one ahead
- CTGradientElement *currentElement = elementList;
- while(currentElement->nextElement != nil)
- {
- if(count == index)
- {
- CTGradientElement *tmpNext = currentElement->nextElement;
- currentElement->nextElement = currentElement->nextElement->nextElement;
-
- removedElement = *tmpNext;
- free(tmpNext);
-
- return removedElement;
- }
-
- count++;
- currentElement = currentElement->nextElement;
- }
- }
-
- //element is not found, return empty element
- removedElement.red = 0.0;
- removedElement.green = 0.0;
- removedElement.blue = 0.0;
- removedElement.alpha = 0.0;
- removedElement.position = NAN;
- removedElement.nextElement = nil;
-
- return removedElement;
-}
-
-- (CTGradientElement)removeElementAtPosition:(float)position
-{
- CTGradientElement removedElement;
-
- if(elementList != nil)
- {
- if(elementList->position == position)
- {
- CTGradientElement *tmpNext = elementList;
- elementList = elementList->nextElement;
-
- removedElement = *tmpNext;
- free(tmpNext);
-
- return removedElement;
- }
- else
- {
- CTGradientElement *curElement = elementList;
- while(curElement->nextElement != nil)
- {
- if(curElement->nextElement->position == position)
- {
- CTGradientElement *tmpNext = curElement->nextElement;
- curElement->nextElement = curElement->nextElement->nextElement;
-
- removedElement = *tmpNext;
- free(tmpNext);
-
- return removedElement;
- }
- }
- }
- }
-
- //element is not found, return empty element
- removedElement.red = 0.0;
- removedElement.green = 0.0;
- removedElement.blue = 0.0;
- removedElement.alpha = 0.0;
- removedElement.position = NAN;
- removedElement.nextElement = nil;
-
- return removedElement;
-}
-
-
-- (CTGradientElement *)elementAtIndex:(unsigned)index;
-{
- unsigned count = 0;
- CTGradientElement *currentElement = elementList;
-
- while(currentElement != nil)
- {
- if(count == index)
- return currentElement;
-
- count++;
- currentElement = currentElement->nextElement;
- }
-
- return nil;
-}
-#pragma mark -
-
-
-
-#pragma mark Core Graphics
-//////////////////////////////////////Blending Functions/////////////////////////////////////
-void linearEvaluation (void *info, const float *in, float *out)
-{
- float position = *in;
-
- if(*(CTGradientElement **)info == nil) //if elementList is empty return clear color
- {
- out[0] = out[1] = out[2] = out[3] = 1;
- return;
- }
-
- //This grabs the first two colors in the sequence
- CTGradientElement *color1 = *(CTGradientElement **)info;
- CTGradientElement *color2 = color1->nextElement;
-
- //make sure first color and second color are on other sides of position
- while(color2 != nil && color2->position < position)
- {
- color1 = color2;
- color2 = color1->nextElement;
- }
- //if we don't have another color then make next color the same color
- if(color2 == nil)
- {
- color2 = color1;
- }
-
- //----------FailSafe settings----------
- //color1->red = 1; color2->red = 0;
- //color1->green = 1; color2->green = 0;
- //color1->blue = 1; color2->blue = 0;
- //color1->alpha = 1; color2->alpha = 1;
- //color1->position = .5;
- //color2->position = .5;
- //-------------------------------------
-
- if(position <= color1->position) //Make all below color color1's position equal to color1
- {
- out[0] = color1->red;
- out[1] = color1->green;
- out[2] = color1->blue;
- out[3] = color1->alpha;
- }
- else if (position >= color2->position) //Make all above color color2's position equal to color2
- {
- out[0] = color2->red;
- out[1] = color2->green;
- out[2] = color2->blue;
- out[3] = color2->alpha;
- }
- else //Interpolate color at postions between color1 and color1
- {
- //adjust position so that it goes from 0 to 1 in the range from color 1 & 2's position
- position = (position-color1->position)/(color2->position - color1->position);
-
- out[0] = (color2->red - color1->red )*position + color1->red;
- out[1] = (color2->green - color1->green)*position + color1->green;
- out[2] = (color2->blue - color1->blue )*position + color1->blue;
- out[3] = (color2->alpha - color1->alpha)*position + color1->alpha;
- }
-}
-
-
-
-
-//Chromatic Evaluation -
-// This blends colors by their Hue, Saturation, and Value(Brightness) right now I just
-// transform the RGB values stored in the CTGradientElements to HSB, in the future I may
-// streamline it to avoid transforming in and out of HSB colorspace *for later*
-//
-// For the chromatic blend we shift the hue of color1 to meet the hue of color2. To do
-// this we will add to the hue's angle (if we subtract we'll be doing the inverse
-// chromatic...scroll down more for that). All we need to do is keep adding to the hue
-// until we wrap around the colorwheel and get to color2.
-void chromaticEvaluation(void *info, const float *in, float *out)
-{
- float position = *in;
-
- if(*(CTGradientElement **)info == nil) //if elementList is empty return clear color
- {
- out[0] = out[1] = out[2] = out[3] = 1;
- return;
- }
-
- //This grabs the first two colors in the sequence
- CTGradientElement *color1 = *(CTGradientElement **)info;
- CTGradientElement *color2 = color1->nextElement;
-
- float c1[4];
- float c2[4];
-
- //make sure first color and second color are on other sides of position
- while(color2 != nil && color2->position < position)
- {
- color1 = color2;
- color2 = color1->nextElement;
- }
- //if we don't have another color then make next color the same color
- if(color2 == nil)
- {
- color2 = color1;
- }
-
-
- c1[0] = color1->red;
- c1[1] = color1->green;
- c1[2] = color1->blue;
- c1[3] = color1->alpha;
-
- c2[0] = color2->red;
- c2[1] = color2->green;
- c2[2] = color2->blue;
- c2[3] = color2->alpha;
-
- transformRGB_HSV(c1);
- transformRGB_HSV(c2);
- resolveHSV(c1,c2);
-
- if(c1[0] > c2[0]) //if color1's hue is higher than color2's hue then
- c2[0] += 360; // we need to move c2 one revolution around the wheel
-
-
- if(position <= color1->position) //Make all below color color1's position equal to color1
- {
- out[0] = c1[0];
- out[1] = c1[1];
- out[2] = c1[2];
- out[3] = c1[3];
- }
- else if (position >= color2->position) //Make all above color color2's position equal to color2
- {
- out[0] = c2[0];
- out[1] = c2[1];
- out[2] = c2[2];
- out[3] = c2[3];
- }
- else //Interpolate color at postions between color1 and color1
- {
- //adjust position so that it goes from 0 to 1 in the range from color 1 & 2's position
- position = (position-color1->position)/(color2->position - color1->position);
-
- out[0] = (c2[0] - c1[0])*position + c1[0];
- out[1] = (c2[1] - c1[1])*position + c1[1];
- out[2] = (c2[2] - c1[2])*position + c1[2];
- out[3] = (c2[3] - c1[3])*position + c1[3];
- }
-
- transformHSV_RGB(out);
-}
-
-
-
-//Inverse Chromatic Evaluation -
-// Inverse Chromatic is about the same story as Chromatic Blend, but here the Hue
-// is strictly decreasing, that is we need to get from color1 to color2 by decreasing
-// the 'angle' (i.e. 90å¼ -> 180å¼ would be done by subtracting 270å¼ and getting -180å¼...
-// which is equivalent to 180å¼ mod 360å¼
-void inverseChromaticEvaluation(void *info, const float *in, float *out)
-{
- float position = *in;
-
- if(*(CTGradientElement **)info == nil) //if elementList is empty return clear color
- {
- out[0] = out[1] = out[2] = out[3] = 1;
- return;
- }
-
- //This grabs the first two colors in the sequence
- CTGradientElement *color1 = *(CTGradientElement **)info;
- CTGradientElement *color2 = color1->nextElement;
-
- float c1[4];
- float c2[4];
-
- //make sure first color and second color are on other sides of position
- while(color2 != nil && color2->position < position)
- {
- color1 = color2;
- color2 = color1->nextElement;
- }
- //if we don't have another color then make next color the same color
- if(color2 == nil)
- {
- color2 = color1;
- }
-
- c1[0] = color1->red;
- c1[1] = color1->green;
- c1[2] = color1->blue;
- c1[3] = color1->alpha;
-
- c2[0] = color2->red;
- c2[1] = color2->green;
- c2[2] = color2->blue;
- c2[3] = color2->alpha;
-
- transformRGB_HSV(c1);
- transformRGB_HSV(c2);
- resolveHSV(c1,c2);
-
- if(c1[0] < c2[0]) //if color1's hue is higher than color2's hue then
- c1[0] += 360; // we need to move c2 one revolution back on the wheel
-
-
- if(position <= color1->position) //Make all below color color1's position equal to color1
- {
- out[0] = c1[0];
- out[1] = c1[1];
- out[2] = c1[2];
- out[3] = c1[3];
- }
- else if (position >= color2->position) //Make all above color color2's position equal to color2
- {
- out[0] = c2[0];
- out[1] = c2[1];
- out[2] = c2[2];
- out[3] = c2[3];
- }
- else //Interpolate color at postions between color1 and color1
- {
- //adjust position so that it goes from 0 to 1 in the range from color 1 & 2's position
- position = (position-color1->position)/(color2->position - color1->position);
-
- out[0] = (c2[0] - c1[0])*position + c1[0];
- out[1] = (c2[1] - c1[1])*position + c1[1];
- out[2] = (c2[2] - c1[2])*position + c1[2];
- out[3] = (c2[3] - c1[3])*position + c1[3];
- }
-
- transformHSV_RGB(out);
-}
-
-
-
-void transformRGB_HSV(float *components) //H,S,B -> R,G,B
-{
- float H, S, V;
- float R = components[0],
- G = components[1],
- B = components[2];
-
- float MAX = R > G ? (R > B ? R : B) : (G > B ? G : B),
- MIN = R < G ? (R < B ? R : B) : (G < B ? G : B);
-
- if(MAX == MIN)
- H = NAN;
- else if(MAX == R)
- if(G >= B)
- H = 60*(G-B)/(MAX-MIN)+0;
- else
- H = 60*(G-B)/(MAX-MIN)+360;
- else if(MAX == G)
- H = 60*(B-R)/(MAX-MIN)+120;
- else if(MAX == B)
- H = 60*(R-G)/(MAX-MIN)+240;
-
- S = MAX == 0 ? 0 : 1 - MIN/MAX;
- V = MAX;
-
- components[0] = H;
- components[1] = S;
- components[2] = V;
-}
-
-void transformHSV_RGB(float *components) //H,S,B -> R,G,B
-{
- float R, G, B;
- float H = fmodf(components[0],359), //map to [0,360)
- S = components[1],
- V = components[2];
-
- int Hi = (int)floorf(H/60.) % 6;
- float f = H/60-Hi,
- p = V*(1-S),
- q = V*(1-f*S),
- t = V*(1-(1-f)*S);
-
- switch (Hi)
- {
- case 0: R=V;G=t;B=p; break;
- case 1: R=q;G=V;B=p; break;
- case 2: R=p;G=V;B=t; break;
- case 3: R=p;G=q;B=V; break;
- case 4: R=t;G=p;B=V; break;
- case 5: R=V;G=p;B=q; break;
- }
-
- components[0] = R;
- components[1] = G;
- components[2] = B;
-}
-
-void resolveHSV(float *color1, float *color2) //H value may be undefined (i.e. graycale color)
-{ // we want to fill it with a sensible value
- if(isnan(color1[0]) && isnan(color2[0]))
- color1[0] = color2[0] = 0;
- else if(isnan(color1[0]))
- color1[0] = color2[0];
- else if(isnan(color2[0]))
- color2[0] = color1[0];
-}
-
-@end
\ No newline at end of file
Index: branches/diebuche/ChameleonPrefPane/CTGradient.h
===================================================================
--- branches/diebuche/ChameleonPrefPane/CTGradient.h (revision 85)
+++ branches/diebuche/ChameleonPrefPane/CTGradient.h (revision 86)
@@ -1,72 +0,0 @@
-//
-// CTGradient.h
-//
-// Created by Chad Weider on 2/14/07.
-// Copyright (c) 2007 Chad Weider.
-// Some rights reserved:
-//
-// Version: 1.6
-
-#import
-
-typedef struct _CTGradientElement
-{
- float red, green, blue, alpha;
- float position;
-
- struct _CTGradientElement *nextElement;
-} CTGradientElement;
-
-typedef enum _CTBlendingMode
-{
- CTLinearBlendingMode,
- CTChromaticBlendingMode,
- CTInverseChromaticBlendingMode
-} CTGradientBlendingMode;
-
-
-@interface CTGradient : NSObject
-{
- CTGradientElement* elementList;
- CTGradientBlendingMode blendingMode;
-
- CGFunctionRef gradientFunction;
-}
-
-+ (id)gradientWithBeginningColor:(NSColor *)begin endingColor:(NSColor *)end;
-
-+ (id)aquaSelectedGradient;
-+ (id)aquaNormalGradient;
-+ (id)aquaPressedGradient;
-
-+ (id)unifiedSelectedGradient;
-+ (id)unifiedNormalGradient;
-+ (id)unifiedPressedGradient;
-+ (id)unifiedDarkGradient;
-
-+ (id)sourceListSelectedGradient;
-+ (id)sourceListUnselectedGradient;
-
-+ (id)rainbowGradient;
-+ (id)hydrogenSpectrumGradient;
-
-- (CTGradient *)gradientWithAlphaComponent:(float)alpha;
-
-- (CTGradient *)addColorStop:(NSColor *)color atPosition:(float)position; //positions given relative to [0,1]
-- (CTGradient *)removeColorStopAtIndex:(unsigned)index;
-- (CTGradient *)removeColorStopAtPosition:(float)position;
-
-- (CTGradientBlendingMode)blendingMode;
-- (NSColor *)colorStopAtIndex:(unsigned)index;
-- (NSColor *)colorAtPosition:(float)position;
-
-
-- (void)drawSwatchInRect:(NSRect)rect;
-- (void)fillRect:(NSRect)rect angle:(float)angle; //fills rect with axial gradient
-// angle in degrees
-- (void)radialFillRect:(NSRect)rect; //fills rect with radial gradient
-// gradient from center outwards
-- (void)fillBezierPath:(NSBezierPath *)path angle:(float)angle;
-- (void)radialFillBezierPath:(NSBezierPath *)path;
-
-@end
\ No newline at end of file
Index: branches/diebuche/ChameleonPrefPane/Sources/RoundedBox_Prefix.pch
===================================================================
--- branches/diebuche/ChameleonPrefPane/Sources/RoundedBox_Prefix.pch (revision 85)
+++ branches/diebuche/ChameleonPrefPane/Sources/RoundedBox_Prefix.pch (revision 86)
@@ -1,7 +0,0 @@
-//
-// Prefix header for all source files of the 'RoundedBox' target in the 'RoundedBox' project
-//
-
-#ifdef __OBJC__
- #import
-#endif
Index: branches/diebuche/ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj
===================================================================
--- branches/diebuche/ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj (revision 85)
+++ branches/diebuche/ChameleonPrefPane/ChameleonPrefPane.xcodeproj/project.pbxproj (revision 86)
@@ -66,7 +66,6 @@
B3981E4411132AEC009E2520 /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = B3981E4311132AEC009E2520 /* background.png */; };
B3981F48111332FB009E2520 /* name.png in Resources */ = {isa = PBXBuildFile; fileRef = B3981F47111332FB009E2520 /* name.png */; };
B3981F7D1113376C009E2520 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3981F7C1113376C009E2520 /* QuartzCore.framework */; };
- B398220C111349F5009E2520 /* RoundedBox_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = B3982209111349F5009E2520 /* RoundedBox_Prefix.pch */; };
B398220D111349F5009E2520 /* RoundedBox.h in Headers */ = {isa = PBXBuildFile; fileRef = B398220A111349F5009E2520 /* RoundedBox.h */; };
B39822E911134F8B009E2520 /* RoundedBox.m in Sources */ = {isa = PBXBuildFile; fileRef = B398220B111349F5009E2520 /* RoundedBox.m */; };
B3F8855D11146A460022CA5D /* TableViewsController.h in Headers */ = {isa = PBXBuildFile; fileRef = B3F8855B11146A460022CA5D /* TableViewsController.h */; };
@@ -136,7 +135,6 @@
B3981E4311132AEC009E2520 /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = Resources/background.png; sourceTree = ""; };
B3981F47111332FB009E2520 /* name.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = name.png; path = Resources/name.png; sourceTree = ""; };
B3981F7C1113376C009E2520 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; };
- B3982209111349F5009E2520 /* RoundedBox_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RoundedBox_Prefix.pch; path = Sources/RoundedBox_Prefix.pch; sourceTree = ""; };
B398220A111349F5009E2520 /* RoundedBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RoundedBox.h; path = Sources/RoundedBox.h; sourceTree = ""; };
B398220B111349F5009E2520 /* RoundedBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RoundedBox.m; path = Sources/RoundedBox.m; sourceTree = ""; };
B3F8855B11146A460022CA5D /* TableViewsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TableViewsController.h; path = Sources/TableViewsController.h; sourceTree = ""; };
@@ -320,7 +318,6 @@
B3981F2E11132ED5009E2520 /* RoundedBox */ = {
isa = PBXGroup;
children = (
- B3982209111349F5009E2520 /* RoundedBox_Prefix.pch */,
B398220A111349F5009E2520 /* RoundedBox.h */,
B398220B111349F5009E2520 /* RoundedBox.m */,
);
@@ -352,7 +349,6 @@
01A25D4A111108C80024EA7E /* SmbiosController.h in Headers */,
B3981D401113292A009E2520 /* CustomTableView.h in Headers */,
B3981D8411132A13009E2520 /* string_util.h in Headers */,
- B398220C111349F5009E2520 /* RoundedBox_Prefix.pch in Headers */,
B398220D111349F5009E2520 /* RoundedBox.h in Headers */,
B3F8855D11146A460022CA5D /* TableViewsController.h in Headers */,
);
Index: branches/diebuche/ChameleonPrefPane/CREDITS
===================================================================
--- branches/diebuche/ChameleonPrefPane/CREDITS (revision 85)
+++ branches/diebuche/ChameleonPrefPane/CREDITS (revision 86)
@@ -1,18 +1,17 @@
-
- Initial Conception & Design:
- ---------------------------
- Rekursor
+Initial Conception & Design:
+---------------------------
+Rekursor
- Crew Members
- ----------
- Rekursor, DieBuche
+Crew Members
+----------
+Rekursor, DieBuche
- Contributors & Testers:
- ---------------------
- BlackOSX, MasterChief, digital_dreamer, smith@@, scrax
+Contributors & Testers:
+---------------------
+BlackOSX, MasterChief, digital_dreamer, smith@@, scrax
- Chameleon also reuses:
- ---------------------
- Courtesy of Ronan (Lizard) :
- Existing scripts and gfxutil tool from Lizard available at:
- http://code.google.com/p/lizard-app/
+Chameleon also reuses:
+---------------------
+Courtesy of Ronan (Lizard):
+Existing scripts and gfxutil tool from Lizard available at:
+http://code.google.com/p/lizard-app/
\ No newline at end of file
Index: branches/diebuche/ChameleonPrefPane/English.lproj/Chameleon.xib
===================================================================
--- branches/diebuche/ChameleonPrefPane/English.lproj/Chameleon.xib (revision 85)
+++ branches/diebuche/ChameleonPrefPane/English.lproj/Chameleon.xib (revision 86)
@@ -12,7 +12,7 @@
- {{0, 34}, {126, 526}}
+ {{0, 31}, {126, 408}}
YES
@@ -105,7 +105,7 @@
4352
- {126, 526}
+ {126, 408}
2
YES
@@ -197,7 +197,7 @@
1
- {126, 526}
+ {126, 408}
2
@@ -230,7 +230,7 @@
0.99047619104385376
- {{0, 34}, {126, 526}}
+ {{0, 31}, {126, 408}}
YES
@@ -247,7 +247,7 @@
12
- {{127, 34}, {541, 526}}
+ {{127, 31}, {541, 408}}
2
@@ -255,7 +255,7 @@
1
-
+
292
YES
@@ -272,7 +272,7 @@
2
- {{-32, -21}, {605, 568}}
+ {{-32, -139}, {605, 568}}
2
{0, 0}
@@ -309,7 +309,7 @@
268
- {{108, 7}, {80, 25}}
+ {{108, 8}, {80, 25}}
2
YES
@@ -334,7 +334,7 @@
268
- {{363, 7}, {158, 25}}
+ {{363, 8}, {158, 25}}
2
YES
@@ -355,7 +355,7 @@
268
- {{20, 7}, {80, 25}}
+ {{20, 8}, {80, 25}}
2
YES
@@ -917,7 +917,7 @@
2
- {{13, 224}, {511, 282}}
+ {{13, 106}, {511, 282}}
2
{0, 0}
@@ -939,7 +939,8 @@
NO
- {541, 526}
+ {541, 408}
+
2
Boot From ...
@@ -954,7 +955,7 @@
2
-
+
256
YES
@@ -971,7 +972,7 @@
2
- {{-32, -21}, {605, 568}}
+ {{-32, -139}, {605, 568}}
2
{0, 0}
@@ -1146,7 +1147,7 @@
2
- {{13, 376}, {511, 130}}
+ {{13, 258}, {511, 130}}
YES
2
@@ -1315,7 +1316,7 @@
2
- {{13, 215}, {511, 144}}
+ {{13, 97}, {511, 144}}
YES
2
@@ -1338,8 +1339,7 @@
NO
- {541, 526}
-
+ {541, 408}
2
Boot Setup
@@ -1366,7 +1366,7 @@
2
- {{-32, -21}, {605, 568}}
+ {{-32, -139}, {605, 568}}
2
{0, 0}
@@ -1811,7 +1811,7 @@
2
- {{13, 346}, {511, 160}}
+ {{13, 228}, {511, 160}}
2
{0, 0}
@@ -1917,7 +1917,7 @@
2
- {{13, 264}, {511, 68}}
+ {{13, 146}, {511, 68}}
2
{0, 0}
@@ -1939,7 +1939,7 @@
NO
- {539, 526}
+ {541, 408}
2
Boot Flags
@@ -1966,7 +1966,7 @@
2
- {{-32, -21}, {605, 568}}
+ {{-32, -139}, {605, 568}}
2
{0, 0}
@@ -2252,7 +2252,7 @@
2
- {{13, 369}, {511, 137}}
+ {{13, 251}, {511, 137}}
2
{0, 0}
@@ -2358,7 +2358,7 @@
2
- {{11, 295}, {511, 60}}
+ {{11, 177}, {511, 60}}
2
{0, 0}
@@ -2482,7 +2482,7 @@
2
- {{13, 222}, {511, 59}}
+ {{13, 104}, {511, 59}}
2
{0, 0}
@@ -2504,7 +2504,7 @@
NO
- {539, 526}
+ {541, 408}
2
Peripherals
@@ -2531,7 +2531,7 @@
2
- {{-32, -21}, {605, 568}}
+ {{-32, -139}, {605, 568}}
2
{0, 0}
@@ -3279,7 +3279,7 @@
2
- {{13, 260}, {511, 246}}
+ {{13, 142}, {511, 246}}
2
{0, 0}
@@ -3300,171 +3300,6 @@
2
NO
-
-
- 12
-
- YES
-
-
- 256
-
- YES
-
-
- 268
- {{16, 53}, {81, 23}}
-
- 2
- YES
-
- 67239424
- 0
- DSDT file
-
-
- 1211912703
- 2
-
-
-
-
- 200
- 25
-
-
-
-
- 268
- {{345, 53}, {126, 22}}
-
- 2
- YES
-
- 67239424
- 0
- Drop
-
-
- 1211912703
- 2
-
-
-
-
- 200
- 25
-
-
-
-
- 268
- {{121, 55}, {197, 22}}
-
- 2
- YES
-
- 611450433
- 272630784
-
-
-
- YES
-
-
-
-
-
-
- 268
- {{121, 14}, {197, 22}}
-
- 2
- YES
-
- 611450433
- 272630784
-
-
-
- YES
-
-
-
-
-
-
- 268
- {{345, 13}, {80, 23}}
-
- 2
- YES
-
- 67239424
- 0
- Defaults
-
-
- 1211912703
- 2
-
-
-
-
- 200
- 25
-
-
-
-
- 268
- {{16, 15}, {92, 23}}
-
- 2
- YES
-
- 67239424
- 0
- SMBIOS file
-
-
- 1211912703
- 2
-
-
-
-
- 200
- 25
-
-
-
- {{1, 1}, {509, 87}}
-
- 2
-
-
- {{13, 35}, {511, 103}}
-
- 2
- {0, 0}
-
- 67239424
- 0
- DSDT & SMBIOS
-
-
-
- 3
- MCAwLjgwMDAwMDAxAA
-
-
-
- 1
- 0
- 2
- NO
-
36
@@ -3568,7 +3403,7 @@
2
- {{13, 152}, {511, 94}}
+ {{13, 34}, {511, 94}}
2
{0, 0}
@@ -3590,7 +3425,7 @@
NO
- {541, 526}
+ {541, 408}
2
Advanced
@@ -3617,7 +3452,7 @@
2
- {{-33, -21}, {605, 568}}
+ {{-33, -139}, {605, 568}}
2
{0, 0}
@@ -3679,7 +3514,7 @@
268
- {{356, 307}, {141, 27}}
+ {{341, 309}, {156, 25}}
2
YES
@@ -3689,8 +3524,8 @@
Current Gfx Injection
- -2033434369
- 162
+ -2038152961
+ 163
400
@@ -3775,7 +3610,7 @@
2
- {{13, 142}, {511, 364}}
+ {{13, 24}, {511, 364}}
2
{0, 0}
@@ -3797,7 +3632,7 @@
NO
- {541, 526}
+ {541, 408}
2
EFI Inject
@@ -3824,7 +3659,7 @@
2
- {{-33, -21}, {605, 568}}
+ {{-33, -139}, {605, 568}}
2
{0, 0}
@@ -3850,10 +3685,175 @@
MC42OTcwODAyOTIAA
+
+
+ 12
+
+ YES
+
+
+ 256
+
+ YES
+
+
+ 268
+ {{16, 53}, {81, 23}}
+
+ 2
+ YES
+
+ 67239424
+ 0
+ DSDT file
+
+
+ 1211912703
+ 2
+
+
+
+
+ 200
+ 25
+
+
+
+
+ 268
+ {{345, 53}, {126, 22}}
+
+ 2
+ YES
+
+ 67239424
+ 0
+ Drop
+
+
+ 1211912703
+ 2
+
+
+
+
+ 200
+ 25
+
+
+
+
+ 268
+ {{121, 55}, {197, 22}}
+
+ 2
+ YES
+
+ 611450433
+ 272630784
+
+
+
+ YES
+
+
+
+
+
+
+ 268
+ {{121, 14}, {197, 22}}
+
+ 2
+ YES
+
+ 611450433
+ 272630784
+
+
+
+ YES
+
+
+
+
+
+
+ 268
+ {{345, 13}, {80, 23}}
+
+ 2
+ YES
+
+ 67239424
+ 0
+ Defaults
+
+
+ 1211912703
+ 2
+
+
+
+
+ 200
+ 25
+
+
+
+
+ 268
+ {{16, 15}, {92, 23}}
+
+ 2
+ YES
+
+ 67239424
+ 0
+ SMBIOS file
+
+
+ 1211912703
+ 2
+
+
+
+
+ 200
+ 25
+
+
+
+ {{1, 1}, {509, 87}}
+
+ 2
+
+
+ {{13, 285}, {511, 103}}
+
+ 2
+ {0, 0}
+
+ 67239424
+ 0
+ DSDT & SMBIOS
+
+
+
+ 3
+ MCAwLjgwMDAwMDAxAA
+
+
+
+ 1
+ 0
+ 2
+ NO
+
268
- {{373, 10}, {155, 25}}
+ {{373, 13}, {155, 25}}
2
YES
@@ -3874,7 +3874,7 @@
268
- {{30, 396}, {501, 17}}
+ {{30, 265}, {501, 17}}
2
YES
@@ -3889,7 +3889,7 @@
- {541, 526}
+ {541, 408}
2
SMBIOS
@@ -3916,7 +3916,7 @@
2
- {{-33, -21}, {605, 568}}
+ {{-33, -139}, {605, 568}}
2
{0, 0}
@@ -3945,7 +3945,7 @@
268
- {{16, 61}, {505, 291}}
+ {{18, 14}, {513, 261}}
2
YES
@@ -3969,7 +3969,7 @@
268
- {{186, 436}, {172, 17}}
+ {{186, 338}, {172, 17}}
2
YES
@@ -4005,7 +4005,7 @@
NeXT TIFF v4.0 pasteboard type
- {{222, 328}, {100, 100}}
+ {{222, 244}, {100, 100}}
2
YES
@@ -4038,7 +4038,7 @@
NeXT TIFF v4.0 pasteboard type
- {{141, 461}, {262, 45}}
+ {{141, 358}, {262, 45}}
2
YES
@@ -4056,50 +4056,8 @@
YES
-
-
- 268
- {{388, 7}, {140, 25}}
-
- 2
- YES
-
- -2080244224
- 134217728
- Check for Updates ?
-
-
- -2038152961
- 163
-
-
- 400
- 75
-
-
-
-
- 268
- {{17, 7}, {146, 25}}
-
- 2
- YES
-
- -2080244224
- 134217728
- chameleon.osx86.hu
-
-
- -2038152961
- 163
-
-
- 400
- 75
-
-
- {541, 526}
+ {541, 408}
2
About
@@ -4107,7 +4065,7 @@
-
+
LucidaGrande
9
@@ -4118,7 +4076,7 @@
YES
YES
-
+
@@ -4164,7 +4122,7 @@
SFAuthorizationView
- {668, 560}
+ {668, 439}
YES
2
@@ -5711,8 +5669,8 @@
-
+
@@ -5911,10 +5869,10 @@
YES
-
+
@@ -6407,7 +6365,6 @@
YES
-
@@ -6439,20 +6396,6 @@
- 523
-
-
- YES
-
-
-
-
-
-
-
-
-
-
560
@@ -6521,90 +6464,6 @@
- 528
-
-
- YES
-
-
-
-
-
- 554
-
-
- YES
-
-
-
-
-
- 555
-
-
- YES
-
-
-
-
-
- 553
-
-
- YES
-
-
-
-
-
- 527
-
-
- YES
-
-
-
-
-
- 529
-
-
- YES
-
-
-
-
-
- 530
-
-
-
-
- 532
-
-
-
-
- 558
-
-
-
-
- 556
-
-
-
-
- 557
-
-
-
-
- 531
-
-
-
-
741
@@ -7113,86 +6972,12 @@
YES
-
+
- 793
-
-
- YES
-
-
-
-
-
-
-
- 820
-
-
- YES
-
-
-
-
-
-
-
- 794
-
-
- YES
-
-
-
-
-
- 786
-
-
- YES
-
-
-
-
-
- 787
-
-
-
-
- 795
-
-
-
-
- 818
-
-
- YES
-
-
-
-
-
- 822
-
-
-
-
- 821
-
-
-
-
- 819
-
-
-
-
829
@@ -7200,6 +6985,7 @@
+
@@ -7236,44 +7022,15 @@
YES
-
-
-
+
- 907
-
-
- YES
-
-
-
-
-
- 931
-
-
- YES
-
-
-
-
-
- 933
-
-
- YES
-
-
-
-
-
918
@@ -7316,21 +7073,6 @@
- 934
-
-
-
-
- 932
-
-
-
-
- 908
-
-
-
-
937
@@ -7471,37 +7213,35 @@
- 995
-
+ 1002
+
YES
-
-
-
-
- 996
-
-
-
-
- 1002
-
1003
+
+ YES
+
1004
+
+ YES
+
1005
+
+ YES
+
@@ -7515,6 +7255,205 @@
+ 1010
+
+
+ YES
+
+
+
+
+ 1011
+
+
+
+
+ 793
+
+
+ YES
+
+
+
+
+
+
+
+ 786
+
+
+ YES
+
+
+
+
+
+ 787
+
+
+
+
+ 794
+
+
+ YES
+
+
+
+
+
+ 795
+
+
+
+
+ 820
+
+
+ YES
+
+
+
+
+
+
+
+ 821
+
+
+
+
+ 822
+
+
+
+
+ 818
+
+
+ YES
+
+
+
+
+
+ 819
+
+
+
+
+ 523
+
+
+ YES
+
+
+
+
+
+
+
+
+
+
+ 529
+
+
+ YES
+
+
+
+
+
+ 527
+
+
+ YES
+
+
+
+
+
+ 553
+
+
+ YES
+
+
+
+
+
+ 555
+
+
+ YES
+
+
+
+
+
+ 554
+
+
+ YES
+
+
+
+
+
+ 528
+
+
+ YES
+
+
+
+
+
+ 531
+
+
+
+
+ 557
+
+
+
+
+ 556
+
+
+
+
+ 558
+
+
+
+
+ 532
+
+
+
+
+ 530
+
+
+
+
+ 995
+
+
+ YES
+
+
+
+
+
+ 996
+
+
+
+
186
@@ -7529,14 +7468,18 @@
- 1010
-
-
+ 907
+
+
+ YES
+
+
+
- 1011
-
-
+ 908
+
+
@@ -7860,10 +7803,6 @@
920.IBViewIntegration.shadowOffsetHeight
920.IBViewIntegration.shadowOffsetWidth
921.IBPluginDependency
- 931.IBPluginDependency
- 932.IBPluginDependency
- 933.IBPluginDependency
- 934.IBPluginDependency
937.CustomClassName
937.IBPluginDependency
947.IBPluginDependency
@@ -7917,10 +7856,10 @@
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
- {{499, 446}, {668, 560}}
+ {{231, 531}, {668, 439}}
com.apple.InterfaceBuilder.CocoaPlugin
- {{499, 446}, {668, 560}}
+ {{231, 531}, {668, 439}}
{224.664, 10}
@@ -8671,10 +8610,6 @@
com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
RoundedBox
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
@@ -8722,7 +8657,7 @@
- 1011
+ 1012
@@ -9844,7 +9779,7 @@
com.apple.InterfaceBuilder.CocoaPlugin.macosx
-
+
com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3