Avoid double is_opaque scan

This commit is contained in:
Kovid Goyal
2025-11-15 13:06:17 +05:30
parent fb6332d8e2
commit 25cf8622bc
4 changed files with 14 additions and 8 deletions

2
go.mod
View File

@@ -14,7 +14,7 @@ require (
github.com/kovidgoyal/dbus v0.0.0-20250519011319-e811c41c0bc1
github.com/kovidgoyal/go-parallel v1.1.1
github.com/kovidgoyal/go-shm v1.0.0
github.com/kovidgoyal/imaging v1.8.11
github.com/kovidgoyal/imaging v1.8.12
github.com/seancfoley/ipaddress-go v1.7.1
github.com/shirou/gopsutil/v4 v4.25.10
github.com/zeebo/xxh3 v1.0.2

4
go.sum
View File

@@ -34,8 +34,8 @@ github.com/kovidgoyal/go-parallel v1.1.1 h1:1OzpNjtrUkBPq3UaqrnvOoB2F9RttSt811ui
github.com/kovidgoyal/go-parallel v1.1.1/go.mod h1:BJNIbe6+hxyFWv7n6oEDPj3PA5qSw5OCtf0hcVxWJiw=
github.com/kovidgoyal/go-shm v1.0.0 h1:HJEel9D1F9YhULvClEHJLawoRSj/1u/EDV7MJbBPgQo=
github.com/kovidgoyal/go-shm v1.0.0/go.mod h1:Yzb80Xf9L3kaoB2RGok9hHwMIt7Oif61kT6t3+VnZds=
github.com/kovidgoyal/imaging v1.8.11 h1:i2NzTs8Ge0LKvilKiTw0U1kTcrBL8bo+zUYZSjSP+6M=
github.com/kovidgoyal/imaging v1.8.11/go.mod h1:rjyfCTmIGGDjbMWGJ8QN/D/AWjHXD5flIzhjJpOcOVw=
github.com/kovidgoyal/imaging v1.8.12 h1:S1NIlxNdI86A3MGJNajqp2Pu8/WSVrL8L1B5HbSQsB0=
github.com/kovidgoyal/imaging v1.8.12/go.mod h1:rjyfCTmIGGDjbMWGJ8QN/D/AWjHXD5flIzhjJpOcOVw=
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a h1:N9zuLhTvBSRt0gWSiJswwQ2HqDmtX/ZCDJURnKUt1Ik=
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

View File

@@ -216,7 +216,13 @@ func scale_image(imgd *image_data) bool {
func add_frame(imgd *image_data, img image.Image, left, top int) *image_frame {
const shm_template = "kitty-icat-*"
num_channels, pix := imaging.AsRGBData8(img)
num_channels := 4
var pix []byte
if imaging.IsOpaque(img) {
num_channels, pix = 3, imaging.AsRGBData8(img)
} else {
pix = imaging.AsRGBAData8(img)
}
b := img.Bounds()
f := image_frame{width: b.Dx(), height: b.Dy(), number: len(imgd.frames) + 1, left: left, top: top}
f.transmission_format = utils.IfElse(num_channels == 3, graphics.GRT_format_rgb, graphics.GRT_format_rgba)

View File

@@ -77,10 +77,10 @@ func (self *ImageFrame) DataAsSHM(pattern string) (ans shm.MMap, err error) {
}
func (self *ImageFrame) Data() (num_channels, bits_per_channel int, has_alpha_channel bool, ans []byte) {
num_channels, ans = imaging.AsRGBData8(self.Img)
bits_per_channel = 8
has_alpha_channel = num_channels == 3
return
if self.Is_opaque {
return 3, 8, false, imaging.AsRGBData8(self.Img)
}
return 4, 8, true, imaging.AsRGBAData8(self.Img)
}
func ImageFrameFromSerialized(s SerializableImageFrame, data []byte) (aa *ImageFrame, err error) {