CR: move builder to BubbleView

pull/1/head
Michael Kirk 7 years ago
parent 0ecc97d5ff
commit fa89a84daf

@ -30,14 +30,6 @@ NS_ASSUME_NONNULL_BEGIN
+ (OWSBubbleShapeView *)bubbleShadowView; + (OWSBubbleShapeView *)bubbleShadowView;
+ (OWSBubbleShapeView *)bubbleClipView; + (OWSBubbleShapeView *)bubbleClipView;
+ (UIBezierPath *)roundedBezierRectWithBubbleTop:(CGFloat)bubbleTop
bubbleLeft:(CGFloat)bubbleLeft
bubbleBottom:(CGFloat)bubbleBottom
bubbleRight:(CGFloat)bubbleRight
sharpCornerRadius:(CGFloat)sharpCornerRadius
wideCornerRadius:(CGFloat)wideCornerRadius
sharpCorners:(UIRectCorner)sharpCorners;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -193,60 +193,6 @@ typedef NS_ENUM(NSUInteger, OWSBubbleShapeViewMode) {
[CATransaction commit]; [CATransaction commit];
} }
+ (UIBezierPath *)roundedBezierRectWithBubbleTop:(CGFloat)bubbleTop
bubbleLeft:(CGFloat)bubbleLeft
bubbleBottom:(CGFloat)bubbleBottom
bubbleRight:(CGFloat)bubbleRight
sharpCornerRadius:(CGFloat)sharpCornerRadius
wideCornerRadius:(CGFloat)wideCornerRadius
sharpCorners:(UIRectCorner)sharpCorners
{
UIBezierPath *bezierPath = [UIBezierPath new];
const CGFloat topLeftRounding = (sharpCorners & UIRectCornerTopLeft) ? sharpCornerRadius : wideCornerRadius;
const CGFloat topRightRounding = (sharpCorners & UIRectCornerTopRight) ? sharpCornerRadius : wideCornerRadius;
const CGFloat bottomRightRounding = (sharpCorners & UIRectCornerBottomRight) ? sharpCornerRadius : wideCornerRadius;
const CGFloat bottomLeftRounding = (sharpCorners & UIRectCornerBottomLeft) ? sharpCornerRadius : wideCornerRadius;
const CGFloat topAngle = 3.0f * M_PI_2;
const CGFloat rightAngle = 0.0f;
const CGFloat bottomAngle = M_PI_2;
const CGFloat leftAngle = M_PI;
// starting just to the right of the top left corner and working clockwise
[bezierPath moveToPoint:CGPointMake(bubbleLeft + topLeftRounding, bubbleTop)];
// top right corner
[bezierPath addArcWithCenter:CGPointMake(bubbleRight - topRightRounding, bubbleTop + topRightRounding)
radius:topRightRounding
startAngle:topAngle
endAngle:rightAngle
clockwise:true];
// bottom right corner
[bezierPath addArcWithCenter:CGPointMake(bubbleRight - bottomRightRounding, bubbleBottom - bottomRightRounding)
radius:bottomRightRounding
startAngle:rightAngle
endAngle:bottomAngle
clockwise:true];
// bottom left corner
[bezierPath addArcWithCenter:CGPointMake(bubbleLeft + bottomLeftRounding, bubbleBottom - bottomLeftRounding)
radius:bottomLeftRounding
startAngle:bottomAngle
endAngle:leftAngle
clockwise:true];
// top left corner
[bezierPath addArcWithCenter:CGPointMake(bubbleLeft + topLeftRounding, bubbleTop + topLeftRounding)
radius:topLeftRounding
startAngle:leftAngle
endAngle:topAngle
clockwise:true];
return bezierPath;
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -23,6 +23,14 @@ extern const CGFloat kOWSMessageCellCornerRadius_Small;
@interface OWSBubbleView : UIView @interface OWSBubbleView : UIView
+ (UIBezierPath *)roundedBezierRectWithBubbleTop:(CGFloat)bubbleTop
bubbleLeft:(CGFloat)bubbleLeft
bubbleBottom:(CGFloat)bubbleBottom
bubbleRight:(CGFloat)bubbleRight
sharpCornerRadius:(CGFloat)sharpCornerRadius
wideCornerRadius:(CGFloat)wideCornerRadius
sharpCorners:(UIRectCorner)sharpCorners;
@property (nonatomic, nullable) UIColor *bubbleColor; @property (nonatomic, nullable) UIColor *bubbleColor;
@property (nonatomic) UIRectCorner sharpCorners; @property (nonatomic) UIRectCorner sharpCorners;

@ -3,7 +3,6 @@
// //
#import "OWSBubbleView.h" #import "OWSBubbleView.h"
#import "OWSBubbleShapeView.h"
#import <SignalMessaging/UIView+OWS.h> #import <SignalMessaging/UIView+OWS.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -148,7 +147,7 @@ const CGFloat kOWSMessageCellCornerRadius_Small = 4;
CGFloat bubbleBottom = size.height; CGFloat bubbleBottom = size.height;
CGFloat bubbleRight = size.width; CGFloat bubbleRight = size.width;
return [OWSBubbleShapeView roundedBezierRectWithBubbleTop:bubbleTop return [OWSBubbleView roundedBezierRectWithBubbleTop:bubbleTop
bubbleLeft:bubbleLeft bubbleLeft:bubbleLeft
bubbleBottom:bubbleBottom bubbleBottom:bubbleBottom
bubbleRight:bubbleRight bubbleRight:bubbleRight
@ -157,6 +156,60 @@ const CGFloat kOWSMessageCellCornerRadius_Small = 4;
sharpCorners:sharpCorners]; sharpCorners:sharpCorners];
} }
+ (UIBezierPath *)roundedBezierRectWithBubbleTop:(CGFloat)bubbleTop
bubbleLeft:(CGFloat)bubbleLeft
bubbleBottom:(CGFloat)bubbleBottom
bubbleRight:(CGFloat)bubbleRight
sharpCornerRadius:(CGFloat)sharpCornerRadius
wideCornerRadius:(CGFloat)wideCornerRadius
sharpCorners:(UIRectCorner)sharpCorners
{
UIBezierPath *bezierPath = [UIBezierPath new];
const CGFloat topLeftRounding = (sharpCorners & UIRectCornerTopLeft) ? sharpCornerRadius : wideCornerRadius;
const CGFloat topRightRounding = (sharpCorners & UIRectCornerTopRight) ? sharpCornerRadius : wideCornerRadius;
const CGFloat bottomRightRounding = (sharpCorners & UIRectCornerBottomRight) ? sharpCornerRadius : wideCornerRadius;
const CGFloat bottomLeftRounding = (sharpCorners & UIRectCornerBottomLeft) ? sharpCornerRadius : wideCornerRadius;
const CGFloat topAngle = 3.0f * M_PI_2;
const CGFloat rightAngle = 0.0f;
const CGFloat bottomAngle = M_PI_2;
const CGFloat leftAngle = M_PI;
// starting just to the right of the top left corner and working clockwise
[bezierPath moveToPoint:CGPointMake(bubbleLeft + topLeftRounding, bubbleTop)];
// top right corner
[bezierPath addArcWithCenter:CGPointMake(bubbleRight - topRightRounding, bubbleTop + topRightRounding)
radius:topRightRounding
startAngle:topAngle
endAngle:rightAngle
clockwise:true];
// bottom right corner
[bezierPath addArcWithCenter:CGPointMake(bubbleRight - bottomRightRounding, bubbleBottom - bottomRightRounding)
radius:bottomRightRounding
startAngle:rightAngle
endAngle:bottomAngle
clockwise:true];
// bottom left corner
[bezierPath addArcWithCenter:CGPointMake(bubbleLeft + bottomLeftRounding, bubbleBottom - bottomLeftRounding)
radius:bottomLeftRounding
startAngle:bottomAngle
endAngle:leftAngle
clockwise:true];
// top left corner
[bezierPath addArcWithCenter:CGPointMake(bubbleLeft + topLeftRounding, bubbleTop + topLeftRounding)
radius:topLeftRounding
startAngle:leftAngle
endAngle:topAngle
clockwise:true];
return bezierPath;
}
#pragma mark - Coordination #pragma mark - Coordination
- (void)addPartnerView:(id<OWSBubbleViewPartner>)partnerView - (void)addPartnerView:(id<OWSBubbleViewPartner>)partnerView

