Skip to content

Commit f4562dd

Browse files
committed
fix: address PR review comments
1 parent 97635ce commit f4562dd

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

kitty.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,20 @@ func (r *KittyRenderer) Render(img image.Image, opts RenderOptions) (string, err
177177
return "", err
178178
}
179179

180-
// Encode as PNG for transfer.
181-
var buf bytes.Buffer
182-
if err := png.Encode(&buf, processed); err != nil {
183-
return "", fmt.Errorf("failed to encode png: %w", err)
180+
var data []byte
181+
unicodeFormat := DATA_RGBA_32_BIT
182+
if kittyOpts != nil && kittyOpts.PNG {
183+
unicodeFormat = DATA_PNG
184+
var buf bytes.Buffer
185+
if err := png.Encode(&buf, processed); err != nil {
186+
return "", fmt.Errorf("failed to encode png: %w", err)
187+
}
188+
data = buf.Bytes()
189+
} else {
190+
rgbaImg := image.NewRGBA(bounds)
191+
draw.Draw(rgbaImg, rgbaImg.Bounds(), processed, bounds.Min, draw.Src)
192+
data = rgbaImg.Pix
184193
}
185-
data := buf.Bytes()
186194
encoded := Base64Encode(data)
187195

188196
// Step 1: Transmit image data in chunks (no immediate placement).
@@ -201,7 +209,12 @@ func (r *KittyRenderer) Render(img image.Image, opts RenderOptions) (string, err
201209

202210
var seq string
203211
if first {
204-
seq = fmt.Sprintf("\x1b_Gf=100,t=d,i=%d,q=2,m=%d;%s\x1b\\", imageNum, more, chunk)
212+
if unicodeFormat == DATA_RGBA_32_BIT {
213+
seq = fmt.Sprintf("\x1b_Gf=32,s=%d,v=%d,t=d,i=%d,q=2,m=%d;%s\x1b\\",
214+
pixelWidth, pixelHeight, imageNum, more, chunk)
215+
} else {
216+
seq = fmt.Sprintf("\x1b_Gf=100,t=d,i=%d,q=2,m=%d;%s\x1b\\", imageNum, more, chunk)
217+
}
205218
first = false
206219
} else {
207220
seq = fmt.Sprintf("\x1b_Gm=%d;%s\x1b\\", more, chunk)

0 commit comments

Comments
 (0)