On Sun, 25 Feb 2007 14:52:25 -0500 "Scott White" <[EMAIL PROTECTED]> wrote:
>Hi all, > >I am writing an application that reads medical imaging files (CT, MRI, etc >in DICOM format) and simply displays them. However, I am having trouble >using Gtk2::Gdk::Pixmap. I must use a pixmap since DICOM images are usually >16-bit, and almost always grayscale. >I believe the problem lies within the pixmap method "create_from_data" where >the first parameter is supposed to be a Gtk2::Gtk::Drawable. If I create >just a simple drawable, the program complains that the object is undefined. Yeah, IIRC, if you look at the "scribble" example in the demo, you will see that the main window needs to be up-and-visible, before anything is considered drawable. To test your script, I used a button to launch an image loader sub, after the window was up and running. That avoided the undefined error. The scribble example used the expose and configure events, but I just hacked a button. >So, I get the root window using "get_default_root_window" since the >Gtk2::Gdk::Window is technically a Drawable. I admit to not fully >understanding the difference between Gtk2::Window and Gtk2::Gdk::Window. >From my understanding, the Gtk2::Gdk::Window is the actual window area on the screen, it is a low level window that every widget has, like $widget->window. The problem with Gdk windows is that they are not persistent, if you cover them, their data will dissapear on the next expose event. See: http://perlmonks.org?node_id=583578 for a walk thru on how it works. >Any help would be greatly appreciated, as I'm now wandering around aimlessly >with several baldspots. >Scott I ran into the same problem when I tried to display a sample DICOM, it says " Attempt to draw a drawable with depth 16 to a drawable with depth 24" As I played around, it seems the default depth for the Viewport I tried to write to is 24, and I can't find a place to change it. So I'm guessing you need to unpack the 16 bit file and repack it as 24? And there is the problem of lopping of the header, to get to the actual data. If anyone is interested in playing with this, here is a free sample DICOM image and it's info file. http://barre.nom.fr/medical/samples/files/CT-MONO2-16-brain.gz http://barre.nom.fr/medical/samples/files/CT-MONO2-16-brain.txt As a quick work-around, (until muppet solves this :-) ), there is a Gtk2-c package at http://aeskulap.nongnu.org/, that works well. Maybe you can gleam how they did it? Another option to use, is to convert the DICOM, with ImageMagick, to some format the pixbuf loader likes, such as bmp or png. The IM "display" command seems to display a DICOM image, so I sure it can convert it. Goodluck, zentara -- I'm not really a human, but I play one on earth. http://zentara.net/japh.html _______________________________________________ gtk-perl-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtk-perl-list
