mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	video: Allow temporary colour changes
It is sometimes necessary to highlight some text in a different colour. Add an easy way to do this and then restore the original console colours. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
		| @@ -596,6 +596,26 @@ int vidconsole_select_font(struct udevice *dev, const char *name, uint size) | |||||||
| 	return ops->select_font(dev, name, size); | 	return ops->select_font(dev, name, size); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void vidconsole_push_colour(struct udevice *dev, enum colour_idx fg, | ||||||
|  | 			    enum colour_idx bg, struct vidconsole_colour *old) | ||||||
|  | { | ||||||
|  | 	struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); | ||||||
|  |  | ||||||
|  | 	old->colour_fg = vid_priv->colour_fg; | ||||||
|  | 	old->colour_bg = vid_priv->colour_bg; | ||||||
|  |  | ||||||
|  | 	vid_priv->colour_fg = video_index_to_colour(vid_priv, fg); | ||||||
|  | 	vid_priv->colour_bg = video_index_to_colour(vid_priv, bg); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void vidconsole_pop_colour(struct udevice *dev, struct vidconsole_colour *old) | ||||||
|  | { | ||||||
|  | 	struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); | ||||||
|  |  | ||||||
|  | 	vid_priv->colour_fg = old->colour_fg; | ||||||
|  | 	vid_priv->colour_bg = old->colour_bg; | ||||||
|  | } | ||||||
|  |  | ||||||
| /* Set up the number of rows and colours (rotated drivers override this) */ | /* Set up the number of rows and colours (rotated drivers override this) */ | ||||||
| static int vidconsole_pre_probe(struct udevice *dev) | static int vidconsole_pre_probe(struct udevice *dev) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -71,6 +71,17 @@ struct vidfont_info { | |||||||
| 	const char *name; | 	const char *name; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * struct vidconsole_colour - Holds colour information | ||||||
|  |  * | ||||||
|  |  * @colour_fg:	Foreground colour (pixel value) | ||||||
|  |  * @colour_bg:	Background colour (pixel value) | ||||||
|  |  */ | ||||||
|  | struct vidconsole_colour { | ||||||
|  | 	u32 colour_fg; | ||||||
|  | 	u32 colour_bg; | ||||||
|  | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * struct vidconsole_ops - Video console operations |  * struct vidconsole_ops - Video console operations | ||||||
|  * |  * | ||||||
| @@ -204,6 +215,25 @@ int vidconsole_get_font(struct udevice *dev, int seq, | |||||||
|  */ |  */ | ||||||
| int vidconsole_select_font(struct udevice *dev, const char *name, uint size); | int vidconsole_select_font(struct udevice *dev, const char *name, uint size); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * vidconsole_push_colour() - Temporarily change the font colour | ||||||
|  |  * | ||||||
|  |  * @dev:	Device to adjust | ||||||
|  |  * @fg:		Foreground colour to select | ||||||
|  |  * @bg:		Background colour to select | ||||||
|  |  * @old:	Place to store the current colour, so it can be restored | ||||||
|  |  */ | ||||||
|  | void vidconsole_push_colour(struct udevice *dev, enum colour_idx fg, | ||||||
|  | 			    enum colour_idx bg, struct vidconsole_colour *old); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * vidconsole_pop_colour() - Restore the original colour | ||||||
|  |  * | ||||||
|  |  * @dev:	Device to adjust | ||||||
|  |  * @old:	Old colour to be restored | ||||||
|  |  */ | ||||||
|  | void vidconsole_pop_colour(struct udevice *dev, struct vidconsole_colour *old); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * vidconsole_putc_xy() - write a single character to a position |  * vidconsole_putc_xy() - write a single character to a position | ||||||
|  * |  * | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user