65 lines
1.9 KiB
Plaintext
65 lines
1.9 KiB
Plaintext
_window = 1
|
|
begin enum output 1
|
|
_noiseView
|
|
_fpsLabel
|
|
end enum
|
|
|
|
void local fn BuildWindow
|
|
|
|
CGRect r = fn CGRectMake( 0, 0, 340, 300 )
|
|
window _window, @"Rosetta Code Image Noise", r, NSWindowStyleMaskTitled + NSWindowStyleMaskClosable
|
|
|
|
r = fn CGRectMake( 10, 50, 320, 240 )
|
|
imageview _noiseView, YES, , r, NSImageScaleAxesIndependently, NSImageAlignCenter, NSImageFrameNone, _window
|
|
|
|
r = fn CGRectMake( 20, 10, 280, 24 )
|
|
textlabel _fpsLabel, @"Estimated FPS: 60", r, _window
|
|
ControlSetAlignment( _fpsLabel, NSTextAlignmentCenter )
|
|
end fn
|
|
|
|
local fn CIImageToImageRef( ciImage as CIImageRef ) as ImageRef
|
|
CIImageRepRef rep = fn CIImageRepWithCIImage( ciImage )
|
|
CGSize size = fn ImageRepSize( rep )
|
|
ImageRef image = fn ImageWithSize( size )
|
|
ImageAddRepresentation( image, rep )
|
|
end fn = image
|
|
|
|
local fn NoiseCIImage as CIImageRef
|
|
CIFilterRef filter = fn CIFilterWithName( @"CIPhotoEffectNoir" )
|
|
ObjectSetValueForKey( filter, fn ObjectValueForKey( fn CIFilterWithName(@"CIRandomGenerator"), @"outputImage" ), @"inputImage" )
|
|
CIFilterSetDefaults( filter )
|
|
CIImageRef outputCIImage = fn CIImageByCroppingToRect( fn CIFilterOutputImage( filter ), fn CGRectMake( rnd(1000), rnd(1000), 500, 500 ) )
|
|
end fn = outputCIImage
|
|
|
|
local fn BuildNoiseView
|
|
block NSInteger renderedFrames
|
|
|
|
renderedFrames = 0
|
|
timerbegin, 1.0/60, YES
|
|
CIImageRef noiseCIImage = fn NoiseCIImage
|
|
ImageRef noiseImage = fn CIImageToImageRef( noiseCIImage )
|
|
ImageViewSetImage( _noiseView, noiseImage )
|
|
renderedFrames++
|
|
if( renderedFrames == 60 )
|
|
ControlSetStringValue( _fpsLabel, fn StringWithFormat( @"Estimated FPS: %ld", renderedFrames ) )
|
|
renderedFrames = 0
|
|
end if
|
|
timerend
|
|
end fn
|
|
|
|
void local fn DoDialog( ev as long, tag as long, wnd as long )
|
|
select ( ev )
|
|
case _windowWillClose : end
|
|
end select
|
|
end fn
|
|
|
|
|
|
randomize
|
|
|
|
on dialog fn DoDialog
|
|
|
|
fn BuildWindow
|
|
fn BuildNoiseView
|
|
|
|
HandleEvents
|