changeset 1573:20f48a0e7135

hover mode shows best match Ignore-this: 3b25ed8ebb8e6be38a3afa0d077e78ba
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 28 May 2017 09:05:37 +0000
parents 9be85c08a69f
children a261a4bc97a0
files light9/web/lib/bower.json light9/web/paint/index.html light9/web/paint/paint-elements.coffee light9/web/paint/paint-elements.html
diffstat 4 files changed, 44 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/light9/web/lib/bower.json	Sun May 28 08:50:56 2017 +0000
+++ b/light9/web/lib/bower.json	Sun May 28 09:05:37 2017 +0000
@@ -16,11 +16,15 @@
     "N3.js": "https://github.com/RubenVerborgh/N3.js.git#04f4e21f4ccb351587dc00a3f26340b28d4bb10f",
     "shortcut": "http://www.openjs.com/scripts/events/keyboard_shortcuts/shortcut.js",
     "async": "https://github.com/caolan/async.git#^1.5.2",
-    "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.3"
+    "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.3",
+    "paper-radio-button": "PolymerElements/paper-radio-button#^1.2.2",
+    "paper-radio-group": "PolymerElements/paper-radio-group#^1.2.2"
   },
   "resolutions": {
     "paper-styles": "^1.1.4",
     "rdflib.js": "920e59fe37",
-    "d3": "e7194db33090a0afc06c77a959594361ffb949df"
+    "d3": "e7194db33090a0afc06c77a959594361ffb949df",
+    "webcomponentsjs": "^0.7.24",
+    "polymer": "^1.2.1"
   }
 }
--- a/light9/web/paint/index.html	Sun May 28 08:50:56 2017 +0000
+++ b/light9/web/paint/index.html	Sun May 28 09:05:37 2017 +0000
@@ -5,7 +5,6 @@
     <meta charset="utf-8" />
     <script src="/lib/webcomponentsjs/webcomponents-lite.min.js"></script>
     <link rel="stylesheet"  href="/style.css">
-
     <link rel="import" href="paint-elements.html">
     <meta name="viewport" content="user-scalable=no, width=1000, initial-scale=.5" />
     <style>
--- a/light9/web/paint/paint-elements.coffee	Sun May 28 08:50:56 2017 +0000
+++ b/light9/web/paint/paint-elements.coffee	Sun May 28 09:05:37 2017 +0000
@@ -5,6 +5,9 @@
   addStroke: (pts, color) ->
     @strokes.push({pts: pts, color: color})
 
+  hover: (pos) ->
+    @strokes = [{pts: [pos, [pos[0], pos[1] + .01]], color: "#ffffff"}]
+
   getDoc: ->
     {strokes: @strokes}
 
@@ -31,6 +34,7 @@
   listeners: 'iron-resize': 'onResize'
   properties: {
     bg: { type: String },
+    tool: { type: String },
     painting: { type: Object } # output
   }
   ready: ->
@@ -43,21 +47,36 @@
     @$.paint.addEventListener('touchmove', @onMove.bind(@))
     @$.paint.addEventListener('touchend', @onUp.bind(@))
 
+    @hover = _.throttle((ev) =>
+          @painting.hover(@evPos(ev))
+          @fire('paintingChanged', @painting)
+        , 100)
+
+
   evPos: (ev) ->
     px = (if ev.touches?.length? then [Math.round(ev.touches[0].clientX),
                                        Math.round(ev.touches[0].clientY)] else [ev.x, ev.y])
     return [px[0] / @size[0], px[1] / @size[1]]
 
   onDown: (ev) ->
-    # if it's on an existing one, do selection
-    @stroke = new Stroke(@evPos(ev), '#aaaaaa', @size)
-    @stroke.appendElem(@$.paint)
+    switch @tool
+      when "hover"
+        @onMove(ev)
+      when "paint"
+        # if it's on an existing one, do selection
+        @stroke = new Stroke(@evPos(ev), '#aaaaaa', @size)
+        @stroke.appendElem(@$.paint)
     @scopeSubtree(@$.paint)
 
   onMove: (ev) ->
-    # ..or move selection
-    return unless @stroke
-    @stroke.move(@evPos(ev))
+    switch @tool
+      when "hover"
+        @hover(ev)
+
+      when "paint"
+        # ..or move selection
+        return unless @stroke
+        @stroke.move(@evPos(ev))
 
   onUp: (ev) ->
     return unless @stroke
--- a/light9/web/paint/paint-elements.html	Sun May 28 08:50:56 2017 +0000
+++ b/light9/web/paint/paint-elements.html	Sun May 28 09:05:37 2017 +0000
@@ -1,8 +1,12 @@
+<script src="/lib/underscore/underscore-min.js"></script>
 <link rel="import" href="/lib/polymer/polymer.html">
 <link rel="import" href="/lib/iron-resizable-behavior/iron-resizable-behavior.html">
 <link rel="import" href="/lib/iron-ajax/iron-ajax.html">
+<link rel="import" href="/lib/paper-radio-group/paper-radio-group.html">
+<link rel="import" href="/lib/paper-radio-button/paper-radio-button.html">
 <link rel="import" href="paint-report-elements.html">
 
+
 <dom-module id="light9-paint-canvas">
   <template>
     <style>
@@ -20,6 +24,9 @@
          width: 100%;
          height: 500px;
      }
+     #toolbar {
+         background: #a7a7a7;
+     }
      svg > path {
          fill:none;
          stroke:rgba(255, 255, 255, 0.66);
@@ -31,11 +38,12 @@
      }
     </style>
 
-    <div>
-      tools:
-      - hover spot
-      - paint
-      - erase
+    <div id="toolbar">
+      <paper-radio-group selected="{{tool}}">
+        <paper-radio-button name="hover">hover spot</paper-radio-button>
+        <paper-radio-button name="paint">paint</paper-radio-button>
+        <paper-radio-button name="erase">erase</paper-radio-button>
+      </paper-radio-group>
     </div>
     
     <div id="parent">