Commit e4f31b0
committed
Add backgroundOpacity for translucent terminal backgrounds
backgroundOpacity (0...1) on both platform views renders the default
background translucently, Terminal.app style: text, caret, selection
and cells with explicit backgrounds stay opaque. On macOS the opacity
rides in the alpha of nativeBackgroundColor (assigning an alpha-
bearing color is equivalent); on iOS it rides in the layer background
that already paints the terminal background there.
Fixing the pixel-verified double compositing this exposed:
- the CG path no longer fills runs that carry the default background
(the layer background already paints it, including margins)
- the Metal path no longer emits quads for default-background runs
(the pass clear color paints it), and the host layer background is
cleared while Metal renders so the two never stack
- CAMetalLayer is made non-opaque when translucent
Verified by pixel sampling over a known backdrop: CG and Metal now
produce identical blends at 50% opacity, and opaque rendering is
byte-identical to before.1 parent 6319a91 commit e4f31b0
5 files changed
Lines changed: 98 additions & 30 deletions
File tree
- Sources/SwiftTerm
- Apple
- Metal
- Mac
- iOS
- Tests/SwiftTermTests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1745 | 1745 | | |
1746 | 1746 | | |
1747 | 1747 | | |
1748 | | - | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
1749 | 1753 | | |
1750 | 1754 | | |
1751 | 1755 | | |
| |||
1762 | 1766 | | |
1763 | 1767 | | |
1764 | 1768 | | |
1765 | | - | |
1766 | | - | |
1767 | | - | |
1768 | | - | |
1769 | | - | |
1770 | | - | |
1771 | | - | |
1772 | | - | |
1773 | | - | |
1774 | | - | |
1775 | | - | |
1776 | | - | |
| 1769 | + | |
| 1770 | + | |
1777 | 1771 | | |
1778 | 1772 | | |
1779 | 1773 | | |
| |||
Lines changed: 6 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1144 | 1144 | | |
1145 | 1145 | | |
1146 | 1146 | | |
1147 | | - | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
1148 | 1152 | | |
1149 | 1153 | | |
1150 | 1154 | | |
1151 | 1155 | | |
1152 | | - | |
1153 | | - | |
1154 | | - | |
1155 | | - | |
1156 | | - | |
1157 | | - | |
1158 | | - | |
1159 | | - | |
1160 | | - | |
1161 | | - | |
1162 | | - | |
1163 | | - | |
1164 | | - | |
1165 | | - | |
1166 | | - | |
1167 | | - | |
| 1156 | + | |
1168 | 1157 | | |
1169 | 1158 | | |
1170 | 1159 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
431 | 434 | | |
432 | 435 | | |
433 | 436 | | |
| |||
436 | 439 | | |
437 | 440 | | |
438 | 441 | | |
| 442 | + | |
439 | 443 | | |
440 | 444 | | |
441 | 445 | | |
| |||
470 | 474 | | |
471 | 475 | | |
472 | 476 | | |
| 477 | + | |
| 478 | + | |
473 | 479 | | |
474 | 480 | | |
475 | 481 | | |
| |||
716 | 722 | | |
717 | 723 | | |
718 | 724 | | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
719 | 729 | | |
720 | 730 | | |
721 | 731 | | |
722 | 732 | | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
723 | 760 | | |
724 | 761 | | |
725 | 762 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
| 426 | + | |
| 427 | + | |
426 | 428 | | |
427 | 429 | | |
428 | 430 | | |
| |||
2937 | 2939 | | |
2938 | 2940 | | |
2939 | 2941 | | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | + | |
| 2946 | + | |
| 2947 | + | |
| 2948 | + | |
| 2949 | + | |
| 2950 | + | |
| 2951 | + | |
| 2952 | + | |
| 2953 | + | |
| 2954 | + | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
| 2958 | + | |
| 2959 | + | |
| 2960 | + | |
| 2961 | + | |
2940 | 2962 | | |
2941 | 2963 | | |
2942 | 2964 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
190 | 216 | | |
191 | 217 | | |
192 | 218 | | |
| |||
0 commit comments