NSString *info_;
} *stringDrawingState_;
-MSInstanceMessageHook6(CGSize, NSString, drawAtPoint,forWidth,withFont,lineBreakMode,letterSpacing,includeEmoji, CGPoint, point, float, width, UIFont *, font, int, mode, float, spacing, BOOL, emoji) {
+MSInstanceMessageHook6(CGSize, NSString, drawAtPoint,forWidth,withFont,lineBreakMode,letterSpacing,includeEmoji, CGPoint, point, float, width, UIFont *, font, UILineBreakMode, mode, float, spacing, BOOL, emoji) {
WBStringDrawingState *state(stringDrawingState_);
if (state == NULL)
return MSOldCall(point, width, font, mode, spacing, emoji);
return MSOldCall(point, width, font, mode, spacing, emoji);
NSString *base(state->base_ ?: @"");
- [self drawAtPoint:point withStyle:[NSString stringWithFormat:@"%@;%@;%@", [font markupDescription], base, info]];
+ NSString *extra([NSString stringWithFormat:@"letter-spacing: %gpx", spacing]);
+ [self drawAtPoint:point withStyle:[NSString stringWithFormat:@"%@;%@;%@;%@", [font markupDescription], extra, base, info]];
return CGSizeZero;
}
-MSInstanceMessageHook6(CGSize, NSString, drawInRect,withFont,lineBreakMode,alignment,lineSpacing,includeEmoji, CGRect, rect, UIFont *, font, int, mode, int, alignment, float, spacing, BOOL, emoji) {
+MSInstanceMessageHook7(CGSize, NSString, _drawInRect,withFont,lineBreakMode,alignment,lineSpacing,includeEmoji,truncationRect, CGRect, rect, UIFont *, font, UILineBreakMode, mode, UITextAlignment, alignment, float, spacing, BOOL, emoji, CGRect, truncation) {
WBStringDrawingState *state(stringDrawingState_);
if (state == NULL)
- return MSOldCall(rect, font, mode, alignment, spacing, emoji);
+ return MSOldCall(rect, font, mode, alignment, spacing, emoji, truncation);
if (--state->count_ == 0)
stringDrawingState_ = state->next_;
if (state->info_ == nil)
- return MSOldCall(rect, font, mode, alignment, spacing, emoji);
+ return MSOldCall(rect, font, mode, alignment, spacing, emoji, truncation);
NSString *info([Info_ objectForKey:state->info_]);
if (info == nil)
- return MSOldCall(rect, font, mode, alignment, spacing, emoji);
+ return MSOldCall(rect, font, mode, alignment, spacing, emoji, truncation);
+
+ NSString *textAlign;
+ switch (alignment) {
+ default:
+ case UITextAlignmentLeft:
+ textAlign = @"left";
+ break;
+ case UITextAlignmentCenter:
+ textAlign = @"center";
+ break;
+ case UITextAlignmentRight:
+ textAlign = @"right";
+ break;
+ }
NSString *base(state->base_ ?: @"");
- NSString *align(@"text-align: center");
- [self drawInRect:rect withStyle:[NSString stringWithFormat:@"%@;%@;%@;%@", [font markupDescription], align, base, info]];
+ NSString *extra([NSString stringWithFormat:@"text-align: %@", textAlign]);
+ [self drawInRect:rect withStyle:[NSString stringWithFormat:@"%@;%@;%@;%@", [font markupDescription], extra, base, info]];
return CGSizeZero;
}
-MSInstanceMessageHook4(CGSize, NSString, sizeWithFont,forWidth,lineBreakMode,letterSpacing, UIFont *, font, float, width, int, mode, float, spacing) {
+MSInstanceMessageHook4(CGSize, NSString, sizeWithFont,forWidth,lineBreakMode,letterSpacing, UIFont *, font, float, width, UILineBreakMode, mode, float, spacing) {
WBStringDrawingState *state(stringDrawingState_);
if (state == NULL)
return MSOldCall(font, width, mode, spacing);
return MSOldCall(font, width, mode, spacing);
NSString *base(state->base_ ?: @"");
- return [self sizeWithStyle:[NSString stringWithFormat:@"%@;%@;%@", [font markupDescription], base, info] forWidth:width];
+ NSString *extra([NSString stringWithFormat:@"letter-spacing: %gpx", spacing]);
+ return [self sizeWithStyle:[NSString stringWithFormat:@"%@;%@;%@;%@", [font markupDescription], extra, base, info] forWidth:width];
}
MSInstanceMessageHook1(CGSize, NSString, sizeWithFont, UIFont *, font) {
WBDelegate(time_)
-- (CGSize) drawAtPoint:(CGPoint)point forWidth:(float)width withFont:(UIFont *)font lineBreakMode:(int)mode {
+- (CGSize) drawAtPoint:(CGPoint)point forWidth:(float)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)mode {
if (NSString *custom = [Info_ objectForKey:@"TimeStyle"]) {
BOOL &_mode(MSHookIvar<BOOL>(view_, "_mode"));;
WBDelegate(badge_)
-- (CGSize) drawAtPoint:(CGPoint)point forWidth:(float)width withFont:(UIFont *)font lineBreakMode:(int)mode {
+- (CGSize) drawAtPoint:(CGPoint)point forWidth:(float)width withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)mode {
if (NSString *custom = [Info_ objectForKey:@"BadgeStyle"]) {
[badge_ drawAtPoint:point withStyle:[NSString stringWithFormat:@""
"font-family: Helvetica; "
MSInstanceMessage0(CGImageRef, SBIconLabel, buildLabelImage) {
bool docked((MSHookIvar<unsigned>(self, "_inDock") & 0x2) != 0);
- WBStringDrawingState labelState = {NULL, 2, [NSString stringWithFormat:@""
+ WBStringDrawingState labelState = {NULL, 0, [NSString stringWithFormat:@""
"color: %@;"
,
(docked || !SummerBoard_ ? @"white" : @"#b3b3b3")