X-Git-Url: https://git.saurik.com/winterboard.git/blobdiff_plain/6cd8823c8d3696b8119a9dde820b66c42f3c217a..c8fa3a187ac4e61a523aa664f01c618746a290b9:/Library.mm?ds=inline diff --git a/Library.mm b/Library.mm index 2770df5..72311b8 100644 --- a/Library.mm +++ b/Library.mm @@ -683,7 +683,7 @@ static struct WBStringDrawingState { 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); @@ -698,31 +698,46 @@ MSInstanceMessageHook6(CGSize, NSString, drawAtPoint,forWidth,withFont,lineBreak 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); @@ -737,7 +752,8 @@ MSInstanceMessageHook4(CGSize, NSString, sizeWithFont,forWidth,lineBreakMode,let 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) { @@ -1192,7 +1208,7 @@ extern "C" NSString *UIStyleStringFromColor(CGColorRef);*/ 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(view_, "_mode"));; @@ -1239,7 +1255,7 @@ WBDelegate(time_) 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; " @@ -1578,7 +1594,7 @@ MSInstanceMessage1(void, SBIconLabel, drawRect, CGRect, rect) { MSInstanceMessage0(CGImageRef, SBIconLabel, buildLabelImage) { bool docked((MSHookIvar(self, "_inDock") & 0x2) != 0); - WBStringDrawingState labelState = {NULL, 2, [NSString stringWithFormat:@"" + WBStringDrawingState labelState = {NULL, 0, [NSString stringWithFormat:@"" "color: %@;" , (docked || !SummerBoard_ ? @"white" : @"#b3b3b3")