func (il *ImageList) AddMasked(bitmap *Bitmap) (int32, error) { if bitmap == nil { return 0, newError("bitmap cannot be nil") } index := win.ImageList_AddMasked( il.hIml, bitmap.handle(), win.COLORREF(il.maskColor)) if index == -1 { return 0, newError("ImageList_AddMasked failed") } return index, nil }
func imageIndexAddIfNotExists(image interface{}, hIml win.HIMAGELIST, imageUintptr2Index map[uintptr]int32) int32 { imageIndex := int32(-1) if image != nil { var ptr uintptr switch img := image.(type) { case *Bitmap: ptr = uintptr(unsafe.Pointer(img)) case *Icon: ptr = uintptr(unsafe.Pointer(img)) } if ptr == 0 { return -1 } if imageIndex, ok := imageUintptr2Index[ptr]; ok { return imageIndex } switch img := image.(type) { case *Bitmap: imageIndex = win.ImageList_AddMasked(hIml, img.hBmp, 0) case *Icon: imageIndex = win.ImageList_ReplaceIcon(hIml, -1, img.hIcon) } if imageIndex > -1 { imageUintptr2Index[ptr] = imageIndex } } return imageIndex }