// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // NS_ASSUME_NONNULL_BEGIN extern const CGFloat kOWSMessageCellCornerRadius_Large; extern const CGFloat kOWSMessageCellCornerRadius_Small; typedef NS_OPTIONS(NSUInteger, OWSDirectionalRectCorner) { OWSDirectionalRectCornerTopLeading = 1 << 0, OWSDirectionalRectCornerTopTrailing = 1 << 1, OWSDirectionalRectCornerBottomLeading = 1 << 2, OWSDirectionalRectCornerBottomTrailing = 1 << 3, OWSDirectionalRectCornerAllCorners = ~0UL }; @class OWSBubbleView; @protocol OWSBubbleViewPartner - (void)updateLayers; - (void)setBubbleView:(nullable OWSBubbleView *)bubbleView; @end #pragma mark - @interface OWSBubbleView : UIView + (UIBezierPath *)roundedBezierRectWithBubbleTop:(CGFloat)bubbleTop bubbleLeft:(CGFloat)bubbleLeft bubbleBottom:(CGFloat)bubbleBottom bubbleRight:(CGFloat)bubbleRight sharpCornerRadius:(CGFloat)sharpCornerRadius wideCornerRadius:(CGFloat)wideCornerRadius sharpCorners:(OWSDirectionalRectCorner)sharpCorners; @property (nonatomic, nullable) UIColor *bubbleColor; @property (nonatomic) OWSDirectionalRectCorner sharpCorners; - (UIBezierPath *)maskPath; #pragma mark - Coordination - (void)addPartnerView:(id)view; - (void)clearPartnerViews; - (void)updatePartnerViews; - (CGFloat)minWidth; - (CGFloat)minHeight; @end NS_ASSUME_NONNULL_END