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

Unified Diff: sky/examples/color/color-chooser.sky

Issue 940233002: Dart version of the Sky color chooser (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/color/color-chooser.sky
diff --git a/sky/examples/color/color-chooser.sky b/sky/examples/color/color-chooser.sky
new file mode 100644
index 0000000000000000000000000000000000000000..ad66cf993ff39ef96e2ac17c459c58f24832c859
--- /dev/null
+++ b/sky/examples/color/color-chooser.sky
@@ -0,0 +1,96 @@
+#!mojo mojo:sky_viewer
+<!--
+// 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.
+-->
+<sky>
+ <style>
+ #chooser {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 5%;
+ }
+ #color-wheel {
+ min-width: 100%;
+ height: auto;
+ }
+ #color-sample {
+ margin: 5%;
+ padding: 10%;
+ text-align: center;
+ border-radius: 10px;
+ }
+ </style>
+ <div id="chooser">
+ <img id="color-wheel" src="color-wheel.png"/>
+ <h1 id="color-sample">Select Color</h1>
+ </div>
+ <script>
+ import 'dart:sky';
+ import 'dart:math';
+
+ class RGB {
+ final int r;
+ final int g;
+ final int b;
+ const RGB(this.r, this.g, this.b);
+ String toString() => "rgb($r, $g, $b)";
+ }
+
+ RGB hsvToRgb(double h, double s, double v) {
+ var i = (h * 6).floor();
+ var f = h * 6 - i;
+ var p = v * (1 - s);
+ var q = v * (1 - f * s);
+ var t = v * (1 - (1 - f) * s);
+ var r, g, b;
+ switch (i % 6) {
+ case 0: r = v; g = t; b = p; break;
+ case 1: r = q; g = v; b = p; break;
+ case 2: r = p; g = v; b = t; break;
+ case 3: r = p; g = q; b = v; break;
+ case 4: r = t; g = p; b = v; break;
+ case 5: r = v; g = p; b = q; break;
+ }
+ return new RGB((r * 255).floor(), (g * 255).floor(), (b * 255).floor());
+ }
+
+ RGB xyToRgb(x, y, radius) {
+ var rx = x - radius;
+ var ry = y - radius;
+ var d = radius * radius;
+ if (rx * rx + ry * ry > d)
+ return null;
+ var h = (atan2(ry, rx) + PI) / (2 * PI);
+ var s = sqrt(d) / radius;
+ return hsvToRgb(h, s, 1.0);
+ }
+
+ elt(String id) => document.getElementById(id);
+
+ void updateColor(event) {
+ var bounds = event.target.getBoundingClientRect();
+ var x = event.x - bounds.left;
+ var y = event.y - bounds.top;
+ var radius = min(bounds.width, bounds.height) / 2.0;
+ var rgb = xyToRgb(x, y, radius);
+ if (rgb != null) {
+ var ccsColor = rgb.toString();
+ elt("color-sample").style["background-color"] = ccsColor;
+ }
+ }
+
+ void selectColor(event) {
+ var ccsColor = elt("color-sample").style["background-color"];
+ print(ccsColor);
+ }
+
+ void main() {
+ elt("color-wheel").addEventListener("pointerdown", updateColor);
+ elt("color-sample").addEventListener("pointerdown", selectColor);
+ elt("color-sample").style["background-color"] = "rgb(0, 209, 255)";
+ }
+ </script>
+</sky>
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698