Add favicon to iconification icon

svn path=/trunk/netsurf/; revision=12995
This commit is contained in:
Chris Young 2011-10-07 23:12:12 +00:00
parent 443dce6e80
commit 39b490d1f0
5 changed files with 67 additions and 44 deletions

View File

@ -192,8 +192,7 @@ void ami_drag_save(struct Window *win)
save_complete(c,path);
SetComment(path, nsurl_access(content_get_url(c)));
}
ami_superimpose_favicon(path,
drag_save_gui->favicon, NULL);
amiga_icon_superimpose_favicon(path, drag_save_gui->favicon, NULL);
}
break;

View File

@ -1619,6 +1619,8 @@ void ami_handle_msg(void)
bm = urldb_get_thumbnail(nsurl_access(content_get_url(gwin->bw->current_content)));
if(!bm) bm = content_get_bitmap(gwin->bw->current_content);
gwin->dobj = amiga_icon_from_bitmap(bm);
amiga_icon_superimpose_favicon_internal(gwin->bw->window->favicon,
gwin->dobj);
HideWindow(gwin->win);
gwin->appicon = AddAppIcon((ULONG)gwin->objects[OID_MAIN], 0,
gwin->win->Title, appport, 0,

View File

@ -360,7 +360,65 @@ ULONG *amiga_icon_convertcolouricon32(UBYTE *icondata, ULONG width, ULONG height
}
void ami_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type)
void amiga_icon_superimpose_favicon_internal(struct hlcache_handle *icon, struct DiskObject *dobj)
{
struct BitMap *bm = NULL;
ULONG *icondata1, *icondata2;
ULONG width, height;
long format = 0;
int err = 0;
if(dobj == NULL) return;
err = IconControl(dobj,
ICONCTRLA_GetImageDataFormat,&format,
ICONCTRLA_GetImageData1,&icondata1,
ICONCTRLA_GetImageData2,&icondata2,
ICONCTRLA_GetWidth,&width,
ICONCTRLA_GetHeight,&height,
TAG_DONE);
if(format != IDFMT_DIRECTMAPPED) return;
{
if ((icon != NULL) && (content_get_bitmap(icon) != NULL))
{
bm = ami_getcachenativebm(content_get_bitmap(icon), 16, 16, NULL);
}
if(bm)
{
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, width - 16,
BLITA_DestY, height - 16,
BLITA_Width, 16,
BLITA_Height, 16,
BLITA_Source, bm,
BLITA_Dest, icondata1,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_ARGB32,
BLITA_DestBytesPerRow, width * 4,
BLITA_UseSrcAlpha, TRUE,
TAG_DONE);
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, width - 16,
BLITA_DestY, height - 16,
BLITA_Width, 16,
BLITA_Height, 16,
BLITA_Source, bm,
BLITA_Dest, icondata2,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_ARGB32,
BLITA_DestBytesPerRow, width * 4,
BLITA_UseSrcAlpha, TRUE,
TAG_DONE);
}
}
}
void amiga_icon_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type)
{
struct DiskObject *dobj = NULL;
struct BitMap *bm = NULL;
@ -421,43 +479,7 @@ void ami_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type
}
if((format == IDFMT_DIRECTMAPPED) || (format == IDFMT_PALETTEMAPPED))
{
if ((icon != NULL) && (content_get_bitmap(icon) != NULL))
{
bm = ami_getcachenativebm(content_get_bitmap(icon), 16, 16, NULL);
}
if(bm)
{
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, width - 16,
BLITA_DestY, height - 16,
BLITA_Width, 16,
BLITA_Height, 16,
BLITA_Source, bm,
BLITA_Dest, icondata1,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_ARGB32,
BLITA_DestBytesPerRow, width * 4,
BLITA_UseSrcAlpha, TRUE,
TAG_DONE);
BltBitMapTags(BLITA_SrcX, 0,
BLITA_SrcY, 0,
BLITA_DestX, width - 16,
BLITA_DestY, height - 16,
BLITA_Width, 16,
BLITA_Height, 16,
BLITA_Source, bm,
BLITA_Dest, icondata2,
BLITA_SrcType, BLITT_BITMAP,
BLITA_DestType, BLITT_ARGB32,
BLITA_DestBytesPerRow, width * 4,
BLITA_UseSrcAlpha, TRUE,
TAG_DONE);
}
}
amiga_icon_superimpose_favicon_internal(icon, dobj);
PutIconTags(path, dobj,
ICONPUTA_NotifyWorkbench, TRUE, TAG_DONE);
@ -470,7 +492,6 @@ void ami_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type
FreeVec(icondata1);
FreeVec(icondata2);
}
}
struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm)

View File

@ -40,7 +40,8 @@ void amiga_icon_fini(void);
struct hlcache_handle;
void ami_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type);
void amiga_icon_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type);
void amiga_icon_superimpose_favicon_internal(struct hlcache_handle *icon, struct DiskObject *dobj);
struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm);
void amiga_icon_free(struct DiskObject *dobj);
#endif

View File

@ -581,7 +581,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item)
UnLock(lock);
save_complete(gwin->bw->current_content,fname);
SetComment(fname,nsurl_access(content_get_url(gwin->bw->current_content)));
ami_superimpose_favicon(fname,
amiga_icon_superimpose_favicon(fname,
gwin->bw->window->favicon, NULL);
}
}
@ -603,7 +603,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item)
if(save_as_pdf(gwin->bw->current_content,fname))
{
SetComment(fname, nsurl_access(content_get_url(gwin->bw->current_content)));
ami_superimpose_favicon(fname,
amiga_icon_superimpose_favicon(fname,
gwin->bw->window->favicon, "pdf");
}
ami_update_pointer(gwin->win,GUI_POINTER_DEFAULT);