diff options
author | Andrea Weikert <elubie@gmx.net> | 2009-01-06 17:42:54 +0300 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2009-01-06 17:42:54 +0300 |
commit | b1cb844e0539376cb41cd15bf802aea62848b90a (patch) | |
tree | 5e67be9915d4a76afd9e894cc2e0783d439c41be /source/blender/editors/interface/interface_icons.c | |
parent | 10e6566aebec1c1c623cd88c3887db7c113d5af9 (diff) |
2.5 - Start of filebrowser.
- basic drawing of list and thumbnail view (switchable through 'favourits' icon in header)
- selection of files and directories (bookmarks) works with the RMB (right mouse button)
- load operator for files still unstable (no check for correct file type) and incomplete. (WM_operator_free missing)
immediate TODOS:
- fix load file operator
- finish drawing of buttons in header
- drawing of detailed list with all file info.
- finish selection and execute operators (LMB and MMB execute)
later todos:
- parent dir
- keymap for all the shortcuts
- append/link and databrowse
- ...
Diffstat (limited to 'source/blender/editors/interface/interface_icons.c')
-rw-r--r-- | source/blender/editors/interface/interface_icons.c | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 4155935c28f..1fd4142a29c 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -98,12 +98,13 @@ static struct ListBase iconfilelist = {0, 0}; /* **************************************************** */ -static void def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs) +static void def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs, int size) { Icon *new_icon = NULL; IconImage *iimg = NULL; DrawInfo *di; int y = 0; + int imgsize = 0; new_icon = MEM_callocN(sizeof(Icon), "texicon"); @@ -112,18 +113,19 @@ static void def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs) di = MEM_callocN(sizeof(DrawInfo), "drawinfo"); di->drawFunc = 0; - di->w = ICON_DEFAULT_HEIGHT; - di->h = ICON_DEFAULT_HEIGHT; + di->w = size; + di->h = size; di->aspect = 1.0f; iimg = MEM_mallocN(sizeof(IconImage), "icon_img"); - iimg->rect = MEM_mallocN(ICON_DEFAULT_HEIGHT*ICON_DEFAULT_HEIGHT*sizeof(unsigned int), "icon_rect"); - iimg->w = ICON_DEFAULT_HEIGHT; - iimg->h = ICON_DEFAULT_HEIGHT; + iimg->rect = MEM_mallocN(size*size*sizeof(unsigned int), "icon_rect"); + iimg->w = size; + iimg->h = size; /* Here we store the rect in the icon - same as before */ - for (y=0; y<ICON_DEFAULT_HEIGHT; y++) { - memcpy(&iimg->rect[y*ICON_DEFAULT_HEIGHT], &bbuf->rect[(y+yofs)*ICON_IMAGE_W+xofs], ICON_DEFAULT_HEIGHT*sizeof(int)); + imgsize = bbuf->x; + for (y=0; y<size; y++) { + memcpy(&iimg->rect[y*size], &bbuf->rect[(y+yofs)*imgsize+xofs], size*sizeof(int)); } di->icon = iimg; @@ -423,9 +425,9 @@ static void init_internal_icons() printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); IMB_freeImBuf(bbuf); bbuf= NULL; - } } } + } if(bbuf==NULL) bbuf = IMB_ibImageFromMemory((int *)datatoc_blenderbuttons, datatoc_blenderbuttons_size, IB_rect); @@ -433,7 +435,7 @@ static void init_internal_icons() for (x=0; x<ICON_GRID_COLS; x++) { def_internal_icon(bbuf, BIFICONID_FIRST + y*ICON_GRID_COLS + x, x*(ICON_GRID_W+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, - y*(ICON_GRID_H+ICON_GRID_MARGIN)+ICON_GRID_MARGIN); + y*(ICON_GRID_H+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, ICON_GRID_W); } } @@ -867,13 +869,11 @@ static int preview_size(int miplevel) return 0; } - -static void icon_draw_mipmap(float x, float y, int icon_id, float aspect, int miplevel, int nocreate) +static void icon_draw_size(float x, float y, int icon_id, float aspect, int miplevel, int draw_size, int nocreate) { Icon *icon = NULL; DrawInfo *di = NULL; - int draw_size = preview_size(miplevel); - + icon = BKE_icon_get(icon_id); if (!icon) { @@ -926,6 +926,13 @@ static void icon_draw_mipmap(float x, float y, int icon_id, float aspect, int mi } } +static void icon_draw_mipmap(float x, float y, int icon_id, float aspect, int miplevel, int nocreate) +{ + int draw_size = preview_size(miplevel); + icon_draw_size(x,y,icon_id, aspect, miplevel, draw_size, nocreate); +} + + void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect) { icon_draw_mipmap(x,y,icon_id, aspect, PREVIEW_MIPMAP_ZERO, 0); @@ -936,6 +943,19 @@ void UI_icon_draw(float x, float y, int icon_id) UI_icon_draw_aspect(x, y, icon_id, 1.0f); } +void UI_icon_draw_size_blended(float x, float y, int size, int icon_id, int shade) +{ + if(shade < 0) { + float r= (128+shade)/128.0f; + glPixelTransferf(GL_ALPHA_SCALE, r); + } + + icon_draw_size(x,y,icon_id, 1.0f, 0, size, 1); + + if(shade < 0) + glPixelTransferf(GL_ALPHA_SCALE, 1.0f); +} + void UI_icon_draw_preview(float x, float y, int icon_id, int nocreate) { icon_draw_mipmap(x,y,icon_id, 1.0f, PREVIEW_MIPMAP_LARGE, nocreate); |