[Bf-blender-cvs] [9516d3f] asset-experiments: Some minor refinement regarding overlayed icons.

Bastien Montagne noreply at git.blender.org
Tue Dec 16 18:05:16 CET 2014


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) {




More information about the Bf-blender-cvs mailing list