@ -5,7 +5,7 @@
#import "OWSQuotedMessageView.h" #import "OWSQuotedMessageView.h"
#import "ConversationViewItem.h" #import "ConversationViewItem.h"
#import "Environment.h" #import "Environment.h"
#import "OWSBubbleShapeView.h" #import "OWSBubbleView.h"
#import "Signal-Swift.h" #import "Signal-Swift.h"
#import <SignalMessaging/OWSContactsManager.h> #import <SignalMessaging/OWSContactsManager.h>
#import <SignalMessaging/SignalMessaging-Swift.h> #import <SignalMessaging/SignalMessaging-Swift.h>
@ -166,7 +166,7 @@ NS_ASSUME_NONNULL_BEGIN
const CGFloat sharpCornerRadius = 4; const CGFloat sharpCornerRadius = 4;
const CGFloat wideCornerRadius = 10; const CGFloat wideCornerRadius = 10;
UIBezierPath *bezierPath = [OWSBubbleShapeView roundedBezierRectWithBubbleTop:bubbleTop UIBezierPath *bezierPath = [OWSBubbleView roundedBezierRectWithBubbleTop:bubbleTop
bubbleLeft:bubbleLeft bubbleLeft:bubbleLeft
bubbleBottom:bubbleBottom bubbleBottom:bubbleBottom
bubbleRight:bubbleRight bubbleRight:bubbleRight

Loading…
Cancel
Save