mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
CtrlLib: Fixed premultiplied alpha issue in gtk clipboard image paste
This commit is contained in:
parent
cb75da1a8b
commit
335e8c6239
2 changed files with 11 additions and 0 deletions
|
|
@ -48,6 +48,7 @@ String ImageClipFromPixbufUnref(GdkPixbuf *pixbuf)
|
|||
l += stride;
|
||||
}
|
||||
img = m;
|
||||
img = Premultiply(img);
|
||||
}
|
||||
g_object_unref(pixbuf);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,12 @@ static String sBmp(const Value& data)
|
|||
return BMPEncoder().SaveString(img);
|
||||
}
|
||||
|
||||
static String sPng(const Value& data)
|
||||
{
|
||||
Image img = data;
|
||||
return BMPEncoder().SaveString(img);
|
||||
}
|
||||
|
||||
static String sImg(const Value& data)
|
||||
{
|
||||
Image img = data;
|
||||
|
|
@ -57,6 +63,8 @@ String GetImageClip(const Image& img, const String& fmt)
|
|||
return Null;
|
||||
if(fmt == "image/bmp")
|
||||
return BMPEncoder().SaveString(img);
|
||||
if(fmt == "image/png")
|
||||
return PNGEncoder().SaveString(img);
|
||||
if(fmt == ClipFmt<Image>())
|
||||
return StoreAsString(const_cast<Image&>(img));
|
||||
return Null;
|
||||
|
|
@ -67,12 +75,14 @@ void AppendClipboardImage(const Image& img)
|
|||
if(img.IsEmpty()) return;
|
||||
AppendClipboard(ClipFmt<Image>(), img, sImg);
|
||||
AppendClipboard("image/bmp", img, sBmp);
|
||||
AppendClipboard("image/png", img, sPng);
|
||||
}
|
||||
|
||||
void Append(VectorMap<String, ClipData>& data, const Image& img)
|
||||
{
|
||||
data.Add(ClipFmt<Image>(), ClipData(img, sImg));
|
||||
data.Add("image/bmp", ClipData(img, sBmp));
|
||||
data.Add("image/png", ClipData(img, sPng));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue