make sure we calculate the right number of columns and don't render more

2006-11-01  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpviewrendererpalette.c
	(gimp_view_renderer_palette_render): make sure we calculate the
	right number of columns and don't render more cells than columns
	in one row.
This commit is contained in:
Michael Natterer 2006-11-01 03:15:51 +00:00 committed by Michael Natterer
parent a16e7158db
commit 5d48aa2f62
2 changed files with 20 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2006-11-01 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpviewrendererpalette.c
(gimp_view_renderer_palette_render): make sure we calculate the
right number of columns and don't render more cells than columns
in one row.
2006-11-01 Sven Neumann <sven@gimp.org>
* plug-ins/common/lcms.c: improved dialog.

View File

@ -84,6 +84,7 @@ gimp_view_renderer_palette_render (GimpViewRenderer *renderer,
guchar *row;
guchar *dest_row;
GList *list;
gdouble cell_width;
gint y;
palette = GIMP_PALETTE (renderer->viewable);
@ -97,22 +98,23 @@ gimp_view_renderer_palette_render (GimpViewRenderer *renderer,
if (renderpal->cell_size > 0)
{
if (palette->n_columns > 1)
renderpal->cell_width = MAX (renderpal->cell_size,
renderer->width / palette->n_columns);
cell_width = MAX ((gdouble) renderpal->cell_size,
(gdouble) renderer->width /
(gdouble) palette->n_columns);
else
renderpal->cell_width = renderpal->cell_size;
cell_width = renderpal->cell_size;
}
else
{
if (palette->n_columns > 1)
renderpal->cell_width = renderer->width / palette->n_columns;
cell_width = (gdouble) renderer->width / (gdouble) palette->n_columns;
else
renderpal->cell_width = renderer->width / 16;
cell_width = (gdouble) renderer->width / 16.0;
}
renderpal->cell_width = MAX (4, renderpal->cell_width);
renderpal->cell_width = MAX (4.0, cell_width);
renderpal->columns = renderer->width / renderpal->cell_width;
renderpal->columns = (gdouble) renderer->width / cell_width;
renderpal->rows = palette->n_colors / renderpal->columns;
if (palette->n_colors % renderpal->columns)
@ -140,6 +142,7 @@ gimp_view_renderer_palette_render (GimpViewRenderer *renderer,
{
guchar r, g, b;
gint x;
gint n = 0;
guchar *p = row;
memset (row,
@ -152,11 +155,13 @@ gimp_view_renderer_palette_render (GimpViewRenderer *renderer,
{
if ((x % renderpal->cell_width) == 0)
{
if (list && renderer->width - x >= renderpal->cell_width)
if (list && n < renderpal->columns &&
renderer->width - x >= renderpal->cell_width)
{
GimpPaletteEntry *entry = list->data;
list = g_list_next (list);
n++;
gimp_rgb_get_uchar (&entry->color, &r, &g, &b);
}