Skip to contentSkip to conversation

grub-core/gfxmenu/widget-box.c - bugfix: incorrect drawing in cases of NULL center slice

PATCH In review Vladimir Testov 2 participants 3 messages Jul 17, 2013 – Jul 22, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 grub-core/gfxmenu/widget-box.c - bugfix: incorrect drawing in cases of NULL center slice

See screenshots included.

If the center slice is NULL then west or north slice is also NULL so the height_n or width_w is also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.

Signature · 4 lines
With best regards,
_______________________________
Vladimir Testov, ROSA Laboratory.
www.rosalab.ru
grub-core/gfxmenu/widget-box.c +2 -2
diff -Naur grub-2.01/grub-core/gfxmenu/widget-box.c grub-box-draw/grub-core/gfxmenu/widget-box.c
@@ -81,8 +81,8 @@
   int height_n;
   int width_w;
 
-  height_n = get_height (self->scaled_pixmaps[BOX_PIXMAP_N]);
-  width_w = get_width (self->scaled_pixmaps[BOX_PIXMAP_W]);
+  height_n = get_height (self->raw_pixmaps[BOX_PIXMAP_N]);
+  width_w = get_width (self->raw_pixmaps[BOX_PIXMAP_W]);
 
   /* Draw sides.  */
   blit (self, BOX_PIXMAP_N, x + width_w, y);
#1 lore raw

В Wed, 17 Jul 2013 21:55:58 +0400
Vladimir Testov <[email protected]> пишет:

Quoted 3 lines

See screenshots included.

If the center slice is NULL then west or north slice is also NULL

Why? As far as I can tell code is supposed to scale all parts of bitmap. What triggers this problem?

Quoted 5 lines

so the
height_n or width_w is also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.

This looks more like a workaround for some other problem. Also while currently width (for W) or height (for N) does not change, it may be reimplemented in the future. In this case this patch will create hard to spot bug.

#2 lore raw
Quoted 9 lines · Andrey Borzenkov

В Wed, 17 Jul 2013 21:55:58 +0400

Vladimir Testov <[email protected]> пишет:

Quoted 3 lines

See screenshots included.

If the center slice is NULL then west or north slice is also NULL

Why? As far as I can tell code is supposed to scale all parts of bitmap. What triggers this problem?

Code is supposed to scale all parts of a bitmap. Yes.

It does actually. But if the bitmap's size is zero then scaled bitmap won't be created.

There are two arrays of bitmaps: original and scaled. Some of the scaled bitmaps can be non-existent. And for correct drawing of the styled box with some zero sizes (e.g. very short scrollbar thumb, it's west slice will have zero height) will be drawn incorrectly because the west SCALED bitmap wasn't created. The west slice is scaled horizontally. It's width should be always the same as the ORIGINAL west slice's width.

So if we would like to draw a styled box correctly we should take original west slice's width. (of height of the north slice).

Quoted 8 lines
Quoted 5 lines

so the

height_n or width_w is also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.

Quoted 4 lines

This looks more like a workaround for some other problem. Also while currently width (for W) or height (for N) does not change, it may be reimplemented in the future. In this case this patch will create hard to spot bug.

No, this is not a workaround for some other problem.
As I understand, it's the idea of the styled box - make corner slices be constant and others to be correspondingly scaled. And sizes of the bitmaps should be correct. (e.g. widths of W, NW, SW are the same)

If this conception is about to change then themes written before won't be corrcectly shown. I mean loosing of backward compatibility.

I don't see how the styled box concepts are going to change... Could you please give an example of the concept?

I still think this patch is needed and that it's correct.

Maybe it should be modified to correspond some ideas.

And maybe the styled box algorithms should be updated. :)

Thanks for the reply!

Signature · 4 lines
With best regards,
_______________________________
Vladimir Testov, ROSA Laboratory.
www.rosalab.ru