1#!/usr/bin/tclsh
2#
3# This script displays the field of rectangles used by --testset rtree
4# of speedtest1.  Run this script as follows:
5#
6#      rm test.db
7#      ./speedtest1 --testset rtree --size 25 test.db
8#      sqlite3 --separator ' ' test.db 'SELECT * FROM rt1' >data.txt
9#      wish show_speedtest1_rtree.tcl
10#
11# The filename "data.txt" is hard coded into this script and so that name
12# must be used on lines 3 and 4 above.  Elsewhere, different filenames can
13# be used.  The --size N parameter can be adjusted as desired.
14#
15package require Tk
16set f [open data.txt rb]
17set data [read $f]
18close $f
19canvas .c
20frame .b
21button .b.b1 -text X-Y -command refill-xy
22button .b.b2 -text X-Z -command refill-xz
23button .b.b3 -text Y-Z -command refill-yz
24pack .b.b1 .b.b2 .b.b3 -side left
25pack .c -side top -fill both -expand 1
26pack .b -side top
27proc resize_canvas_to_fit {} {
28  foreach {x0 y0 x1 y1} [.c bbox all] break
29  set w [expr {$x1-$x0}]
30  set h [expr {$y1-$y0}]
31  .c config -width $w -height $h
32}
33proc refill-xy {} {
34  .c delete all
35  foreach {id x0 x1 y0 y1 z0 z1} $::data {
36    .c create rectangle $x0 $y0 $x1 $y1
37  }
38  .c scale all 0 0 0.05 0.05
39  resize_canvas_to_fit
40}
41proc refill-xz {} {
42  .c delete all
43  foreach {id x0 x1 y0 y1 z0 z1} $::data {
44    .c create rectangle $x0 $z0 $x1 $z1
45  }
46  .c scale all 0 0 0.05 0.05
47  resize_canvas_to_fit
48}
49proc refill-yz {} {
50  .c delete all
51  foreach {id x0 x1 y0 y1 z0 z1} $::data {
52    .c create rectangle $y0 $z0 $y1 $z1
53  }
54  .c scale all 0 0 0.05 0.05
55  resize_canvas_to_fit
56}
57refill-xy
58