📄 fiveicon.mm
字号:
#include <substrate.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSNull.h>
#import <CoreGraphics/CGGeometry.h>
#import <SpringBoard/SBButtonBar.h>
#import <SpringBoard/SBIcon.h>
@protocol Tweak
- (float) fid_leftMarginForIconRowArray:(NSArray *)row;
- (void) fid_setOrigin:(CGPoint)origin;
- (float) fid_topIconPadding;
@end
static bool $SBButtonBar$$isCrowded(SBButtonBar<Tweak> *self) {
NSArray *matrix;
object_getInstanceVariable(self, "_iconMatrix", reinterpret_cast<void **>(&matrix));
NSArray *row([matrix objectAtIndex:0]);
return row != nil && [row indexOfObject:[NSNull null]] == NSNotFound;
}
static float $SBButtonBar$leftMarginForIconRowArray$(SBButtonBar<Tweak> *self, SEL sel, NSArray *row) {
return [row indexOfObject:[NSNull null]] == NSNotFound ? 4 : [self fid_leftMarginForIconRowArray:row];
}
static int $SBButtonBar$maxIconColumns(SBButtonBar<Tweak> *self, SEL sel) {
return 5;
}
static float $SBButtonBar$topIconPadding(SBButtonBar<Tweak> *self, SEL sel) {
float padding([self fid_topIconPadding]);
if ($SBButtonBar$$isCrowded(self))
--padding;
return padding;
}
static float $SBButtonBar$verticalIconPadding(SBButtonBar<Tweak> *self, SEL sel) {
return 0;
}
static void $SBIcon$setOrigin$(SBIcon<Tweak> *self, SEL sel, CGPoint origin) {
if (origin.y == 10)
origin.x = (origin.x - 4) / 76 * 63 + 4;
else if (origin.y == 84) {
origin.y -= 74;
origin.x = 256;
} else goto set;
++origin.y;
set:
[self fid_setOrigin:origin];
}
extern "C" void TweakInitialize() {
if (objc_getClass("SpringBoard") == nil)
return;
Class $SBButtonBar(objc_getClass("SBButtonBar"));
MSHookMessage($SBButtonBar, @selector(leftMarginForIconRowArray:), (IMP) &$SBButtonBar$leftMarginForIconRowArray$, "fid_");
MSHookMessage($SBButtonBar, @selector(maxIconColumns), (IMP) &$SBButtonBar$maxIconColumns, "fid_");
MSHookMessage($SBButtonBar, @selector(topIconPadding), (IMP) &$SBButtonBar$topIconPadding, "fid_");
MSHookMessage($SBButtonBar, @selector(verticalIconPadding), (IMP) &$SBButtonBar$verticalIconPadding, "fid_");
Class $SBIcon(objc_getClass("SBIcon"));
MSHookMessage($SBIcon, @selector(setOrigin:), (IMP) $SBIcon$setOrigin$, "fid_");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -