88#import " CCEffectStack_Private.h"
99
1010@interface CCEffectsTest : TestBase @end
11- @implementation CCEffectsTest
11+ @implementation CCEffectsTest {
12+ #if CC_EFFECTS_EXPERIMENTAL
13+ CCEffectDistanceField* _distanceFieldEffect;
14+ CCEffectDFOutline* _outlineEffect;
15+ #endif
16+ }
1217
1318-(id )init
1419{
@@ -20,29 +25,183 @@ -(id)init
2025 return self;
2126}
2227
23- -(void )setupOuterGlowEffectTest
28+ #pragma mark Distance Fields
29+
30+ #if CC_EFFECTS_EXPERIMENTAL
31+
32+ -(void )setupDFOutlineEffectTest
2433{
25- self.subTitle = @" OuterGlow Effect Test" ;
34+ self.subTitle = @" Distance Field Outline Test" ;
2635
27- // CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
2836 CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
2937 environment.positionType = CCPositionTypeNormalized;
3038 environment.anchorPoint = ccp (0.5 , 0.5 );
3139 environment.position = ccp (0 .5f , 0 .5f );
3240
33- [self .contentNode addChild: environment];
41+ CCTexture* texture = [[CCTextureCache sharedTextureCache ] addImage: @" Images/output.png" ];
42+
43+ CCColor* fillColor = [CCColor colorWithRed: 0.0 green: 0.0 blue: 0.0 alpha: 0.0 ];
44+ _outlineEffect = [CCEffectDFOutline effectWithOutlineColor: [CCColor redColor ] fillColor: fillColor outlineWidth: 3 fieldScale: 32 distanceField: texture];
45+
46+ CCSprite *dfSprite = [CCSprite spriteWithImageNamed: @" Images/df_sprite.png" ];
47+ dfSprite.position = ccp (0.5 , 0.5 );
48+ dfSprite.positionType = CCPositionTypeNormalized;
49+ dfSprite.effect = _outlineEffect;
50+ dfSprite.scale = 1 .0f ;
3451
35- CCColor *glowColor = [CCColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 0.5 ];
36- CCEffectOuterGlow* effect = [CCEffectOuterGlow effectWithGlowColor: glowColor];
52+ CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background.png" ];
53+ CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background-hilite.png" ];
54+ CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-handle.png" ];
55+
56+ CCSlider* slider = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
57+ [slider setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
58+ slider.positionType = CCPositionTypeNormalized;
59+ slider.position = ccp (0 .1f , 0 .5f );
60+
61+ slider.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
62+ slider.preferredSize = CGSizeMake (0 .5f , 10 );
63+ slider.rotation = 90 ;
64+ slider.anchorPoint = ccp (0 .5f , 0 .5f );
65+ slider.scale = 0.8 ;
66+
67+ [slider setTarget: self selector: @selector (outlineWidthChagne: )];
68+
69+ [self .contentNode addChild: environment];
70+ [self .contentNode addChild: slider];
71+ [self .contentNode addChild: dfSprite];
72+
73+ // 6 pixel block used for comparison;
74+ CCNodeColor* block = [CCNodeColor nodeWithColor: [CCColor greenColor ]];
75+ block.contentSize = CGSizeMake (6.0 , 6.0 );
76+ block.position = ccp (0.424 , 0.324 );
77+ block.positionType = CCPositionTypeNormalized;
78+ block.rotation = 32 ;
79+ // [self.contentNode addChild:block];
80+ }
81+
82+ - (void )outlineWidthChagne : (id )sender
83+ {
84+ const int outlineWidthMax = 6 ;
85+ CCSlider* slider = sender;
86+ _outlineEffect.outlineWidth = slider.sliderValue * outlineWidthMax;
87+ }
88+
89+ -(void )setupDistanceFieldEffectTest
90+ {
91+ self.subTitle = @" Distance Field Effect Test" ;
3792
38- CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/DistanceFieldX.png" ];
93+ // CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
94+ CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
95+ environment.positionType = CCPositionTypeNormalized;
96+ environment.anchorPoint = ccp (0.5 , 0.5 );
97+ environment.position = ccp (0 .5f , 0 .5f );
98+
99+ [self .contentNode addChild: environment];
100+
101+ CCColor *glowColor = [CCColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0 ];
102+ _distanceFieldEffect = [CCEffectDistanceField effectWithGlowColor: glowColor outlineColor: [CCColor redColor ]];
103+
104+ CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/output.png" ];
39105 sampleSprite.position = ccp (0.5 , 0.5 );
40106 sampleSprite.positionType = CCPositionTypeNormalized;
41- sampleSprite.effect = effect;
42-
107+ sampleSprite.effect = _distanceFieldEffect;
108+ sampleSprite.scale = 1 .0f ;
109+
110+ CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background.png" ];
111+ CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background-hilite.png" ];
112+ CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-handle.png" ];
113+
114+ CCSlider* slider = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
115+ [slider setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
116+ slider.positionType = CCPositionTypeNormalized;
117+ slider.position = ccp (0 .1f , 0 .5f );
118+
119+ slider.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
120+ slider.preferredSize = CGSizeMake (0 .5f , 10 );
121+ slider.rotation = 90 ;
122+ slider.anchorPoint = ccp (0 .5f , 0 .5f );
123+ slider.scale = 0.8 ;
124+
125+ [slider setTarget: self selector: @selector (outlineInnerWidthChange: )];
126+
127+ CCSlider* slider2 = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
128+ [slider2 setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
129+ slider2.positionType = CCPositionTypeNormalized;
130+ slider2.position = ccp (0 .15f , 0 .5f );
131+
132+ slider2.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
133+ slider2.preferredSize = CGSizeMake (0 .5f , 10 );
134+ slider2.rotation = 90 ;
135+ slider2.anchorPoint = ccp (0 .5f , 0 .5f );
136+ slider2.scale = 0.8 ;
137+
138+ [slider2 setTarget: self selector: @selector (outlineOuterWidthChange: )];
139+
140+ CCSlider* slider3 = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
141+ [slider3 setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
142+ slider3.positionType = CCPositionTypeNormalized;
143+ slider3.position = ccp (0 .20f , 0 .5f );
144+
145+ slider3.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
146+ slider3.preferredSize = CGSizeMake (0 .5f , 10 );
147+ slider3.rotation = 90 ;
148+ slider3.anchorPoint = ccp (0 .5f , 0 .5f );
149+ slider3.scale = 0.8 ;
150+
151+ [slider3 setTarget: self selector: @selector (glowWidthChange: )];
152+
153+ CCButton* enableGlow = [CCButton buttonWithTitle: @" Outer Glow" ];
154+ enableGlow.positionType = CCPositionTypeNormalized;
155+ enableGlow.anchorPoint = ccp (0 .5f , 0 .5f );
156+ enableGlow.position = ccp (0.9 , 0.8 );
157+ [enableGlow setTarget: self selector: @selector (enableGlow: )];
158+
159+ CCButton* enableOutline = [CCButton buttonWithTitle: @" Outline" ];
160+ enableOutline.positionType = CCPositionTypeNormalized;
161+ enableOutline.anchorPoint = ccp (0 .5f , 0 .5f );
162+ enableOutline.position = ccp (0.9 , 0.7 );
163+ [enableOutline setTarget: self selector: @selector (enableOutline: )];
164+
165+ [self .contentNode addChild: enableOutline];
166+ [self .contentNode addChild: enableGlow];
43167 [self .contentNode addChild: sampleSprite];
168+ [self .contentNode addChild: slider];
169+ [self .contentNode addChild: slider2];
170+ [self .contentNode addChild: slider3];
171+ }
172+
173+ - (void )outlineInnerWidthChange : (id )sender
174+ {
175+ CCSlider* slider = sender;
176+ _distanceFieldEffect.outlineInnerWidth = slider.sliderValue ;
177+ }
178+
179+ - (void )outlineOuterWidthChange : (id )sender
180+ {
181+ CCSlider* slider = sender;
182+ _distanceFieldEffect.outlineOuterWidth = slider.sliderValue ;
183+ }
184+
185+ - (void )glowWidthChange : (id )sender
186+ {
187+ CCSlider* slider = sender;
188+ _distanceFieldEffect.glowWidth = slider.sliderValue ;
44189}
45190
191+ - (void )enableGlow : (id )sender
192+ {
193+ _distanceFieldEffect.glow = !_distanceFieldEffect.glow ;
194+ }
195+
196+ - (void )enableOutline : (id )sender
197+ {
198+ _distanceFieldEffect.outline = !_distanceFieldEffect.outline ;
199+ }
200+
201+ #endif
202+
203+ #pragma mark DropShadow
204+
46205-(void )setupDropShadowEffectTest
47206{
48207 self.subTitle = @" DropShadow Effect Test" ;
@@ -54,7 +213,7 @@ -(void)setupDropShadowEffectTest
54213 [self .contentNode addChild: environment];
55214
56215 CCColor *shadowColor = [CCColor colorWithRed: 0.0 green: 1.0 blue: 0.0 alpha: 0.5 ];
57- CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset: GLKVector2Make (2.0 , -2.0 ) shadowColor: shadowColor];
216+ CCEffectDropShadow* effect = [CCEffectDropShadow effectWithShadowOffset: GLKVector2Make (2.0 , -2.0 ) shadowColor: shadowColor blurRadius: 5 ];
58217
59218 CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/Ohm.png" ];
60219 sampleSprite.position = ccp (0.5 , 0.5 );
@@ -71,6 +230,8 @@ -(void)setupDropShadowEffectTest
71230 [self .contentNode addChild: effectNode];
72231}
73232
233+ #pragma mark Glass
234+
74235-(void )setupGlassEffectTest
75236{
76237 self.subTitle = @" Glass Effect Test" ;
@@ -453,7 +614,7 @@ -(void)setupBloomEffectTest
453614 sampleSprite3.positionType = CCPositionTypeNormalized;
454615
455616 // Blend glow maps test
456- CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius: 8 intensity: 1 .0f luminanceThreshold: 1 .0f - ((float )i/(float )(steps-1 ))];
617+ CCEffectBloom* glowEffect3 = [CCEffectBloom effectWithBlurRadius: 3 intensity: 1 .0f luminanceThreshold: 1 .0f - ((float )i/(float )(steps-1 ))];
457618 sampleSprite3.effect = glowEffect3;
458619
459620 [self .contentNode addChild: sampleSprite3];
@@ -1338,7 +1499,6 @@ - (CCSprite *)spriteWithEffects:(NSArray *)effects image:(NSString *)spriteImage
13381499 return sprite;
13391500}
13401501
1341-
13421502-(void )renderTextureHelper : (CCNode *)stage size : (CGSize)size
13431503{
13441504 CCColor *color = [CCColor colorWithRed: 0.0 green: 0.0 blue: 0.5 alpha: 0.5 ];
@@ -1364,5 +1524,5 @@ -(void)renderTextureHelper:(CCNode *)stage size:(CGSize)size
13641524 ]]];
13651525 [node addChild: sprite];
13661526}
1367- @end
13681527
1528+ @end
0 commit comments