aboutsummaryrefslogtreecommitdiff
path: root/source/nds/draw.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/nds/draw.h')
-rw-r--r--source/nds/draw.h207
1 files changed, 207 insertions, 0 deletions
diff --git a/source/nds/draw.h b/source/nds/draw.h
new file mode 100644
index 0000000..3bdf5be
--- /dev/null
+++ b/source/nds/draw.h
@@ -0,0 +1,207 @@
+/* draw.h
+ *
+ * Copyright (C) 2010 dking <dking024@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licens e 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __DRAW_H__
+#define __DRAW_H__
+
+#include "ds2_types.h"
+#include "ds2io.h"
+#include "bdf_font.h"
+
+#define NDS_SCREEN_WIDTH 256
+#define NDS_SCREEN_HEIGHT 192
+#define NDS_SCREEN_SIZE (NDS_SCREEN_WIDTH*NDS_SCREEN_HEIGHT)
+
+#define COLOR16(red, green, blue) ((blue << 10) | (green << 5) | red)
+#define GET_R16(color) (color & 0x1f)
+#define GET_G16(color) ((color >> 5) & 0x1f)
+#define GET_B16(color) ((color >> 10)& 0x1f)
+#define COLOR32(red, green, blue) (0xff000000 | ((blue & 0xff) << 16) | ((green & 0xff) << 8) | (red & 0xff))
+
+#define RGB24_15(pixel) ((((*pixel) & 0xF8) << 7) |\
+ (((*(pixel+1)) & 0xF8) << 2) |\
+ (((*(pixel+2)) & 0xF8)>>3))
+
+#define RGB16_15(pixel) ((((*pixel)>>10) & 0x1F) |\
+ (((*pixel) & 0x1F) << 10) |\
+ ((*pixel) & 0x83E0))
+
+
+#define PRINT_STRING(screen, str, fg_color, x, y) \
+ BDF_render_string(screen, x, y, COLOR_TRANS, fg_color, str) \
+
+#define PRINT_STRING_SHADOW(screen, str, fg_color, x, y) \
+ BDF_render_string(screen, x+1, y+1, 0, 0, str); \
+ BDF_render_string(screen, x, y, 0, 0, str) \
+
+#define PRINT_STRING_BG(screen, str, fg_color, bg_color, x, y) \
+ BDF_render_string(screen, x, y, bg_color, fg_color, str) \
+
+#define PRINT_STRING_BG_UTF8(screen, utf8, fg_color, bg_color, x, y) \
+ BDF_render_mix(screen, SCREEN_WIDTH, x, y, 0, bg_color, fg_color, utf8) \
+
+
+//colors
+#define COLOR_TRANS COLOR16(31, 31, 63)
+#define COLOR_WHITE COLOR16(31, 31, 31)
+#define COLOR_BLACK COLOR16( 0, 0, 0)
+#define COLOR_TEXT COLOR16(31, 31, 31)
+#define COLOR_PROGRESS_TEXT COLOR16( 0, 0, 0)
+#define COLOR_PROGRESS_BAR COLOR16(15, 15, 15)
+#define COLOR_ERROR COLOR16(31, 0, 0)
+#define COLOR_BG COLOR16(2, 4, 10)
+#define COLOR_BG32 COLOR32(2*8, 4*8, 10*8)
+#define COLOR_ROM_INFO COLOR16(22, 18, 26)
+#define COLOR_ACTIVE_ITEM COLOR16(31, 31, 31)
+#define COLOR_INACTIVE_ITEM COLOR16(13, 20, 18)
+#define COLOR_HELP_TEXT COLOR16(16, 20, 24)
+#define COLOR_DIALOG COLOR16(31, 31, 31)
+#define COLOR_DIALOG_SHADOW COLOR16( 0, 2, 8)
+#define COLOR_FRAME COLOR16( 0, 0, 0)
+#define COLOR_YESNO_TEXT COLOR16( 0, 0, 0)
+#define COLOR_GREEN COLOR16( 0, 31, 0 )
+#define COLOR_GREEN1 COLOR16( 0, 24, 0 )
+#define COLOR_GREEN2 COLOR16( 0, 18, 0 )
+#define COLOR_GREEN3 COLOR16( 0, 12, 0 )
+#define COLOR_GREEN4 COLOR16( 0, 6, 0 )
+#define COLOR_RED COLOR16( 31, 0, 0 )
+#define COLOR_MSSG COLOR16( 16, 8, 29)
+/******************************************************************************
+ *
+ ******************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct background{
+ char bgname[128];
+ char bgbuffer[256*192*2];
+};
+
+struct gui_iconlist{
+ const char *iconname; //icon name
+ u32 x; //picture size
+ u32 y;
+ char *iconbuff;
+};
+
+//extern struct background back_ground;
+extern struct gui_iconlist gui_icon_list[];
+
+#define ICON_GBAFILE gui_icon_list[0]
+#define ICON_ZIPFILE gui_icon_list[1]
+#define ICON_DIRECTORY gui_icon_list[2]
+#define ICON_SFCFILE gui_icon_list[3]
+//not use
+#define ICON_TITLE gui_icon_list[4]
+
+#define ICON_AVO gui_icon_list[5]
+#define ICON_SAVO gui_icon_list[6]
+#define ICON_TOOL gui_icon_list[7]
+#define ICON_CHEAT gui_icon_list[8]
+#define ICON_OTHER gui_icon_list[9]
+#define ICON_EXIT gui_icon_list[10]
+#define ICON_MSEL gui_icon_list[11]
+#define ICON_MNSEL gui_icon_list[12]
+//not use
+#define ICON_NAVO gui_icon_list[13]
+#define ICON_NSAVO gui_icon_list[14]
+#define ICON_NTOOL gui_icon_list[15]
+#define ICON_NCHEAT gui_icon_list[16]
+#define ICON_NOTHER gui_icon_list[17]
+#define ICON_NEXIT gui_icon_list[18]
+
+#define ICON_UNKNOW gui_icon_list[19]
+#define ICON_NEW gui_icon_list[20]
+#define ICON_NNEW gui_icon_list[21]
+#define ICON_RESET gui_icon_list[22]
+#define ICON_NRESET gui_icon_list[23]
+#define ICON_RETURN gui_icon_list[24]
+#define ICON_NRETURN gui_icon_list[25]
+#define ICON_MAINBG gui_icon_list[26]
+
+#define ICON_TITLEICON gui_icon_list[27]
+#define ICON_SUBBG gui_icon_list[28]
+
+#define ICON_SUBSELA gui_icon_list[29]
+#define ICON_SUBSELB gui_icon_list[30]
+#define ICON_STATEFULL gui_icon_list[31]
+#define ICON_NSTATEFULL gui_icon_list[32]
+#define ICON_STATEEMPTY gui_icon_list[33]
+#define ICON_NSTATEEMPTY gui_icon_list[34]
+#define ICON_DOTDIR gui_icon_list[35]
+#define ICON_BACK gui_icon_list[36]
+#define ICON_NBACK gui_icon_list[37]
+#define ICON_CHTFILE gui_icon_list[38]
+#define ICON_MSG gui_icon_list[39]
+#define ICON_BUTTON gui_icon_list[40]
+
+/******************************************************************************
+ *
+ ******************************************************************************/
+extern void print_string_center(void* screen_addr, u32 sy, u32 color, u32 bg_color, char *str);
+extern void print_string_shadow_center(void* screen_addr, u32 sy, u32 color, char *str);
+extern void hline(u32 sx, u32 ex, u32 y, u32 color);
+extern void hline_alpha(u32 sx, u32 ex, u32 y, u32 color, u32 alpha);
+extern void vline(u32 x, u32 sy, u32 ey, u32 color);
+extern void vline_alpha(u32 x, u32 sy, u32 ey, u32 color, u32 alpha);
+extern void drawbox(void* screen_address, u32 sx, u32 sy, u32 ex, u32 ey, u32 color);
+extern void drawboxfill(void* screen_address, u32 sx, u32 sy, u32 ex, u32 ey, u32 color);
+extern void draw_selitem(void* screen_address, u32 x, u32 y, u32 color, u32 active);
+extern void draw_message(void* screen_address, u16 *screen_bg, u32 sx, u32 sy, u32 ex, u32 ey,
+ u32 color_fg);
+extern void draw_string_vcenter(void* screen_address, u32 sx, u32 sy, u32 width,
+ u32 color_fg, char *string);
+
+#define MAX_SCROLL_STRING 8
+extern u32 draw_hscroll_init(void* screen_address, u32 sx, u32 sy, u32 width,
+ u32 color_bg, u32 color_fg, char *string);
+extern u32 draw_hscroll(u32 index, s32 scroll_val);
+extern void draw_hscroll_over(u32 index);
+extern void boxfill_alpha(u32 sx, u32 sy, u32 ex, u32 ey, u32 color, u32 alpha);
+extern void init_progress(enum SCREEN_ID screen, u32 total, char *text);
+extern void update_progress(void);
+extern void show_progress(char *text);
+extern void scrollbar(void* screen_addr, u32 sx, u32 sy, u32 ex, u32 ey, u32 all, u32 view, u32 now);
+extern u32 yesno_dialog(char *text);
+extern u32 draw_yesno_dialog(enum SCREEN_ID screen, u32 sy, char *yes, char *no);
+extern void msg_screen_init(const char *title);
+extern void msg_screen_draw();
+extern void msg_printf(const char *text, ...);
+extern void msg_screen_clear(void);
+extern void msg_set_text_color(u32 color);
+
+extern int icon_init(u32 language_id);
+extern int gui_change_icon(u32 language_id);
+extern int show_background(void *screen, char *bgname);
+extern void show_icon(void* screen, struct gui_iconlist icon, u32 x, u32 y);
+extern void show_Vscrollbar(char *screen, u32 x, u32 y, u32 part, u32 total);
+
+extern void show_log(void* screen_addr);
+extern void err_msg(enum SCREEN_ID screen, char *msg);
+
+extern void copy_screen(void* to, void *from, u32 x, u32 y, u32 w, u32 h);
+extern void blit_to_screen(void* screen_addr, u16 *src, u32 w, u32 h, u32 dest_x, u32 dest_y);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //__DRAW_H__
+