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

Side by Side Diff: sky/sdk/lib/rendering/sky_binding.dart

Issue 1187393002: Cleanup of SkyBinding, and resultant yak shaving. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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/sdk/lib/rendering/object.dart ('k') | sky/sdk/lib/widgets/basic.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 6
7 import '../app/scheduler.dart' as scheduler; 7 import '../base/scheduler.dart' as scheduler;
8 import '../base/hit_test.dart';
8 import 'box.dart'; 9 import 'box.dart';
9 import 'object.dart'; 10 import 'object.dart';
10 11
11 class PointerState { 12 class PointerState {
13 PointerState({ this.result, this.lastPosition });
12 HitTestResult result; 14 HitTestResult result;
13 Point lastPosition; 15 Point lastPosition;
14
15 PointerState({ this.result, this.lastPosition });
16 } 16 }
17 17
18 typedef void EventListener(sky.Event event); 18 typedef void EventListener(sky.Event event);
19 19
20 class SkyBinding { 20 class SkyBinding {
21 21
22 SkyBinding({ RenderBox root: null, RenderView renderViewOverride }) { 22 SkyBinding({ RenderBox root: null, RenderView renderViewOverride }) {
23 assert(_app == null); 23 assert(_instance == null);
24 _app = this; 24 _instance = this;
25 25
26 sky.view.setEventCallback(_handleEvent); 26 sky.view.setEventCallback(_handleEvent);
27
27 sky.view.setMetricsChangedCallback(_handleMetricsChanged); 28 sky.view.setMetricsChangedCallback(_handleMetricsChanged);
28 scheduler.init(); 29 scheduler.init();
29 scheduler.addPersistentFrameCallback(_beginFrame);
30
31 if (renderViewOverride == null) { 30 if (renderViewOverride == null) {
32 _renderView = new RenderView(child: root); 31 _renderView = new RenderView(child: root);
33 _renderView.attach(); 32 _renderView.attach();
34 _renderView.rootConstraints = _viewConstraints; 33 _renderView.rootConstraints = _createConstraints();
35 _renderView.scheduleInitialLayout(); 34 _renderView.scheduleInitialLayout();
36 } else { 35 } else {
37 _renderView = renderViewOverride; 36 _renderView = renderViewOverride;
38 } 37 }
39 assert(_renderView != null); 38 assert(_renderView != null);
39 scheduler.addPersistentFrameCallback(_beginFrame);
40 40
41 assert(_app == this); 41 assert(_instance == this);
42 } 42 }
43 43
44 static SkyBinding _app; // used to enforce that we're a singleton 44 static SkyBinding _instance; // used to enforce that we're a singleton
45 static SkyBinding get instance => _instance;
45 46
46 RenderView _renderView; 47 RenderView _renderView;
47 RenderView get renderView => _renderView; 48 RenderView get renderView => _renderView;
48 49
49 ViewConstraints get _viewConstraints => 50 ViewConstraints _createConstraints() {
50 new ViewConstraints(width: sky.view.width, height: sky.view.height); 51 return new ViewConstraints(width: sky.view.width, height: sky.view.height);
51 52 }
52 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>(); 53 void _handleMetricsChanged() {
54 _renderView.rootConstraints = _createConstraints();
55 }
53 56
54 Function onFrame; 57 Function onFrame;
55
56 final List<EventListener> _eventListeners = new List<EventListener>();
57 void addEventListener(EventListener e) => _eventListeners.add(e);
58 bool removeEventListener(EventListener e) => _eventListeners.remove(e);
59
60 RenderBox get root => _renderView.child; 58 RenderBox get root => _renderView.child;
61 void set root(RenderBox value) { 59 void set root(RenderBox value) {
62 _renderView.child = value; 60 _renderView.child = value;
63 } 61 }
64 void _beginFrame(double timeStamp) { 62 void _beginFrame(double timeStamp) {
65 if (onFrame != null) 63 if (onFrame != null)
66 onFrame(); 64 onFrame();
67 RenderObject.flushLayout(); 65 RenderObject.flushLayout();
68 _renderView.paintFrame(); 66 _renderView.paintFrame();
69 } 67 }
70 68
69 final List<EventListener> _eventListeners = new List<EventListener>();
70 void addEventListener(EventListener e) => _eventListeners.add(e);
71 bool removeEventListener(EventListener e) => _eventListeners.remove(e);
72
71 void _handleEvent(sky.Event event) { 73 void _handleEvent(sky.Event event) {
72 if (event is sky.PointerEvent) { 74 if (event is sky.PointerEvent) {
73 _handlePointerEvent(event); 75 _handlePointerEvent(event);
74 } else if (event is sky.GestureEvent) { 76 } else if (event is sky.GestureEvent) {
75 HitTestResult result = new HitTestResult(); 77 HitTestResult result = new HitTestResult();
76 _renderView.hitTest(result, position: new Point(event.x, event.y)); 78 _renderView.hitTest(result, position: new Point(event.x, event.y));
77 dispatchEvent(event, result); 79 dispatchEvent(event, result);
78 } else { 80 } else {
79 for (EventListener e in _eventListeners) { 81 for (EventListener e in _eventListeners)
80 e(event); 82 e(event);
81 }
82 } 83 }
83 } 84 }
84 85
85 void _handleMetricsChanged() { 86 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>();
86 _renderView.rootConstraints = _viewConstraints;
87 }
88 87
89 PointerState _createStateForPointer(sky.PointerEvent event, Point position) { 88 PointerState _createStateForPointer(sky.PointerEvent event, Point position) {
90 HitTestResult result = new HitTestResult(); 89 HitTestResult result = new HitTestResult();
91 _renderView.hitTest(result, position: position); 90 _renderView.hitTest(result, position: position);
92 PointerState state = new PointerState(result: result, lastPosition: position ); 91 PointerState state = new PointerState(result: result, lastPosition: position );
93 _stateForPointer[event.pointer] = state; 92 _stateForPointer[event.pointer] = state;
94 return state; 93 return state;
95 } 94 }
96 95
97 void _handlePointerEvent(sky.PointerEvent event) { 96 void _handlePointerEvent(sky.PointerEvent event) {
(...skipping 29 matching lines...) Expand all
127 entry.target.handleEvent(event, entry); 126 entry.target.handleEvent(event, entry);
128 } 127 }
129 128
130 String toString() => 'Render Tree:\n${_renderView}'; 129 String toString() => 'Render Tree:\n${_renderView}';
131 130
132 void debugDumpRenderTree() { 131 void debugDumpRenderTree() {
133 toString().split('\n').forEach(print); 132 toString().split('\n').forEach(print);
134 } 133 }
135 134
136 } 135 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/rendering/object.dart ('k') | sky/sdk/lib/widgets/basic.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698