[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