* grub-core/gfxmenu/theme_loader.c: New global options for the
theme background image handling. desktop-image-scale-method, desktop-image-h-align, desktop-image-v-align. * grub-core/gfxmenu/view.c: Likewise. * include/gfxmenu_view.h: Likewise. * include/bitmap_scale.h: Proportional scale functions introduced. * grub-core/video/bitmap_scale.c: Likewise. Verification checks are put in a separate functions. GRUB_ERR_BUG is set for grub_error in cases of unexpected input variables for scale functions. * docs/grub.texi: Updated documentation for new options.
This commit is contained in:
parent
c573914389
commit
ebc1da55cd
7 changed files with 417 additions and 107 deletions
|
@ -38,6 +38,29 @@ enum grub_video_bitmap_scale_method
|
|||
GRUB_VIDEO_BITMAP_SCALE_METHOD_BILINEAR
|
||||
};
|
||||
|
||||
typedef enum grub_video_bitmap_selection_method
|
||||
{
|
||||
GRUB_VIDEO_BITMAP_SELECTION_METHOD_STRETCH,
|
||||
GRUB_VIDEO_BITMAP_SELECTION_METHOD_CROP,
|
||||
GRUB_VIDEO_BITMAP_SELECTION_METHOD_PADDING,
|
||||
GRUB_VIDEO_BITMAP_SELECTION_METHOD_FITWIDTH,
|
||||
GRUB_VIDEO_BITMAP_SELECTION_METHOD_FITHEIGHT
|
||||
} grub_video_bitmap_selection_method_t;
|
||||
|
||||
typedef enum grub_video_bitmap_v_align
|
||||
{
|
||||
GRUB_VIDEO_BITMAP_V_ALIGN_TOP,
|
||||
GRUB_VIDEO_BITMAP_V_ALIGN_CENTER,
|
||||
GRUB_VIDEO_BITMAP_V_ALIGN_BOTTOM
|
||||
} grub_video_bitmap_v_align_t;
|
||||
|
||||
typedef enum grub_video_bitmap_h_align
|
||||
{
|
||||
GRUB_VIDEO_BITMAP_H_ALIGN_LEFT,
|
||||
GRUB_VIDEO_BITMAP_H_ALIGN_CENTER,
|
||||
GRUB_VIDEO_BITMAP_H_ALIGN_RIGHT
|
||||
} grub_video_bitmap_h_align_t;
|
||||
|
||||
grub_err_t
|
||||
EXPORT_FUNC (grub_video_bitmap_create_scaled) (struct grub_video_bitmap **dst,
|
||||
int dst_width, int dst_height,
|
||||
|
@ -46,4 +69,17 @@ EXPORT_FUNC (grub_video_bitmap_create_scaled) (struct grub_video_bitmap **dst,
|
|||
grub_video_bitmap_scale_method
|
||||
scale_method);
|
||||
|
||||
grub_err_t
|
||||
EXPORT_FUNC (grub_video_bitmap_scale_proportional)
|
||||
(struct grub_video_bitmap **dst,
|
||||
int dst_width, int dst_height,
|
||||
struct grub_video_bitmap *src,
|
||||
enum grub_video_bitmap_scale_method
|
||||
scale_method,
|
||||
grub_video_bitmap_selection_method_t
|
||||
selection_method,
|
||||
grub_video_bitmap_v_align_t v_align,
|
||||
grub_video_bitmap_h_align_t h_align);
|
||||
|
||||
|
||||
#endif /* ! GRUB_BITMAP_SCALE_HEADER */
|
||||
|
|
|
@ -75,6 +75,7 @@ int grub_font_get_string_width (grub_font_t font,
|
|||
|
||||
#include <grub/video.h>
|
||||
#include <grub/bitmap.h>
|
||||
#include <grub/bitmap_scale.h>
|
||||
#include <grub/gui.h>
|
||||
#include <grub/gfxwidgets.h>
|
||||
#include <grub/icon_manager.h>
|
||||
|
@ -94,7 +95,11 @@ struct grub_gfxmenu_view
|
|||
grub_video_rgba_color_t title_color;
|
||||
grub_video_rgba_color_t message_color;
|
||||
grub_video_rgba_color_t message_bg_color;
|
||||
struct grub_video_bitmap *desktop_image;
|
||||
struct grub_video_bitmap *raw_desktop_image;
|
||||
struct grub_video_bitmap *scaled_desktop_image;
|
||||
grub_video_bitmap_selection_method_t desktop_image_scale_method;
|
||||
grub_video_bitmap_h_align_t desktop_image_h_align;
|
||||
grub_video_bitmap_v_align_t desktop_image_v_align;
|
||||
grub_video_rgba_color_t desktop_color;
|
||||
grub_gfxmenu_box_t terminal_box;
|
||||
char *title_text;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue