diff --git a/sky/sdk/example/game/test_drawatlas.dart b/sky/sdk/example/game/test_drawatlas.dart new file mode 100644 index 0000000000000..f98ee561e9cb1 --- /dev/null +++ b/sky/sdk/example/game/test_drawatlas.dart @@ -0,0 +1,84 @@ +import 'lib/sprites.dart'; + +import 'dart:sky'; + +import 'package:sky/mojo/asset_bundle.dart'; +import 'package:sky/rendering/object.dart'; +import 'package:sky/theme/colors.dart' as colors; +import 'package:sky/widgets/basic.dart'; +import 'package:sky/widgets/task_description.dart'; +import 'package:sky/widgets/theme.dart'; + +AssetBundle _initBundle() { + if (rootBundle != null) + return rootBundle; + return new NetworkAssetBundle(Uri.base); +} + +final AssetBundle _bundle = _initBundle(); + +ImageMap _images; +SpriteSheet _spriteSheet; +TestDrawAtlasApp _app; + +main() async { + _images = new ImageMap(_bundle); + + await _images.load([ + 'assets/sprites.png' + ]); + + String json = await _bundle.loadString('assets/sprites.json'); + _spriteSheet = new SpriteSheet(_images['assets/sprites.png'], json); + + _app = new TestDrawAtlasApp(); + runApp(_app); +} + +class TestDrawAtlasApp extends App { + + Widget build() { + ThemeData theme = new ThemeData( + brightness: ThemeBrightness.light, + primarySwatch: colors.Purple + ); + + return new Theme( + data: theme, + child: new TaskDescription( + label: 'Test drawAtlas', + child: new SpriteWidget( + new TestDrawAtlas(), + SpriteBoxTransformMode.fixedWidth + ) + ) + ); + } +} + +class TestDrawAtlas extends NodeWithSize { + TestDrawAtlas() : super(new Size(1024.0, 1024.0)) { + } + + void paint(PaintingCanvas canvas) { + List transforms = [ + new RSTransform(1.0, 0.0, 100.0, 100.0) + ]; + List rects = [ + _spriteSheet["ship.png"].frame + ]; + List colors = [ + new Color(0xffffffff) + ]; + + canvas.drawAtlas( + _spriteSheet.image, + transforms, + rects, + colors, + TransferMode.src, + null, + new Paint()..setFilterQuality(FilterQuality.low)..isAntiAlias=false + ); + } +}