aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMNSBezierPath+Shading.m
diff options
context:
space:
mode:
authorGravatar dmaclach <dmaclach@google.com>2016-10-07 12:10:23 -0400
committerGravatar Thomas Van Lenten <thomasvl@google.com>2016-10-07 12:21:06 -0400
commit42124b3691197c3c4f52f069775fa0390a8ff942 (patch)
treeebd373d398ea64b45bdc1d196fa0a2c5f57cabfd /AppKit/GTMNSBezierPath+Shading.m
parent57eeab4193210df8ab0c81e9d3f1ee1ad3e24492 (diff)
First cut at pruning things/updating things.
Remove a bunch of code that Google stopped using/maintaining rather than trying to update it it. Some would be hard to update, some actually has system provided replacements; others are patterns that just don't seem as common now. Prune out the code related to macOS <= 10.5, start pruning some of the really old iOS support also. Get the projects mostly limping again with modern Xcodes so tests can be run. If someone ends up on this commit via history for something they still find as useful, feel free to do a pull request to bring the snippet of code back to life and update it for current SDKs.
Diffstat (limited to 'AppKit/GTMNSBezierPath+Shading.m')
-rw-r--r--AppKit/GTMNSBezierPath+Shading.m216
1 files changed, 0 insertions, 216 deletions
diff --git a/AppKit/GTMNSBezierPath+Shading.m b/AppKit/GTMNSBezierPath+Shading.m
deleted file mode 100644
index 5e65b14..0000000
--- a/AppKit/GTMNSBezierPath+Shading.m
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// GTMNSBezierPath+Shading.m
-//
-// Category for radial and axial stroke and fill functions for NSBezierPaths
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSBezierPath+Shading.h"
-#import "GTMNSBezierPath+CGPath.h"
-#import "GTMShading.h"
-#import "GTMGeometryUtils.h"
-#import "GTMMethodCheck.h"
-
-@interface NSBezierPath (GTMBezierPathShadingAdditionsPrivate)
-// Fills a CGPathRef either axially or radially with the given shading.
-//
-// Args:
-// path: path to fill
-// axially: if YES fill axially, otherwise fill radially
-// asStroke: if YES, clip to the stroke of the path, otherwise
-// clip to the fill
-// from: where to shade from
-// fromRadius: in a radial fill, the radius of the from circle
-// to: where to shade to
-// toRadius: in a radial fill, the radius of the to circle
-// extendingStart: if true, extend the fill with the first color of the shade
-// beyond |from| away from |to|
-// extendingEnd: if true, extend the fill with the last color of the shade
-// beyond |to| away from |from|
-// shading: the shading to use for the fill
-//
-- (void)gtm_fillCGPath:(CGPathRef)path
- axially:(BOOL)axially
- asStroke:(BOOL)asStroke
- from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-
-// Returns the point which is the projection of a line from point |pointA|
-// to |pointB| by length
-//
-// Args:
-// pointA: first point
-// pointB: second point
-// length: distance to project beyond |pointB| which is in line with
-// |pointA| and |pointB|
-//
-// Returns:
-// the projected point
-- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA
- to:(NSPoint)pointB
- by:(CGFloat)length;
-@end
-
-
-@implementation NSBezierPath (GTMBezierPathAdditionsPrivate)
-
-- (void)gtm_fillCGPath:(CGPathRef)path
- axially:(BOOL)axially asStroke:(BOOL)asStroke
- from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGFunctionRef shadingFunction = [shading shadeFunction];
- if (nil != shadingFunction) {
- CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- if (nil != currentContext) {
- CGContextSaveGState(currentContext);
- CGFloat lineWidth = [self lineWidth];
- CGContextSetLineWidth(currentContext, lineWidth);
- if (asStroke) {
- // if we are using the stroke, we offset the from and to points
- // by half the stroke width away from the center of the stroke.
- // Otherwise we tend to end up with fills that only cover half of the
- // because users set the start and end points based on the center
- // of the stroke.
- CGFloat halfWidth = lineWidth * 0.5;
- fromPoint = [self gtm_projectLineFrom:toPoint to:fromPoint by:halfWidth];
- toPoint = [self gtm_projectLineFrom:fromPoint to:toPoint by:-halfWidth];
- }
- CGColorSpaceRef colorspace = [shading colorSpace];
- if (nil != colorspace) {
- CGPoint toCGPoint = {.x = toPoint.x, .y = toPoint.y};
- CGPoint fromCGPoint = {.x = fromPoint.x, .y = fromPoint.y};
- CGShadingRef myCGShading;
- if(axially) {
- myCGShading = CGShadingCreateAxial(colorspace, fromCGPoint,
- toCGPoint, shadingFunction,
- extendingStart == YES,
- extendingEnd == YES);
- }
- else {
- myCGShading = CGShadingCreateRadial(colorspace, fromCGPoint, fromRadius,
- toCGPoint, toRadius, shadingFunction,
- extendingStart == YES,
- extendingEnd == YES);
- }
-
- if (nil != myCGShading) {
- CGContextAddPath(currentContext,path);
- if(asStroke) {
- CGContextReplacePathWithStrokedPath(currentContext);
- }
- CGContextClip(currentContext);
- CGContextDrawShading(currentContext, myCGShading);
- CGShadingRelease(myCGShading);
- }
- }
- CGContextRestoreGState(currentContext);
- }
- }
-}
-
-
-- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA
- to:(NSPoint)pointB
- by:(CGFloat)length {
- NSPoint newPoint = NSMakePoint(pointB.x, pointB.y);
- CGFloat x = (pointB.x - pointA.x);
- CGFloat y = (pointB.y - pointA.y);
- if (fpclassify(x) == FP_ZERO) {
- newPoint.y += length;
- } else if (fpclassify(y) == FP_ZERO) {
- newPoint.x += length;
- } else {
-#if CGFLOAT_IS_DOUBLE
- CGFloat angle = atan(y / x);
- newPoint.x += sin(angle) * length;
- newPoint.y += cos(angle) * length;
-#else
- CGFloat angle = atanf(y / x);
- newPoint.x += sinf(angle) * length;
- newPoint.y += cosf(angle) * length;
-#endif
- }
- return newPoint;
-}
-
-@end
-
-
-@implementation NSBezierPath (GTMBezierPathShadingAdditions)
-GTM_METHOD_CHECK(NSBezierPath, gtm_CGPath);
-
-- (void)gtm_strokeAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:YES asStroke:YES
- from:fromPoint fromRadius:(CGFloat)0.0
- to:toPoint toRadius:(CGFloat)0.0
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_strokeRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:NO asStroke:YES
- from:fromPoint fromRadius:fromRadius
- to:toPoint toRadius:toRadius
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_fillAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:YES asStroke:NO
- from:fromPoint fromRadius:(CGFloat)0.0
- to:toPoint toRadius:(CGFloat)0.0
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_fillRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:NO asStroke:NO
- from:fromPoint fromRadius:fromRadius
- to:toPoint toRadius:toRadius
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-@end