]> git.saurik.com Git - winterboard.git/blobdiff - Library.mm
UIStringDrawingSuperCrufty must be _legacy_hooked.
[winterboard.git] / Library.mm
index 42fd396a1ba020c2b4ec5ffccb4c8e621c5345d3..552639a723a5d7e34fa542a233b3ba093fe8bad6 100644 (file)
@@ -771,21 +771,21 @@ static NSString *WBColorMarkup() {
 
 extern "C" NSString *NSStringFromCGPoint(CGPoint rect);
 
-MSInstanceMessageHook5(CGSize, NSString, drawAtPoint,forWidth,withFont,lineBreakMode,letterSpacing, CGPoint, point, CGFloat, width, UIFont *, font, UILineBreakMode, mode, CGFloat, spacing) {
-    //NSLog(@"XXX: @\"%@\" %@ %g \"%@\" %u %g", self, NSStringFromCGPoint(point), width, font, mode, spacing);
+MSInstanceMessage6(CGSize, NSString, drawAtPoint,forWidth,withFont,lineBreakMode,letterSpacing,includeEmoji, CGPoint, point, CGFloat, width, UIFont *, font, UILineBreakMode, mode, CGFloat, spacing, BOOL, emoji) {
+    //NSLog(@"XXX: @\"%@\" %@ %g \"%@\" %u %g %u", self, NSStringFromCGPoint(point), width, font, mode, spacing, emoji);
 
     WBStringDrawingState *state(stringDrawingState_);
     if (state == NULL)
-        return MSOldCall(point, width, font, mode, spacing);
+        return MSOldCall(point, width, font, mode, spacing, emoji);
 
     if (state->count_ != 0 && --state->count_ == 0)
         stringDrawingState_ = state->next_;
     if (state->info_ == nil)
-        return MSOldCall(point, width, font, mode, spacing);
+        return MSOldCall(point, width, font, mode, spacing, emoji);
 
     NSString *info([Info_ objectForKey:state->info_]);
     if (info == nil)
-        return MSOldCall(point, width, font, mode, spacing);
+        return MSOldCall(point, width, font, mode, spacing, emoji);
 
     NSString *base(state->base_ ?: @"");
     NSString *extra([NSString stringWithFormat:@"letter-spacing: %gpx", spacing]);
@@ -910,7 +910,11 @@ MSInstanceMessageHook1(UIImage *, SBCalendarApplicationIcon, generateIconImage,
         "text-shadow: rgba(0, 0, 0, 0.2) -1px -1px 2px;"
     , @"CalendarIconDayStyle"};
 
-    WBStringDrawingState sizeState = {&dayState, 7, nil, nil};
+    WBStringDrawingState wtfState = {&dayState, 1, nil, nil};
+
+    WBStringDrawingState sizeState = {
+        kCFCoreFoundationVersionNumber > 800 ? &wtfState : &dayState
+    , 7, nil, nil};
 
     WBStringDrawingState dateState = {&sizeState, 2, @""
     , @"CalendarIconDateStyle"};
@@ -2385,6 +2389,21 @@ MSInitialize {
 
         WBHookSymbol(image, _UIImageWithDeviceSpecificName);
         MSHookFunction(_UIImageWithDeviceSpecificName, MSHake(_UIImageWithDeviceSpecificName));
+
+        SEL includeEmoji(@selector(_legacy_drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:));
+        if (![@"" respondsToSelector:includeEmoji])
+            includeEmoji = @selector(drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:);
+        MSHookMessage($NSString, includeEmoji, MSHake(NSString$drawAtPoint$forWidth$withFont$lineBreakMode$letterSpacing$includeEmoji$));
+
+        SEL letterSpacing(@selector(_legacy_sizeWithFont:forWidth:lineBreakMode:letterSpacing:));
+        if (![@"" respondsToSelector:letterSpacing])
+            letterSpacing = @selector(sizeWithFont:forWidth:lineBreakMode:letterSpacing:);
+        MSHookMessage($NSString, letterSpacing, MSHake(NSString$sizeWithFont$forWidth$lineBreakMode$letterSpacing$));
+
+        SEL sizeWithFont(@selector(_legacy_sizeWithFont:));
+        if (![@"" respondsToSelector:sizeWithFont])
+            sizeWithFont = @selector(sizeWithFont:);
+        MSHookMessage($NSString, sizeWithFont, MSHake(NSString$sizeWithFont$));
     }
     // }}}