kovidgoyal / kitty

Cross-platform, fast, feature-rich, GPU based terminal
https://sw.kovidgoyal.net/kitty/
GNU General Public License v3.0
22.14k stars 907 forks source link

Aspect ratio not computed when giving only one of `r` or `c` to display image #7380

Closed dmlloyd closed 3 weeks ago

dmlloyd commented 3 weeks ago

Describe the bug According to the docs:

You can also ask the terminal emulator to display the image in a specified rectangle (num of columns / num of lines), using the control codes c,r. c is the number of columns and r the number of rows. The image will be scaled (enlarged/shrunk) as needed to fit the specified area. Note that if you specify a start cell offset via the X,Y keys, it is not added to the number of rows/columns. If only one of either r or c is specified, the other one is computed based on the source image aspect ratio, so that the image is displayed without distortion.

However, only providing one of r or c does not cause the image to be scaled by aspect ratio as the final sentence in the doc indicates.

To Reproduce Steps to reproduce the behavior:

  1. Cat attached mars.txt - this is the original image emitted by icat
  2. Cat attached mars-just-r.txt - this is the same image with r=4 added
  3. Cat attached mars-just-c.txt - this is the same iamge with c=8 added
  4. See distorted image

Also attached is the original mars.png. The image is public domain.

It's possible that the problem only occurs with a=T; I haven't tested.

The problem can be reproduced without catting these files by capturing icat --transfer-mode=stream mars.png and editing the resultant text to add r=4 or c=8.

Environment details

kitty 0.34.1 (7f61f1f9f3) created by Kovid Goyal
Darwin cactaur 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:12:49 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6020 arm64
ProductName:        macOS ProductVersion:       14.4.1 BuildVersion:        23E224
Frozen: True
Paths:
  kitty: /Applications/kitty.app/Contents/MacOS/kitty
  base dir: /Applications/kitty.app/Contents/Resources/kitty
  extensions dir: /Applications/kitty.app/Contents/Resources/Python/lib/kitty-extensions
  system shell: /bin/bash
Loaded config files:
  /Users/david/.config/kitty/kitty.conf

Config options different from defaults:
background_opacity      0.85
confirm_os_window_close 0
enable_audio_bell       False
font_family             DejaVu Sans Mono
font_size               13.0
Removed shortcuts:
    cmd+, →  edit_config_file
    cmd+enter →  new_window
    cmd+h →  hide_macos_app
    cmd+k →  clear_terminal to_cursor active
    cmd+m →  minimize_macos_window
    cmd+n →  new_os_window
    cmd+q →  quit
    cmd+t →  new_tab
    cmd+w →  close_tab
    ctrl+cmd+, →  load_config_file
    ctrl+cmd+f →  toggle_fullscreen
    opt+cmd+h →  hide_macos_other_apps
    opt+cmd+r →  clear_terminal reset active
    opt+cmd+s →  toggle_macos_secure_keyboard_entry
    shift+cmd+/ →  open_url https://sw.kovidgoyal.net/kitty/
    shift+cmd+[ →  previous_tab
    shift+cmd+] →  next_tab
    shift+cmd+d →  close_window
    shift+cmd+w →  close_os_window

Important environment variables seen by the kitty process:
    PATH                                /Applications/kitty.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin
    LANG                                en_US.UTF-8
    SHELL                               /bin/bash
    USER                                david

mars-just-c.txt mars-just-r.txt mars.txt mars.png