Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: sky/sdk/lib/framework/app.dart

Issue 1177563002: SkyView should handle screen rotation (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Fixed Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/engine/core/view/View.idl ('k') | sky/sdk/lib/framework/rendering/box.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:sky' as sky; 5 import 'dart:sky' as sky;
6 import 'rendering/box.dart'; 6 import 'rendering/box.dart';
7 import 'rendering/object.dart'; 7 import 'rendering/object.dart';
8 import 'scheduler.dart' as scheduler; 8 import 'scheduler.dart' as scheduler;
9 9
10 class PointerState { 10 class PointerState {
11 HitTestResult result; 11 HitTestResult result;
12 Point lastPosition; 12 Point lastPosition;
13 13
14 PointerState({ this.result, this.lastPosition }); 14 PointerState({ this.result, this.lastPosition });
15 } 15 }
16 16
17 class AppView { 17 class AppView {
18 18
19 AppView(RenderBox root) { 19 AppView(RenderBox root) {
20 sky.view.setEventCallback(_handleEvent); 20 sky.view.setEventCallback(_handleEvent);
21 sky.view.setMetricsChangedCallback(_handleMetricsChanged);
21 scheduler.init(); 22 scheduler.init();
22 scheduler.addPersistentFrameCallback(_beginFrame); 23 scheduler.addPersistentFrameCallback(_beginFrame);
23 24
24 _renderView = new RenderView(child: root); 25 _renderView = new RenderView(child: root);
25 _renderView.attach(); 26 _renderView.attach();
26 _renderView.layout(new ViewConstraints(width: sky.view.width, 27 _renderView.rootConstraints = _viewConstraints;
27 height: sky.view.height)); 28 _renderView.layout(_renderView.rootConstraints);
28
29 scheduler.ensureVisualUpdate();
30 } 29 }
31 30
32 RenderView _renderView; 31 RenderView _renderView;
33 32
33 ViewConstraints get _viewConstraints =>
34 new ViewConstraints(width: sky.view.width, height: sky.view.height);
35
34 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>(); 36 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>();
35 37
36 Function onFrame; 38 Function onFrame;
37 39
38 RenderBox get root => _renderView.child; 40 RenderBox get root => _renderView.child;
39 void set root(RenderBox value) { 41 void set root(RenderBox value) {
40 _renderView.child = value; 42 _renderView.child = value;
41 } 43 }
42 void _beginFrame(double timeStamp) { 44 void _beginFrame(double timeStamp) {
43 if (onFrame != null) 45 if (onFrame != null)
44 onFrame(); 46 onFrame();
45 RenderObject.flushLayout(); 47 RenderObject.flushLayout();
46 _renderView.paintFrame(); 48 _renderView.paintFrame();
47 } 49 }
48 50
49 void _handleEvent(sky.Event event) { 51 void _handleEvent(sky.Event event) {
50 if (event is sky.PointerEvent) { 52 if (event is sky.PointerEvent) {
51 _handlePointerEvent(event); 53 _handlePointerEvent(event);
52 } else if (event is sky.GestureEvent) { 54 } else if (event is sky.GestureEvent) {
53 HitTestResult result = new HitTestResult(); 55 HitTestResult result = new HitTestResult();
54 _renderView.hitTest(result, position: new Point(event.x, event.y)); 56 _renderView.hitTest(result, position: new Point(event.x, event.y));
55 dispatchEvent(event, result); 57 dispatchEvent(event, result);
56 } 58 }
57 } 59 }
58 60
61 void _handleMetricsChanged() {
62 _renderView.rootConstraints = _viewConstraints;
63 }
64
59 PointerState _createStateForPointer(sky.PointerEvent event, Point position) { 65 PointerState _createStateForPointer(sky.PointerEvent event, Point position) {
60 HitTestResult result = new HitTestResult(); 66 HitTestResult result = new HitTestResult();
61 _renderView.hitTest(result, position: position); 67 _renderView.hitTest(result, position: position);
62 PointerState state = new PointerState(result: result, lastPosition: position ); 68 PointerState state = new PointerState(result: result, lastPosition: position );
63 _stateForPointer[event.pointer] = state; 69 _stateForPointer[event.pointer] = state;
64 return state; 70 return state;
65 } 71 }
66 72
67 void _handlePointerEvent(sky.PointerEvent event) { 73 void _handlePointerEvent(sky.PointerEvent event) {
68 Point position = new Point(event.x, event.y); 74 Point position = new Point(event.x, event.y);
(...skipping 28 matching lines...) Expand all
97 node.handleEvent(event); 103 node.handleEvent(event);
98 } 104 }
99 105
100 String toString() => 'Render Tree:\n${_renderView}'; 106 String toString() => 'Render Tree:\n${_renderView}';
101 107
102 void debugDumpRenderTree() { 108 void debugDumpRenderTree() {
103 toString().split('\n').forEach(print); 109 toString().split('\n').forEach(print);
104 } 110 }
105 111
106 } 112 }
OLDNEW
« no previous file with comments | « sky/engine/core/view/View.idl ('k') | sky/sdk/lib/framework/rendering/box.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698