Index: sky/examples/game/lib/sprite_box.dart |
diff --git a/sky/examples/game/lib/sprite_box.dart b/sky/examples/game/lib/sprite_box.dart |
index 4cc0834ce37ccc39e79adedd2cf035c07d7f0f6b..5658dbd5b34fe0050f9b85057e86bb0bf264e836 100644 |
--- a/sky/examples/game/lib/sprite_box.dart |
+++ b/sky/examples/game/lib/sprite_box.dart |
@@ -19,8 +19,8 @@ class SpriteBox extends RenderBox { |
int _numFrames = 0; |
SpriteBoxTransformMode transformMode; |
- double systemWidth; |
- double systemHeight; |
+ double _systemWidth; |
+ double _systemHeight; |
SpriteBox(TransformNode rootNode, [SpriteBoxTransformMode mode = SpriteBoxTransformMode.nativePoints, double width=1024.0, double height=1024.0]) { |
// Setup root node |
@@ -28,12 +28,15 @@ class SpriteBox extends RenderBox { |
// Setup transform mode |
transformMode = mode; |
- systemWidth = width; |
- systemHeight = height; |
+ _systemWidth = width; |
+ _systemHeight = height; |
_scheduleTick(); |
} |
+ double get systemWidth => _systemWidth; |
+ double get systemHeight => _systemHeight; |
+ |
void performLayout() { |
size = constraints.constrain(new Size.infinite()); |
} |
@@ -55,21 +58,44 @@ class SpriteBox extends RenderBox { |
switch(transformMode) { |
case SpriteBoxTransformMode.stretch: |
- scaleX = size.width/systemWidth; |
- scaleY = size.height/systemHeight; |
+ scaleX = size.width/_systemWidth; |
+ scaleY = size.height/_systemHeight; |
break; |
case SpriteBoxTransformMode.letterbox: |
- scaleX = size.width/systemWidth; |
- scaleY = size.height/systemHeight; |
+ scaleX = size.width/_systemWidth; |
+ scaleY = size.height/_systemHeight; |
if (scaleX > scaleY) { |
scaleY = scaleX; |
- offsetY = (size.height - scaleY * systemHeight)/2.0; |
+ offsetY = (size.height - scaleY * _systemHeight)/2.0; |
} |
else { |
scaleX = scaleY; |
- offsetX = (size.width - scaleX * systemWidth)/2.0; |
+ offsetX = (size.width - scaleX * _systemWidth)/2.0; |
} |
break; |
+ case SpriteBoxTransformMode.scaleToFit: |
+ scaleX = size.width/_systemWidth; |
+ scaleY = size.height/_systemHeight; |
+ if (scaleX < scaleY) { |
+ scaleY = scaleX; |
+ offsetY = (size.height - scaleY * _systemHeight)/2.0; |
+ } |
+ else { |
+ scaleX = scaleY; |
+ offsetX = (size.width - scaleX * _systemWidth)/2.0; |
+ } |
+ break; |
+ case SpriteBoxTransformMode.fixedWidth: |
+ scaleX = size.width/_systemWidth; |
+ scaleY = scaleX; |
+ _systemHeight = size.height/scaleX; |
+ print("systemHeight: $_systemHeight"); |
+ break; |
+ case SpriteBoxTransformMode.fixedHeight: |
+ scaleY = size.height/_systemHeight; |
+ scaleX = scaleY; |
+ _systemWidth = size.width/scaleY; |
+ break; |
case SpriteBoxTransformMode.nativePoints: |
break; |
default: |