CLIM mail archive
[Prev][Next][Index][Thread]
[spr10291] Bug-report: Palette-Full
Date: Fri, 18 Feb 94 19:38:34 PST
From: Colin Meldrum <colin@franz.com>
Class: bh
Bh-Id: spr10291
Bh: append spr10291 expire
Your problem report has been assigned a tracking id of spr10291.
Please use this id in the subject line of any mail related to
it so that we may better track communication on your inquiry.
Also, please address mail to bugs@franz.com as well as me,
so your questions can be answered if I am unavailable.
From: Daniel Cerys <cerys@BBN.COM>
Date: Tue, 15 Feb 94 13:26:35 EST
[Allegro 4.2 - CLIM 2.0]
[Franz] CLIM has a very ungraceful method of informing the user that there
are no more colors in the colormap to be allocated (signalling this error).
In cases where an exact color match can't be found and there aren't any
colors to be allocated, CLIM should instead (by default) find the closest
match among the shared color cells of the X display and use that instead.
Some developers may wish an error to be signalled in this case, but I
expect that the majority would prefer the closest-match alternative to be
the default behavior.
I disagree. I think that in this situation the application it is up to
the application to decide how best to deal with situation. Different
applications would want to behave differently. For example if you
start up an xterm with an unallocated background color when the X
colormap is full it uses white (and black for fg) rather than the
nearest color.
The idea behind the palette-full condition is so that applications can
set up their own handlers and take the most appropriate action. The
problem is that if your error handler does want to find and use a
closely matching color, it is stuck because there are no restarts
available and it's too late to change say an :ink option because
you're deep down in low level code.
I think that providing a restart like use-alternative-color which
does the obvious thing would solve the first problem (and perhaps even
provide a restart called use-nearest-color). I've filed rfe's to have
these considered for a future release.
I think that such restarts would be quite useful. It might suffice to
provide a FIND-CLOSEST-COLOR g-f that takes two args, a palette and a
color. Then people can write there own restarts.
In terms of the problem with the error happening to late. You can
always force the colors to be allocated before any drawing occurs
with:
add-colors-to-palette palette &rest colors
Alternatively (and this should NOT be the default), a developer may wish to
allocate a completely separate X colormap for the CLIM application. Again,
this shouldn't be the default.
In Allegro CLIM this can be done with something like
(make-application-frame 'test
:frame-manager
(let ((port (find-port)))
(find-frame-manager :port port :palette (make-palette port))))
This is not the default.
Just in case it's not clear, the important bit in the fragment above
is the creation of the new "colormap" via MAKE-PALETTE.
Follow-Ups:
References:
Main Index |
Thread Index