diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d3e676..65307da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,39 +8,7 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased -### Added - -- **Terminal features beyond colour.** `AnsiOutputOptions` describes one client: its colour depth, - its `TerminalFeatures`, and where pictures' pixels come from (`ITerminalPictureSource`). - `WithAnsiOutput(options)` builds its registry; the `(depth, hyperlinks)` overload is that with - `Hyperlinks` or `None`. - - `CommandLinks` writes a command link as an MSLP link (`ESC ] 68 ; 1 ; SEND ; …`), which a client - advertising MTTS's MSLP bit sends back when clicked. A command holding a control character is - written as its text. - - **Pictures in a figure's cells.** A `Figure` laid out under `LayoutContext.Pictures` reserves the - cells its picture takes (its art's, or `PictureCells` for one with none) and marks each row with its - `ImageMarkup`, `Row` set to a `PictureRow`. In `MarkupFormat.Ansi` such a row is drawn as the picture for a client with - `KittyGraphics` (Unicode placeholders, the picture sent once per connection), `InlineImages` - (iTerm2), `Sixel`, or `BlockArt` (half blocks), and as the art otherwise. The rows are the same - width either way, so a box or a flex row around the figure stays aligned. - - Each encoding is made once per picture and size and kept with the `TerminalPicture`, so a picture - shown to many connections is resized and compressed once. PNGs (iTerm2, and Kitty's `f=100`) are - RGB when the picture is opaque, filtered Up, at zlib level 2; sixel reads each band once and writes a - colour only over the columns it reaches. - -- **Moving pictures.** A `TerminalPicture` made from `TerminalPictureFrame`s plays for a client with - `MovingPictures` as well as a way of drawing it: Kitty is sent each frame (`a=f,X=1`) and starts the - loop itself (`a=a,s=3,v=1`), and iTerm2 is sent a looping GIF (one global palette by median cut, no - dithering, so nothing shimmers between frames). Everywhere else, and without `MovingPictures`, it is - its first frame. A frame of 10 ms or less is shown for 100 ms, as browsers do. -- **Terminals by name.** `TerminalProfile` lists the terminals this package knows (kitty, Ghostty, - WezTerm, iTerm2, Konsole, foot, xterm, Windows Terminal, mintty, VS Code, Contour, Rio, mlterm, - Alacritty, VTE and tmux): what each can be sent, read from its own source and release notes, and how. - `Identify` reads one from a terminal type or an XTVERSION reply, `Find` from the id a player gives. - `AnsiOutputOptions.For(terminal, chosen)` sends a terminal only what the player turned on of what it - can do, and `AnsiOutputOptions.Terminal` carries how it wants it: an iTerm2 inline image longer than - the terminal takes in one sequence (a mebibyte, for iTerm2) is sent in parts where it reads them - (`MultipartFile`), and a moving one is sent still where it does not. +## 2.15.5 — 2026-10-09 ### Changed @@ -51,11 +19,8 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). instead of copying them. `MarkupText.Wrap(ansi, plain text)` went from 351 ns and 640 B to 154 ns and 208 B, and wrapping it again from 552 ns to 246 ns. `AnsiStyle` compares and hashes its switches as one bit field, and `AnsiMarkup` keeps its hash. -- **A picture is one `ImageMarkup`, laid out or inline.** `PictureCellsMarkup` is gone: a figure's rows - carry its `ImageMarkup` with `Row` (a `PictureRow`: which row, how many, how many cells wide), and the - serialiser keeps it. MXP, Pueblo, HTML and BBCode write a picture's element once - (`ImageMarkup.StartsPicture`): at the start of an inline picture, however many runs its description is - in, or on a figure's first row. + +## 2.15.4 — 2026-10-08 ### Fixed @@ -63,19 +28,66 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). whatever the box's padding, so in a box padded 0 (`--ms-pad:0ch`) every divider ran past the border. It now reaches across `--ms-pad`, and not at all in a borderless box. Each box sets `--ms-pad: 1ch` itself, so a box inside one padded 0 is no longer padded 0 too. -- **A box round a picture spans the width in a terminal again.** 2.14.2 fitted a box holding only a - picture to the picture, so in a scene log it stood narrower than every box and rule around it. It is - drawn across the width again, with its padding, and the picture at its left. HTML still fits it - (`ms-box-picture`). + +## 2.15.3 — 2026-10-07 + +The same code as 2.14.3, on the 2.15 line: 2.15.0 has the MXP sizing below without the box width fix. + +## 2.15.0 — 2026-10-07 + +### Added + +- `PictureRow.IsDescription`, for the fix below. + +### Fixed + - **An MXP client draws a figure's picture in its cells.** A figure's `` carried no size, so a client drew the picture at its own size under the line it was named on, outside any box round it. It is now sized in the cells laid out for it (`W=12c H=5c`), the art's or `PictureCells`', and a client that honours cell sizes draws it there. A figure with neither, whose row is only its description (`PictureRow.IsDescription`), still leaves the picture its own size. + +## 2.14.3 — 2026-10-07 + +### Fixed + +- **A box round a picture spans the width in a terminal again.** 2.14.2 fitted a box holding only a + picture to the picture, so in a scene log it stood narrower than every box and rule around it. It is + drawn across the width again, with its padding, and the picture at its left. HTML still fits it + (`ms-box-picture`). +- **An MXP client draws a figure's picture in its cells.** As in 2.15.0. + +## 2.14.2 — 2026-10-07 + +### Fixed + +- **A box round a picture fits it in a terminal too.** A terminal that draws pictures got the box across + the whole width with the picture in its left corner, so it stood wider than the rules and lines + around it. A `Frame` whose body is only a picture on a line of its own, for a reader shown that + picture, now has no padding and is as wide as the picture (or its title, if that is wider). A reader + shown the art or the description instead still gets the box across the width. (2.14.3 took this back.) + +## 2.14.1 — 2026-10-07 + +### Fixed + - **A figure whose art is the picture's own placeholder is one picture.** Art marked as the picture inline (a Markdown image laid out as a figure) carried both marks, so MXP, Pueblo and BBCode wrote the picture twice or dropped its cells, and the text beside it moved. A figure's rows now carry its mark alone. + +## 2.14.0 — 2026-10-07 + +### Changed + +- **A picture is one `ImageMarkup`, laid out or inline.** `PictureCellsMarkup` is gone: a figure's rows + carry its `ImageMarkup` with `Row` (a `PictureRow`: which row, how many, how many cells wide), and the + serialiser keeps it. MXP, Pueblo, HTML and BBCode write a picture's element once + (`ImageMarkup.StartsPicture`): at the start of an inline picture, however many runs its description is + in, or on a figure's first row. + +### Fixed + - **A figure's picture reaches MXP, Pueblo and BBCode.** A `Figure` laid out as text marked its picture only for a terminal that draws pictures in its cells, so every other format wrote the art alone and an MXP client was never sent ``. Its rows (or its `[description]`) now always carry the picture @@ -83,12 +95,64 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). figure's cells blank, so text beside it stays in its column, and a client that refuses the element, or an HTML policy that refuses ``, reads the art. A terminal without the picture's pixels still writes the art. + +## 2.13.0 — 2026-10-07 + +### Added + +- **Moving pictures.** A `TerminalPicture` made from `TerminalPictureFrame`s plays for a client with + `MovingPictures` as well as a way of drawing it: Kitty is sent each frame (`a=f,X=1`) and starts the + loop itself (`a=a,s=3,v=1`), and iTerm2 is sent a looping GIF (one global palette by median cut, no + dithering, so nothing shimmers between frames). Everywhere else, and without `MovingPictures`, it is + its first frame. A frame of 10 ms or less is shown for 100 ms, as browsers do. +- **Terminals by name.** `TerminalProfile` lists the terminals this package knows (kitty, Ghostty, + WezTerm, iTerm2, Konsole, foot, xterm, Windows Terminal, mintty, VS Code, Contour, Rio, mlterm, + Alacritty, VTE and tmux): what each can be sent, read from its own source and release notes, and how. + `Identify` reads one from a terminal type or an XTVERSION reply, `Find` from the id a player gives. + `AnsiOutputOptions.For(terminal, chosen)` sends a terminal only what the player turned on of what it + can do, and `AnsiOutputOptions.Terminal` carries how it wants it: an iTerm2 inline image longer than + the terminal takes in one sequence (a mebibyte, for iTerm2) is sent in parts where it reads them + (`MultipartFile`), and a moving one is sent still where it does not. + +### Fixed + - **A box round a picture fits it in HTML.** The `` of a `Figure` sat on the text baseline, leaving a band the height of a descender below it, and the box's side padding left gaps left and right but none above. The picture now aligns to the top of its line, and a box whose body is only a picture on a line of its own (`ms-box-picture`) has no padding and is no wider than the picture. A `Frame`'s `Padding` reaches the HTML as `--ms-pad` (it was always `1ch`). +## 2.12.0 — 2026-10-07 + +### Added + +- **Terminal features beyond colour.** `AnsiOutputOptions` describes one client: its colour depth, + its `TerminalFeatures`, and where pictures' pixels come from (`ITerminalPictureSource`). + `WithAnsiOutput(options)` builds its registry; the `(depth, hyperlinks)` overload is that with + `Hyperlinks` or `None`. + - `CommandLinks` writes a command link as an MSLP link (`ESC ] 68 ; 1 ; SEND ; …`), which a client + advertising MTTS's MSLP bit sends back when clicked. A command holding a control character is + written as its text. + - **Pictures in a figure's cells.** A `Figure` laid out under `LayoutContext.Pictures` reserves the + cells its picture takes (its art's, or `PictureCells` for one with none) and marks each row with its + `ImageMarkup`, `Row` set to a `PictureRow`. In `MarkupFormat.Ansi` such a row is drawn as the picture for a client with + `KittyGraphics` (Unicode placeholders, the picture sent once per connection), `InlineImages` + (iTerm2), `Sixel`, or `BlockArt` (half blocks), and as the art otherwise. The rows are the same + width either way, so a box or a flex row around the figure stays aligned. + - Each encoding is made once per picture and size and kept with the `TerminalPicture`, so a picture + shown to many connections is resized and compressed once. PNGs (iTerm2, and Kitty's `f=100`) are + RGB when the picture is opaque, filtered Up, at zlib level 2; sixel reads each band once and writes a + colour only over the columns it reaches. + +## 2.11.3 — 2026-10-07 + +### Fixed + +- **Percentage flex items stay beside their gaps in HTML.** A row of items sized in percent that added + up to 100% wrapped, because the gaps between them took width the percentages did not leave. Each + item's width now gives up its share of the gaps (`calc(50% - 1ch)`), and an item's padding and border + count inside its width. + ## 2.11.2 — 2026-10-07 ### Fixed diff --git a/MarkupString.Ansi/MarkupString.Ansi.csproj b/MarkupString.Ansi/MarkupString.Ansi.csproj index e8dadfc..2a06de6 100644 --- a/MarkupString.Ansi/MarkupString.Ansi.csproj +++ b/MarkupString.Ansi/MarkupString.Ansi.csproj @@ -12,7 +12,7 @@ each time one goes out; drop it for a release that removes public API on purpose, and put it back straight after. --> true - 2.11.1 + 2.15.4 Terminal styling for MarkupString: colours (16, 256 and truecolor), text attributes and links, an ansi() code parser, and emitters that fold a run's layers into one SGR sequence, HTML span, Pueblo/MXP tag or BBCode tag. diff --git a/MarkupString.Ansi/PublicAPI.Shipped.txt b/MarkupString.Ansi/PublicAPI.Shipped.txt index 645db1c..b76e6ec 100644 --- a/MarkupString.Ansi/PublicAPI.Shipped.txt +++ b/MarkupString.Ansi/PublicAPI.Shipped.txt @@ -70,6 +70,23 @@ MarkupString.Ansi.AnsiMxpEmitter.AnsiMxpEmitter() -> void MarkupString.Ansi.AnsiMxpEmitter.AnsiMxpEmitter(MarkupString.Ansi.AnsiColorDepth colorDepth) -> void MarkupString.Ansi.AnsiMxpEmitter.Format.get -> MarkupString.MarkupFormat! MarkupString.Ansi.AnsiMxpEmitter.TryEmit(MarkupString.MarkupSet! set, System.ReadOnlySpan body, in MarkupString.EmitContext context, System.Buffers.IBufferWriter! output) -> bool +MarkupString.Ansi.AnsiOutputOptions +MarkupString.Ansi.AnsiOutputOptions.$() -> MarkupString.Ansi.AnsiOutputOptions! +MarkupString.Ansi.AnsiOutputOptions.AnsiOutputOptions(MarkupString.Ansi.AnsiColorDepth ColorDepth = MarkupString.Ansi.AnsiColorDepth.TrueColor, MarkupString.Ansi.TerminalFeatures Features = MarkupString.Ansi.TerminalFeatures.Hyperlinks) -> void +MarkupString.Ansi.AnsiOutputOptions.CellHeight.get -> int +MarkupString.Ansi.AnsiOutputOptions.CellHeight.init -> void +MarkupString.Ansi.AnsiOutputOptions.CellWidth.get -> int +MarkupString.Ansi.AnsiOutputOptions.CellWidth.init -> void +MarkupString.Ansi.AnsiOutputOptions.ColorDepth.get -> MarkupString.Ansi.AnsiColorDepth +MarkupString.Ansi.AnsiOutputOptions.ColorDepth.init -> void +MarkupString.Ansi.AnsiOutputOptions.Deconstruct(out MarkupString.Ansi.AnsiColorDepth ColorDepth, out MarkupString.Ansi.TerminalFeatures Features) -> void +MarkupString.Ansi.AnsiOutputOptions.Equals(MarkupString.Ansi.AnsiOutputOptions? other) -> bool +MarkupString.Ansi.AnsiOutputOptions.Features.get -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.AnsiOutputOptions.Features.init -> void +MarkupString.Ansi.AnsiOutputOptions.Pictures.get -> MarkupString.Ansi.ITerminalPictureSource? +MarkupString.Ansi.AnsiOutputOptions.Pictures.init -> void +MarkupString.Ansi.AnsiOutputOptions.Terminal.get -> MarkupString.Ansi.TerminalProfile? +MarkupString.Ansi.AnsiOutputOptions.Terminal.init -> void MarkupString.Ansi.AnsiPalette MarkupString.Ansi.AnsiPuebloEmitter MarkupString.Ansi.AnsiPuebloEmitter.AnsiPuebloEmitter() -> void @@ -80,6 +97,7 @@ MarkupString.Ansi.AnsiRegistration MarkupString.Ansi.AnsiSetEmitter MarkupString.Ansi.AnsiSetEmitter.AnsiSetEmitter() -> void MarkupString.Ansi.AnsiSetEmitter.AnsiSetEmitter(MarkupString.Ansi.AnsiColorDepth colorDepth, bool hyperlinks) -> void +MarkupString.Ansi.AnsiSetEmitter.AnsiSetEmitter(MarkupString.Ansi.AnsiOutputOptions! options) -> void MarkupString.Ansi.AnsiSetEmitter.Format.get -> MarkupString.MarkupFormat! MarkupString.Ansi.AnsiSetEmitter.TryEmit(MarkupString.MarkupSet! set, System.ReadOnlySpan body, in MarkupString.EmitContext context, System.Buffers.IBufferWriter! output) -> bool MarkupString.Ansi.AnsiStyle @@ -135,6 +153,9 @@ MarkupString.Ansi.BellEmitter.Format.get -> MarkupString.MarkupFormat! MarkupString.Ansi.BellEmitter.MarkupType.get -> System.Type! MarkupString.Ansi.IAnsiStyleSource MarkupString.Ansi.IAnsiStyleSource.TryGetAnsiStyle(MarkupString.MarkupFormat! format, out MarkupString.Ansi.AnsiStyle style) -> bool +MarkupString.Ansi.ITerminalPictureSource +MarkupString.Ansi.ITerminalPictureSource.MarkTransmitted(uint imageId) -> bool +MarkupString.Ansi.ITerminalPictureSource.TryGetPicture(MarkupString.ImageMarkup! image, out MarkupString.Ansi.TerminalPicture? picture) -> bool MarkupString.Ansi.LinkKind MarkupString.Ansi.LinkKind.Command = 1 -> MarkupString.Ansi.LinkKind MarkupString.Ansi.LinkKind.Url = 0 -> MarkupString.Ansi.LinkKind @@ -145,6 +166,51 @@ MarkupString.Ansi.SgrBuilder.SgrBuilder() -> void MarkupString.Ansi.SgrBuilder.SgrBuilder(System.Span buffer) -> void MarkupString.Ansi.SgrBuilder.Written.get -> System.ReadOnlySpan MarkupString.Ansi.SgrWriter +MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.BlockArt = 32 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.CommandLinks = 2 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.Hyperlinks = 1 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.InlineImages = 8 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.KittyGraphics = 4 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.MovingPictures = 64 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.None = 0 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.Pictures = MarkupString.Ansi.TerminalFeatures.KittyGraphics | MarkupString.Ansi.TerminalFeatures.InlineImages | MarkupString.Ansi.TerminalFeatures.Sixel | MarkupString.Ansi.TerminalFeatures.BlockArt -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalFeatures.Sixel = 16 -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalPicture +MarkupString.Ansi.TerminalPicture.Frames.get -> System.Collections.Generic.IReadOnlyList! +MarkupString.Ansi.TerminalPicture.Height.get -> int +MarkupString.Ansi.TerminalPicture.Key.get -> string! +MarkupString.Ansi.TerminalPicture.Rgba.get -> System.ReadOnlyMemory +MarkupString.Ansi.TerminalPicture.TerminalPicture(string! key, int width, int height, System.Collections.Generic.IReadOnlyList! frames) -> void +MarkupString.Ansi.TerminalPicture.TerminalPicture(string! key, int width, int height, System.ReadOnlyMemory rgba) -> void +MarkupString.Ansi.TerminalPicture.Width.get -> int +MarkupString.Ansi.TerminalPictureFrame +MarkupString.Ansi.TerminalPictureFrame.Deconstruct(out System.ReadOnlyMemory Rgba, out System.TimeSpan Duration) -> void +MarkupString.Ansi.TerminalPictureFrame.Duration.get -> System.TimeSpan +MarkupString.Ansi.TerminalPictureFrame.Duration.init -> void +MarkupString.Ansi.TerminalPictureFrame.Equals(MarkupString.Ansi.TerminalPictureFrame other) -> bool +MarkupString.Ansi.TerminalPictureFrame.Rgba.get -> System.ReadOnlyMemory +MarkupString.Ansi.TerminalPictureFrame.Rgba.init -> void +MarkupString.Ansi.TerminalPictureFrame.TerminalPictureFrame() -> void +MarkupString.Ansi.TerminalPictureFrame.TerminalPictureFrame(System.ReadOnlyMemory Rgba, System.TimeSpan Duration) -> void +MarkupString.Ansi.TerminalProfile +MarkupString.Ansi.TerminalProfile.$() -> MarkupString.Ansi.TerminalProfile! +MarkupString.Ansi.TerminalProfile.Allow(MarkupString.Ansi.TerminalFeatures chosen) -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalProfile.Deconstruct(out string! Id, out string! Name, out MarkupString.Ansi.TerminalFeatures Features) -> void +MarkupString.Ansi.TerminalProfile.Equals(MarkupString.Ansi.TerminalProfile? other) -> bool +MarkupString.Ansi.TerminalProfile.Features.get -> MarkupString.Ansi.TerminalFeatures +MarkupString.Ansi.TerminalProfile.Features.init -> void +MarkupString.Ansi.TerminalProfile.Id.get -> string! +MarkupString.Ansi.TerminalProfile.Id.init -> void +MarkupString.Ansi.TerminalProfile.InlineImageLimit.get -> int +MarkupString.Ansi.TerminalProfile.InlineImageLimit.init -> void +MarkupString.Ansi.TerminalProfile.MultipartInlineImages.get -> bool +MarkupString.Ansi.TerminalProfile.MultipartInlineImages.init -> void +MarkupString.Ansi.TerminalProfile.Name.get -> string! +MarkupString.Ansi.TerminalProfile.Name.init -> void +MarkupString.Ansi.TerminalProfile.Reports.get -> System.Collections.Generic.IReadOnlyList! +MarkupString.Ansi.TerminalProfile.Reports.init -> void +MarkupString.Ansi.TerminalProfile.TerminalProfile(string! Id, string! Name, MarkupString.Ansi.TerminalFeatures Features) -> void MarkupString.Ansi.UrlSafety abstract MarkupString.Ansi.AnsiColor.$() -> MarkupString.Ansi.AnsiColor! const MarkupString.Ansi.BellEmitter.HtmlElement = "" -> string! @@ -170,7 +236,14 @@ override MarkupString.Ansi.AnsiColor.Xterm.ToString() -> string! override MarkupString.Ansi.AnsiMarkup.Equals(object? obj) -> bool override MarkupString.Ansi.AnsiMarkup.GetHashCode() -> int override MarkupString.Ansi.AnsiMarkup.ToString() -> string! +override MarkupString.Ansi.AnsiOutputOptions.Equals(object? obj) -> bool +override MarkupString.Ansi.AnsiOutputOptions.GetHashCode() -> int +override MarkupString.Ansi.AnsiOutputOptions.ToString() -> string! override MarkupString.Ansi.AnsiStyle.GetHashCode() -> int +override MarkupString.Ansi.TerminalPictureFrame.GetHashCode() -> int +override MarkupString.Ansi.TerminalProfile.Equals(object? obj) -> bool +override MarkupString.Ansi.TerminalProfile.GetHashCode() -> int +override MarkupString.Ansi.TerminalProfile.ToString() -> string! override sealed MarkupString.Ansi.AnsiColor.Default.Equals(MarkupString.Ansi.AnsiColor? other) -> bool override sealed MarkupString.Ansi.AnsiColor.Rgb.Equals(MarkupString.Ansi.AnsiColor? other) -> bool override sealed MarkupString.Ansi.AnsiColor.Standard.Equals(MarkupString.Ansi.AnsiColor? other) -> bool @@ -197,10 +270,14 @@ static MarkupString.Ansi.AnsiEscapeParser.Parse(string? text) -> MarkupString.Ma static MarkupString.Ansi.AnsiMarkup.Create(MarkupString.Ansi.AnsiColor? foreground = null, MarkupString.Ansi.AnsiColor? background = null, string? linkText = null, string? linkUrl = null, MarkupString.Ansi.LinkKind linkKind = MarkupString.Ansi.LinkKind.Url, bool blink = false, bool bold = false, bool clear = false, bool faint = false, bool inverted = false, bool italic = false, bool overlined = false, bool underlined = false, bool strikeThrough = false) -> MarkupString.Ansi.AnsiMarkup! static MarkupString.Ansi.AnsiMarkup.operator !=(MarkupString.Ansi.AnsiMarkup? left, MarkupString.Ansi.AnsiMarkup? right) -> bool static MarkupString.Ansi.AnsiMarkup.operator ==(MarkupString.Ansi.AnsiMarkup? left, MarkupString.Ansi.AnsiMarkup? right) -> bool +static MarkupString.Ansi.AnsiOutputOptions.For(MarkupString.Ansi.TerminalProfile! terminal, MarkupString.Ansi.TerminalFeatures chosen, MarkupString.Ansi.AnsiColorDepth colorDepth = MarkupString.Ansi.AnsiColorDepth.TrueColor) -> MarkupString.Ansi.AnsiOutputOptions! +static MarkupString.Ansi.AnsiOutputOptions.operator !=(MarkupString.Ansi.AnsiOutputOptions? left, MarkupString.Ansi.AnsiOutputOptions? right) -> bool +static MarkupString.Ansi.AnsiOutputOptions.operator ==(MarkupString.Ansi.AnsiOutputOptions? left, MarkupString.Ansi.AnsiOutputOptions? right) -> bool static MarkupString.Ansi.AnsiPalette.Standard(byte index, bool bright) -> MarkupString.Ansi.AnsiColor.Rgb! static MarkupString.Ansi.AnsiPalette.Xterm(byte index) -> MarkupString.Ansi.AnsiColor.Rgb! static MarkupString.Ansi.AnsiRegistration.WithAnsi(this MarkupString.MarkupRegistry! registry) -> MarkupString.MarkupRegistry! static MarkupString.Ansi.AnsiRegistration.WithAnsiOutput(this MarkupString.MarkupRegistry! registry, MarkupString.Ansi.AnsiColorDepth colorDepth, bool hyperlinks = true) -> MarkupString.MarkupRegistry! +static MarkupString.Ansi.AnsiRegistration.WithAnsiOutput(this MarkupString.MarkupRegistry! registry, MarkupString.Ansi.AnsiOutputOptions! options) -> MarkupString.MarkupRegistry! static MarkupString.Ansi.AnsiStyle.operator !=(MarkupString.Ansi.AnsiStyle left, MarkupString.Ansi.AnsiStyle right) -> bool static MarkupString.Ansi.AnsiStyle.operator ==(MarkupString.Ansi.AnsiStyle left, MarkupString.Ansi.AnsiStyle right) -> bool static MarkupString.Ansi.AnsiTheme.Paint(MarkupString.ThemeColor color, MarkupString.ThemePaint paint = MarkupString.ThemePaint.Text) -> MarkupString.Ansi.AnsiMarkup! @@ -208,6 +285,29 @@ static MarkupString.Ansi.AnsiTheme.ToLayoutTheme(this MarkupString.ThemePalette! static MarkupString.Ansi.SgrWriter.Reset(System.Buffers.IBufferWriter! output) -> void static MarkupString.Ansi.SgrWriter.Transition(in MarkupString.Ansi.AnsiStyle from, in MarkupString.Ansi.AnsiStyle to, System.Buffers.IBufferWriter! output) -> bool static MarkupString.Ansi.SgrWriter.WriteColorCodes(MarkupString.Ansi.AnsiColor! color, bool background, ref MarkupString.Ansi.SgrBuilder codes) -> void +static MarkupString.Ansi.TerminalPictureFrame.operator !=(MarkupString.Ansi.TerminalPictureFrame left, MarkupString.Ansi.TerminalPictureFrame right) -> bool +static MarkupString.Ansi.TerminalPictureFrame.operator ==(MarkupString.Ansi.TerminalPictureFrame left, MarkupString.Ansi.TerminalPictureFrame right) -> bool +static MarkupString.Ansi.TerminalProfile.Alacritty.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Contour.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Find(string? id) -> MarkupString.Ansi.TerminalProfile? +static MarkupString.Ansi.TerminalProfile.Foot.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Ghostty.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.ITerm2.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Identify(string? reported) -> MarkupString.Ansi.TerminalProfile? +static MarkupString.Ansi.TerminalProfile.Kitty.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Known.get -> System.Collections.Generic.IReadOnlyList! +static MarkupString.Ansi.TerminalProfile.Konsole.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Mintty.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Mlterm.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Rio.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Tmux.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.VsCode.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.Vte.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.WezTerm.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.WindowsTerminal.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.XTerm.get -> MarkupString.Ansi.TerminalProfile! +static MarkupString.Ansi.TerminalProfile.operator !=(MarkupString.Ansi.TerminalProfile? left, MarkupString.Ansi.TerminalProfile? right) -> bool +static MarkupString.Ansi.TerminalProfile.operator ==(MarkupString.Ansi.TerminalProfile? left, MarkupString.Ansi.TerminalProfile? right) -> bool static MarkupString.Ansi.UrlSafety.IsSafeNavigableUrl(string? url) -> bool static readonly MarkupString.Ansi.AnsiColor.Default.Instance -> MarkupString.Ansi.AnsiColor.Default! static readonly MarkupString.Ansi.AnsiCss.Fixed -> string! @@ -217,3 +317,5 @@ virtual MarkupString.Ansi.AnsiColor.Equals(MarkupString.Ansi.AnsiColor? other) - virtual MarkupString.Ansi.AnsiColor.PrintMembers(System.Text.StringBuilder! builder) -> bool ~override MarkupString.Ansi.AnsiStyle.Equals(object obj) -> bool ~override MarkupString.Ansi.AnsiStyle.ToString() -> string +~override MarkupString.Ansi.TerminalPictureFrame.Equals(object obj) -> bool +~override MarkupString.Ansi.TerminalPictureFrame.ToString() -> string diff --git a/MarkupString.Ansi/PublicAPI.Unshipped.txt b/MarkupString.Ansi/PublicAPI.Unshipped.txt index 64922c0..7dc5c58 100644 --- a/MarkupString.Ansi/PublicAPI.Unshipped.txt +++ b/MarkupString.Ansi/PublicAPI.Unshipped.txt @@ -1,103 +1 @@ #nullable enable -MarkupString.Ansi.AnsiOutputOptions -MarkupString.Ansi.AnsiOutputOptions.$() -> MarkupString.Ansi.AnsiOutputOptions! -MarkupString.Ansi.AnsiOutputOptions.AnsiOutputOptions(MarkupString.Ansi.AnsiColorDepth ColorDepth = MarkupString.Ansi.AnsiColorDepth.TrueColor, MarkupString.Ansi.TerminalFeatures Features = MarkupString.Ansi.TerminalFeatures.Hyperlinks) -> void -MarkupString.Ansi.AnsiOutputOptions.CellHeight.get -> int -MarkupString.Ansi.AnsiOutputOptions.CellHeight.init -> void -MarkupString.Ansi.AnsiOutputOptions.CellWidth.get -> int -MarkupString.Ansi.AnsiOutputOptions.CellWidth.init -> void -MarkupString.Ansi.AnsiOutputOptions.ColorDepth.get -> MarkupString.Ansi.AnsiColorDepth -MarkupString.Ansi.AnsiOutputOptions.ColorDepth.init -> void -MarkupString.Ansi.AnsiOutputOptions.Deconstruct(out MarkupString.Ansi.AnsiColorDepth ColorDepth, out MarkupString.Ansi.TerminalFeatures Features) -> void -MarkupString.Ansi.AnsiOutputOptions.Equals(MarkupString.Ansi.AnsiOutputOptions? other) -> bool -MarkupString.Ansi.AnsiOutputOptions.Features.get -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.AnsiOutputOptions.Features.init -> void -MarkupString.Ansi.AnsiOutputOptions.Pictures.get -> MarkupString.Ansi.ITerminalPictureSource? -MarkupString.Ansi.AnsiOutputOptions.Pictures.init -> void -MarkupString.Ansi.AnsiOutputOptions.Terminal.get -> MarkupString.Ansi.TerminalProfile? -MarkupString.Ansi.AnsiOutputOptions.Terminal.init -> void -MarkupString.Ansi.AnsiSetEmitter.AnsiSetEmitter(MarkupString.Ansi.AnsiOutputOptions! options) -> void -MarkupString.Ansi.ITerminalPictureSource -MarkupString.Ansi.ITerminalPictureSource.MarkTransmitted(uint imageId) -> bool -MarkupString.Ansi.ITerminalPictureSource.TryGetPicture(MarkupString.ImageMarkup! image, out MarkupString.Ansi.TerminalPicture? picture) -> bool -MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.BlockArt = 32 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.CommandLinks = 2 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.Hyperlinks = 1 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.InlineImages = 8 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.KittyGraphics = 4 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.MovingPictures = 64 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.None = 0 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.Pictures = MarkupString.Ansi.TerminalFeatures.KittyGraphics | MarkupString.Ansi.TerminalFeatures.InlineImages | MarkupString.Ansi.TerminalFeatures.Sixel | MarkupString.Ansi.TerminalFeatures.BlockArt -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalFeatures.Sixel = 16 -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalPicture -MarkupString.Ansi.TerminalPicture.Frames.get -> System.Collections.Generic.IReadOnlyList! -MarkupString.Ansi.TerminalPicture.Height.get -> int -MarkupString.Ansi.TerminalPicture.Key.get -> string! -MarkupString.Ansi.TerminalPicture.Rgba.get -> System.ReadOnlyMemory -MarkupString.Ansi.TerminalPicture.TerminalPicture(string! key, int width, int height, System.Collections.Generic.IReadOnlyList! frames) -> void -MarkupString.Ansi.TerminalPicture.TerminalPicture(string! key, int width, int height, System.ReadOnlyMemory rgba) -> void -MarkupString.Ansi.TerminalPicture.Width.get -> int -MarkupString.Ansi.TerminalPictureFrame -MarkupString.Ansi.TerminalPictureFrame.Deconstruct(out System.ReadOnlyMemory Rgba, out System.TimeSpan Duration) -> void -MarkupString.Ansi.TerminalPictureFrame.Duration.get -> System.TimeSpan -MarkupString.Ansi.TerminalPictureFrame.Duration.init -> void -MarkupString.Ansi.TerminalPictureFrame.Equals(MarkupString.Ansi.TerminalPictureFrame other) -> bool -MarkupString.Ansi.TerminalPictureFrame.Rgba.get -> System.ReadOnlyMemory -MarkupString.Ansi.TerminalPictureFrame.Rgba.init -> void -MarkupString.Ansi.TerminalPictureFrame.TerminalPictureFrame() -> void -MarkupString.Ansi.TerminalPictureFrame.TerminalPictureFrame(System.ReadOnlyMemory Rgba, System.TimeSpan Duration) -> void -MarkupString.Ansi.TerminalProfile -MarkupString.Ansi.TerminalProfile.$() -> MarkupString.Ansi.TerminalProfile! -MarkupString.Ansi.TerminalProfile.Allow(MarkupString.Ansi.TerminalFeatures chosen) -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalProfile.Deconstruct(out string! Id, out string! Name, out MarkupString.Ansi.TerminalFeatures Features) -> void -MarkupString.Ansi.TerminalProfile.Equals(MarkupString.Ansi.TerminalProfile? other) -> bool -MarkupString.Ansi.TerminalProfile.Features.get -> MarkupString.Ansi.TerminalFeatures -MarkupString.Ansi.TerminalProfile.Features.init -> void -MarkupString.Ansi.TerminalProfile.Id.get -> string! -MarkupString.Ansi.TerminalProfile.Id.init -> void -MarkupString.Ansi.TerminalProfile.InlineImageLimit.get -> int -MarkupString.Ansi.TerminalProfile.InlineImageLimit.init -> void -MarkupString.Ansi.TerminalProfile.MultipartInlineImages.get -> bool -MarkupString.Ansi.TerminalProfile.MultipartInlineImages.init -> void -MarkupString.Ansi.TerminalProfile.Name.get -> string! -MarkupString.Ansi.TerminalProfile.Name.init -> void -MarkupString.Ansi.TerminalProfile.Reports.get -> System.Collections.Generic.IReadOnlyList! -MarkupString.Ansi.TerminalProfile.Reports.init -> void -MarkupString.Ansi.TerminalProfile.TerminalProfile(string! Id, string! Name, MarkupString.Ansi.TerminalFeatures Features) -> void -override MarkupString.Ansi.AnsiOutputOptions.Equals(object? obj) -> bool -override MarkupString.Ansi.AnsiOutputOptions.GetHashCode() -> int -override MarkupString.Ansi.AnsiOutputOptions.ToString() -> string! -~override MarkupString.Ansi.TerminalPictureFrame.Equals(object obj) -> bool -override MarkupString.Ansi.TerminalPictureFrame.GetHashCode() -> int -~override MarkupString.Ansi.TerminalPictureFrame.ToString() -> string -override MarkupString.Ansi.TerminalProfile.Equals(object? obj) -> bool -override MarkupString.Ansi.TerminalProfile.GetHashCode() -> int -override MarkupString.Ansi.TerminalProfile.ToString() -> string! -static MarkupString.Ansi.AnsiOutputOptions.For(MarkupString.Ansi.TerminalProfile! terminal, MarkupString.Ansi.TerminalFeatures chosen, MarkupString.Ansi.AnsiColorDepth colorDepth = MarkupString.Ansi.AnsiColorDepth.TrueColor) -> MarkupString.Ansi.AnsiOutputOptions! -static MarkupString.Ansi.AnsiOutputOptions.operator !=(MarkupString.Ansi.AnsiOutputOptions? left, MarkupString.Ansi.AnsiOutputOptions? right) -> bool -static MarkupString.Ansi.AnsiOutputOptions.operator ==(MarkupString.Ansi.AnsiOutputOptions? left, MarkupString.Ansi.AnsiOutputOptions? right) -> bool -static MarkupString.Ansi.AnsiRegistration.WithAnsiOutput(this MarkupString.MarkupRegistry! registry, MarkupString.Ansi.AnsiOutputOptions! options) -> MarkupString.MarkupRegistry! -static MarkupString.Ansi.TerminalPictureFrame.operator !=(MarkupString.Ansi.TerminalPictureFrame left, MarkupString.Ansi.TerminalPictureFrame right) -> bool -static MarkupString.Ansi.TerminalPictureFrame.operator ==(MarkupString.Ansi.TerminalPictureFrame left, MarkupString.Ansi.TerminalPictureFrame right) -> bool -static MarkupString.Ansi.TerminalProfile.Alacritty.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Contour.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Find(string? id) -> MarkupString.Ansi.TerminalProfile? -static MarkupString.Ansi.TerminalProfile.Foot.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Ghostty.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.ITerm2.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Identify(string? reported) -> MarkupString.Ansi.TerminalProfile? -static MarkupString.Ansi.TerminalProfile.Kitty.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Known.get -> System.Collections.Generic.IReadOnlyList! -static MarkupString.Ansi.TerminalProfile.Konsole.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Mintty.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Mlterm.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Rio.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Tmux.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.VsCode.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.Vte.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.WezTerm.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.WindowsTerminal.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.XTerm.get -> MarkupString.Ansi.TerminalProfile! -static MarkupString.Ansi.TerminalProfile.operator !=(MarkupString.Ansi.TerminalProfile? left, MarkupString.Ansi.TerminalProfile? right) -> bool -static MarkupString.Ansi.TerminalProfile.operator ==(MarkupString.Ansi.TerminalProfile? left, MarkupString.Ansi.TerminalProfile? right) -> bool diff --git a/MarkupString.Html/MarkupString.Html.csproj b/MarkupString.Html/MarkupString.Html.csproj index 12e5e4c..bdd3634 100644 --- a/MarkupString.Html/MarkupString.Html.csproj +++ b/MarkupString.Html/MarkupString.Html.csproj @@ -12,7 +12,7 @@ each time one goes out; drop it for a release that removes public API on purpose, and put it back straight after. --> true - 2.11.1 + 2.15.4 Raw HTML tag markup for MarkupString — an anchor, a pre, a span — rendered as itself in the HTML, Pueblo and MXP formats and folded into terminal styling elsewhere, with checked construction and tag policies for untrusted input. diff --git a/MarkupString.Mxp/MarkupString.Mxp.csproj b/MarkupString.Mxp/MarkupString.Mxp.csproj index b67cff2..2179cff 100644 --- a/MarkupString.Mxp/MarkupString.Mxp.csproj +++ b/MarkupString.Mxp/MarkupString.Mxp.csproj @@ -12,7 +12,7 @@ each time one goes out; drop it for a release that removes public API on purpose, and put it back straight after. --> true - 2.11.1 + 2.15.4 MXP for MarkupString: writes the shared vocabulary — sounds, music, pictures, panes, gauges, status, variables, link expiry, relocation, login prompts — as MXP tags, holding each to what the client said it supports. diff --git a/MarkupString.Pueblo/MarkupString.Pueblo.csproj b/MarkupString.Pueblo/MarkupString.Pueblo.csproj index 1cc58f5..a045f7f 100644 --- a/MarkupString.Pueblo/MarkupString.Pueblo.csproj +++ b/MarkupString.Pueblo/MarkupString.Pueblo.csproj @@ -12,7 +12,7 @@ each time one goes out; drop it for a release that removes public API on purpose, and put it back straight after. --> true - 2.11.1 + 2.15.4 Pueblo for MarkupString: writes the shared vocabulary — sounds, pictures, panes, clearing the screen, prefetching — in the Pueblo client's own HTML extensions. diff --git a/MarkupString/MarkupString.csproj b/MarkupString/MarkupString.csproj index c707066..4c64ece 100644 --- a/MarkupString/MarkupString.csproj +++ b/MarkupString/MarkupString.csproj @@ -12,7 +12,7 @@ each time one goes out; drop it for a release that removes public API on purpose, and put it back straight after. --> true - 2.11.1 + 2.15.4 Immutable styled text: a string plus layered markup runs, rendered to ANSI, HTML, Pueblo, MXP, BBCode or plain text through a registry of emitters, and round-tripped through JSON. diff --git a/MarkupString/PublicAPI.Shipped.txt b/MarkupString/PublicAPI.Shipped.txt index ad4977c..439eda8 100644 --- a/MarkupString/PublicAPI.Shipped.txt +++ b/MarkupString/PublicAPI.Shipped.txt @@ -156,8 +156,11 @@ MarkupString.ImageMarkup.Equals(MarkupString.ImageMarkup? other) -> bool MarkupString.ImageMarkup.Height.get -> int? MarkupString.ImageMarkup.Height.init -> void MarkupString.ImageMarkup.ImageMarkup(string! Source, string? Description = null, int? Width = null, int? Height = null, MarkupString.ImageAlign? Align = null) -> void +MarkupString.ImageMarkup.Row.get -> MarkupString.PictureRow? +MarkupString.ImageMarkup.Row.init -> void MarkupString.ImageMarkup.Source.get -> string! MarkupString.ImageMarkup.Source.init -> void +MarkupString.ImageMarkup.StartsPicture(in MarkupString.EmitContext context) -> bool MarkupString.ImageMarkup.Width.get -> int? MarkupString.ImageMarkup.Width.init -> void MarkupString.Layout.Aligned @@ -515,6 +518,8 @@ MarkupString.Layout.LayoutContext.Linear.get -> bool MarkupString.Layout.LayoutContext.Linear.init -> void MarkupString.Layout.LayoutContext.Lines(MarkupString.Layout.Block! block, int width) -> System.Collections.Generic.List! MarkupString.Layout.LayoutContext.Paint(System.Func! part, MarkupString.MarkupText! text) -> MarkupString.MarkupText! +MarkupString.Layout.LayoutContext.Pictures.get -> System.Func? +MarkupString.Layout.LayoutContext.Pictures.init -> void MarkupString.Layout.LayoutContext.TextAlignment.get -> MarkupString.Layout.Alignment MarkupString.Layout.LayoutContext.TextAlignment.init -> void MarkupString.Layout.LayoutContext.Theme.get -> MarkupString.Layout.LayoutTheme! @@ -590,6 +595,15 @@ MarkupString.Layout.LayoutTheme.StripeColor.get -> MarkupString.IMarkup? MarkupString.Layout.LayoutTheme.StripeColor.init -> void MarkupString.Layout.LayoutTheme.TitleColor.get -> MarkupString.IMarkup? MarkupString.Layout.LayoutTheme.TitleColor.init -> void +MarkupString.Layout.PictureCells +MarkupString.Layout.PictureCells.Columns.get -> int +MarkupString.Layout.PictureCells.Columns.init -> void +MarkupString.Layout.PictureCells.Deconstruct(out int Columns, out int Rows) -> void +MarkupString.Layout.PictureCells.Equals(MarkupString.Layout.PictureCells other) -> bool +MarkupString.Layout.PictureCells.PictureCells() -> void +MarkupString.Layout.PictureCells.PictureCells(int Columns, int Rows) -> void +MarkupString.Layout.PictureCells.Rows.get -> int +MarkupString.Layout.PictureCells.Rows.init -> void MarkupString.Layout.Rule MarkupString.Layout.Rule.Border.get -> MarkupString.Layout.BorderStyle? MarkupString.Layout.Rule.Border.init -> void @@ -632,6 +646,7 @@ MarkupString.Layout.Stack.Deconstruct(out System.Collections.Immutable.Immutable MarkupString.Layout.Stack.Equals(MarkupString.Layout.Stack? other) -> bool MarkupString.Layout.Stack.Stack(System.Collections.Immutable.ImmutableArray Children) -> void MarkupString.Layout.Table +MarkupString.Layout.Table.ColumnWidths(MarkupString.Layout.LayoutContext! context, int width) -> System.Collections.Immutable.ImmutableArray MarkupString.Layout.Table.Columns.get -> System.Collections.Immutable.ImmutableArray MarkupString.Layout.Table.Columns.init -> void MarkupString.Layout.Table.Deconstruct(out System.Collections.Immutable.ImmutableArray Columns, out System.Collections.Immutable.ImmutableArray> Rows) -> void @@ -653,6 +668,8 @@ MarkupString.Layout.TableColumn.Alignment.get -> MarkupString.Layout.Alignment MarkupString.Layout.TableColumn.Alignment.init -> void MarkupString.Layout.TableColumn.Deconstruct(out MarkupString.MarkupText! Header) -> void MarkupString.Layout.TableColumn.Equals(MarkupString.Layout.TableColumn? other) -> bool +MarkupString.Layout.TableColumn.Grow.get -> int +MarkupString.Layout.TableColumn.Grow.init -> void MarkupString.Layout.TableColumn.Header.get -> MarkupString.MarkupText! MarkupString.Layout.TableColumn.Header.init -> void MarkupString.Layout.TableColumn.Max.get -> int @@ -856,6 +873,19 @@ MarkupString.PaneMarkup.Name.init -> void MarkupString.PaneMarkup.PaneMarkup(string! Name, string? Title = null) -> void MarkupString.PaneMarkup.Title.get -> string? MarkupString.PaneMarkup.Title.init -> void +MarkupString.PictureRow +MarkupString.PictureRow.Columns.get -> int +MarkupString.PictureRow.Columns.init -> void +MarkupString.PictureRow.Deconstruct(out int Row, out int Rows, out int Columns) -> void +MarkupString.PictureRow.Equals(MarkupString.PictureRow other) -> bool +MarkupString.PictureRow.IsDescription.get -> bool +MarkupString.PictureRow.IsDescription.init -> void +MarkupString.PictureRow.PictureRow() -> void +MarkupString.PictureRow.PictureRow(int Row, int Rows, int Columns) -> void +MarkupString.PictureRow.Row.get -> int +MarkupString.PictureRow.Row.init -> void +MarkupString.PictureRow.Rows.get -> int +MarkupString.PictureRow.Rows.init -> void MarkupString.PrefetchMarkup MarkupString.PrefetchMarkup.$() -> MarkupString.PrefetchMarkup! MarkupString.PrefetchMarkup.Deconstruct(out string! Source) -> void @@ -1182,6 +1212,7 @@ override MarkupString.Layout.LayoutSeparator.ToString() -> string! override MarkupString.Layout.LayoutTheme.Equals(object? obj) -> bool override MarkupString.Layout.LayoutTheme.GetHashCode() -> int override MarkupString.Layout.LayoutTheme.ToString() -> string! +override MarkupString.Layout.PictureCells.GetHashCode() -> int override MarkupString.Layout.Rule.$() -> MarkupString.Layout.Rule! override MarkupString.Layout.Rule.Draw(MarkupString.Layout.LayoutContext! context, int width, System.Collections.Generic.IList! lines) -> void override MarkupString.Layout.Rule.DrawLinear(MarkupString.Layout.LayoutContext! context, int width, System.Collections.Generic.IList! lines) -> void @@ -1252,6 +1283,7 @@ override MarkupString.OklchColor.GetHashCode() -> int override MarkupString.PaneMarkup.Equals(object? obj) -> bool override MarkupString.PaneMarkup.GetHashCode() -> int override MarkupString.PaneMarkup.ToString() -> string! +override MarkupString.PictureRow.GetHashCode() -> int override MarkupString.PrefetchMarkup.Equals(object? obj) -> bool override MarkupString.PrefetchMarkup.GetHashCode() -> int override MarkupString.PrefetchMarkup.ToString() -> string! @@ -1415,6 +1447,9 @@ static MarkupString.Layout.LayoutTheme.Default.get -> MarkupString.Layout.Layout static MarkupString.Layout.LayoutTheme.Defaults.get -> MarkupString.Layout.LayoutTheme! static MarkupString.Layout.LayoutTheme.operator !=(MarkupString.Layout.LayoutTheme? left, MarkupString.Layout.LayoutTheme? right) -> bool static MarkupString.Layout.LayoutTheme.operator ==(MarkupString.Layout.LayoutTheme? left, MarkupString.Layout.LayoutTheme? right) -> bool +static MarkupString.Layout.PictureCells.Fit(int width, int height, int columns, int cellWidth = 10, int cellHeight = 20) -> MarkupString.Layout.PictureCells +static MarkupString.Layout.PictureCells.operator !=(MarkupString.Layout.PictureCells left, MarkupString.Layout.PictureCells right) -> bool +static MarkupString.Layout.PictureCells.operator ==(MarkupString.Layout.PictureCells left, MarkupString.Layout.PictureCells right) -> bool static MarkupString.Layout.Rule.operator !=(MarkupString.Layout.Rule? left, MarkupString.Layout.Rule? right) -> bool static MarkupString.Layout.Rule.operator ==(MarkupString.Layout.Rule? left, MarkupString.Layout.Rule? right) -> bool static MarkupString.Layout.Shaded.operator !=(MarkupString.Layout.Shaded? left, MarkupString.Layout.Shaded? right) -> bool @@ -1503,6 +1538,8 @@ static MarkupString.OklchColor.operator !=(MarkupString.OklchColor left, MarkupS static MarkupString.OklchColor.operator ==(MarkupString.OklchColor left, MarkupString.OklchColor right) -> bool static MarkupString.PaneMarkup.operator !=(MarkupString.PaneMarkup? left, MarkupString.PaneMarkup? right) -> bool static MarkupString.PaneMarkup.operator ==(MarkupString.PaneMarkup? left, MarkupString.PaneMarkup? right) -> bool +static MarkupString.PictureRow.operator !=(MarkupString.PictureRow left, MarkupString.PictureRow right) -> bool +static MarkupString.PictureRow.operator ==(MarkupString.PictureRow left, MarkupString.PictureRow right) -> bool static MarkupString.PrefetchMarkup.operator !=(MarkupString.PrefetchMarkup? left, MarkupString.PrefetchMarkup? right) -> bool static MarkupString.PrefetchMarkup.operator ==(MarkupString.PrefetchMarkup? left, MarkupString.PrefetchMarkup? right) -> bool static MarkupString.RelocateMarkup.operator !=(MarkupString.RelocateMarkup? left, MarkupString.RelocateMarkup? right) -> bool @@ -1573,16 +1610,17 @@ virtual MarkupString.Layout.LayoutCell.PrintMembers(System.Text.StringBuilder! b ~override MarkupString.Layout.BlockSize.Equals(object obj) -> bool ~override MarkupString.Layout.Indent.Equals(object obj) -> bool ~override MarkupString.Layout.Indent.ToString() -> string +~override MarkupString.Layout.PictureCells.Equals(object obj) -> bool +~override MarkupString.Layout.PictureCells.ToString() -> string ~override MarkupString.Layout.TextLine.Equals(object obj) -> bool ~override MarkupString.Layout.TextLine.ToString() -> string ~override MarkupString.OklchColor.Equals(object obj) -> bool ~override MarkupString.OklchColor.ToString() -> string +~override MarkupString.PictureRow.Equals(object obj) -> bool +~override MarkupString.PictureRow.ToString() -> string ~override MarkupString.RgbColor.Equals(object obj) -> bool ~override MarkupString.RgbColor.ToString() -> string ~override MarkupString.Run.Equals(object obj) -> bool ~override MarkupString.Run.ToString() -> string ~override MarkupString.ThemeColor.Equals(object obj) -> bool ~override MarkupString.ThemeColor.ToString() -> string -MarkupString.Layout.Table.ColumnWidths(MarkupString.Layout.LayoutContext! context, int width) -> System.Collections.Immutable.ImmutableArray -MarkupString.Layout.TableColumn.Grow.get -> int -MarkupString.Layout.TableColumn.Grow.init -> void diff --git a/MarkupString/PublicAPI.Unshipped.txt b/MarkupString/PublicAPI.Unshipped.txt index 22902c3..7dc5c58 100644 --- a/MarkupString/PublicAPI.Unshipped.txt +++ b/MarkupString/PublicAPI.Unshipped.txt @@ -1,39 +1 @@ #nullable enable -MarkupString.Layout.LayoutContext.Pictures.get -> System.Func? -MarkupString.Layout.LayoutContext.Pictures.init -> void -MarkupString.Layout.PictureCells -MarkupString.Layout.PictureCells.Columns.get -> int -MarkupString.Layout.PictureCells.Columns.init -> void -MarkupString.Layout.PictureCells.Deconstruct(out int Columns, out int Rows) -> void -MarkupString.Layout.PictureCells.Equals(MarkupString.Layout.PictureCells other) -> bool -MarkupString.Layout.PictureCells.PictureCells() -> void -MarkupString.Layout.PictureCells.PictureCells(int Columns, int Rows) -> void -MarkupString.Layout.PictureCells.Rows.get -> int -MarkupString.Layout.PictureCells.Rows.init -> void -override MarkupString.Layout.PictureCells.GetHashCode() -> int -static MarkupString.Layout.PictureCells.Fit(int width, int height, int columns, int cellWidth = 10, int cellHeight = 20) -> MarkupString.Layout.PictureCells -static MarkupString.Layout.PictureCells.operator !=(MarkupString.Layout.PictureCells left, MarkupString.Layout.PictureCells right) -> bool -static MarkupString.Layout.PictureCells.operator ==(MarkupString.Layout.PictureCells left, MarkupString.Layout.PictureCells right) -> bool -~override MarkupString.Layout.PictureCells.Equals(object obj) -> bool -~override MarkupString.Layout.PictureCells.ToString() -> string -MarkupString.ImageMarkup.Row.get -> MarkupString.PictureRow? -MarkupString.ImageMarkup.Row.init -> void -MarkupString.ImageMarkup.StartsPicture(in MarkupString.EmitContext context) -> bool -MarkupString.PictureRow -MarkupString.PictureRow.Columns.get -> int -MarkupString.PictureRow.Columns.init -> void -MarkupString.PictureRow.Deconstruct(out int Row, out int Rows, out int Columns) -> void -MarkupString.PictureRow.Equals(MarkupString.PictureRow other) -> bool -MarkupString.PictureRow.PictureRow() -> void -MarkupString.PictureRow.PictureRow(int Row, int Rows, int Columns) -> void -MarkupString.PictureRow.Row.get -> int -MarkupString.PictureRow.Row.init -> void -MarkupString.PictureRow.Rows.get -> int -MarkupString.PictureRow.Rows.init -> void -override MarkupString.PictureRow.GetHashCode() -> int -static MarkupString.PictureRow.operator !=(MarkupString.PictureRow left, MarkupString.PictureRow right) -> bool -static MarkupString.PictureRow.operator ==(MarkupString.PictureRow left, MarkupString.PictureRow right) -> bool -~override MarkupString.PictureRow.Equals(object obj) -> bool -~override MarkupString.PictureRow.ToString() -> string -MarkupString.PictureRow.IsDescription.get -> bool -MarkupString.PictureRow.IsDescription.init -> void