Commit: 9516d3fafcdf29a822af15325dd4004c25e4a01e
Author: Bastien Montagne
Date:   Tue Dec 16 09:56:57 2014 +0100
Branches: asset-experiments
https://developer.blender.org/rB9516d3fafcdf29a822af15325dd4004c25e4a01e

Some minor refinement regarding overlayed icons.

Note, even when unpremultiplying alpha, we still have 'breadcrumbs' around
icons, not sure why...

===================================================================

M       source/blender/editors/interface/interface_icons.c
M       source/blender/editors/space_file/filelist.c

===================================================================

diff --git a/source/blender/editors/interface/interface_icons.c 
b/source/blender/editors/interface/interface_icons.c
index cdefd67..16f0dbf 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -973,6 +973,7 @@ PreviewImage *UI_icon_to_preview(int icon_id)
        return NULL;
 }
 
+/* Shall always return straight alpha! */
 ImBuf *UI_icon_to_imbuf(int icon_id)
 {
        Icon *icon = BKE_icon_get(icon_id);
@@ -994,6 +995,7 @@ ImBuf *UI_icon_to_imbuf(int icon_id)
                /* TODO */
        }
        else if (di->type == ICON_TYPE_TEXTURE) {
+               /* We have to go searching in OpenGL texture... */
                ImBuf *icons = IMB_allocImBuf(icongltex.w, icongltex.h, 32, 
IB_rect);
 
                glEnable(GL_TEXTURE_2D);
@@ -1006,6 +1008,7 @@ ImBuf *UI_icon_to_imbuf(int icon_id)
 
                imbuf = IMB_allocImBuf(di->data.texture.w, di->data.texture.h, 
32, IB_rect);
                IMB_rectcpy(imbuf, icons, 0, 0, di->data.texture.x, 
di->data.texture.y, di->data.texture.w, di->data.texture.h);
+               IMB_unpremultiply_alpha(imbuf);  /* those were premultiplied in 
init_internal_icons() */
 
                IMB_freeImBuf(icons);
        }
@@ -1019,6 +1022,7 @@ ImBuf *UI_icon_to_imbuf(int icon_id)
                if (iimg->rect) {
                        imbuf = IMB_allocImBuf(iimg->w, iimg->h, 32, IB_rect);
                        memcpy(imbuf->rect, iimg->rect, sizeof(unsigned int) * 
imbuf->x * imbuf->y);
+                       IMB_unpremultiply_alpha(imbuf);  /* those were 
premultiplied in init_internal_icons() */
                }
        }
        else if (di->type == ICON_TYPE_PREVIEW) {
diff --git a/source/blender/editors/space_file/filelist.c 
b/source/blender/editors/space_file/filelist.c
index c86b368..8c844a9 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -869,7 +869,7 @@ ImBuf *filelist_geticon_image(struct FileList *filelist, 
const int index)
 
 static int filelist_geticon_ex(const unsigned int type, const unsigned int 
flags, const char *path, const char *relname, const bool ignore_libdir)
 {
-       if (type & S_IFDIR && !(ignore_libdir && (flags & BLENDERLIB))) {
+       if (type & S_IFDIR && !(ignore_libdir && (flags & (BLENDERLIB | 
BLENDERFILE)))) {
                if (strcmp(relname, "..") == 0) {
                        return ICON_FILE_PARENT;
                }
@@ -2008,7 +2008,7 @@ static void thumbnails_startjob(void *tjv, short *stop, 
short *do_update, float
                        if (limg->img && limg->icon) {
                                IMB_rectblend(limg->img, limg->img, limg->icon, 
NULL, NULL, NULL, 0.0f,
                                              limg->img->x - limg->icon->x, 
limg->img->y - limg->icon->y, 0, 0, 0, 0,
-                                             limg->icon->x, limg->icon->y, 
IMB_BLEND_MIX, true);
+                                             limg->icon->x, limg->icon->y, 
IMB_BLEND_MIX, false);
                        }
                }
                else if (limg->flags & MOVIEFILE) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to