comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: X and tvrd color scaling problem
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: X and tvrd color scaling problem [message #37532 is a reply to message #37531] Mon, 05 January 2004 21:22 Go to previous messageGo to previous message
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
Michael Wallace writes:

> I'm having a strange problem with tvrd(). When using the Z buffer
> everything behaves as I expect. However, when using X tvrd() doesn't
> seem to scale the colors correctly.
>
> For an example, I created a new window and added a colorbar. In the
> window, everything looks normal. But, if I grab the image with tvrd()
> and then immediately display it with tv, the colors get scaled
> incorrectly and there's a lot of white which is index 255 of the color
> table I'm using.
>
> ; create a window and a colorbar (a la Coyote)
> device, DECOMPOSE = 0
> loadct, 39
> window, XSIZE = 400, YSIZE = 400
> colorbar, format = '(A1)'
>
> ; everything looks normal so far...
> ; grab the image and display it with tv
> image = tvrd()
> tv, image
>
> ; what happened?! the scaling is funky and there's a lot of white!
>
>
> However, if I use the Z buffer, everything behaves as I expect.
>
> ; create an image and a colorbar (a la Coyote)
> device, DECOMPOSE = 0
> loadct, 39
> set_plot, 'Z', /COPY
> device, SET_RESOLUTION = [400, 400]
> colorbar, format = '(A1)'
>
> ; grab the image and switch back to X to display it
> image = tvrd()
> set_plot, 'X'
> window, XSIZE = 400, YSIZE = 400
> tv, image
>
> ; the image looks normal and there's no weird scaling
>
>
> What gives? Why doesn't the X method capture the image correctly?

The X window has a depth of 24 bits, whereas the Z buffer
has a depth of 8 bits. When you use TVRD in the way you
are on a 24-bit device the value that is returned to you
as the "value" of that pixel is the largest of the
values in the red, green, and blue planes. Not what you
want at all.

The solution depends on what it is you are trying
to do, but let's just say this is why some of us
invented programs like TVREAD and TVIMAGE. :-)

Something like this:

image = TVRD(True=1)

Followed by TV, image, TRUE=1 should work.

Cheers,

David
--
David W. Fanning, Ph.D.
Fanning Software Consulting, Inc.
Phone: 970-221-0438, E-mail: david@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Is_netCDF Function
Next Topic: Re: Transparent IDLgrImage ?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 10:09:54 PDT 2025

Total time taken to generate the page: 0.40233 seconds