1. palette stuff again

David,
I tried your convertToPalette () function and I couldn't get it to work
the way that I wanted. I changed my function to call yours and actually
change the picture to use the standard palette. Here's what I'm doing;
tell me if I'm totally doing something wrong or if this just doesnt work
in graphics_mode (18).


global function new_pal (sequence pal_n_pic)
-- this function makes a bitmap work with the standard palette
-- call this function BEFORE you call all_palette
    object index, pic
    pic = pal_n_pic [2]
    index = convertToPalette (pal_n_pic [1])
    -- giving visual aid to what's happening
    position (1,1)
    puts (1, "Converting bitmap to normal palette:\n[" &
        repeat (' ', length(pic [1])+1) & "]")
    position (2,2)
    for x = 1 to length (pic) do
        if integer (x) then puts (1, "#") end if
        for y = 1 to length (pic [x]) do
            pic [x] [y] = find (pic [x] [y], index) -1
        end for
    end for
    puts (1, "\n Complete, thank you for waiting")
    return {get_all_palette (), pic}
end function

TIA
Lewis Townsend

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

new topic     » topic index » view message » categorize

2. Re: palette stuff again

Hi, Lewis.

convertToPalette generates sequence of what to replace the color indexes by.
Remember that the first item in the sequence is at index zero, not one. So
if convertToPalette returned a sequence like this:

        { 1,0,2 }

It means:

   change palette color reference from    into
   -----------------------------------    ----
   0                                      1
   1                                      0
   2                                      2

So the code should be something like this:

-------------------------------------
sequence bmp, pal, image, change

-- read the bitmap
bmp = read_bitmap( "foo.bmp" )

-- separate into pal and image
pal = bmp[1]
image = bmp[2]

-- determine the replacement colors
change = convertToPalette (pal)

-- replace the image indexes with new indexes
for i = 1 to length( image ) do
   image[i] = change[ image[i]+1 ]
end for

-------------------------------------

Hope this helps!

-- David Cuny

new topic     » goto parent     » topic index » view message » categorize

3. Re: palette stuff again

Thanks again David,

That works except that my image was two dimensional so instead of:

>for i = 1 to length( image ) do
>   image[i] = change[ image[i]+1 ]
>end for

I had to do something more like this

for x = 1 to length (pic) do
    for y = 1 to length (pic [x]) do
        pic [x] [y] = index [pic [x] [y] + 1]
    end for
end for

The routine couldn't find matches for bright_cyan, orange,
yellow, and white.  The bright red color was changed to a
darker red.  However it's a heck of alot better than what
I had before!

thanks again,
Lewis Townsend

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu