Ross improved on a script from Matt to do web page thumbnails.
Here is the same written C#, Gtk# and Gecko#.
using System;
using Gtk;
using Gecko;
class X {
static WebControl wc;
static string output = "shot.png";
static string url;
static int width = -1;
static int height = -1;
static void Main (string [] args)
{
for (int i = 0; i < args.Length; i++){
switch (args [i]){
case "-width":
try {
i++;
width = Int32.Parse (args [i]);
} catch {
Console.WriteLine ("-width requires an numeric argument");
}
break;
case "-height":
try {
i++;
height = Int32.Parse (args [i]);
} catch {
Console.WriteLine ("-height requires an numeric argument");
}
break;
case "-help":
case "-h":
Help ();
break;
default:
if (url == null)
url = args [i];
else if (output == null)
output = args [i];
else
Help ();
break;
}
}
Application.Init();
Window w = new Window ("test");
wc = new WebControl ();
wc.LoadUrl (args [0]);
wc.NetStop += MakeShot;
wc.Show ();
wc.SetSizeRequest (1024, 768);
w.Add (wc);
w.ShowAll ();
Application.Run();
}
static void Help ()
{
Console.WriteLine ("Usage is: shot [-width N] [-height N] url [shot]");
Environment.Exit (0);
}
static void MakeShot (object sender, EventArgs a)
{
Gdk.Window win = wc.GdkWindow;
int iwidth = wc.Allocation.Width;
int iheight = wc.Allocation.Height;
Gdk.Pixbuf p = new Gdk.Pixbuf (Gdk.Colorspace.Rgb, false, 8, iwidth, iheight);
Gdk.Pixbuf scaled;
p.GetFromDrawable (win, win.Colormap, 0, 0, 0, 0, iwidth, iheight);
if (width == -1){
if (height == -1)
scaled = p;
else
scaled = p.ScaleSimple (height * iwidth / iheight, height, Gdk.InterpType.Hyper);
} else {
if (height == -1)
scaled = p.ScaleSimple (width, width * iheight / iwidth, Gdk.InterpType.Hyper);
else
scaled = p.ScaleSimple (width, height, Gdk.InterpType.Hyper);
}
scaled.Savev (output, "png", null, null);
Application.Quit ();
}
}
Posted on 14 Jun 2004