RosettaCodeData/Task/Death-Star/FutureBasic/death-star-1.basic

87 lines
3.3 KiB
Plaintext

_window = 1
begin enum 1
_circularView
_OvalView
end enum
void local fn BuildWindow
CGRect r = fn CGRectMake( 0, 0, 400, 400 )
window _window, @"Rosetta Code Death Star", r, NSWindowStyleMaskTitled + NSWindowStyleMaskClosable + NSWindowStyleMaskMiniaturizable
WindowSetBackgroundColor( _window, fn ColorBlack )
r = fn CGRectMake( 20, 20, 360, 360 )
subclass view _circularView, r, _window
r = fn CGRectMake( 50, 170, 200, 180 )
subclass view _OvalView,r, _circularView
end fn
local fn OvalView( tag as NSInteger )
CGRect r = fn ViewBounds( tag )
ViewSetWantsLayer( tag, YES )
CFArrayRef cols = @[fn ColorWithRGB(0.125,0.125,0.125,1),fn ColorWithRGB(0.425,0.425,0.4425,1),fn ColorWithRGB(0.725,0.725,0.725,1),fn ColorWithRGB(0.925,0.925,0.925,1),fn ColorWhite,fn ColorWhite ]
CALayerRef layer = fn CALayerInit
ViewSetLayer( tag, layer )
CALayerSetCornerRadius( layer, r.size.height / 2.0 )
CALayerSetMasksToBounds( layer, YES )
CALayerSetBorderWidth( layer, 0.25 )
CALayerSetBorderColor( layer, fn ColorBlue )
CAGradientLayerRef gradLayer = fn CAGradientLayerInit
CAGradientLayerSetColors( gradLayer, cols )
CALayerSetCornerRadius( gradLayer, r.size.Height / 2.0 )
CAGradientLayerSetStartPoint( gradLayer, fn CGPointMake(1,0) )
CAGradientLayerSetEndPoint( gradLayer, fn CGPointMake(0,1) )
CALayerSetShadowOffset( gradLayer, fn CGSizeMake( 10, -10 ) )
CALayerSetShadowRadius( gradLayer, 3.0 )
CALayerSetShadowOpacity( gradLayer, 0.4 )
CALayerSetFrame( gradLayer, fn CGRectMake(0,0,200,200) )
CALayerAddSublayer( layer, gradLayer )
end fn
local fn CircularView( tag as NSinteger )
CGRect r = fn ViewBounds( tag )
ViewSetWantsLayer( tag, YES )
CFArrayRef cols = @[fn ColorWithRGB(0.125,0.125,0.125,1),fn ColorWithRGB(0.425,0.425,0.4425,1),fn ColorWithRGB(0.725,0.725,0.725,1),fn ColorWithRGB(0.925,0.925,0.925,1),fn ColorWhite,fn ColorWhite ]
CALayerRef layer = fn CALayerInit
ViewSetLayer( tag, layer )
CALayerSetCornerRadius( layer, r.size.width / 2.0 )
CALayerSetMasksToBounds( layer, YES )
CALayerSetBorderWidth( layer, 0.25 )
CALayerSetBorderColor( layer, fn ColorBlack )
CAGradientLayerRef gradLayer = fn CAGradientLayerInit
CALayerSetCornerRadius( gradLayer, r.size.width / 2.0 )
CAGradientLayerSetColors( gradLayer, cols )
CAGradientLayerSetStartPoint( gradLayer, fn CGPointMake( 0,0.2 ) )
CAGradientLayerSetEndPoint( gradLayer, fn CGPointMake( 1,1 ) )
CALayerSetShadowOffset( gradLayer, fn CGSizeMake( 10, -10 ) )
CALayerSetShadowRadius( gradLayer, 3.0 )
CALayerSetShadowOpacity( gradLayer, 0.4 )
CALayerSetFrame( gradLayer, fn CGRectMake(0,0,360,360) )
CALayerAddSublayer( layer, gradLayer )
end fn
void local fn DoDialog( ev as long, tag as long, wnd as long )
select ( ev )
case _viewDrawRect
select ( tag )
case _circularView : fn CircularView( tag )
case _OvalView : fn OvalView( tag)
end select
case _windowWillClose : end
end select
end fn
on dialog fn DoDialog
fn BuildWindow
HandleEvents