mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Quote improvements
This commit is contained in:
@@ -1482,7 +1482,7 @@ private final class QuoteBackgroundView: UIView {
|
|||||||
}
|
}
|
||||||
if let image = self.collapseButtonIconView.image {
|
if let image = self.collapseButtonIconView.image {
|
||||||
let iconSize = image.size.aspectFitted(collapseButtonSize)
|
let iconSize = image.size.aspectFitted(collapseButtonSize)
|
||||||
self.collapseButtonIconView.frame = CGRect(origin: CGPoint(x: self.collapseButton.bounds.width - 2.0 - collapseButtonSize.width + floorToScreenPixels((collapseButtonSize.width - iconSize.width) * 0.5), y: 2.0 + floorToScreenPixels((collapseButtonSize.height - iconSize.height) * 0.5)), size: iconSize)
|
self.collapseButtonIconView.frame = CGRect(origin: CGPoint(x: self.collapseButton.bounds.width - 4.0 - collapseButtonSize.width + floorToScreenPixels((collapseButtonSize.width - iconSize.width) * 0.5), y: 4.0 + floorToScreenPixels((collapseButtonSize.height - iconSize.height) * 0.5)), size: iconSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
var primaryColor: UIColor
|
var primaryColor: UIColor
|
||||||
|
|||||||
@@ -594,6 +594,8 @@ public class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
let trailingWidthToMeasure: CGFloat
|
let trailingWidthToMeasure: CGFloat
|
||||||
if let lastSegment = textLayout.segments.last, lastSegment.hasRTL {
|
if let lastSegment = textLayout.segments.last, lastSegment.hasRTL {
|
||||||
trailingWidthToMeasure = 10000.0
|
trailingWidthToMeasure = 10000.0
|
||||||
|
} else if let lastSegment = textLayout.segments.last, lastSegment.hasBlockQuote {
|
||||||
|
trailingWidthToMeasure = textLayout.size.width
|
||||||
} else {
|
} else {
|
||||||
trailingWidthToMeasure = textLayout.trailingLineWidth
|
trailingWidthToMeasure = textLayout.trailingLineWidth
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,19 +33,12 @@ private func generateBlockMaskImage() -> UIImage {
|
|||||||
let colorSpace = CGColorSpaceCreateDeviceRGB()
|
let colorSpace = CGColorSpaceCreateDeviceRGB()
|
||||||
|
|
||||||
var locations: [CGFloat] = [0.0, 0.5, 1.0]
|
var locations: [CGFloat] = [0.0, 0.5, 1.0]
|
||||||
var colors: [CGColor] = [UIColor.black.withAlphaComponent(0.0).cgColor, UIColor.black.withAlphaComponent(0.0).cgColor, UIColor.black.cgColor]
|
let colors: [CGColor] = [UIColor.black.withAlphaComponent(0.0).cgColor, UIColor.black.withAlphaComponent(0.0).cgColor, UIColor.black.cgColor]
|
||||||
|
|
||||||
var gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: &locations)!
|
let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: &locations)!
|
||||||
|
|
||||||
context.setBlendMode(.copy)
|
context.setBlendMode(.copy)
|
||||||
context.drawRadialGradient(gradient, startCenter: CGPoint(x: size.width - 20.0, y: size.height), startRadius: 0.0, endCenter: CGPoint(x: size.width - 20.0, y: size.height), endRadius: 34.0, options: CGGradientDrawingOptions())
|
context.drawRadialGradient(gradient, startCenter: CGPoint(x: size.width - 20.0, y: size.height), startRadius: 0.0, endCenter: CGPoint(x: size.width - 20.0, y: size.height), endRadius: 34.0, options: CGGradientDrawingOptions())
|
||||||
|
|
||||||
locations = [0.0, 0.5, 1.0]
|
|
||||||
colors = [UIColor.black.withAlphaComponent(0.0).cgColor, UIColor.black.withAlphaComponent(0.4).cgColor, UIColor.black.cgColor]
|
|
||||||
gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: &locations)!
|
|
||||||
|
|
||||||
context.setBlendMode(.destinationIn)
|
|
||||||
context.drawLinearGradient(gradient, start: CGPoint(x: 0.0, y: size.height), end: CGPoint(x: 0.0, y: size.height - 18.0), options: CGGradientDrawingOptions())
|
|
||||||
})!.resizableImage(withCapInsets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: size.height - 1.0, right: size.width - 1.0), resizingMode: .stretch)
|
})!.resizableImage(withCapInsets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: size.height - 1.0, right: size.width - 1.0), resizingMode: .stretch)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,6 +183,10 @@ public final class InteractiveTextNodeSegment {
|
|||||||
public let spoilerWords: [(NSRange, CGRect)]
|
public let spoilerWords: [(NSRange, CGRect)]
|
||||||
public let embeddedItems: [InteractiveTextNodeLayout.EmbeddedItem]
|
public let embeddedItems: [InteractiveTextNodeLayout.EmbeddedItem]
|
||||||
|
|
||||||
|
public var hasBlockQuote: Bool {
|
||||||
|
return self.blockQuote != nil
|
||||||
|
}
|
||||||
|
|
||||||
fileprivate init(
|
fileprivate init(
|
||||||
lines: [InteractiveTextNodeLine],
|
lines: [InteractiveTextNodeLine],
|
||||||
visibleLineCount: Int,
|
visibleLineCount: Int,
|
||||||
@@ -1589,7 +1586,7 @@ open class InteractiveTextNode: ASDisplayNode, TextNodeProtocol, UIGestureRecogn
|
|||||||
|
|
||||||
var segmentBlockQuote: InteractiveTextNodeBlockQuote?
|
var segmentBlockQuote: InteractiveTextNodeBlockQuote?
|
||||||
if let blockQuote = segment.blockQuote, let tintColor = segment.tintColor, let blockIndex {
|
if let blockQuote = segment.blockQuote, let tintColor = segment.tintColor, let blockIndex {
|
||||||
segmentBlockQuote = InteractiveTextNodeBlockQuote(id: blockIndex, frame: CGRect(origin: CGPoint(x: 0.0, y: blockMinY - 2.0), size: CGSize(width: blockWidth, height: blockMaxY - (blockMinY - 2.0) + 4.0)), data: blockQuote, tintColor: tintColor, secondaryTintColor: segment.secondaryTintColor, tertiaryTintColor: segment.tertiaryTintColor, backgroundColor: blockQuote.backgroundColor, isCollapsed: (blockQuote.isCollapsible && segmentLines.count > 3) ? isCollapsed : nil)
|
segmentBlockQuote = InteractiveTextNodeBlockQuote(id: blockIndex, frame: CGRect(origin: CGPoint(x: 0.0, y: blockMinY - 2.0), size: CGSize(width: blockWidth, height: blockMaxY - (blockMinY - 2.0) + 3.0)), data: blockQuote, tintColor: tintColor, secondaryTintColor: segment.secondaryTintColor, tertiaryTintColor: segment.tertiaryTintColor, backgroundColor: blockQuote.backgroundColor, isCollapsed: (blockQuote.isCollapsible && segmentLines.count > 3) ? isCollapsed : nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
segments.append(InteractiveTextNodeSegment(
|
segments.append(InteractiveTextNodeSegment(
|
||||||
|
|||||||
Reference in New Issue
Block a user