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_bitmap_get_native(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 ami_update_throbber(struct gui_window_2 *g,bool redraw) { struct IBox *bbox; int frame = g->throbber_frame; if(!g) return; if(!g->objects[GID_THROBBER]) return; if(g->bw->window->throbbing == false) { frame = 0; g->throbber_frame=1; } else { if(!redraw) { if(g->throbber_update_count < throbber_update_interval) { g->throbber_update_count++; return; } g->throbber_update_count = 0; g->throbber_frame++; if(g->throbber_frame > (throbber_frames-1)) g->throbber_frame=1; } } GetAttr(SPACE_AreaBox,(Object *)g->objects[GID_THROBBER],(ULONG *)&bbox); /* EraseRect(g->win->RPort,bbox->Left,bbox->Top, bbox->Left+throbber_width,bbox->Top+throbber_height); */ BltBitMapTags(BLITA_SrcX, throbber_width * frame, BLITA_SrcY,0, BLITA_DestX,bbox->Left, BLITA_DestY,bbox->Top, BLITA_Width,throbber_width, BLITA_Height,throbber_height, BLITA_Source,throbber, BLITA_Dest,g->win->RPort, BLITA_SrcType,BLITT_BITMAP, BLITA_DestType,BLITT_RASTPORT, // BLITA_UseSrcAlpha,TRUE, TAG_DONE); }
int32 ami_font_plot_glyph(struct OutlineFont *ofont, struct RastPort *rp, uint16 char1, uint16 char2, uint32 x, uint32 y, uint32 emwidth) { struct GlyphMap *glyph; UBYTE *glyphbm; int32 char_advance = 0; FIXED kern = 0; if(ESetInfo(&ofont->olf_EEngine, OT_GlyphCode, char1, OT_GlyphCode2, char2, TAG_END) == OTERR_Success) { if(EObtainInfo(&ofont->olf_EEngine, OT_GlyphMap8Bit,&glyph, TAG_END) == 0) { glyphbm = glyph->glm_BitMap; if(!glyphbm) return 0; if(rp) { BltBitMapTags(BLITA_SrcX, glyph->glm_BlackLeft, BLITA_SrcY, glyph->glm_BlackTop, BLITA_DestX, x - glyph->glm_X0 + glyph->glm_BlackLeft, BLITA_DestY, y - glyph->glm_Y0 + glyph->glm_BlackTop, BLITA_Width, glyph->glm_BlackWidth, BLITA_Height, glyph->glm_BlackHeight, BLITA_Source, glyphbm, BLITA_SrcType, BLITT_ALPHATEMPLATE, BLITA_Dest, rp, BLITA_DestType, BLITT_RASTPORT, BLITA_SrcBytesPerRow, glyph->glm_BMModulo, TAG_DONE); } kern = 0; if(char2) EObtainInfo(&ofont->olf_EEngine, OT_TextKernPair, &kern, TAG_END); char_advance = (ULONG)(((glyph->glm_Width - kern) * emwidth) / 65536); EReleaseInfo(&ofont->olf_EEngine, OT_GlyphMap8Bit,glyph, TAG_END); } } return char_advance; }
void nsSplashScreenAmigaOS::Open() { if (mIsOpen) return; struct Screen *scr = mIIntuition->LockPubScreen(NULL); uint32 scrWidth, scrHeight; mIIntuition->GetScreenAttrs(scr, SA_Width, &scrWidth, SA_Height, &scrHeight, TAG_DONE); mIIntuition->UnlockPubScreen(NULL, scr); uint32 winX = (scrWidth - splash_img.width) / 2; uint32 winY = (scrHeight - splash_img.height) / 2; mWindow = mIIntuition->OpenWindowTags(NULL, WA_Flags, WFLG_BORDERLESS, WA_IDCMP, 0, WA_Left, winX, WA_Top, winY, WA_InnerWidth, splash_img.width, WA_InnerHeight, splash_img.height, WA_WindowName, "Timberwolf Splash", WA_Hidden, FALSE, TAG_DONE); mIGraphics->BltBitMapTags( BLITA_SrcX, 0, BLITA_SrcY, 0, BLITA_Width, splash_img.width, BLITA_Height, splash_img.height, BLITA_SrcType, BLITT_RGB24, BLITA_Source, splash_img.pixel_data, BLITA_SrcBytesPerRow,splash_img.bytes_per_pixel * splash_img.width, BLITA_DestX, 0, BLITA_DestY, 0, BLITA_DestType, BLITT_RASTPORT, BLITA_Dest, mWindow->RPort, TAG_DONE); mIsOpen = PR_TRUE; }
struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm) { struct DiskObject *dobj; struct BitMap *bitmap; if(bm) { bitmap = ami_bitmap_get_native(bm, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, NULL); bm->icondata = AllocVecTagList(THUMBNAIL_WIDTH * 4 * THUMBNAIL_HEIGHT, NULL); BltBitMapTags(BLITA_Width, THUMBNAIL_WIDTH, BLITA_Height, THUMBNAIL_HEIGHT, BLITA_SrcType, BLITT_BITMAP, BLITA_Source, bitmap, BLITA_DestType, BLITT_ARGB32, BLITA_DestBytesPerRow, THUMBNAIL_WIDTH * 4, BLITA_Dest, bm->icondata, TAG_DONE); } dobj = GetIconTags(NULL, ICONGETA_GetDefaultType, WBPROJECT, ICONGETA_GetDefaultName, "iconify", TAG_DONE); if(bm) { IconControl(dobj, ICONCTRLA_SetImageDataFormat, IDFMT_DIRECTMAPPED, ICONCTRLA_SetWidth, THUMBNAIL_WIDTH, ICONCTRLA_SetHeight, THUMBNAIL_HEIGHT, ICONCTRLA_SetImageData1, bm->icondata, ICONCTRLA_SetImageData2, NULL, TAG_DONE); } dobj->do_Gadget.UserData = bm; LayoutIconA(dobj, (struct Screen *)~0UL, NULL); return dobj; }