Brian Silverman | 6ae77dd | 2013-03-29 22:28:08 -0700 | [diff] [blame^] | 1 | require "socket" |
| 2 | |
| 3 | require "bmp" |
| 4 | sock = TCPSocket.new(ARGV[0] || "fitpc",8020) |
| 5 | $width = 640 / 2 |
| 6 | $height = 480 / 2 |
| 7 | $header = BMPHeader.new($width,$height).text() |
| 8 | |
| 9 | |
| 10 | |
| 11 | require "rubygems" |
| 12 | require "gtk2" |
| 13 | |
| 14 | |
| 15 | $image = Gtk::Image.new() |
| 16 | $window = Gtk::Window.new() |
| 17 | $window.add($image) |
| 18 | $window.show_all() |
| 19 | $window.signal_connect("delete-event") { Gtk.main_quit} |
| 20 | |
| 21 | loader = Gdk::PixbufLoader.new |
| 22 | loader.write($header) |
| 23 | data = sock.read($width * $height * 3) |
| 24 | loader.last_write(data) |
| 25 | loader.close |
| 26 | $image.pixbuf = loader.pixbuf |
| 27 | $oldtime = Time.now |
| 28 | i = 0 |
| 29 | Gtk.idle_add do |
| 30 | loader = Gdk::PixbufLoader.new |
| 31 | loader.write($header) |
| 32 | data = sock.read($width * $height * 3) |
| 33 | # (640 * 480).times do |i| #BGR -> RGB |
| 34 | # b,g,r = data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2] |
| 35 | # data[i * 3 + 0],data[i * 3 + 1],data[i * 3 + 2] = r,g,b |
| 36 | # end |
| 37 | loader.last_write(data) |
| 38 | loader.close |
| 39 | new_time = Time.now() |
| 40 | puts 1 / (new_time - $oldtime) |
| 41 | $oldtime = new_time |
| 42 | $image.pixbuf = loader.pixbuf |
| 43 | end |
| 44 | |
| 45 | Gtk.main() |