mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Merge branch 'master' of github.com:domokit/sky_engine
Conflicts: sky/sdk/example/game/lib/particle_system.dart
This commit is contained in:
commit
f7007aace2
@ -37,10 +37,10 @@ target_os = ["android"]
|
||||
Building the code
|
||||
-----------------
|
||||
|
||||
Currently we support building for an Android target and for a headless Linux
|
||||
target.
|
||||
Currently we support building on Linux only, for an Android target and for a headless Linux
|
||||
target. Building on MacOS for Android, iOS, and a head-less MacOS target is coming soon.
|
||||
|
||||
### Android
|
||||
### Android (cross-compiling from Linux)
|
||||
|
||||
* (Only the first time) `sudo ./build/install-build-deps-android.sh`
|
||||
* (Only the first time) `./tools/android/download_android_tools.py`
|
||||
@ -48,7 +48,7 @@ target.
|
||||
* `ninja -C out/android_Debug`
|
||||
* `./sky/tools/shelldb start out/android_Debug/ sky/sdk/example/hello_world/lib/main.dart`
|
||||
|
||||
### Linux
|
||||
### Linux (on Linux)
|
||||
|
||||
* (Only the first time) `sudo ./build/install-build-deps.sh`
|
||||
* `./sky/tools/gn`
|
||||
|
||||
4
DEPS
4
DEPS
@ -19,7 +19,7 @@
|
||||
|
||||
vars = {
|
||||
'chromium_git': 'https://chromium.googlesource.com',
|
||||
'skia_revision': '2ced78866fcadd98895777c8dffe92e229775181',
|
||||
'skia_revision': '29ccdf86ab0a1649fd775c9431891bacb1391e99',
|
||||
'dart_revision': 'e5e3d161e70d862608e6597facdf5ac8ae9ab2c3',
|
||||
'dart_observatory_packages_revision': 'cdc4b3d4c15b9c0c8e7702dff127b440afbb7485',
|
||||
|
||||
@ -269,7 +269,7 @@ hooks = [
|
||||
'pattern': '.',
|
||||
'action': [
|
||||
'python',
|
||||
'src/sky/sdk/lib/download_material_design_icons',
|
||||
'src/sky/tools/download_material_design_icons',
|
||||
],
|
||||
},
|
||||
# Pull binutils for linux, enabled debug fission for faster linking /
|
||||
|
||||
@ -57,6 +57,10 @@ def InstallLaunchAndWait(args, wait):
|
||||
launch_args += [
|
||||
'booted',
|
||||
identifier,
|
||||
'-target',
|
||||
args.target,
|
||||
'-server',
|
||||
args.server
|
||||
]
|
||||
|
||||
return subprocess.check_output( SIMCTL_PATH + launch_args ).strip()
|
||||
@ -83,10 +87,18 @@ def Debug(args):
|
||||
def Main():
|
||||
parser = argparse.ArgumentParser(description='A script that launches an'
|
||||
' application in the simulator and attaches'
|
||||
' the debugger to the same')
|
||||
' the debugger to it.')
|
||||
|
||||
parser.add_argument('-p', dest='path', required=True,
|
||||
help='Path the the simulator application')
|
||||
help='Path to the simulator application.')
|
||||
|
||||
parser.add_argument('-t', dest='target', required=False,
|
||||
default='sky/sdk/example/demo_launcher/lib/main.dart',
|
||||
help='Sky server-relative path to the Sky app to run.')
|
||||
|
||||
parser.add_argument('-s', dest='server', required=False,
|
||||
default='localhost:8080',
|
||||
help='Sky server address.')
|
||||
|
||||
subparsers = parser.add_subparsers()
|
||||
|
||||
|
||||
@ -191,7 +191,7 @@ void AnalysisCanvas::onDrawBitmapRect(const SkBitmap&,
|
||||
const SkRect* src,
|
||||
const SkRect& dst,
|
||||
const SkPaint* paint,
|
||||
DrawBitmapRectFlags flags) {
|
||||
SrcRectConstraint flags) {
|
||||
// Call drawRect to determine transparency,
|
||||
// but reset solid color to false.
|
||||
SkPaint tmpPaint;
|
||||
|
||||
@ -48,7 +48,7 @@ class SK_API AnalysisCanvas : public SkCanvas,
|
||||
const SkRect* src,
|
||||
const SkRect& dst,
|
||||
const SkPaint* paint,
|
||||
DrawBitmapRectFlags flags) override;
|
||||
SrcRectConstraint flags) override;
|
||||
void onDrawBitmapNine(const SkBitmap& bitmap,
|
||||
const SkIRect& center,
|
||||
const SkRect& dst,
|
||||
|
||||
@ -702,7 +702,7 @@ void BenchmarkingCanvas::onDrawBitmapRect(const SkBitmap& bitmap,
|
||||
const SkRect* src,
|
||||
const SkRect& dst,
|
||||
const SkPaint* paint,
|
||||
DrawBitmapRectFlags flags) {
|
||||
SrcRectConstraint flags) {
|
||||
AutoOp op(this, "DrawBitmapRect", paint);
|
||||
op.addParam("bitmap", AsValue(bitmap));
|
||||
if (src)
|
||||
@ -726,7 +726,8 @@ void BenchmarkingCanvas::onDrawImage(const SkImage* image,
|
||||
}
|
||||
|
||||
void BenchmarkingCanvas::onDrawImageRect(const SkImage* image, const SkRect* src,
|
||||
const SkRect& dst, const SkPaint* paint) {
|
||||
const SkRect& dst, const SkPaint* paint,
|
||||
SrcRectConstraint flags) {
|
||||
DCHECK(image);
|
||||
AutoOp op(this, "DrawImageRect", paint);
|
||||
op.addParam("image", AsValue(*image));
|
||||
@ -734,7 +735,7 @@ void BenchmarkingCanvas::onDrawImageRect(const SkImage* image, const SkRect* src
|
||||
op.addParam("src", AsValue(*src));
|
||||
op.addParam("dst", AsValue(dst));
|
||||
|
||||
INHERITED::onDrawImageRect(image, src, dst, op.paint());
|
||||
INHERITED::onDrawImageRect(image, src, dst, op.paint(), flags);
|
||||
}
|
||||
|
||||
void BenchmarkingCanvas::onDrawBitmapNine(const SkBitmap& bitmap,
|
||||
|
||||
@ -60,10 +60,10 @@ protected:
|
||||
|
||||
void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override;
|
||||
void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst,
|
||||
const SkPaint*, DrawBitmapRectFlags flags) override;
|
||||
const SkPaint*, SrcRectConstraint flags) override;
|
||||
void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override;
|
||||
void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst,
|
||||
const SkPaint*) override;
|
||||
const SkPaint*, SrcRectConstraint flags) override;
|
||||
void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
|
||||
const SkPaint*) override;
|
||||
void onDrawSprite(const SkBitmap&, int left, int top, const SkPaint*) override;
|
||||
|
||||
@ -146,7 +146,7 @@ class GatherPixelRefDevice : public SkBitmapDevice {
|
||||
const SkRect* src_or_null,
|
||||
const SkRect& dst,
|
||||
const SkPaint& paint,
|
||||
SkCanvas::DrawBitmapRectFlags flags) override {
|
||||
SkCanvas::SrcRectConstraint flags) override {
|
||||
SkRect bitmap_rect = SkRect::MakeWH(bitmap.width(), bitmap.height());
|
||||
SkMatrix matrix;
|
||||
matrix.setRectToRect(bitmap_rect, dst, SkMatrix::kFill_ScaleToFit);
|
||||
|
||||
@ -23,6 +23,7 @@ group("sky_dev") {
|
||||
testonly = true
|
||||
|
||||
deps = [
|
||||
"//sky/packages",
|
||||
"//sky/sdk",
|
||||
"//sky/sdk/example/demo_launcher",
|
||||
"//sky/shell",
|
||||
|
||||
@ -1,85 +0,0 @@
|
||||
Hacking on Sky
|
||||
==============
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
* Follow the setup & build instructions for [Mojo](https://github.com/domokit/mojo)
|
||||
|
||||
The build directory will be `out/Debug` for Linux debug builds, and
|
||||
`out/Release` for Linux release builds. For Android builds, prefix
|
||||
`android_`, as in, `android_Debug`.
|
||||
|
||||
For Sky on iOS, you can try following these [experimental instructions](https://docs.google.com/document/d/1qm8Vvyz8Mngw6EsSg4FELQ7FOegjBJ5Itg9OBJGN5JM/edit#heading=h.ikz9bdwswdct).
|
||||
|
||||
Running applications
|
||||
--------------------
|
||||
|
||||
To run an application on your device, run:
|
||||
|
||||
* `mojo/devtools/common/mojo_shell --sky [url] --android`
|
||||
|
||||
When the shell is running, `mojo/devtools/common/debugger` allows you to
|
||||
collect traces, symbolize stack crashes and attach gdb if needed. Refer to the
|
||||
[documentation](https://github.com/domokit/mojo#debugging-tracing-profiling)
|
||||
for the details.
|
||||
|
||||
Running tests
|
||||
-------------
|
||||
|
||||
Tests are only supported on Linux currently.
|
||||
|
||||
* ``sky/tools/test_sky --debug``
|
||||
* This runs the tests against ``//out/Debug``. If you want to run against
|
||||
``//out/Release``, omit the ``--debug`` flag.
|
||||
|
||||
Running tests manually
|
||||
----------------------
|
||||
|
||||
Running tests manually lets you more quickly iterate during
|
||||
development; rather than having to compile and rerun all the tests,
|
||||
then trawl through the build output to find the current results, you
|
||||
can just run the test you're working on and reload it over and over,
|
||||
seeing the output right there on your console.
|
||||
|
||||
* ``sky/tools/skygo/linux64/sky_server -v -p 8000 out/Debug out/Debug/gen/dart-pkg/packages``
|
||||
* ``out/Debug/mojo_shell --args-for="mojo:native_viewport_service --use-headless-config --use-osmesa" --args-for"=mojo:sky_viewer --testing" --content-handlers=application/dart,mojo:sky_viewer --url-mappings=mojo:window_manager=mojo:sky_tester,mojo:surfaces_service=mojo:fake_surfaces_service mojo:window_manager``
|
||||
* The ``sky_tester`` should print ``#READY`` when ready
|
||||
* Type the URL you wish to run, for example ``http://127.0.0.1:8000/sky/tests/widgets/dialog.dart``, and press the enter key
|
||||
* The harness should print the results of the test. You can then type another URL.
|
||||
|
||||
Writing tests
|
||||
-------------
|
||||
|
||||
We recommend using the [Dart
|
||||
``test``](https://pub.dartlang.org/packages/test) testing framework.
|
||||
See [``sky/tests/raw/color_bounds.dart``](tests/raw/color_bounds.dart)
|
||||
for an example.
|
||||
|
||||
Debugging Sky
|
||||
-------------
|
||||
|
||||
This document aims to explain how to debug Sky itself.
|
||||
|
||||
### C++
|
||||
|
||||
Launch a debug Sky build on Android as usual:
|
||||
|
||||
```
|
||||
mojo/devtools/common/mojo_shell --sky [url] --android`
|
||||
```
|
||||
|
||||
and use the debugger to attach gdb:
|
||||
```
|
||||
mojo/devtools/common/debugger gdb attach
|
||||
```
|
||||
|
||||
Once gdb has loaded, hit `c` to continue the execution. When your app crashes,
|
||||
it will pause in the debugger. At that point, regular gdb commands will work:
|
||||
`n` to step over the current statement, `s` to step into the current statement,
|
||||
`f` to step out of the current block, `c` to continue until the next breakpoint
|
||||
or exception.
|
||||
|
||||
### Dart
|
||||
|
||||
Use Observatory.
|
||||
@ -1,35 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import shutil
|
||||
|
||||
def remove_empty_dirs(root_dir):
|
||||
for root, dirs, _ in os.walk(root_dir):
|
||||
for name in dirs:
|
||||
fname = os.path.join(root, name)
|
||||
if not os.listdir(fname):
|
||||
os.removedirs(fname)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Clean Sky package for distribution')
|
||||
parser.add_argument('package_dir', type=str)
|
||||
parser.add_argument('--touch', type=str)
|
||||
args = parser.parse_args()
|
||||
|
||||
remove_empty_dirs(args.package_dir)
|
||||
|
||||
material_design_icons = os.path.join(args.package_dir, 'lib/assets/material-design-icons')
|
||||
if os.path.exists(material_design_icons):
|
||||
shutil.rmtree(material_design_icons)
|
||||
|
||||
with open(args.touch, 'w') as f:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -53,7 +53,7 @@ template("skyx") {
|
||||
}
|
||||
|
||||
action("gen_${bundle_prefix}_bundle") {
|
||||
asset_base = "$package_root/sky/assets/material-design-icons"
|
||||
asset_base = "//sky/packages/material_design_icons/lib/icons"
|
||||
|
||||
sources = [
|
||||
"//sky/tools/skyx/bin/skyx.dart",
|
||||
|
||||
47
sky/dist/BUILD.gn
vendored
47
sky/dist/BUILD.gn
vendored
@ -50,60 +50,46 @@ copy("sky_shell") {
|
||||
if (is_android) {
|
||||
import("//build/config/android/rules.gni")
|
||||
|
||||
sky_sdk_dir = "$root_dist_dir/sdk/sky"
|
||||
sky_engine_package_dir = "$root_dist_dir/packages/sky_engine"
|
||||
|
||||
copy_ex("create_sky_sdk") {
|
||||
copy_ex("copy_sky_engine_package") {
|
||||
clear_dir = true
|
||||
dest = "$root_dist_dir/sdk"
|
||||
dest = "$root_dist_dir/packages"
|
||||
sources = [
|
||||
"$root_gen_dir/dart-pkg/sky",
|
||||
"$root_gen_dir/dart-pkg/sky_engine",
|
||||
]
|
||||
deps = [
|
||||
"//sky/sdk:sky",
|
||||
"//sky/packages/sky_engine",
|
||||
]
|
||||
}
|
||||
|
||||
copy("copy_sky_sdk_license") {
|
||||
copy("copy_sky_engine_license") {
|
||||
sources = [
|
||||
"//AUTHORS",
|
||||
"//LICENSE",
|
||||
]
|
||||
outputs = [ "$sky_sdk_dir/{{source_file_part}}" ]
|
||||
outputs = [ "$sky_engine_package_dir/{{source_file_part}}" ]
|
||||
deps = [
|
||||
":create_sky_sdk"
|
||||
":copy_sky_engine_package"
|
||||
]
|
||||
}
|
||||
|
||||
copy("copy_sky_sdk_apks") {
|
||||
copy("copy_sky_engine_apks") {
|
||||
sources = [
|
||||
"$root_dist_dir/shell/SkyShell.apk",
|
||||
]
|
||||
outputs = [ "$sky_sdk_dir/apks/{{source_file_part}}" ]
|
||||
outputs = [ "$sky_engine_package_dir/apks/{{source_file_part}}" ]
|
||||
deps = [
|
||||
":create_sky_sdk",
|
||||
":copy_sky_engine_package",
|
||||
":sky_shell",
|
||||
]
|
||||
}
|
||||
|
||||
action("sky_sdk") {
|
||||
stamp_file = "$target_gen_dir/sky_sdk_cleaned.stamp"
|
||||
|
||||
script = "//sky/build/clean_sky_package.py"
|
||||
|
||||
inputs = [ "$root_gen_dir/dart-pkg/sky.stamp" ]
|
||||
outputs = [ stamp_file ]
|
||||
|
||||
args = [
|
||||
rebase_path(sky_sdk_dir, root_build_dir),
|
||||
"--touch",
|
||||
rebase_path(stamp_file, root_build_dir),
|
||||
]
|
||||
|
||||
group("sky_engine") {
|
||||
deps = [
|
||||
":copy_sky_sdk_apks",
|
||||
":copy_sky_sdk_license",
|
||||
":create_sky_sdk",
|
||||
"//sky/sdk:sky",
|
||||
":copy_sky_engine_package",
|
||||
":copy_sky_engine_license",
|
||||
":copy_sky_engine_apks",
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -112,11 +98,12 @@ group("dist") {
|
||||
deps = [
|
||||
":sky_viewer",
|
||||
]
|
||||
|
||||
if (!is_ios) {
|
||||
deps += [ ":sky_shell" ]
|
||||
}
|
||||
|
||||
if (is_android) {
|
||||
deps += [ ":sky_sdk" ]
|
||||
deps += [ ":sky_engine" ]
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,6 +77,7 @@ static_library("core") {
|
||||
"//dart/runtime/bin:embedded_dart_io",
|
||||
"//dart/runtime:libdart",
|
||||
"//dart/runtime/vm:libdart_platform",
|
||||
"//mojo/services/navigation/public/interfaces",
|
||||
]
|
||||
|
||||
sources = sky_core_files
|
||||
|
||||
@ -226,7 +226,7 @@ void Canvas::drawImageRect(const CanvasImage* image, Rect& src, Rect& dst, Paint
|
||||
if (!m_canvas)
|
||||
return;
|
||||
ASSERT(image);
|
||||
m_canvas->drawBitmapRectToRect(image->bitmap(), &src.sk_rect, dst.sk_rect, &paint->paint());
|
||||
m_canvas->drawBitmapRect(image->bitmap(), &src.sk_rect, dst.sk_rect, &paint->paint());
|
||||
}
|
||||
|
||||
void Canvas::drawPicture(Picture* picture)
|
||||
|
||||
@ -967,10 +967,10 @@ void GraphicsContext::drawBitmapRect(const SkBitmap& bitmap, const SkRect* src,
|
||||
if (contextDisabled())
|
||||
return;
|
||||
|
||||
SkCanvas::DrawBitmapRectFlags flags =
|
||||
immutableState()->shouldClampToSourceRect() ? SkCanvas::kNone_DrawBitmapRectFlag : SkCanvas::kBleed_DrawBitmapRectFlag;
|
||||
SkCanvas::SrcRectConstraint flags =
|
||||
immutableState()->shouldClampToSourceRect() ? SkCanvas::kStrict_SrcRectConstraint : SkCanvas::kFast_SrcRectConstraint;
|
||||
|
||||
m_canvas->drawBitmapRectToRect(bitmap, src, dst, paint, flags);
|
||||
m_canvas->drawBitmapRect(bitmap, src, dst, paint, flags);
|
||||
|
||||
if (regionTrackingEnabled())
|
||||
m_trackedRegion.didDrawRect(this, dst, *paint, &bitmap);
|
||||
|
||||
@ -556,20 +556,20 @@ SkImageFilter::CropRect FilterEffect::getCropRect(const FloatSize& cropOffset) c
|
||||
if (hasX()) {
|
||||
rect.setX(boundaries.x());
|
||||
flags |= SkImageFilter::CropRect::kHasLeft_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasRight_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasWidth_CropEdge;
|
||||
}
|
||||
if (hasY()) {
|
||||
rect.setY(boundaries.y());
|
||||
flags |= SkImageFilter::CropRect::kHasTop_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasBottom_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasHeight_CropEdge;
|
||||
}
|
||||
if (hasWidth()) {
|
||||
rect.setWidth(boundaries.width());
|
||||
flags |= SkImageFilter::CropRect::kHasRight_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasWidth_CropEdge;
|
||||
}
|
||||
if (hasHeight()) {
|
||||
rect.setHeight(boundaries.height());
|
||||
flags |= SkImageFilter::CropRect::kHasBottom_CropEdge;
|
||||
flags |= SkImageFilter::CropRect::kHasHeight_CropEdge;
|
||||
}
|
||||
rect.scale(filter()->absoluteTransform().a(), filter()->absoluteTransform().d());
|
||||
return SkImageFilter::CropRect(rect, flags);
|
||||
|
||||
13
sky/packages/BUILD.gn
Normal file
13
sky/packages/BUILD.gn
Normal file
@ -0,0 +1,13 @@
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
group("packages") {
|
||||
testonly = true
|
||||
|
||||
deps = [
|
||||
"//sky/packages/sky_engine",
|
||||
"//sky/packages/sky_services",
|
||||
"//sky/packages/material_design_icons",
|
||||
]
|
||||
}
|
||||
23
sky/packages/material_design_icons/BUILD.gn
Normal file
23
sky/packages/material_design_icons/BUILD.gn
Normal file
@ -0,0 +1,23 @@
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
action("material_design_icons") {
|
||||
script = "//sky/build/symlink.py"
|
||||
|
||||
stamp_file = "$target_gen_dir/symlink.stamp"
|
||||
|
||||
sources = [ "lib/.version.sha1" ]
|
||||
outputs = [ stamp_file ]
|
||||
|
||||
args = [
|
||||
rebase_path("lib", root_build_dir),
|
||||
rebase_path("$root_gen_dir/dart-pkg/packages/material_design_icons", root_build_dir),
|
||||
"--touch",
|
||||
rebase_path(stamp_file, root_build_dir)
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//third_party/dart-pkg",
|
||||
]
|
||||
}
|
||||
393
sky/packages/material_design_icons/LICENSE
Normal file
393
sky/packages/material_design_icons/LICENSE
Normal file
@ -0,0 +1,393 @@
|
||||
Attribution 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More_considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are
|
||||
granted the Licensed Rights in consideration of Your acceptance of
|
||||
these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the
|
||||
Licensed Material available under these terms and conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
d. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
f. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
g. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
i. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
j. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
k. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the "Licensor." Except for the limited purpose of indicating
|
||||
that material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
14
sky/packages/material_design_icons/README.md
Normal file
14
sky/packages/material_design_icons/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
Material Design Icons
|
||||
=====================
|
||||
|
||||
A set of icons designed under the
|
||||
[material design guidelines](http://www.google.com/design/spec).
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
We have made these icons available for you to incorporate them into your
|
||||
products under the Creative Common Attribution 4.0 International License
|
||||
(CC-BY 4.0). Feel free to remix and re-share these icons and documentation in
|
||||
your products. We'd love attribution in your app's about screen, but it's not
|
||||
required. The only thing we ask is that you not re-sell the icons themselves.
|
||||
1
sky/packages/material_design_icons/lib/.gitignore
vendored
Normal file
1
sky/packages/material_design_icons/lib/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
icons
|
||||
5
sky/packages/material_design_icons/pubspec.yaml
Normal file
5
sky/packages/material_design_icons/pubspec.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
name: material_design_icons
|
||||
version: 0.0.1
|
||||
author: Chromium Authors <sky-dev@googlegroups.com>
|
||||
description: Material Design Icons
|
||||
homepage: https://github.com/google/material-design-icons
|
||||
27
sky/packages/sky_engine/BUILD.gn
Normal file
27
sky/packages/sky_engine/BUILD.gn
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//mojo/public/dart/rules.gni")
|
||||
|
||||
dart_pkg("sky_engine") {
|
||||
sources = [
|
||||
"README.md",
|
||||
"pubspec.yaml",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//sky/engine/bindings",
|
||||
]
|
||||
|
||||
sdk_ext_directory = "$root_gen_dir/sky/bindings"
|
||||
sdk_ext_files = [
|
||||
"//sky/engine/bindings/sky_internals.dart",
|
||||
"//sky/engine/bindings/builtin_natives.dart",
|
||||
]
|
||||
sdk_ext_mappings = [
|
||||
"dart:sky,dart_sky.dart",
|
||||
"dart:sky.internals,sky_internals.dart",
|
||||
"dart:sky_builtin_natives,builtin_natives.dart",
|
||||
]
|
||||
}
|
||||
7
sky/packages/sky_engine/README.md
Normal file
7
sky/packages/sky_engine/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
Sky Engine
|
||||
==========
|
||||
|
||||
This packages describes the dart:sky library, which is the interface between
|
||||
Dart and the Sky Engine. This package also contains a number of Sky shell
|
||||
binaries that let you run code that uses the dart:sky library on various
|
||||
platforms.
|
||||
5
sky/packages/sky_engine/pubspec.yaml
Normal file
5
sky/packages/sky_engine/pubspec.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
name: sky_engine
|
||||
version: 0.0.1
|
||||
author: Chromium Authors <sky-dev@googlegroups.com>
|
||||
description: Dart SDK extensions for dart:sky
|
||||
homepage: https://github.com/domokit/sky_engine
|
||||
20
sky/packages/sky_services/BUILD.gn
Normal file
20
sky/packages/sky_services/BUILD.gn
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//mojo/public/dart/rules.gni")
|
||||
|
||||
dart_pkg("sky_services") {
|
||||
sources = [
|
||||
"README.md",
|
||||
"pubspec.yaml",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//mojo/services/asset_bundle/public/interfaces",
|
||||
"//mojo/services/keyboard/public/interfaces",
|
||||
"//sky/services/activity:interfaces",
|
||||
"//sky/services/media:interfaces",
|
||||
"//sky/services/testing:interfaces",
|
||||
]
|
||||
}
|
||||
6
sky/packages/sky_services/README.md
Normal file
6
sky/packages/sky_services/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
Sky Services
|
||||
============
|
||||
|
||||
This packages contains `mojom` interfaces to services associated with Sky. Most
|
||||
developers should depend on the [Sky package](https://pub.dartlang.org/packages/sky)
|
||||
instead of using this package directly.
|
||||
8
sky/packages/sky_services/pubspec.yaml
Normal file
8
sky/packages/sky_services/pubspec.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
name: sky_services
|
||||
version: 0.0.1
|
||||
author: Chromium Authors <sky-dev@googlegroups.com>
|
||||
description: Mojom interfaces associated with Sky
|
||||
homepage: https://github.com/domokit/sky_engine/tree/master/sky/packages/sky_services
|
||||
dependencies:
|
||||
mojo: ^0.0.17
|
||||
mojom: ^0.0.17
|
||||
152
sky/sdk/BUILD.gn
152
sky/sdk/BUILD.gn
@ -2,157 +2,33 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//mojo/public/dart/rules.gni")
|
||||
action("sky") {
|
||||
script = "//sky/build/symlink.py"
|
||||
|
||||
dart_pkg("sky") {
|
||||
sources = [
|
||||
"CHANGELOG.md",
|
||||
"bin/init.dart",
|
||||
"lib/animation/animated_simulation.dart",
|
||||
"lib/animation/animated_value.dart",
|
||||
"lib/animation/animation_performance.dart",
|
||||
"lib/animation/curves.dart",
|
||||
"lib/animation/forces.dart",
|
||||
"lib/animation/scroll_behavior.dart",
|
||||
"lib/animation/timeline.dart",
|
||||
"lib/assets/.gitignore",
|
||||
"lib/assets/material-design-icons.sha1",
|
||||
"lib/base/debug.dart",
|
||||
"lib/base/hit_test.dart",
|
||||
"lib/base/lerp.dart",
|
||||
"lib/base/node.dart",
|
||||
"lib/base/scheduler.dart",
|
||||
"lib/download_material_design_icons",
|
||||
"lib/editing/editable_string.dart",
|
||||
"lib/editing/editable_text.dart",
|
||||
"lib/editing/input.dart",
|
||||
"lib/mojo/activity.dart",
|
||||
"lib/mojo/asset_bundle.dart",
|
||||
"lib/mojo/embedder.dart",
|
||||
"lib/mojo/keyboard.dart",
|
||||
"lib/mojo/net/fetch.dart",
|
||||
"lib/mojo/net/image_cache.dart",
|
||||
"lib/mojo/shell.dart",
|
||||
"lib/painting/box_painter.dart",
|
||||
"lib/painting/shadows.dart",
|
||||
"lib/painting/text_style.dart",
|
||||
"lib/rendering/auto_layout.dart",
|
||||
"lib/rendering/block.dart",
|
||||
"lib/rendering/box.dart",
|
||||
"lib/rendering/flex.dart",
|
||||
"lib/rendering/object.dart",
|
||||
"lib/rendering/paragraph.dart",
|
||||
"lib/rendering/sky_binding.dart",
|
||||
"lib/rendering/stack.dart",
|
||||
"lib/sky_tool",
|
||||
"lib/theme/colors.dart",
|
||||
"lib/theme/shadows.dart",
|
||||
"lib/theme/theme_data.dart",
|
||||
"lib/theme/typography.dart",
|
||||
"lib/theme/view_configuration.dart",
|
||||
"lib/widgets/animated_component.dart",
|
||||
"lib/widgets/animated_container.dart",
|
||||
"lib/widgets/basic.dart",
|
||||
"lib/widgets/block_viewport.dart",
|
||||
"lib/widgets/button_base.dart",
|
||||
"lib/widgets/card.dart",
|
||||
"lib/widgets/checkbox.dart",
|
||||
"lib/widgets/default_text_style.dart",
|
||||
"lib/widgets/dialog.dart",
|
||||
"lib/widgets/dismissable.dart",
|
||||
"lib/widgets/drawer.dart",
|
||||
"lib/widgets/drawer_divider.dart",
|
||||
"lib/widgets/drawer_header.dart",
|
||||
"lib/widgets/drawer_item.dart",
|
||||
"lib/widgets/fixed_height_scrollable.dart",
|
||||
"lib/widgets/flat_button.dart",
|
||||
"lib/widgets/floating_action_button.dart",
|
||||
"lib/widgets/focus.dart",
|
||||
"lib/widgets/icon.dart",
|
||||
"lib/widgets/icon_button.dart",
|
||||
"lib/widgets/ink_well.dart",
|
||||
"lib/widgets/material.dart",
|
||||
"lib/widgets/material_button.dart",
|
||||
"lib/widgets/modal_overlay.dart",
|
||||
"lib/widgets/navigator.dart",
|
||||
"lib/widgets/popup_menu.dart",
|
||||
"lib/widgets/popup_menu_item.dart",
|
||||
"lib/widgets/radio.dart",
|
||||
"lib/widgets/raised_button.dart",
|
||||
"lib/widgets/scaffold.dart",
|
||||
"lib/widgets/scrollable.dart",
|
||||
"lib/widgets/scrollable_list.dart",
|
||||
"lib/widgets/scrollable_viewport.dart",
|
||||
"lib/widgets/snack_bar.dart",
|
||||
"lib/widgets/switch.dart",
|
||||
"lib/widgets/tabs.dart",
|
||||
"lib/widgets/task_description.dart",
|
||||
"lib/widgets/theme.dart",
|
||||
"lib/widgets/toggleable.dart",
|
||||
"lib/widgets/tool_bar.dart",
|
||||
"lib/widgets/variable_height_scrollable.dart",
|
||||
"lib/widgets/widget.dart",
|
||||
"pubspec.yaml",
|
||||
stamp_file = "$target_gen_dir/symlink.stamp"
|
||||
|
||||
sources = [ "pubspec.yaml" ]
|
||||
outputs = [ stamp_file ]
|
||||
|
||||
args = [
|
||||
rebase_path("lib", root_build_dir),
|
||||
rebase_path("$root_gen_dir/dart-pkg/packages/sky", root_build_dir),
|
||||
"--touch",
|
||||
rebase_path(stamp_file, root_build_dir)
|
||||
]
|
||||
|
||||
# List of mojom targets that the sky pkg exports
|
||||
deps = [
|
||||
"//mojo/services/asset_bundle/public/interfaces",
|
||||
"//mojo/services/keyboard/public/interfaces",
|
||||
"//sky/services/activity:interfaces",
|
||||
"//sky/services/engine:interfaces",
|
||||
]
|
||||
|
||||
datadeps = [
|
||||
"//mojo/dart/mojo_services",
|
||||
"//mojo/dart/mojom",
|
||||
"//mojo/public/dart:mojo",
|
||||
"//sky/engine/bindings",
|
||||
"//sky/services/testing:interfaces",
|
||||
"//sky/services/media:interfaces",
|
||||
"//sky/packages/sky_engine",
|
||||
"//sky/packages/sky_services",
|
||||
"//third_party/dart-pkg",
|
||||
]
|
||||
|
||||
sdk_ext_directory = "$root_gen_dir/sky/bindings"
|
||||
sdk_ext_files = [
|
||||
"//sky/engine/bindings/sky_internals.dart",
|
||||
"//sky/engine/bindings/builtin_natives.dart",
|
||||
]
|
||||
sdk_ext_mappings = [
|
||||
"dart:sky,dart_sky.dart",
|
||||
"dart:sky.internals,sky_internals.dart",
|
||||
"dart:sky_builtin_natives,builtin_natives.dart",
|
||||
]
|
||||
}
|
||||
|
||||
action("material_design_icons") {
|
||||
source_file = "lib/assets/material-design-icons"
|
||||
target_file = "$root_gen_dir/dart-pkg/sky/lib/assets/material-design-icons"
|
||||
stamp = "$target_gen_dir/material_design_icons_linked"
|
||||
|
||||
sources = [
|
||||
"lib/assets/material-design-icons.sha1",
|
||||
]
|
||||
outputs = [
|
||||
stamp,
|
||||
]
|
||||
|
||||
script = "//sky/build/symlink.py"
|
||||
args = [
|
||||
rebase_path(source_file, root_build_dir),
|
||||
rebase_path(target_file, root_build_dir),
|
||||
"--touch",
|
||||
rebase_path(stamp, root_build_dir),
|
||||
]
|
||||
|
||||
deps = [
|
||||
":sky",
|
||||
]
|
||||
}
|
||||
|
||||
group("sdk") {
|
||||
deps = [
|
||||
":sky",
|
||||
":material_design_icons",
|
||||
]
|
||||
}
|
||||
|
||||
@ -7,11 +7,14 @@ import 'package:sky/theme/colors.dart' as colors;
|
||||
import 'package:sky/theme/typography.dart' as typography;
|
||||
import 'package:sky/widgets/basic.dart';
|
||||
import 'package:sky/widgets/default_text_style.dart';
|
||||
import 'package:sky/widgets/dialog.dart';
|
||||
import 'package:sky/widgets/floating_action_button.dart';
|
||||
import 'package:sky/widgets/flat_button.dart';
|
||||
import 'package:sky/widgets/focus.dart';
|
||||
import 'package:sky/widgets/icon.dart';
|
||||
import 'package:sky/widgets/icon_button.dart';
|
||||
import 'package:sky/widgets/material.dart';
|
||||
import 'package:sky/widgets/navigator.dart';
|
||||
import 'package:sky/widgets/scaffold.dart';
|
||||
import 'package:sky/widgets/scrollable_viewport.dart';
|
||||
import 'package:sky/widgets/task_description.dart';
|
||||
@ -51,17 +54,23 @@ class Field extends Component {
|
||||
|
||||
class AddressBookApp extends App {
|
||||
|
||||
Widget buildToolBar() {
|
||||
Widget buildToolBar(Navigator navigator) {
|
||||
return new ToolBar(
|
||||
left: new IconButton(icon: "navigation/arrow_back"),
|
||||
right: [new IconButton(icon: "navigation/check")]
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildFloatingActionButton() {
|
||||
Widget buildFloatingActionButton(Navigator navigator) {
|
||||
return new FloatingActionButton(
|
||||
child: new Icon(type: 'image/photo_camera', size: 24),
|
||||
backgroundColor: Theme.of(this).accentColor
|
||||
backgroundColor: Theme.of(this).accentColor,
|
||||
onPressed: () {
|
||||
showDialog = true;
|
||||
navigator.pushState(this, (_) {
|
||||
showDialog = false;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@ -71,8 +80,10 @@ class AddressBookApp extends App {
|
||||
static final GlobalKey addressKey = new GlobalKey();
|
||||
static final GlobalKey ringtoneKey = new GlobalKey();
|
||||
static final GlobalKey noteKey = new GlobalKey();
|
||||
static final GlobalKey fillKey = new GlobalKey();
|
||||
static final GlobalKey emoticonKey = new GlobalKey();
|
||||
|
||||
Widget buildBody() {
|
||||
Widget buildBody(Navigator navigator) {
|
||||
return new Material(
|
||||
child: new ScrollableBlock([
|
||||
new AspectRatio(
|
||||
@ -91,12 +102,59 @@ class AddressBookApp extends App {
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildMain() {
|
||||
return new Scaffold(
|
||||
toolbar: buildToolBar(),
|
||||
body: buildBody(),
|
||||
floatingActionButton: buildFloatingActionButton()
|
||||
);
|
||||
bool showDialog = false;
|
||||
|
||||
Widget buildMain(Navigator navigator) {
|
||||
List<Widget> layers = [
|
||||
new Focus(
|
||||
initialFocus: nameKey,
|
||||
child: new Scaffold(
|
||||
toolbar: buildToolBar(navigator),
|
||||
body: buildBody(navigator),
|
||||
floatingActionButton: buildFloatingActionButton(navigator)
|
||||
)
|
||||
)
|
||||
];
|
||||
if (showDialog) {
|
||||
layers.add(new Focus(
|
||||
initialFocus: fillKey,
|
||||
child: new Dialog(
|
||||
title: new Text("Describe your picture"),
|
||||
content: new ScrollableBlock([
|
||||
new Field(inputKey: fillKey, icon: "editor/format_color_fill", placeholder: "Color"),
|
||||
new Field(inputKey: emoticonKey, icon: "editor/insert_emoticon", placeholder: "Emotion"),
|
||||
]),
|
||||
onDismiss: navigator.pop,
|
||||
actions: [
|
||||
new FlatButton(
|
||||
child: new Text('DISCARD'),
|
||||
onPressed: () {
|
||||
navigator.pop();
|
||||
}
|
||||
),
|
||||
new FlatButton(
|
||||
child: new Text('SAVE'),
|
||||
onPressed: () {
|
||||
navigator.pop();
|
||||
}
|
||||
),
|
||||
]
|
||||
)
|
||||
));
|
||||
}
|
||||
return new Stack(layers);
|
||||
}
|
||||
|
||||
NavigationState _navigationState;
|
||||
|
||||
void initState() {
|
||||
_navigationState = new NavigationState([
|
||||
new Route(
|
||||
name: '/',
|
||||
builder: (navigator, route) => buildMain(navigator)
|
||||
),
|
||||
]);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
@ -111,10 +169,7 @@ class AddressBookApp extends App {
|
||||
style: typography.error, // if you see this, you've forgotten to correctly configure the text style!
|
||||
child: new TaskDescription(
|
||||
label: 'Address Book',
|
||||
child: new Focus(
|
||||
initialFocus: nameKey,
|
||||
child: buildMain()
|
||||
)
|
||||
child: new Navigator(_navigationState)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
import 'package:sky/painting/text_style.dart';
|
||||
import 'package:sky/widgets/basic.dart';
|
||||
import 'package:sky/widgets/button_base.dart';
|
||||
import 'package:sky/widgets/dialog.dart';
|
||||
import 'package:sky/widgets/drawer.dart';
|
||||
import 'package:sky/widgets/drawer_divider.dart';
|
||||
@ -13,10 +14,13 @@ import 'package:sky/widgets/flat_button.dart';
|
||||
import 'package:sky/widgets/floating_action_button.dart';
|
||||
import 'package:sky/widgets/icon_button.dart';
|
||||
import 'package:sky/widgets/icon.dart';
|
||||
import 'package:sky/widgets/ink_well.dart';
|
||||
import 'package:sky/widgets/material.dart';
|
||||
import 'package:sky/widgets/navigator.dart';
|
||||
import 'package:sky/widgets/radio.dart';
|
||||
import 'package:sky/widgets/scaffold.dart';
|
||||
import 'package:sky/widgets/scrollable_list.dart';
|
||||
import 'package:sky/widgets/scrollable_viewport.dart';
|
||||
import 'package:sky/widgets/snack_bar.dart';
|
||||
import 'package:sky/widgets/theme.dart';
|
||||
import 'package:sky/widgets/tool_bar.dart';
|
||||
@ -27,7 +31,10 @@ import 'fitness_item.dart';
|
||||
import 'measurement.dart';
|
||||
|
||||
class FitnessItemList extends Component {
|
||||
FitnessItemList({ Key key, this.items, this.onDismissed }) : super(key: key);
|
||||
FitnessItemList({ Key key, this.items, this.onDismissed }) : super(key: key) {
|
||||
assert(items != null);
|
||||
assert(onDismissed != null);
|
||||
}
|
||||
|
||||
final List<FitnessItem> items;
|
||||
final FitnessItemHandler onDismissed;
|
||||
@ -36,11 +43,40 @@ class FitnessItemList extends Component {
|
||||
return new Material(
|
||||
type: MaterialType.canvas,
|
||||
child: new ScrollableList<FitnessItem>(
|
||||
padding: const EdgeDims.all(4.0),
|
||||
items: items,
|
||||
itemHeight: kFitnessItemHeight,
|
||||
itemBuilder: (item) => new MeasurementRow(
|
||||
measurement: item as Measurement,
|
||||
onDismissed: onDismissed
|
||||
itemBuilder: (item) => item.toRow(onDismissed: onDismissed)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DialogMenuItem extends ButtonBase {
|
||||
DialogMenuItem(this.children, { Key key, this.onPressed }) : super(key: key);
|
||||
|
||||
List<Widget> children;
|
||||
Function onPressed;
|
||||
|
||||
void syncFields(DialogMenuItem source) {
|
||||
children = source.children;
|
||||
onPressed = source.onPressed;
|
||||
super.syncFields(source);
|
||||
}
|
||||
|
||||
Widget buildContent() {
|
||||
return new Listener(
|
||||
onGestureTap: (_) {
|
||||
if (onPressed != null)
|
||||
onPressed();
|
||||
},
|
||||
child: new Container(
|
||||
height: 48.0,
|
||||
child: new InkWell(
|
||||
child: new Padding(
|
||||
padding: const EdgeDims.symmetric(horizontal: 16.0),
|
||||
child: new Flex(children)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
@ -204,11 +240,30 @@ class FeedFragment extends StatefulComponent {
|
||||
}
|
||||
|
||||
bool _isShowingDialog = false;
|
||||
String _addItemRoute;
|
||||
|
||||
void _handleAddItemRouteChanged(String routeName) {
|
||||
setState(() {
|
||||
_addItemRoute = routeName;
|
||||
});
|
||||
}
|
||||
|
||||
Widget buildDialog() {
|
||||
// TODO(jackson): Internationalize
|
||||
Map<String, String> labels = {
|
||||
'/meals/new': 'Eat',
|
||||
'/measurements/new': 'Measure',
|
||||
};
|
||||
List<Widget> menuItems = [];
|
||||
for(String routeName in labels.keys) {
|
||||
menuItems.add(new DialogMenuItem([
|
||||
new Flexible(child: new Text(labels[routeName])),
|
||||
new Radio(value: routeName, groupValue: _addItemRoute, onChanged: _handleAddItemRouteChanged),
|
||||
], onPressed: () => _handleAddItemRouteChanged(routeName)));
|
||||
}
|
||||
return new Dialog(
|
||||
title: new Text("New item"),
|
||||
content: new Text("What are you trying to do?"),
|
||||
title: new Text("What are you doing?"),
|
||||
content: new ScrollableBlock(menuItems),
|
||||
onDismiss: navigator.pop,
|
||||
actions: [
|
||||
new FlatButton(
|
||||
@ -216,17 +271,10 @@ class FeedFragment extends StatefulComponent {
|
||||
onPressed: navigator.pop
|
||||
),
|
||||
new FlatButton(
|
||||
child: new Text('EAT'),
|
||||
child: new Text('ADD'),
|
||||
onPressed: () {
|
||||
navigator.pop();
|
||||
navigator.pushNamed("/meals/new");
|
||||
}
|
||||
),
|
||||
new FlatButton(
|
||||
child: new Text('MEASURE'),
|
||||
onPressed: () {
|
||||
navigator.pop();
|
||||
navigator.pushNamed("/measurements/new");
|
||||
navigator.pushNamed(_addItemRoute);
|
||||
}
|
||||
),
|
||||
]
|
||||
@ -236,6 +284,9 @@ class FeedFragment extends StatefulComponent {
|
||||
void _handleActionButtonPressed() {
|
||||
setState(() {
|
||||
_isShowingDialog = true;
|
||||
navigator.pushState(this, (_) {
|
||||
_isShowingDialog = false;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ typedef void FitnessItemHandler(FitnessItem item);
|
||||
|
||||
const double kFitnessItemHeight = 79.0;
|
||||
|
||||
class FitnessItem {
|
||||
abstract class FitnessItem {
|
||||
FitnessItem({ this.when }) {
|
||||
assert(when != null);
|
||||
}
|
||||
@ -18,13 +18,17 @@ class FitnessItem {
|
||||
|
||||
// TODO(jackson): Internationalize
|
||||
String get displayDate => "${when.year.toString()}-${when.month.toString().padLeft(2,'0')}-${when.day.toString().padLeft(2,'0')}";
|
||||
|
||||
FitnessItemRow toRow({ FitnessItemHandler onDismissed });
|
||||
}
|
||||
|
||||
abstract class FitnessItemRow extends Component {
|
||||
|
||||
FitnessItemRow({ FitnessItem item, this.onDismissed })
|
||||
: this.item = item,
|
||||
super(key: new Key(item.when.toString()));
|
||||
super(key: new Key(item.when.toString())) {
|
||||
assert(onDismissed != null);
|
||||
}
|
||||
|
||||
final FitnessItem item;
|
||||
final FitnessItemHandler onDismissed;
|
||||
|
||||
@ -21,6 +21,10 @@ class Meal extends FitnessItem {
|
||||
Meal({ DateTime when, this.description }) : super(when: when);
|
||||
|
||||
final String description;
|
||||
|
||||
FitnessItemRow toRow({ FitnessItemHandler onDismissed }) {
|
||||
return new MealRow(meal: this, onDismissed: onDismissed);
|
||||
}
|
||||
}
|
||||
|
||||
class MealRow extends FitnessItemRow {
|
||||
@ -91,6 +95,8 @@ class MealFragment extends StatefulComponent {
|
||||
});
|
||||
}
|
||||
|
||||
static final GlobalKey descriptionKey = new GlobalKey();
|
||||
|
||||
Widget buildBody() {
|
||||
Meal meal = new Meal(when: new DateTime.now());
|
||||
return new Material(
|
||||
@ -101,7 +107,7 @@ class MealFragment extends StatefulComponent {
|
||||
child: new Block([
|
||||
new Text(meal.displayDate),
|
||||
new Input(
|
||||
focused: false,
|
||||
key: descriptionKey,
|
||||
placeholder: 'Describe meal',
|
||||
onChanged: _handleDescriptionChanged
|
||||
),
|
||||
|
||||
@ -25,6 +25,10 @@ class Measurement extends FitnessItem {
|
||||
|
||||
// TODO(jackson): Internationalize
|
||||
String get displayWeight => "${weight.toStringAsFixed(2)} lbs";
|
||||
|
||||
FitnessItemRow toRow({ FitnessItemHandler onDismissed }) {
|
||||
return new MeasurementRow(measurement: this, onDismissed: onDismissed);
|
||||
}
|
||||
}
|
||||
|
||||
class MeasurementRow extends FitnessItemRow {
|
||||
@ -105,6 +109,8 @@ class MeasurementFragment extends StatefulComponent {
|
||||
});
|
||||
}
|
||||
|
||||
static final GlobalKey weightKey = new GlobalKey();
|
||||
|
||||
Widget buildBody() {
|
||||
Measurement measurement = new Measurement(when: new DateTime.now());
|
||||
return new Material(
|
||||
@ -115,7 +121,7 @@ class MeasurementFragment extends StatefulComponent {
|
||||
child: new Block([
|
||||
new Text(measurement.displayDate),
|
||||
new Input(
|
||||
focused: false,
|
||||
key: weightKey,
|
||||
placeholder: 'Enter weight',
|
||||
onChanged: _handleWeightChanged
|
||||
),
|
||||
|
||||
@ -271,43 +271,10 @@ class ParticleSystem extends Node {
|
||||
colors.add(particleColor);
|
||||
}
|
||||
|
||||
// TODO(viktork): Verify that the C++ version looks right and is faster!
|
||||
Paint paint = new Paint()..setTransferMode(transferMode)
|
||||
..setFilterQuality(FilterQuality.low) // All Skia examples do this.
|
||||
..isAntiAlias = false; // Antialiasing breaks SkCanvas.drawAtlas?
|
||||
return canvas.drawAtlas(texture.image, transforms, rects, colors,
|
||||
canvas.drawAtlas(texture.image, transforms, rects, colors,
|
||||
TransferMode.modulate, null, paint);
|
||||
|
||||
dartDrawAtlas(canvas, texture.image, transforms, rects, colors,
|
||||
TransferMode.modulate, paint);
|
||||
}
|
||||
}
|
||||
|
||||
void dartDrawAtlas(Canvas canvas, Image image, List<RSTransform> transforms,
|
||||
List<Rect> rects, List<Color> colors, TransferMode transferMode, Paint paint) {
|
||||
assert(transforms.length == rects.length && transforms.length == colors.length);
|
||||
|
||||
Texture mainTexture = new Texture(image);
|
||||
|
||||
for (int i = 0; i < transforms.length; i++) {
|
||||
RSTransform transform = transforms[i];
|
||||
Rect rect = rects[i];
|
||||
Color color = colors[i];
|
||||
|
||||
canvas.save();
|
||||
|
||||
Matrix4 matrix = new Matrix4(transform.scos, transform.ssin, 0.0, 0.0,
|
||||
-transform.ssin, transform.scos, 0.0, 0.0,
|
||||
0.0, 0.0, 1.0, 0.0,
|
||||
transform.tx, transform.ty, 0.0, 1.0);
|
||||
canvas.concat(matrix.storage);
|
||||
|
||||
paint.setColorFilter(new ColorFilter.mode(color, transferMode));
|
||||
paint.color = color;
|
||||
|
||||
Texture texture = mainTexture.textureFromRect(rect);
|
||||
texture.drawTexture(canvas, new Point(-texture.size.width/2.0, -texture.size.height/2.0), paint);
|
||||
|
||||
canvas.restore();
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ class StockSettings extends StatefulComponent {
|
||||
BackupMode backup;
|
||||
SettingsUpdater updater;
|
||||
|
||||
bool showModeDialog = false;
|
||||
bool _showModeDialog = false;
|
||||
|
||||
void syncFields(StockSettings source) {
|
||||
navigator = source.navigator;
|
||||
@ -60,9 +60,9 @@ class StockSettings extends StatefulComponent {
|
||||
_handleOptimismChanged(false);
|
||||
break;
|
||||
case StockMode.pessimistic:
|
||||
showModeDialog = true;
|
||||
_showModeDialog = true;
|
||||
navigator.pushState(this, (_) {
|
||||
showModeDialog = false;
|
||||
_showModeDialog = false;
|
||||
});
|
||||
break;
|
||||
}
|
||||
@ -123,7 +123,7 @@ class StockSettings extends StatefulComponent {
|
||||
body: buildSettingsPane()
|
||||
)
|
||||
];
|
||||
if (showModeDialog) {
|
||||
if (_showModeDialog) {
|
||||
layers.add(new Dialog(
|
||||
title: new Text("Change mode?"),
|
||||
content: new Text("Optimistic mode means everything is awesome. Are you sure you can handle that?"),
|
||||
|
||||
@ -9,10 +9,12 @@ import 'package:sky/widgets/basic.dart';
|
||||
import 'package:sky/widgets/block_viewport.dart';
|
||||
import 'package:sky/widgets/card.dart';
|
||||
import 'package:sky/widgets/dismissable.dart';
|
||||
import 'package:sky/widgets/icon.dart';
|
||||
import 'package:sky/widgets/variable_height_scrollable.dart';
|
||||
import 'package:sky/widgets/scaffold.dart';
|
||||
import 'package:sky/widgets/theme.dart';
|
||||
import 'package:sky/widgets/tool_bar.dart';
|
||||
import 'package:sky/theme/typography.dart' as typography;
|
||||
import 'package:sky/widgets/widget.dart';
|
||||
import 'package:sky/widgets/task_description.dart';
|
||||
|
||||
@ -27,8 +29,11 @@ class CardModel {
|
||||
|
||||
class CardCollectionApp extends App {
|
||||
|
||||
final TextStyle cardLabelStyle =
|
||||
new TextStyle(color: white, fontSize: 18.0, fontWeight: bold);
|
||||
static const TextStyle cardLabelStyle =
|
||||
const TextStyle(color: white, fontSize: 18.0, fontWeight: bold);
|
||||
|
||||
final TextStyle backgroundTextStyle =
|
||||
typography.white.title.copyWith(textAlign: TextAlign.center);
|
||||
|
||||
BlockViewportLayoutState layoutState = new BlockViewportLayoutState();
|
||||
List<CardModel> cardModels;
|
||||
@ -57,21 +62,50 @@ class CardCollectionApp extends App {
|
||||
Widget builder(int index) {
|
||||
if (index >= cardModels.length)
|
||||
return null;
|
||||
CardModel card = cardModels[index];
|
||||
|
||||
return new Dismissable(
|
||||
key: card.key,
|
||||
CardModel cardModel = cardModels[index];
|
||||
Widget card = new Dismissable(
|
||||
onResized: () { layoutState.invalidate([index]); },
|
||||
onDismissed: () { dismissCard(card); },
|
||||
onDismissed: () { dismissCard(cardModel); },
|
||||
child: new Card(
|
||||
color: card.color,
|
||||
color: cardModel.color,
|
||||
child: new Container(
|
||||
height: card.height,
|
||||
height: cardModel.height,
|
||||
padding: const EdgeDims.all(8.0),
|
||||
child: new Center(child: new Text(card.label, style: cardLabelStyle))
|
||||
child: new Center(child: new Text(cardModel.label, style: cardLabelStyle))
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
Widget backgroundText = new Center(
|
||||
child: new Text("Swipe in either direction", style: backgroundTextStyle)
|
||||
);
|
||||
|
||||
// The background Widget appears behind the Dismissable card when the card
|
||||
// moves to the left or right. The Positioned widget ensures that the
|
||||
// size of the background,card Stack will be based only on the card. The
|
||||
// Viewport ensures that when the card's resize animation occurs, the
|
||||
// background (text and icons) will just be clipped, not resized.
|
||||
Widget background = new Positioned(
|
||||
top: 0.0,
|
||||
left: 0.0,
|
||||
child: new Container(
|
||||
margin: const EdgeDims.all(4.0),
|
||||
child: new Viewport(
|
||||
child: new Container(
|
||||
height: cardModel.height,
|
||||
decoration: new BoxDecoration(backgroundColor: Theme.of(this).primaryColor),
|
||||
child: new Flex([
|
||||
new Icon(type: 'navigation/arrow_back', size: 36),
|
||||
new Flexible(child: backgroundText),
|
||||
new Icon(type: 'navigation/arrow_forward', size: 36)
|
||||
])
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
return new Stack([background, card], key: cardModel.key);
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
@ -85,17 +119,20 @@ class CardCollectionApp extends App {
|
||||
)
|
||||
);
|
||||
|
||||
return new Theme(
|
||||
data: new ThemeData(
|
||||
brightness: ThemeBrightness.light,
|
||||
primarySwatch: Blue,
|
||||
accentColor: RedAccent[200]
|
||||
),
|
||||
child: new TaskDescription(
|
||||
label: 'Cards',
|
||||
child: new Scaffold(
|
||||
toolbar: new ToolBar(center: new Text('Swipe Away')),
|
||||
body: cardCollection
|
||||
return new IconTheme(
|
||||
data: const IconThemeData(color: IconThemeColor.white),
|
||||
child: new Theme(
|
||||
data: new ThemeData(
|
||||
brightness: ThemeBrightness.light,
|
||||
primarySwatch: Blue,
|
||||
accentColor: RedAccent[200]
|
||||
),
|
||||
child: new TaskDescription(
|
||||
label: 'Cards',
|
||||
child: new Scaffold(
|
||||
toolbar: new ToolBar(center: new Text('Swipe Away')),
|
||||
body: cardCollection
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
1
sky/sdk/lib/assets/.gitignore
vendored
1
sky/sdk/lib/assets/.gitignore
vendored
@ -1 +0,0 @@
|
||||
material-design-icons
|
||||
@ -1,55 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib2
|
||||
|
||||
|
||||
def main():
|
||||
sky_lib_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
assets_dir = os.path.join(sky_lib_dir, 'assets')
|
||||
icons_dir = os.path.join(assets_dir, 'material-design-icons')
|
||||
existing_sha1_path = os.path.join(icons_dir, 'material-design-icons.sha1')
|
||||
|
||||
existing_sha1 = None
|
||||
if os.path.isfile(existing_sha1_path):
|
||||
with open(existing_sha1_path, 'r') as f:
|
||||
existing_sha1 = f.read()
|
||||
|
||||
sha1_path = os.path.join(assets_dir, 'material-design-icons.sha1')
|
||||
|
||||
with open(sha1_path, 'r') as f:
|
||||
sha1 = f.read()
|
||||
|
||||
if existing_sha1 == sha1:
|
||||
return
|
||||
|
||||
print "Downloading missing material design icons"
|
||||
|
||||
tgz_path = os.path.join(assets_dir, 'material-design-icons.tgz')
|
||||
url = 'https://storage.googleapis.com/mojo/material-design-icons/%s' % sha1
|
||||
response = urllib2.urlopen(url)
|
||||
|
||||
with open(tgz_path, 'wb') as f:
|
||||
f.write(response.read())
|
||||
|
||||
shutil.rmtree(icons_dir, ignore_errors=True)
|
||||
|
||||
output_path = os.path.join(assets_dir, tgz_path)
|
||||
subprocess.call([
|
||||
'tar', '-xzf', output_path, '-C', assets_dir
|
||||
])
|
||||
|
||||
subprocess.call([
|
||||
'cp', sha1_path, icons_dir
|
||||
])
|
||||
|
||||
os.unlink(tgz_path)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
@ -18,6 +18,8 @@ import time
|
||||
# TODO(eseidel): This should be BIN_DIR.
|
||||
LIB_DIR = os.path.realpath(os.path.dirname(os.path.abspath(__file__)))
|
||||
SKY_PACKAGE_ROOT = os.path.realpath(os.path.dirname(LIB_DIR))
|
||||
SKY_ENGINE_PACKAGE_ROOT = os.path.realpath(os.path.join(SKY_PACKAGE_ROOT,
|
||||
os.pardir, 'sky_engine'))
|
||||
|
||||
SKY_SERVER_PORT = 9888
|
||||
OBSERVATORY_PORT = 8181
|
||||
@ -164,7 +166,7 @@ class StartSky(object):
|
||||
args.install = True
|
||||
|
||||
if args.install:
|
||||
apk_path = os.path.join(SKY_PACKAGE_ROOT, 'apks', APK_NAME)
|
||||
apk_path = os.path.join(SKY_ENGINE_PACKAGE_ROOT, 'apks', APK_NAME)
|
||||
if not os.path.exists(apk_path):
|
||||
print "'%s' does not exist?" % apk_path
|
||||
return 2
|
||||
|
||||
@ -53,7 +53,6 @@ class Dismissable extends AnimatedComponent {
|
||||
..duration = _kCardDismissFadeout
|
||||
..variable = new AnimatedList([_position, _opacity])
|
||||
..addListener(_handleFadeProgressChanged);
|
||||
watch(_fadePerformance);
|
||||
}
|
||||
|
||||
void _handleFadeProgressChanged() {
|
||||
@ -85,8 +84,6 @@ class Dismissable extends AnimatedComponent {
|
||||
}
|
||||
|
||||
void _maybeCallOnDismissed() {
|
||||
_resizePerformance.stop();
|
||||
_resizePerformance.removeListener(_handleResizeProgressChanged);
|
||||
if (onDismissed != null)
|
||||
onDismissed();
|
||||
}
|
||||
@ -96,22 +93,19 @@ class Dismissable extends AnimatedComponent {
|
||||
assert(_fadePerformance != null);
|
||||
assert(_resizePerformance == null);
|
||||
|
||||
// TODO(hansmuller): _fadePerformance is completed; stop shouldn't be needed.
|
||||
_fadePerformance.stop();
|
||||
_fadePerformance.removeListener(_handleFadeProgressChanged);
|
||||
|
||||
_maybeCallOnResized();
|
||||
|
||||
AnimatedValue<double> dismissHeight = new AnimatedValue<double>(_size.height,
|
||||
end: 0.0,
|
||||
curve: ease,
|
||||
interval: new Interval(_kCardDismissResizeDelay, 1.0)
|
||||
end: 0.0,
|
||||
curve: ease,
|
||||
interval: new Interval(_kCardDismissResizeDelay, 1.0)
|
||||
);
|
||||
_resizePerformance = new AnimationPerformance()
|
||||
..variable = dismissHeight
|
||||
..duration = _kCardDismissResize
|
||||
..addListener(_handleResizeProgressChanged)
|
||||
..play();
|
||||
watch(_resizePerformance);
|
||||
}
|
||||
|
||||
void _handleResizeProgressChanged() {
|
||||
|
||||
@ -41,7 +41,7 @@ class IconTheme extends Inherited {
|
||||
AssetBundle _initIconBundle() {
|
||||
if (rootBundle != null)
|
||||
return rootBundle;
|
||||
const String _kAssetBase = '/packages/sky/assets/material-design-icons/';
|
||||
const String _kAssetBase = '/packages/material_design_icons/icons/';
|
||||
return new NetworkAssetBundle(Uri.base.resolve(_kAssetBase));
|
||||
}
|
||||
|
||||
|
||||
@ -1,15 +1,18 @@
|
||||
name: sky
|
||||
version: 0.0.21
|
||||
author: Chromium Authors <sky-dev@googlegroups.com>
|
||||
description: A framework for writing Sky applications
|
||||
homepage: https://github.com/domokit/sky_engine/tree/master/sky/sdk
|
||||
dependencies:
|
||||
cassowary: ^0.1.7
|
||||
material_design_icons: ^0.0.1
|
||||
mojo_services: ^0.0.15
|
||||
mojo: ^0.0.17
|
||||
mojom: ^0.0.17
|
||||
newton: ^0.1.0
|
||||
sky_engine: ^0.0.1
|
||||
sky_services: ^0.0.1
|
||||
sky_tools: ^0.0.2
|
||||
vector_math: ^1.4.3
|
||||
description: Dart files to support executing inside Sky
|
||||
environment:
|
||||
sdk: '>=1.8.0 <2.0.0'
|
||||
homepage: https://github.com/domokit/mojo/tree/master/sky
|
||||
name: sky
|
||||
version: 0.0.21
|
||||
|
||||
@ -125,6 +125,13 @@ static sky::InputEventPtr BasicInputEventFromRecognizer(
|
||||
}
|
||||
|
||||
- (NSString*)skyInitialLoadURL {
|
||||
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
|
||||
NSString *target = [standardDefaults stringForKey:@"target"];
|
||||
NSString *server = [standardDefaults stringForKey:@"server"];
|
||||
if (server && target) {
|
||||
return [NSString stringWithFormat:@"http://%@/%@", server, target];
|
||||
}
|
||||
|
||||
return [NSBundle mainBundle].infoDictionary[@"org.domokit.sky.load_url"];
|
||||
}
|
||||
|
||||
|
||||
@ -19,216 +19,398 @@ PAINT FOR FRAME #2 ----------------------------------------------
|
||||
2 | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | save
|
||||
2 | | | | | | clipRect(Rect.fromLTRB(8.0, 68.0, 792.0, 588.0))
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 68.0)
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 68.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 68.0)
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 68.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 68.0)
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 72.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 68.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 72.0, 788.0, 120.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 72.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 72.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffe57373), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 72.0, 788.0, 120.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 72.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 52.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 78.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 82.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 82.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 15.5)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 15.5)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -15.5)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 82.0)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -82.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 78.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 124.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 124.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 68.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 124.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 68.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 68.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 68.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffe57373), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 52.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 15.5)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 15.5)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -15.5)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 124.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 124.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 128.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 124.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 128.0, 788.0, 191.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 128.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 128.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffdd7174), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 128.0, 788.0, 191.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 128.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 67.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 141.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 145.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 145.5)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 23.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 23.0)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -23.0)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 145.5)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -145.5)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 141.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 195.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 195.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 124.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 195.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 124.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 124.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 124.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffdd7174), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 67.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 23.0)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 23.0)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -23.0)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 195.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 195.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 199.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 195.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 199.0, 788.0, 281.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 199.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 199.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffd56f76), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 199.0, 788.0, 281.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 199.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 86.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 222.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 226.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 226.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 32.5)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 32.5)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -32.5)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 226.0)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -226.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 222.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 285.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 285.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 195.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 285.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 195.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 195.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 195.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffd56f76), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 86.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 32.5)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 32.5)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -32.5)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 285.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 285.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 289.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 285.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 289.0, 788.0, 435.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 289.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 289.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffcd6e78), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 289.0, 788.0, 435.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 289.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 150.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 344.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 348.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 348.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 64.5)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 64.5)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -64.5)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 348.0)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -348.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 344.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 439.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 439.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 285.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 439.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 285.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 285.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 285.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffcd6e78), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 150.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 64.5)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 64.5)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -64.5)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 439.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 439.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 443.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 439.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 443.0, 788.0, 503.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 443.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 443.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffc56c79), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 443.0, 788.0, 503.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 443.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 64.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 455.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 459.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 459.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 21.5)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 21.5)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -21.5)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 459.0)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -459.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 455.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 507.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 507.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 439.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 507.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 439.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 439.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 439.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffc56c79), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 64.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 21.5)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 21.5)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -21.5)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 507.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 507.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 511.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 507.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 511.0, 788.0, 566.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 511.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 511.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffbd6a7b), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 511.0, 788.0, 566.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 511.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 59.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 520.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 524.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 524.5)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 19.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 19.0)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -19.0)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 524.5)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -524.5)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 520.5)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderSizeObserver at Point(8.0, 570.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderOpacity at Point(8.0, 570.0)
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 507.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderTransform at Point(8.0, 570.0)
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 507.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 507.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 507.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffbd6a7b), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 59.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 19.0)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 19.0)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -19.0)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | paintChild RenderStack at Point(8.0, 570.0)
|
||||
2 | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | paintChild RenderPadding at Point(8.0, 570.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderViewport at Point(12.0, 574.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | save
|
||||
2 | | | | | | | | | translate(8.0, 570.0)
|
||||
2 | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | clipRect(Rect.fromLTRB(12.0, 574.0, 788.0, 658.0))
|
||||
2 | | | | | | | | | paintChild RenderConstrainedBox at Point(12.0, 574.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | paintChild RenderDecoratedBox at Point(12.0, 574.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffb5697d), drawLooper:true))
|
||||
2 | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | drawRect(Rect.fromLTRB(12.0, 574.0, 788.0, 658.0), Paint(color:Color(0xff2196f3)))
|
||||
2 | | | | | | | | | | | paintChild RenderFlex at Point(12.0, 574.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 88.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(12.0, 598.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderPositionedBox at Point(48.0, 602.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | paintChild RenderParagraph at Point(278.0, 602.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 33.5)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | translate(359.0, 33.5)
|
||||
2 | | | | | | | | | | | | | | | | translate(-359.0, -33.5)
|
||||
2 | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | | | | | translate(278.0, 602.0)
|
||||
2 | | | | | | | | | | | | | | translate(-278.0, -602.0)
|
||||
2 | | | | | | | | | | | | paintChild RenderImage at Point(752.0, 598.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | restore
|
||||
2 | | | | | | | paintChild RenderSizeObserver at Point(8.0, 570.0)
|
||||
2 | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | paintChild RenderOpacity at Point(8.0, 570.0)
|
||||
2 | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | paintChild RenderTransform at Point(8.0, 570.0)
|
||||
2 | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | save
|
||||
2 | | | | | | | | | | translate(8.0, 570.0)
|
||||
2 | | | | | | | | | | concat([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0])
|
||||
2 | | | | | | | | | | paintChild RenderPadding at Point(0.0, 0.0)
|
||||
2 | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | paintChild RenderDecoratedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | drawRRect(Instance of 'RRect', Paint(color:Color(0xffb5697d), drawLooper:true))
|
||||
2 | | | | | | | | | | | | paintChild RenderClipRRect at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | saveLayer(Rect.fromLTRB(4.0, 4.0, 780.0, 88.0), Paint(color:Color(0xff000000)))
|
||||
2 | | | | | | | | | | | | | clipRRect()
|
||||
2 | | | | | | | | | | | | | paintChild RenderConstrainedBox at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | paintChild RenderPadding at Point(4.0, 4.0)
|
||||
2 | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | paintChild RenderPositionedBox at Point(12.0, 12.0)
|
||||
2 | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | paintChild RenderParagraph at Point(359.0, 33.5)
|
||||
2 | | | | | | | | | | | | | | | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
2 | | | | | | | | | | | | | | | | | translate(359.0, 33.5)
|
||||
2 | | | | | | | | | | | | | | | | | translate(-359.0, -33.5)
|
||||
2 | | | | | | | | | | | | | restore
|
||||
2 | | | | | | | | | | restore
|
||||
2 | | | | | | restore
|
||||
2 | | paintChild RenderDecoratedBox at Point(0.0, 0.0)
|
||||
2 | | | TestPaintingCanvas() constructor: 800.0 x 600.0
|
||||
|
||||
53
sky/tools/download_material_design_icons
Executable file
53
sky/tools/download_material_design_icons
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib2
|
||||
|
||||
SRC_ROOT = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir, os.pardir))
|
||||
VERSION_FILE = '.version.sha1'
|
||||
|
||||
def main():
|
||||
package_dir = os.path.join(SRC_ROOT, 'sky/packages/material_design_icons/lib')
|
||||
icons_dir = os.path.join(package_dir, 'icons')
|
||||
existing_sha1_path = os.path.join(icons_dir, VERSION_FILE)
|
||||
|
||||
existing_sha1 = None
|
||||
if os.path.isfile(existing_sha1_path):
|
||||
with open(existing_sha1_path, 'r') as f:
|
||||
existing_sha1 = f.read()
|
||||
|
||||
desired_sha1_path = os.path.join(package_dir, VERSION_FILE)
|
||||
|
||||
with open(desired_sha1_path, 'r') as f:
|
||||
desired_sha1 = f.read()
|
||||
|
||||
if existing_sha1 == desired_sha1:
|
||||
return
|
||||
|
||||
print "Downloading missing material design icons"
|
||||
|
||||
tgz_path = os.path.join(package_dir, 'material-design-icons.tgz')
|
||||
untar_path = os.path.join(package_dir, 'material-design-icons')
|
||||
|
||||
url = 'https://storage.googleapis.com/mojo/material-design-icons/%s' % desired_sha1
|
||||
response = urllib2.urlopen(url)
|
||||
|
||||
with open(tgz_path, 'wb') as f:
|
||||
f.write(response.read())
|
||||
|
||||
shutil.rmtree(icons_dir, ignore_errors=True)
|
||||
|
||||
subprocess.call([ 'tar', '-xzf', tgz_path, '-C', package_dir ])
|
||||
subprocess.call([ 'mv', untar_path, icons_dir ])
|
||||
subprocess.call([ 'cp', desired_sha1_path, icons_dir ])
|
||||
|
||||
os.unlink(tgz_path)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
@ -52,7 +52,7 @@ def to_gn_args(args):
|
||||
gn_args['use_glib'] = False
|
||||
gn_args['use_system_harfbuzz'] = False
|
||||
|
||||
if args.target_os in ['android', 'ios']:
|
||||
if args.target_os in ['android', 'ios'] and not args.simulator:
|
||||
gn_args['target_cpu'] = 'arm'
|
||||
else:
|
||||
gn_args['target_cpu'] = 'x64'
|
||||
|
||||
@ -22,6 +22,15 @@ class GNTestCase(unittest.TestCase):
|
||||
self._expect_build_dir(['--android'], 'out/android_Debug')
|
||||
self._expect_build_dir(['--android', '--release'], 'out/android_Release')
|
||||
|
||||
def _gn_args(self, arg_list):
|
||||
args = gn.parse_args(['gn'] + arg_list)
|
||||
return gn.to_gn_args(args)
|
||||
|
||||
def test_to_gn_args(self):
|
||||
# This would not necesarily be true on a 32-bit machine?
|
||||
self.assertEquals(self._gn_args(['--ios', '--simulator'])['target_cpu'], 'x64')
|
||||
self.assertEquals(self._gn_args(['--ios'])['target_cpu'], 'arm')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
@ -1,153 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib2
|
||||
from utils import commit
|
||||
from utils import system
|
||||
import patch
|
||||
|
||||
# //base and its dependencies
|
||||
_base_deps = [
|
||||
'base',
|
||||
'testing',
|
||||
'third_party/ashmem',
|
||||
'third_party/libevent',
|
||||
'third_party/libxml', # via //base/test
|
||||
'third_party/modp_b64',
|
||||
'third_party/tcmalloc',
|
||||
]
|
||||
|
||||
# //build and its dependencies
|
||||
_build_deps = [
|
||||
'build',
|
||||
'third_party/android_testrunner',
|
||||
'third_party/binutils',
|
||||
'third_party/instrumented_libraries',
|
||||
'third_party/pymock',
|
||||
'tools/android',
|
||||
'tools/clang',
|
||||
'tools/generate_library_loader',
|
||||
'tools/gritsettings',
|
||||
'tools/valgrind',
|
||||
]
|
||||
|
||||
_chromium_libs = [
|
||||
'crypto',
|
||||
'url',
|
||||
]
|
||||
|
||||
_third_party_deps = [
|
||||
'third_party/android_platform',
|
||||
'third_party/apple_apsl',
|
||||
'third_party/brotli',
|
||||
'third_party/expat',
|
||||
'third_party/freetype-android',
|
||||
'third_party/harfbuzz-ng',
|
||||
'third_party/iccjpeg',
|
||||
'third_party/jinja2',
|
||||
'third_party/jsr-305',
|
||||
'third_party/junit',
|
||||
'third_party/khronos',
|
||||
'third_party/libjpeg',
|
||||
'third_party/libpng',
|
||||
'third_party/libXNVCtrl',
|
||||
'third_party/markupsafe',
|
||||
'third_party/mesa',
|
||||
'third_party/mockito',
|
||||
'third_party/ots',
|
||||
'third_party/ply',
|
||||
'third_party/qcms',
|
||||
'third_party/re2',
|
||||
'third_party/robolectric',
|
||||
'third_party/zlib',
|
||||
]
|
||||
|
||||
dirs_from_chromium = _base_deps + _build_deps + _chromium_libs + _third_party_deps
|
||||
|
||||
dirs_from_mojo = [
|
||||
'gpu',
|
||||
'mojo',
|
||||
'mojom',
|
||||
'services/android',
|
||||
'services/asset_bundle',
|
||||
'services/keyboard',
|
||||
'services/sensors',
|
||||
]
|
||||
|
||||
# The contents of these files before the roll will be preserved after the roll,
|
||||
# even though they live in directories rolled in from Chromium.
|
||||
files_not_to_roll = [
|
||||
'build/config/crypto.gni',
|
||||
'build/config/ui.gni',
|
||||
'build/ls.py',
|
||||
'build/module_args/mojo.gni',
|
||||
'crypto/BUILD.gn',
|
||||
'gpu/BUILD.gn',
|
||||
'tools/android/download_android_tools.py',
|
||||
'tools/android/VERSION_LINUX_NDK',
|
||||
'tools/android/VERSION_LINUX_SDK',
|
||||
'tools/android/VERSION_MACOSX_NDK',
|
||||
'tools/android/VERSION_MACOSX_SDK',
|
||||
]
|
||||
|
||||
|
||||
def rev(source_dir, dest_dir, dirs_to_rev, name):
|
||||
for d in dirs_to_rev:
|
||||
print "removing directory %s" % d
|
||||
try:
|
||||
system(["git", "rm", "-r", d], cwd=dest_dir)
|
||||
except subprocess.CalledProcessError:
|
||||
print "Could not remove %s" % d
|
||||
print "cloning directory %s" % d
|
||||
files = system(["git", "ls-files", d], cwd=source_dir)
|
||||
for f in files.splitlines():
|
||||
source_path = os.path.join(source_dir, f)
|
||||
if not os.path.isfile(source_path):
|
||||
continue
|
||||
dest_path = os.path.join(dest_dir, f)
|
||||
system(["mkdir", "-p", os.path.dirname(dest_path)], cwd=source_dir)
|
||||
system(["cp", source_path, dest_path], cwd=source_dir)
|
||||
system(["git", "add", d], cwd=dest_dir)
|
||||
|
||||
for f in files_not_to_roll:
|
||||
system(["git", "checkout", "HEAD", f], cwd=dest_dir)
|
||||
|
||||
system(["git", "add", "."], cwd=dest_dir)
|
||||
src_commit = system(["git", "rev-parse", "HEAD"], cwd=source_dir).strip()
|
||||
commit("Update to %s %s" % (name, src_commit), cwd=dest_dir)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Update the mojo repo's " +
|
||||
"snapshot of things imported from chromium.")
|
||||
parser.add_argument("--mojo-dir", type=str)
|
||||
parser.add_argument("--chromium-dir", type=str)
|
||||
parser.add_argument("--dest-dir", type=str)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.mojo_dir:
|
||||
rev(args.mojo_dir, args.dest_dir, dirs_from_mojo, 'mojo')
|
||||
|
||||
if args.chromium_dir:
|
||||
rev(args.chromium_dir, args.dest_dir, dirs_from_chromium, 'chromium')
|
||||
|
||||
try:
|
||||
patch.patch_and_filter(args.dest_dir)
|
||||
except subprocess.CalledProcessError:
|
||||
print "ERROR: Roll failed due to a patch not applying"
|
||||
print "Fix the patch to apply, commit the result, and re-run this script"
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@ -10,6 +10,7 @@ import xml.etree.ElementTree as ET
|
||||
|
||||
|
||||
PUBSPECS = [
|
||||
'sky/packages/sky_engine/pubspec.yaml',
|
||||
'sky/sdk/pubspec.yaml',
|
||||
]
|
||||
|
||||
|
||||
@ -15,13 +15,6 @@ SRC_ROOT = os.path.dirname(os.path.dirname(SKY_TOOLS_DIR))
|
||||
SKY_SDK_DIR = os.path.join(SRC_ROOT, 'sky', 'sdk')
|
||||
SKY_PUBSPEC = os.path.join(SKY_SDK_DIR, 'pubspec.yaml')
|
||||
SKY_PUBSPEC_LOCK = os.path.join(SKY_SDK_DIR, 'pubspec.lock')
|
||||
SDK_EXT = os.path.join(SKY_SDK_DIR, 'lib', '_sdkext')
|
||||
|
||||
SDK_EXT_TEMPLATE = '''{
|
||||
"dart:sky": "%(build_dir)s/gen/dart-pkg/sky/sdk_ext/dart_sky.dart",
|
||||
"dart:sky.internals": "%(build_dir)s/gen/dart-pkg/sky/sdk_ext/sky_internals.dart",
|
||||
"dart:sky_builtin_natives": "%(build_dir)s/gen/dart-pkg/sky/sdk_ext/builtin_natives.dart"
|
||||
}'''
|
||||
|
||||
def version_for_pubspec(pubspec_path):
|
||||
with open(pubspec_path, 'r') as stream:
|
||||
@ -31,7 +24,10 @@ def version_for_pubspec(pubspec_path):
|
||||
|
||||
def entry_for_dependency(dart_pkg_dir, dependency):
|
||||
dependency_path = os.path.join(dart_pkg_dir, dependency)
|
||||
version = version_for_pubspec(os.path.join(dependency_path, 'pubspec.yaml'))
|
||||
pubspec_path = os.path.join(dependency_path, 'pubspec.yaml')
|
||||
if not os.path.exists(pubspec_path):
|
||||
return
|
||||
version = version_for_pubspec(pubspec_path)
|
||||
return {
|
||||
'description': {
|
||||
'path': os.path.relpath(dependency_path, SKY_SDK_DIR),
|
||||
@ -59,16 +55,15 @@ def main():
|
||||
with open(SKY_PUBSPEC, 'r') as stream:
|
||||
spec = yaml.load(stream)
|
||||
for dependency in spec['dependencies'].keys():
|
||||
packages[dependency] = entry_for_dependency(dart_pkg_dir, dependency)
|
||||
entry = entry_for_dependency(dart_pkg_dir, dependency)
|
||||
if not entry:
|
||||
continue
|
||||
packages[dependency] = entry
|
||||
|
||||
lock = { 'packages': packages }
|
||||
with open(SKY_PUBSPEC_LOCK, 'w') as stream:
|
||||
yaml.dump(lock, stream=stream, default_flow_style=False)
|
||||
|
||||
with open(SDK_EXT, 'w') as stream:
|
||||
rebased_build_dir = os.path.relpath(args.build_dir, os.path.dirname(SDK_EXT))
|
||||
stream.write(SDK_EXT_TEMPLATE % { 'build_dir': rebased_build_dir })
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user