1/* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#include "PluginObject.h" 27 28#if !defined(BUILDING_ON_TIGER) 29 30#include <QuartzCore/QuartzCore.h> 31 32@interface TestPluginLayer : CALayer 33@end 34 35@implementation TestPluginLayer 36 37- (void)drawInContext:(CGContextRef)context 38{ 39 CGRect bounds = [self bounds]; 40 const char* text = "Test Plug-in"; 41 CGContextSelectFont(context, "Helvetica", 24, kCGEncodingMacRoman); 42 CGContextShowTextAtPoint(context, bounds.origin.x + 3.0f, bounds.origin.y + bounds.size.height - 30.0f, text, strlen(text)); 43} 44 45@end 46 47void* createCoreAnimationLayer() 48{ 49 CALayer *caLayer = [[TestPluginLayer alloc] init]; 50 51 NSNull *nullValue = [NSNull null]; 52 NSDictionary *actions = [NSDictionary dictionaryWithObjectsAndKeys: 53 nullValue, @"anchorPoint", 54 nullValue, @"bounds", 55 nullValue, @"contents", 56 nullValue, @"contentsRect", 57 nullValue, @"opacity", 58 nullValue, @"position", 59 nullValue, @"shadowColor", 60 nullValue, @"sublayerTransform", 61 nullValue, @"sublayers", 62 nullValue, @"transform", 63 nullValue, @"zPosition", 64 nil]; 65 // Turn off default animations. 66 [caLayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]]; 67 [caLayer setNeedsDisplayOnBoundsChange:YES]; 68 69 [caLayer setBounds:CGRectMake(0, 0, 200, 100)]; 70 [caLayer setAnchorPoint:CGPointZero]; 71 72 CGColorRef color = CGColorCreateGenericRGB(0.5, 0.5, 1, 1); 73 [caLayer setBackgroundColor:color]; 74 CGColorRelease(color); 75 76 [caLayer setLayoutManager:[CAConstraintLayoutManager layoutManager]]; 77 78 CALayer *sublayer = [CALayer layer]; 79 // Turn off default animations. 80 [sublayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]]; 81 82 color = CGColorCreateGenericRGB(0, 0, 0, 0.75); 83 [sublayer setBackgroundColor:color]; 84 CGColorRelease(color); 85 [sublayer setBounds:CGRectMake(0, 0, 180, 20)]; 86 87 [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinY 88 relativeTo:@"superlayer" 89 attribute:kCAConstraintMinY]]; 90 [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinX 91 relativeTo:@"superlayer" 92 attribute:kCAConstraintMinX]]; 93 [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxX 94 relativeTo:@"superlayer" 95 attribute:kCAConstraintMaxX]]; 96 97 [caLayer addSublayer:sublayer]; 98 return caLayer; 99} 100 101#endif // !defined(BUILDING_ON_TIGER) 102 103