Why don't we just fill in a full value of 255 for all the cases where it
returns 3 values? If we make every call return four values, and warn about
this in the documentation, it becomes very consistent.

-Tyler

On Tue, Jun 16, 2009 at 11:52 PM, Lenard Lindstrom <le...@telus.net> wrote:

> René Dudfield wrote:
>
>> On Wed, Jun 17, 2009 at 4:29 PM, Lenard Lindstrom<le...@telus.net> wrote:
>>
>>
>>> René Dudfield wrote:
>>>
>>>
>>>> Hi,
>>>>
>>>> one issue with the new Color type is unpacking to r,g,b or r,g,b,a.
>>>>
>>>> In some places Color is assumed to return (r,g,b) and others
>>>> (r,g,b,a), and now many things return a Color rather than a tuple.
>>>>
>>>> So I want to change Color to unpack to r,g,b,a or r,g,b.
>>>>
>>>> r,g,b = pygame.Color(1,2,3,4)
>>>> r,g,b,a = pygame.Color(1,2,3,4)
>>>>
>>>> Anyone have an idea how this can work?  Either in C or python?
>>>>
>>>> This is to keep backwards compatibility.
>>>>
>>>>
>>>> cheers,
>>>>
>>>>
>>>>
>>> Hi René,
>>>
>>> Are there cases where this is breaking code? For the most part I believe
>>> Pygame functions returned 4-tuples. So Color is just pretty much a
>>> drop-in
>>> replacement. If a program is using tuples to declare color values then
>>> the
>>> size is already known and unpacking is not a problem. It is
>>> Surface.get_palette and get_palette_at, which originally returned
>>> 3-tuples,
>>> where we run into problems. So here are the choices I see. One, just
>>> accept
>>> that the new get_palette and get_palette_at will break things, just as
>>> any
>>> program that tries to use a color return value as a dictionary key will
>>> now
>>> break. How many programs actually use color palettes anyway? Two, give
>>> Color
>>> a size property. If alpha is set None it becomes length 3. But then how
>>> does
>>> one represent this internally without adding another field to the Color C
>>> structure? Declare the color component values as C ints? Three, create a
>>> new
>>> Color subtype of length 3 having a fixed alpha of 255. I'm not happy with
>>> any of the choices but prefer three. Any other ideas?
>>>
>>> Lenard
>>>
>>>
>>>
>>>
>>
>> hi,
>>
>> yeah for example in solarwolf:
>>  File "solarwolf-1.5/code/gamemenu.py", line 70, in load_game_resources
>>    pal = [(g,g,b) for (r,g,b) in origpal]
>>
>>  File "solarwolf-1.5/code/objshot.py", line 28, in load_game_resources
>>    for (r,g,b) in origpal]
>>
>>
>> hrmm.  I think a 3 element Color subtype might be the way to go.
>> Maybe we don't even need a subtype, but just a length property that
>> can be 1,2,3, or 4?  As you say get_palette(_at) could return len 3
>> Colors.
>>
>> If it could unpack to 3, or 4 depending on the number of elements on
>> the left, I think I'd prefer that though.
>>
>>
>>
>>
>>
> Hi,
>
> Well yes, but now you are have something that is basically an integer
> array, including the additional overhead.
>
> Lenard
>
>


-- 
Visit my blog at http://oddco.ca/zeroth/zblog

Reply via email to