X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/4f3da8543caacbaf1ce219e547e24a5490bee090..24e8080bddc73dc3ffcaa483570cdfa9d7258c53:/ITPivotWindowEffect.m diff --git a/ITPivotWindowEffect.m b/ITPivotWindowEffect.m old mode 100755 new mode 100644 index 05dc3ac..3b0c5a4 --- a/ITPivotWindowEffect.m +++ b/ITPivotWindowEffect.m @@ -201,53 +201,69 @@ - (void)setPivot:(float)angle { - float degAngle; - CGAffineTransform transform; - NSRect windowFrame = [_window frame]; - NSRect screenFrame = [[_window screen] frame]; int hPos = [_window horizontalPosition]; int vPos = [_window verticalPosition]; - float translateX; - float translateY; + NSRect winFrame = [_window frame]; + + if ( (hPos == ITWindowPositionCenter) || (vPos == ITWindowPositionMiddle) ) { - if ( vPos == ITWindowPositionBottom ) { - if ( hPos == ITWindowPositionLeft ) { - angle = angle; - } else if ( hPos == ITWindowPositionRight ) { - angle = ( 45 - -(315 - angle) ); + CGAffineTransform transform; + NSPoint translation; + + translation.x = -winFrame.origin.x; + translation.y = winFrame.origin.y + winFrame.size.height - [[NSScreen mainScreen] frame].size.height; + + transform = CGAffineTransformMakeTranslation( translation.x, translation.y ); + + CGSSetWindowTransform([NSApp contextID], + (CGSWindowID)[_window windowNumber], + transform); + } else { + + float degAngle; + NSRect screenFrame = [[_window screen] frame]; + float translateX = 0; + float translateY = 0; + CGAffineTransform transform; + + if ( vPos == ITWindowPositionBottom ) { + if ( hPos == ITWindowPositionLeft ) { + angle = angle; + } else if ( hPos == ITWindowPositionRight ) { + angle = ( 45 - -(315 - angle) ); + } + } else if ( vPos == ITWindowPositionTop ) { + if ( hPos == ITWindowPositionLeft ) { + angle = ( 45 - -(315 - angle) ); + } else if ( hPos == ITWindowPositionRight ) { + angle = angle; + } + } + + degAngle = (angle * (pi / 180)); + transform = CGAffineTransformMakeRotation(degAngle); + if ( vPos == ITWindowPositionBottom ) { + transform.ty = ( winFrame.size.height + winFrame.origin.y) + (screenFrame.size.height - [[NSScreen mainScreen] frame].size.height); + translateY = -(screenFrame.size.height); + } else if ( vPos == ITWindowPositionTop ) { + transform.ty = winFrame.origin.y + winFrame.size.height - [[NSScreen mainScreen] frame].size.height; + translateY = 0; } - } else if ( vPos == ITWindowPositionTop ) { + if ( hPos == ITWindowPositionLeft ) { - angle = ( 45 - -(315 - angle) ); + transform.tx = -( winFrame.origin.x ); + translateX = 0; } else if ( hPos == ITWindowPositionRight ) { - angle = angle; + //transform.tx = ( screenFrame.size.width - winFrame.origin.x ); + transform.tx = ( screenFrame.size.width - winFrame.origin.x ); + translateX = -(screenFrame.size.width); } + CGSSetWindowTransform([NSApp contextID], + (CGSWindowID)[_window windowNumber], + CGAffineTransformTranslate( transform, + translateX, + translateY ) ); } - - degAngle = (angle * (pi / 180)); - transform = CGAffineTransformMakeRotation(degAngle); - - if ( vPos == ITWindowPositionBottom ) { - transform.ty = ( windowFrame.size.height + windowFrame.origin.y); - translateY = -(screenFrame.size.height); - } else if ( vPos == ITWindowPositionTop ) { - transform.ty = -( screenFrame.size.height - windowFrame.origin.y - windowFrame.size.height ); - translateY = 0; - } - - if ( hPos == ITWindowPositionLeft ) { - transform.tx = -( windowFrame.origin.x ); - translateX = 0; - } else if ( hPos == ITWindowPositionRight ) { - transform.tx = ( screenFrame.size.width - windowFrame.origin.x ); - translateX = -(screenFrame.size.width); - } - - CGSSetWindowTransform([NSApp contextID], - (CGSWindowID)[_window windowNumber], - CGAffineTransformTranslate( transform, - translateX, - translateY ) ); }