Hex Artifact Content
Not logged in

Artifact 3249f06d13bb8cc12fec03904b2d1f457d9990bd:


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 50 69 6e 63 68 54 6f 5a 6f 6f 6d  or <<PinchToZoom
0020: 3e 3e 20 65 76 65 6e 74 0a 0a 70 72 6f 63 20 73  >> event..proc s
0030: 68 6f 77 7a 6f 6f 6d 20 7b 63 61 6e 76 61 73 20  howzoom {canvas 
0040: 72 6f 6f 74 78 20 72 6f 6f 74 79 20 64 69 73 74  rootx rooty dist
0050: 20 61 6e 67 6c 65 20 73 74 61 74 65 7d 20 7b 0a   angle state} {.
0060: 20 20 20 20 24 63 61 6e 76 61 73 20 69 74 65 6d      $canvas item
0070: 63 6f 6e 66 20 74 20 2d 74 65 78 74 20 22 58 59  conf t -text "XY
0080: 3a 20 24 72 6f 6f 74 78 2c 24 72 6f 6f 74 79 20  : $rootx,$rooty 
0090: 4c 3a 20 24 64 69 73 74 20 50 3a 20 24 61 6e 67  L: $dist P: $ang
00a0: 6c 65 20 53 3a 20 24 73 74 61 74 65 22 0a 20 20  le S: $state".  
00b0: 20 20 24 63 61 6e 76 61 73 20 64 65 6c 65 74 65    $canvas delete
00c0: 20 61 0a 20 20 20 20 23 20 73 74 61 74 65 20 30   a.    # state 0
00d0: 20 2d 3e 20 7a 6f 6f 6d 20 6d 6f 74 69 6f 6e 0a   -> zoom motion.
00e0: 20 20 20 20 23 20 73 74 61 74 65 20 31 20 2d 3e      # state 1 ->
00f0: 20 7a 6f 6f 6d 20 73 74 61 72 74 0a 20 20 20 20   zoom start.    
0100: 23 20 73 74 61 74 65 20 32 20 2d 3e 20 7a 6f 6f  # state 2 -> zoo
0110: 6d 20 65 6e 64 2c 20 31 73 74 20 66 69 6e 67 65  m end, 1st finge
0120: 72 20 75 70 0a 20 20 20 20 23 20 73 74 61 74 65  r up.    # state
0130: 20 33 20 2d 3e 20 7a 6f 6f 6d 20 65 6e 64 2c 20   3 -> zoom end, 
0140: 32 6e 64 20 66 69 6e 67 65 72 20 75 70 0a 20 20  2nd finger up.  
0150: 20 20 69 66 20 7b 24 73 74 61 74 65 20 3c 20 32    if {$state < 2
0160: 7d 20 7b 0a 09 73 65 74 20 70 68 69 20 5b 65 78  } {..set phi [ex
0170: 70 72 20 7b 24 61 6e 67 6c 65 20 2f 20 36 34 2e  pr {$angle / 64.
0180: 30 7d 5d 0a 09 73 65 74 20 78 30 20 5b 65 78 70  0}]..set x0 [exp
0190: 72 20 7b 24 72 6f 6f 74 78 20 2d 20 5b 77 69 6e  r {$rootx - [win
01a0: 66 6f 20 72 6f 6f 74 78 20 24 63 61 6e 76 61 73  fo rootx $canvas
01b0: 5d 20 2d 20 24 64 69 73 74 20 2f 20 32 7d 5d 0a  ] - $dist / 2}].
01c0: 09 73 65 74 20 78 31 20 5b 65 78 70 72 20 7b 24  .set x1 [expr {$
01d0: 78 30 20 2b 20 24 64 69 73 74 7d 5d 0a 09 73 65  x0 + $dist}]..se
01e0: 74 20 79 30 20 5b 65 78 70 72 20 7b 24 72 6f 6f  t y0 [expr {$roo
01f0: 74 79 20 2d 20 5b 77 69 6e 66 6f 20 72 6f 6f 74  ty - [winfo root
0200: 79 20 24 63 61 6e 76 61 73 5d 20 2d 20 24 64 69  y $canvas] - $di
0210: 73 74 20 2f 20 32 7d 5d 0a 09 73 65 74 20 79 31  st / 2}]..set y1
0220: 20 5b 65 78 70 72 20 7b 24 79 30 20 2b 20 24 64   [expr {$y0 + $d
0230: 69 73 74 7d 5d 0a 09 24 63 61 6e 76 61 73 20 63  ist}]..$canvas c
0240: 72 65 61 74 65 20 61 72 63 20 24 78 30 20 24 79  reate arc $x0 $y
0250: 30 20 24 78 31 20 24 79 31 20 2d 66 69 6c 6c 20  0 $x1 $y1 -fill 
0260: 79 65 6c 6c 6f 77 20 2d 6f 75 74 6c 69 6e 65 20  yellow -outline 
0270: 72 65 64 20 2d 77 69 64 74 68 20 36 20 5c 0a 09  red -width 6 \..
0280: 20 20 20 20 2d 73 74 61 72 74 20 5b 65 78 70 72      -start [expr
0290: 20 7b 33 33 30 20 2d 20 24 70 68 69 7d 5d 20 2d   {330 - $phi}] -
02a0: 65 78 74 65 6e 74 20 2d 33 30 30 2e 30 20 2d 74  extent -300.0 -t
02b0: 61 67 73 20 61 0a 20 20 20 20 7d 0a 7d 0a 0a 77  ags a.    }.}..w
02c0: 6d 20 61 74 74 72 69 62 75 74 65 73 20 2e 20 2d  m attributes . -
02d0: 66 75 6c 6c 73 63 72 65 65 6e 20 31 0a 2e 20 63  fullscreen 1.. c
02e0: 6f 6e 66 69 67 75 72 65 20 2d 62 67 20 62 6c 61  onfigure -bg bla
02f0: 63 6b 0a 73 64 6c 74 6b 20 74 6f 75 63 68 74 72  ck.sdltk touchtr
0300: 61 6e 73 6c 61 74 65 20 31 35 20 3b 23 20 74 75  anslate 15 ;# tu
0310: 72 6e 20 3c 3c 50 69 6e 63 68 54 6f 5a 6f 6f 6d  rn <<PinchToZoom
0320: 3e 3e 20 6f 6e 0a 63 61 6e 76 61 73 20 2e 63 20  >> on.canvas .c 
0330: 2d 62 67 20 62 6c 61 63 6b 20 2d 62 64 20 30 20  -bg black -bd 0 
0340: 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e  -highlightthickn
0350: 65 73 73 20 30 0a 70 61 63 6b 20 2e 63 20 2d 73  ess 0.pack .c -s
0360: 69 64 65 20 74 6f 70 20 2d 66 69 6c 6c 20 62 6f  ide top -fill bo
0370: 74 68 20 2d 65 78 70 61 6e 64 20 31 20 2d 70 61  th -expand 1 -pa
0380: 64 78 20 30 20 2d 70 61 64 79 20 30 0a 73 65 74  dx 0 -pady 0.set
0390: 20 66 20 5b 6f 70 65 6e 20 5b 69 6e 66 6f 20 73   f [open [info s
03a0: 63 72 69 70 74 5d 5d 0a 2e 63 20 63 72 65 61 74  cript]]..c creat
03b0: 65 20 74 65 78 74 20 33 30 20 31 32 30 20 2d 61  e text 30 120 -a
03c0: 6e 63 68 6f 72 20 6e 77 20 2d 74 61 67 20 73 20  nchor nw -tag s 
03d0: 2d 66 6f 6e 74 20 7b 43 6f 75 72 69 65 72 20 35  -font {Courier 5
03e0: 7d 20 2d 74 65 78 74 20 5b 72 65 61 64 20 24 66  } -text [read $f
03f0: 5d 20 5c 0a 20 20 20 20 2d 66 69 6c 6c 20 67 72  ] \.    -fill gr
0400: 61 79 35 30 0a 63 6c 6f 73 65 20 24 66 0a 2e 63  ay50.close $f..c
0410: 20 63 72 65 61 74 65 20 74 65 78 74 20 33 30 20   create text 30 
0420: 33 30 20 2d 61 6e 63 68 6f 72 20 77 20 2d 66 69  30 -anchor w -fi
0430: 6c 6c 20 67 72 65 65 6e 20 2d 74 61 67 20 74 20  ll green -tag t 
0440: 2d 66 6f 6e 74 20 7b 48 65 6c 76 65 74 69 63 61  -font {Helvetica
0450: 20 31 35 7d 20 5c 0a 20 20 20 20 2d 74 65 78 74   15} \.    -text
0460: 20 22 54 72 79 20 70 69 6e 63 68 2d 74 6f 2d 7a   "Try pinch-to-z
0470: 6f 6f 6d 20 77 69 74 68 20 74 77 6f 20 66 69 6e  oom with two fin
0480: 67 65 72 73 22 0a 62 75 74 74 6f 6e 20 2e 63 2e  gers".button .c.
0490: 78 20 2d 74 65 78 74 20 45 78 69 74 20 2d 63 6f  x -text Exit -co
04a0: 6d 6d 61 6e 64 20 7b 65 78 69 74 20 30 7d 0a 2e  mmand {exit 0}..
04b0: 63 20 63 72 65 61 74 65 20 77 69 6e 64 6f 77 20  c create window 
04c0: 33 30 20 36 30 20 2d 61 6e 63 68 6f 72 20 6e 77  30 60 -anchor nw
04d0: 20 2d 74 61 67 20 78 20 2d 77 69 6e 64 6f 77 20   -tag x -window 
04e0: 2e 63 2e 78 0a 62 69 6e 64 20 2e 63 20 3c 3c 50  .c.x.bind .c <<P
04f0: 69 6e 63 68 54 6f 5a 6f 6f 6d 3e 3e 20 7b 73 68  inchToZoom>> {sh
0500: 6f 77 7a 6f 6f 6d 20 25 57 20 25 58 20 25 59 20  owzoom %W %X %Y 
0510: 25 78 20 25 79 20 25 73 7d 0a                    %x %y %s}.