summaryrefslogtreecommitdiff
path: root/amiga/icon.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-07-03 11:05:18 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-07-03 11:05:18 +0000
commite3447be7a3f1d1b0722e264fa8dafc05807e3f36 (patch)
treed4ab44b65a65d4efe6a1e2947682dfe9caa8a540 /amiga/icon.c
parentbb7408a56e4c2841ceee3ce6127b52695d8e131c (diff)
downloadnetsurf-e3447be7a3f1d1b0722e264fa8dafc05807e3f36.tar.gz
netsurf-e3447be7a3f1d1b0722e264fa8dafc05807e3f36.tar.bz2
Iconfication; only enabled when running on WB screen at present
svn path=/trunk/netsurf/; revision=12562
Diffstat (limited to 'amiga/icon.c')
-rw-r--r--amiga/icon.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/amiga/icon.c b/amiga/icon.c
index 5205956f5..43ebe8da8 100644
--- a/amiga/icon.c
+++ b/amiga/icon.c
@@ -494,3 +494,48 @@ void ami_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type
}
}
+
+struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm)
+{
+ struct DiskObject *dobj;
+ struct BitMap *bitmap;
+
+ bitmap = ami_getcachenativebm(bm, bitmap_get_width(bm),
+ bitmap_get_height(bm), NULL);
+ bm->icondata = AllocVec(bitmap_get_rowstride(bm) * bitmap_get_height(bm),
+ MEMF_CLEAR);
+
+ BltBitMapTags(BLITA_Width, bitmap_get_width(bm),
+ BLITA_Height, bitmap_get_height(bm),
+ BLITA_SrcType, BLITT_BITMAP,
+ BLITA_Source, bitmap,
+ BLITA_DestType, BLITT_ARGB32,
+ BLITA_DestBytesPerRow, bitmap_get_rowstride(bm),
+ BLITA_Dest, bm->icondata,
+ TAG_DONE);
+
+ dobj = GetIconTags(NULL, ICONGETA_GetDefaultType, WBPROJECT, TAG_DONE);
+ //dobj = NewDiskObject(WBPROJECT);
+
+ IconControl(dobj,
+ ICONCTRLA_SetImageDataFormat, IDFMT_DIRECTMAPPED,
+ ICONCTRLA_SetWidth, bitmap_get_width(bm),
+ ICONCTRLA_SetHeight, bitmap_get_height(bm),
+ ICONCTRLA_SetImageData1, bm->icondata,
+ ICONCTRLA_SetImageData2, NULL,
+ TAG_DONE);
+
+ dobj->do_Gadget.UserData = bm;
+
+ LayoutIconA(dobj, (struct Screen *)~0UL, NULL);
+
+ return dobj;
+}
+
+void amiga_icon_free(struct DiskObject *dobj)
+{
+ struct bitmap *bm = dobj->do_Gadget.UserData;
+
+ FreeDiskObject(dobj);
+ FreeVec(bm->icondata);
+}