_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