AppKit.framework - avaidyam/Parrot GitHub Wiki
-
Accessing the titlebar:
NSWindow -> _borderView -> _titlebarView (and _titlebarViewController)
-
NSTextField
'sintrinsicContentSize
calculation:
struct CGSize -[NSTextField intrinsicContentSize](void * self, void * _cmd) {
r15 = self;
[self preferredMaxLayoutWidth];
var_38 = intrinsic_movsd(var_38, xmm0);
if ([r15 _performMultiPassIntrinsicSize] == 0x0) goto loc_e023f;
loc_e01ab:
rdi = r15->_layoutEngineWidth;
if (rdi == 0x0) goto loc_e023f;
loc_e01bf:
r14 = @selector(floatValue);
_objc_msgSend(rdi, r14);
rax = *(int8_t *)_sNSTextFieldGalaIntrinsicContentSizeBehaviorComputedValue;
if (rax != 0x0) {
rax = rax + 0xfe;
}
else {
var_2C = intrinsic_movss(var_2C, xmm0, _sNSTextFieldGalaIntrinsicContentSizeBehaviorComputedValue, _NSTextFieldGalaIntrinsicContentSizeBehaviorDefaultValueFunction);
rax = __NSGetBoolAppConfig(@"NSTextFieldGalaIntrinsicContentSizeBehavior", 0x0, _sNSTextFieldGalaIntrinsicContentSizeBehaviorComputedValue, _NSTextFieldGalaIntrinsicContentSizeBehaviorDefaultValueFunction);
xmm0 = intrinsic_movss(xmm0, var_2C);
}
xmm1 = intrinsic_cvtss2sd(xmm1, xmm0);
var_38 = intrinsic_movsd(var_38, xmm1);
if (rax == 0x0) goto loc_e0321;
loc_e01f0:
r12 = r15 + *_OBJC_IVAR_$_NSTextField._cachedLayoutEngineWidth;
rdi = r15->_cachedLayoutEngineWidth;
if (rdi == 0x0) goto loc_e032d;
loc_e0208:
var_2C = intrinsic_movss(var_2C, xmm0);
_objc_msgSend(rdi, r14);
xmm0 = intrinsic_ucomiss(xmm0, var_2C);
if ((xmm0 != 0x0) || (CPU_FLAGS & P)) goto loc_e03dc;
loc_e0226:
rax = *_OBJC_IVAR_$_NSTextField._cachedIntrinsicContentSize;
intrinsic_movsd(xmm0, *(r15 + rax));
intrinsic_movsd(xmm1, *(r15 + rax + 0x8));
return rax;
loc_e03dc:
var_2C = 0x1;
rdi = *r12;
goto loc_e03e7;
loc_e03e7:
[rdi release];
*(int64_t *)0x1 = [r15->_layoutEngineWidth retain];
r12 = 0x1;
goto loc_e0249;
loc_e0249:
rbx = [r15 cell];
r14 = [r15 isEditable];
xmm1 = intrinsic_xorpd(xmm1, xmm1);
xmm0 = intrinsic_movsd(xmm0, var_38);
xmm1 = intrinsic_ucomisd(xmm1, xmm0);
if (((xmm1 < 0x0) && (rbx != 0x0)) && (r14 == 0x0)) {
if (var_2C != 0x0) {
xmm1 = intrinsic_movsd(xmm1, *0xbfd6a0);
}
else {
xmm1 = intrinsic_xorpd(xmm1, xmm1);
var_60 = intrinsic_movapd(var_60, xmm1);
var_50 = intrinsic_movsd(var_50, xmm0);
if (r15 != 0x0) {
[var_80 frameForAlignmentRect:r15, rcx];
xmm0 = intrinsic_movsd(xmm0, *(var_80 + 0x10));
xmm1 = intrinsic_movsd(xmm1, *(var_80 + 0x18));
}
else {
intrinsic_movapd(var_70, xmm1);
intrinsic_movapd(var_80, xmm1);
xmm1 = intrinsic_xorpd(xmm1, xmm1);
xmm0 = intrinsic_xorpd(xmm0, xmm0);
}
}
[r15 _intrinsicSizeWithinSize:rdx];
__NSIntrinsicContentSizeFromCellSize(r15);
}
else {
*var_90 = r15;
*(var_90 + 0x8) = _OBJC_CLASS_$_NSTextField;
[[var_90 super] intrinsicContentSize];
}
xmm3 = intrinsic_movapd(xmm3, xmm0);
xmm2 = intrinsic_movapd(xmm2, xmm1);
rax = _NSViewNoIntrinsicMetric;
xmm4 = intrinsic_movsd(xmm4, *rax);
xmm1 = intrinsic_movsd(xmm1, *0xbfdcf8);
xmm0 = intrinsic_movapd(xmm0, xmm4);
if (r14 == 0x0) {
xmm0 = intrinsic_movapd(xmm0, xmm3);
asm{ cmpeqsd xmm0, xmm1 };
xmm5 = intrinsic_movapd(xmm5, xmm0);
xmm5 = intrinsic_andpd(xmm5, xmm4);
xmm0 = intrinsic_andnpd(xmm0, xmm3);
xmm0 = intrinsic_orpd(xmm0, xmm5);
}
asm{ cmpeqsd xmm1, xmm2 };
xmm4 = intrinsic_andpd(xmm4, xmm1);
xmm1 = intrinsic_andnpd(xmm1, xmm2);
xmm1 = intrinsic_orpd(xmm1, xmm4);
if (r12 != 0x0) {
rax = *_OBJC_IVAR_$_NSTextField._cachedIntrinsicContentSize;
*(r15 + rax) = intrinsic_movsd(*(r15 + rax), xmm0);
*(r15 + rax + 0x8) = intrinsic_movsd(*(r15 + rax + 0x8), xmm1);
}
return rax;
loc_e032d:
var_2C = 0x1;
goto loc_e03e7;
loc_e0321:
var_2C = 0x1;
goto loc_e0246;
loc_e0246:
r12 = 0x0;
goto loc_e0249;
loc_e023f:
var_2C = 0x0;
goto loc_e0246;
}
struct CGSize -[NSTextField _intrinsicSizeWithinSize:](void * self, void * _cmd, struct CGSize arg2) {
var_10 = intrinsic_movsd(var_10, xmm0, arg2);
rbx = self;
xmm0 = intrinsic_xorpd(xmm0, xmm0);
var_30 = intrinsic_movapd(var_30, xmm0);
var_20 = intrinsic_movaps(var_20, intrinsic_movaps(xmm0, *(int128_t *)0xc019c0));
rax = [self maximumNumberOfLines];
xmm1 = intrinsic_movsd(xmm1, var_10);
xmm1 = intrinsic_ucomisd(xmm1, 0x0);
xmm0 = intrinsic_movapd(0x0, xmm1);
if ((xmm1 > 0x0) && (rax != 0x1)) {
var_20 = intrinsic_movsd(var_20, xmm0);
}
rax = [rbx->_cell cellSizeForBounds:rdx, rcx];
return rax;
}
char -[NSTextField _performMultiPassIntrinsicSize](void * self, void * _cmd) {
r14 = self;
rax = *(int8_t *)_sNSTextFieldAllowUpdateConstraintsSecondPassComputedValue;
if (rax != 0x0) {
rax = rax + 0xfe;
}
else {
rax = __NSGetBoolAppConfig(@"NSTextFieldAllowUpdateConstraintsSecondPass", 0x1, _sNSTextFieldAllowUpdateConstraintsSecondPassComputedValue, _NSTextFieldAllowUpdateConstraintsSecondPassDefaultValueFunction);
}
if (rax == 0x0) goto loc_829011;
loc_828f5b:
rbx = r14->_cell;
if (((rbx == 0x0) || ([rbx usesSingleLineMode] != 0x0)) || ([r14 maximumNumberOfLines] == 0x1)) goto loc_829011;
loc_828fa0:
[r14 preferredMaxLayoutWidth];
xmm0 = intrinsic_ucomisd(xmm0, 0x0);
if (((xmm0 != 0x0) || (CPU_FLAGS & P)) || ([r14 _hasLayoutEngine] == 0x0)) goto loc_829011;
loc_828fcf:
if ([rbx _hasAttributedStringValue] == 0x0) goto loc_828ff7;
loc_828fe3:
rax = *(int8_t *)_sNSTextFieldGalaIntrinsicContentSizeBehaviorComputedValue;
if (rax != 0x0) {
rax = rax + 0xfe;
}
else {
rax = __NSGetBoolAppConfig(@"NSTextFieldGalaIntrinsicContentSizeBehavior", 0x0, _sNSTextFieldGalaIntrinsicContentSizeBehaviorComputedValue, _NSTextFieldGalaIntrinsicContentSizeBehaviorDefaultValueFunction);
}
if (rax == 0x0) goto loc_829021;
loc_828ff7:
rdi = rbx;
rax = [rdi wraps];
return rax;
loc_829021:
r14 = [r14 attributedStringValue];
*var_38 = 0x0;
*(var_38 + 0x8) = var_38;
*(int32_t *)(var_38 + 0x10) = 0x20000000;
*(int32_t *)(var_38 + 0x14) = 0x20;
*(int8_t *)(var_38 + 0x18) = 0x0;
rax = [r14 length];
rdx = *_NSParagraphStyleAttributeName;
*var_60 = __NSConcreteStackBlock;
*(int32_t *)(var_60 + 0x8) = 0xc2000000;
*(int32_t *)(var_60 + 0xc) = 0x0;
*(var_60 + 0x10) = ___DoesAttributedStringWrap_block_invoke;
*(var_60 + 0x18) = ___block_descriptor_tmp.763;
*(var_60 + 0x20) = var_38;
[r14 enumerateAttribute:rdx inRange:0x0 options:rax usingBlock:0x0];
rbx = *(int8_t *)(*(var_38 + 0x8) + 0x18);
_Block_object_dispose(var_38, 0x8);
goto loc_829013;
loc_829013:
rax = sign_extend_64(rbx);
return rax;
loc_829011:
rbx = 0x0;
goto loc_829013;
}
NSSpringAnimation
(which wrapsCASpringAnimation
)
@interface NSSpringAnimation: NSAnimation
@property(retain) CAMediaTimingFunction *timingFunction;
@property double velocity;
@property double damping;
@property double stiffness;
@property double mass;
- (instancetype)initWithDuration:(NSTimeInterval)duration;
- (instancetype)initWithDuration:(NSTimeInterval)duration animationCurve:(NSUInteger)animationCurve;
- (NSTimeInterval)durationForEpsilon:(NSTimeInterval)epsilon;
@end