mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Add the RichText.textSpoiler case end-to-end: model + Postbox coding, FlatBuffers schema/codec, and Api.RichText parsing/serialization (lossless). Display attaches the spoiler attribute, collects per-line spoiler rects in the V2 layout, clips obscured glyphs and draws an energy-gated dust overlay in the V2 text view, propagates the reveal flag across the nested V2 tree (building dust for freshly-created text views), and wires tap-to-reveal routing in the rich-data bubble. Also seeds the streaming reveal cursor across chunk rebuilds and refines status date positioning. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
157 lines
2.8 KiB
Text
157 lines
2.8 KiB
Text
include "MediaId.fbs";
|
|
include "PixelDimensions.fbs";
|
|
|
|
namespace TelegramCore;
|
|
|
|
union RichText_Value {
|
|
RichText_Empty,
|
|
RichText_Plain,
|
|
RichText_Bold,
|
|
RichText_Italic,
|
|
RichText_Underline,
|
|
RichText_Strikethrough,
|
|
RichText_Fixed,
|
|
RichText_Url,
|
|
RichText_Email,
|
|
RichText_Concat,
|
|
RichText_Subscript,
|
|
RichText_Superscript,
|
|
RichText_Marked,
|
|
RichText_Phone,
|
|
RichText_Image,
|
|
RichText_Anchor,
|
|
RichText_Formula,
|
|
RichText_CustomEmoji,
|
|
RichText_AutoEmail,
|
|
RichText_AutoPhone,
|
|
RichText_AutoUrl,
|
|
RichText_BankCard,
|
|
RichText_BotCommand,
|
|
RichText_Cashtag,
|
|
RichText_Hashtag,
|
|
RichText_Mention,
|
|
RichText_MentionName,
|
|
RichText_Spoiler
|
|
}
|
|
|
|
table RichText {
|
|
value:RichText_Value (id: 1, required);
|
|
}
|
|
|
|
table RichText_Empty {}
|
|
|
|
table RichText_Plain {
|
|
text:string (id: 0, required);
|
|
}
|
|
|
|
table RichText_Bold {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Italic {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Underline {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Strikethrough {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Fixed {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Url {
|
|
text:RichText (id: 0, required);
|
|
url:string (id: 1, required);
|
|
webpageId:MediaId (id: 2);
|
|
}
|
|
|
|
table RichText_Email {
|
|
text:RichText (id: 0, required);
|
|
email:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Concat {
|
|
texts:[RichText] (id: 0, required);
|
|
}
|
|
|
|
table RichText_Subscript {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Superscript {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Marked {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Phone {
|
|
text:RichText (id: 0, required);
|
|
phone:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Image {
|
|
id:MediaId (id: 0, required);
|
|
dimensions:PixelDimensions (id: 1, required);
|
|
}
|
|
|
|
table RichText_Anchor {
|
|
text:RichText (id: 0, required);
|
|
name:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Formula {
|
|
latex:string (id: 0, required);
|
|
}
|
|
|
|
table RichText_CustomEmoji {
|
|
fileId:long (id: 0);
|
|
alt:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_AutoEmail {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_AutoPhone {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_AutoUrl {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_BankCard {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_BotCommand {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Cashtag {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Hashtag {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Mention {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_MentionName {
|
|
text:RichText (id: 0, required);
|
|
peerId:long (id: 1);
|
|
}
|
|
|
|
table RichText_Spoiler {
|
|
text:RichText (id: 0, required);
|
|
}
|