diff options
author | wdenk | 2003-04-20 16:52:09 +0000 |
---|---|---|
committer | wdenk | 2003-04-20 16:52:09 +0000 |
commit | 059ae173e93a4a0aa698ce1e2d87d33cc55cf8c0 (patch) | |
tree | 2eb520e6a89a978a9aa4eb2666eac0fadfcc7539 /common/cmd_bmp.c | |
parent | 824a1ebffece80586d52c343b2f451086154dff8 (diff) |
Add files needed for bitmap load support
Diffstat (limited to 'common/cmd_bmp.c')
-rw-r--r-- | common/cmd_bmp.c | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c new file mode 100644 index 00000000000..c6a16a46cfb --- /dev/null +++ b/common/cmd_bmp.c @@ -0,0 +1,118 @@ +/* + * (C) Copyright 2002 + * Dtlev Zundel, DENX Software Engineering, dzu@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * BMP handling routines + */ + +#include <common.h> +#include <bmp_layout.h> +#include <command.h> + +#if (CONFIG_COMMANDS & CFG_CMD_BMP) + +static int bmp_info (ulong addr); +static int bmp_display (ulong addr); + +/* + * Subroutine: do_bmp + * + * Description: Handler for 'bmp' command.. + * + * Inputs: argv[1] contains the subcommand + * + * Return: None + * + */ +int do_bmp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + ulong addr; + + switch (argc) { + case 2: /* use load_addr as default address */ + addr = load_addr; + break; + case 3: /* use argument */ + addr = simple_strtoul(argv[2], NULL, 16); + break; + default: + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + } + + /* Allow for short names + * Adjust length if more sub-commands get added + */ + if (strncmp(argv[1],"info",1) == 0) { + return (bmp_info(addr)); + } else if (strncmp(argv[1],"display",1) == 0) { + return (bmp_display(addr)); + } else { + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + } +} + +/* + * Subroutine: bmp_info + * + * Description: Show information about bmp file in memory + * + * Inputs: addr address of the bmp file + * + * Return: None + * + */ +static int bmp_info(ulong addr) +{ + bmp_image_t *bmp=(bmp_image_t *)addr; + if (!((bmp->header.signature[0]=='B') && + (bmp->header.signature[1]=='M'))) { + printf("There is no valid bmp file at the given address\n"); + return(1); + } + printf("Image size : %d x %d\n", le32_to_cpu(bmp->header.width), + le32_to_cpu(bmp->header.height)); + printf("Bits per pixel: %d\n", le16_to_cpu(bmp->header.bit_count)); + printf("Compression : %d\n", le32_to_cpu(bmp->header.compression)); + return(0); +} + +/* + * Subroutine: bmp_display + * + * Description: Display bmp file located in memory + * + * Inputs: addr address of the bmp file + * + * Return: None + * + */ +static int bmp_display(ulong addr) +{ + extern int lcd_display_bitmap (ulong); + + return (lcd_display_bitmap (addr)); +} + +#endif /* (CONFIG_COMMANDS & CFG_CMD_BMP) */ |