Hex Artifact Content
Not logged in

Artifact 667617d60642f61bb50a8748d57e9752542c55c2:


0000: 23 20 41 6e 64 72 6f 69 64 20 64 65 6d 6f 20 66  # Android demo f
0010: 6f 72 20 3c 3c 41 63 63 65 6c 65 72 6f 6d 65 74  or <<Acceleromet
0020: 65 72 3e 3e 20 65 76 65 6e 74 0a 0a 70 72 6f 63  er>> event..proc
0030: 20 73 68 6f 77 61 63 63 65 6c 20 7b 63 61 6e 76   showaccel {canv
0040: 61 73 20 61 78 69 73 20 76 61 6c 75 65 7d 20 7b  as axis value} {
0050: 0a 20 20 20 20 73 65 74 20 69 78 20 30 0a 20 20  .    set ix 0.  
0060: 20 20 73 65 74 20 69 79 20 30 0a 20 20 20 20 69    set iy 0.    i
0070: 66 20 7b 24 61 78 69 73 20 3d 3d 20 31 7d 20 7b  f {$axis == 1} {
0080: 0a 09 73 65 74 20 69 78 20 5b 65 78 70 72 20 7b  ..set ix [expr {
0090: 24 76 61 6c 75 65 20 2f 20 32 35 36 7d 5d 0a 20  $value / 256}]. 
00a0: 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 61 78     } elseif {$ax
00b0: 69 73 20 3d 3d 20 32 7d 20 7b 0a 09 73 65 74 20  is == 2} {..set 
00c0: 69 79 20 5b 65 78 70 72 20 7b 24 76 61 6c 75 65  iy [expr {$value
00d0: 20 2f 20 32 35 36 7d 5d 0a 20 20 20 20 7d 20 65   / 256}].    } e
00e0: 6c 73 65 69 66 20 7b 24 61 78 69 73 20 3d 3d 20  lseif {$axis == 
00f0: 33 7d 20 7b 0a 09 73 65 74 20 3a 3a 70 6f 73 28  3} {..set ::pos(
0100: 74 29 20 5b 65 78 70 72 20 7b 28 24 76 61 6c 75  t) [expr {($valu
0110: 65 20 2f 20 32 35 36 29 20 25 20 33 36 30 7d 5d  e / 256) % 360}]
0120: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 72  .    } else {..r
0130: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20  eturn.    }.    
0140: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
0150: 73 20 3a 3a 70 6f 73 28 78 29 5d 7d 20 7b 0a 09  s ::pos(x)]} {..
0160: 73 65 74 20 3a 3a 70 6f 73 28 78 29 20 5b 65 78  set ::pos(x) [ex
0170: 70 72 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 20  pr [winfo width 
0180: 24 63 61 6e 76 61 73 5d 20 2f 20 34 5d 0a 09 73  $canvas] / 4]..s
0190: 65 74 20 3a 3a 70 6f 73 28 79 29 20 5b 65 78 70  et ::pos(y) [exp
01a0: 72 20 5b 77 69 6e 66 6f 20 68 65 69 67 68 74 20  r [winfo height 
01b0: 24 63 61 6e 76 61 73 5d 20 2f 20 34 5d 0a 09 73  $canvas] / 4]..s
01c0: 65 74 20 3a 3a 70 6f 73 28 74 29 20 30 0a 20 20  et ::pos(t) 0.  
01d0: 20 20 7d 0a 20 20 20 20 73 65 74 20 3a 3a 70 6f    }.    set ::po
01e0: 73 28 78 29 20 5b 65 78 70 72 20 7b 24 3a 3a 70  s(x) [expr {$::p
01f0: 6f 73 28 78 29 20 2b 20 24 69 78 7d 5d 20 0a 20  os(x) + $ix}] . 
0200: 20 20 20 73 65 74 20 3a 3a 70 6f 73 28 79 29 20     set ::pos(y) 
0210: 5b 65 78 70 72 20 7b 24 3a 3a 70 6f 73 28 79 29  [expr {$::pos(y)
0220: 20 2b 20 24 69 79 7d 5d 20 0a 20 20 20 20 69 66   + $iy}] .    if
0230: 20 7b 24 3a 3a 70 6f 73 28 78 29 20 3c 20 35 30   {$::pos(x) < 50
0240: 7d 20 7b 0a 09 73 65 74 20 3a 3a 70 6f 73 28 78  } {..set ::pos(x
0250: 29 20 35 30 0a 20 20 20 20 7d 20 65 6c 73 65 69  ) 50.    } elsei
0260: 66 20 7b 24 3a 3a 70 6f 73 28 78 29 20 3e 20 5b  f {$::pos(x) > [
0270: 77 69 6e 66 6f 20 77 69 64 74 68 20 24 63 61 6e  winfo width $can
0280: 76 61 73 5d 20 2d 20 35 30 7d 20 7b 0a 09 73 65  vas] - 50} {..se
0290: 74 20 3a 3a 70 6f 73 28 78 29 20 5b 65 78 70 72  t ::pos(x) [expr
02a0: 20 7b 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 24   {[winfo width $
02b0: 63 61 6e 76 61 73 5d 20 2d 20 35 30 7d 5d 0a 20  canvas] - 50}]. 
02c0: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 24 3a 3a     }.    if {$::
02d0: 70 6f 73 28 79 29 20 3c 20 35 30 7d 20 7b 0a 09  pos(y) < 50} {..
02e0: 73 65 74 20 3a 3a 70 6f 73 28 79 29 20 35 30 0a  set ::pos(y) 50.
02f0: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 3a      } elseif {$:
0300: 3a 70 6f 73 28 79 29 20 3e 20 5b 77 69 6e 66 6f  :pos(y) > [winfo
0310: 20 68 65 69 67 68 74 20 24 63 61 6e 76 61 73 5d   height $canvas]
0320: 20 2d 20 35 30 7d 20 7b 0a 09 73 65 74 20 3a 3a   - 50} {..set ::
0330: 70 6f 73 28 79 29 20 5b 65 78 70 72 20 7b 5b 77  pos(y) [expr {[w
0340: 69 6e 66 6f 20 68 65 69 67 68 74 20 24 63 61 6e  info height $can
0350: 76 61 73 5d 20 2d 20 35 30 7d 5d 0a 20 20 20 20  vas] - 50}].    
0360: 7d 0a 20 20 20 20 69 66 20 7b 24 61 78 69 73 20  }.    if {$axis 
0370: 3d 3d 20 33 7d 20 7b 0a 09 24 63 61 6e 76 61 73  == 3} {..$canvas
0380: 20 64 65 6c 65 74 65 20 61 0a 09 73 65 74 20 78   delete a..set x
0390: 30 20 5b 65 78 70 72 20 7b 24 3a 3a 70 6f 73 28  0 [expr {$::pos(
03a0: 78 29 20 2d 20 34 38 7d 5d 0a 09 73 65 74 20 78  x) - 48}]..set x
03b0: 31 20 5b 65 78 70 72 20 7b 24 78 30 20 2b 20 39  1 [expr {$x0 + 9
03c0: 36 7d 5d 0a 09 73 65 74 20 79 30 20 5b 65 78 70  6}]..set y0 [exp
03d0: 72 20 7b 24 3a 3a 70 6f 73 28 79 29 20 2d 20 34  r {$::pos(y) - 4
03e0: 38 7d 5d 0a 09 73 65 74 20 79 31 20 5b 65 78 70  8}]..set y1 [exp
03f0: 72 20 7b 24 79 30 20 2b 20 39 36 7d 5d 0a 09 24  r {$y0 + 96}]..$
0400: 63 61 6e 76 61 73 20 63 72 65 61 74 65 20 61 72  canvas create ar
0410: 63 20 24 78 30 20 24 79 30 20 24 78 31 20 24 79  c $x0 $y0 $x1 $y
0420: 31 20 2d 66 69 6c 6c 20 79 65 6c 6c 6f 77 20 2d  1 -fill yellow -
0430: 6f 75 74 6c 69 6e 65 20 72 65 64 20 5c 0a 09 20  outline red \.. 
0440: 20 20 20 2d 77 69 64 74 68 20 36 20 2d 73 74 61     -width 6 -sta
0450: 72 74 20 5b 65 78 70 72 20 7b 33 33 30 20 2d 20  rt [expr {330 - 
0460: 24 3a 3a 70 6f 73 28 74 29 7d 5d 20 2d 65 78 74  $::pos(t)}] -ext
0470: 65 6e 74 20 2d 33 30 30 2e 30 20 2d 74 61 67 73  ent -300.0 -tags
0480: 20 61 0a 09 73 65 74 20 79 32 20 5b 65 78 70 72   a..set y2 [expr
0490: 20 24 79 31 20 2b 20 34 34 5d 0a 09 24 63 61 6e   $y1 + 44]..$can
04a0: 76 61 73 20 63 72 65 61 74 65 20 74 65 78 74 20  vas create text 
04b0: 24 3a 3a 70 6f 73 28 78 29 20 24 79 32 20 2d 66  $::pos(x) $y2 -f
04c0: 69 6c 6c 20 77 68 69 74 65 20 2d 6a 75 73 74 69  ill white -justi
04d0: 66 79 20 63 65 6e 74 65 72 20 5c 0a 09 20 20 20  fy center \..   
04e0: 20 2d 61 6e 67 6c 65 20 24 3a 3a 70 6f 73 28 74   -angle $::pos(t
04f0: 29 20 2d 74 65 78 74 20 22 41 63 63 65 6c 65 72  ) -text "Acceler
0500: 6f 6d 65 74 65 72 5c 6e 44 65 6d 6f 22 20 5c 0a  ometer\nDemo" \.
0510: 09 20 20 20 20 2d 74 61 67 73 20 61 20 2d 66 6f  .    -tags a -fo
0520: 6e 74 20 7b 7b 44 65 6a 61 56 75 20 53 61 6e 73  nt {{DejaVu Sans
0530: 7d 20 31 34 20 62 6f 6c 64 7d 0a 20 20 20 20 7d  } 14 bold}.    }
0540: 0a 7d 0a 0a 77 6d 20 61 74 74 72 69 62 75 74 65  .}..wm attribute
0550: 73 20 2e 20 2d 66 75 6c 6c 73 63 72 65 65 6e 20  s . -fullscreen 
0560: 31 0a 2e 20 63 6f 6e 66 69 67 75 72 65 20 2d 62  1.. configure -b
0570: 67 20 62 6c 61 63 6b 0a 63 61 6e 76 61 73 20 2e  g black.canvas .
0580: 63 20 2d 62 67 20 62 6c 61 63 6b 20 2d 62 64 20  c -bg black -bd 
0590: 30 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63  0 -highlightthic
05a0: 6b 6e 65 73 73 20 30 0a 70 61 63 6b 20 2e 63 20  kness 0.pack .c 
05b0: 2d 73 69 64 65 20 74 6f 70 20 2d 66 69 6c 6c 20  -side top -fill 
05c0: 62 6f 74 68 20 2d 65 78 70 61 6e 64 20 31 20 2d  both -expand 1 -
05d0: 70 61 64 78 20 30 20 2d 70 61 64 79 20 30 0a 73  padx 0 -pady 0.s
05e0: 65 74 20 66 20 5b 6f 70 65 6e 20 5b 69 6e 66 6f  et f [open [info
05f0: 20 73 63 72 69 70 74 5d 5d 0a 2e 63 20 63 72 65   script]]..c cre
0600: 61 74 65 20 74 65 78 74 20 32 30 20 31 32 30 20  ate text 20 120 
0610: 2d 61 6e 63 68 6f 72 20 6e 77 20 2d 74 61 67 20  -anchor nw -tag 
0620: 73 20 2d 66 6f 6e 74 20 7b 43 6f 75 72 69 65 72  s -font {Courier
0630: 20 35 7d 20 2d 74 65 78 74 20 5b 72 65 61 64 20   5} -text [read 
0640: 24 66 5d 20 5c 0a 20 20 20 20 2d 66 69 6c 6c 20  $f] \.    -fill 
0650: 67 72 61 79 35 30 0a 63 6c 6f 73 65 20 24 66 0a  gray50.close $f.
0660: 62 75 74 74 6f 6e 20 2e 63 2e 78 20 2d 74 65 78  button .c.x -tex
0670: 74 20 45 78 69 74 20 2d 63 6f 6d 6d 61 6e 64 20  t Exit -command 
0680: 7b 0a 20 20 20 20 65 78 69 74 20 30 0a 7d 0a 62  {.    exit 0.}.b
0690: 69 6e 64 20 2e 63 2e 78 20 3c 52 65 74 75 72 6e  ind .c.x <Return
06a0: 3e 20 7b 74 6b 3a 3a 42 75 74 74 6f 6e 49 6e 76  > {tk::ButtonInv
06b0: 6f 6b 65 20 25 57 7d 0a 2e 63 20 63 72 65 61 74  oke %W}..c creat
06c0: 65 20 77 69 6e 64 6f 77 20 33 30 20 36 30 20 2d  e window 30 60 -
06d0: 61 6e 63 68 6f 72 20 6e 77 20 2d 74 61 67 20 78  anchor nw -tag x
06e0: 20 2d 77 69 6e 64 6f 77 20 2e 63 2e 78 0a 62 69   -window .c.x.bi
06f0: 6e 64 20 2e 20 3c 3c 41 63 63 65 6c 65 72 6f 6d  nd . <<Accelerom
0700: 65 74 65 72 3e 3e 20 7b 73 68 6f 77 61 63 63 65  eter>> {showacce
0710: 6c 20 2e 63 20 25 73 20 25 78 7d 0a 73 64 6c 74  l .c %s %x}.sdlt
0720: 6b 20 61 63 63 65 6c 65 72 6f 6d 65 74 65 72 20  k accelerometer 
0730: 6f 6e 0a                                         on.