This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.7 KiB
87 lines
1.7 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
*/ |
|
|
|
#import "ARTRenderable.h" |
|
|
|
@implementation ARTRenderable |
|
|
|
- (void)setFill:(ARTBrush *)fill |
|
{ |
|
[self invalidate]; |
|
_fill = fill; |
|
} |
|
|
|
- (void)setStroke:(CGColorRef)stroke |
|
{ |
|
if (stroke == _stroke) { |
|
return; |
|
} |
|
[self invalidate]; |
|
CGColorRelease(_stroke); |
|
_stroke = CGColorRetain(stroke); |
|
} |
|
|
|
- (void)setStrokeWidth:(CGFloat)strokeWidth |
|
{ |
|
[self invalidate]; |
|
_strokeWidth = strokeWidth; |
|
} |
|
|
|
- (void)setStrokeCap:(CGLineCap)strokeCap |
|
{ |
|
[self invalidate]; |
|
_strokeCap = strokeCap; |
|
} |
|
|
|
- (void)setStrokeJoin:(CGLineJoin)strokeJoin |
|
{ |
|
[self invalidate]; |
|
_strokeJoin = strokeJoin; |
|
} |
|
|
|
- (void)setStrokeDash:(ARTCGFloatArray)strokeDash |
|
{ |
|
if (strokeDash.array == _strokeDash.array) { |
|
return; |
|
} |
|
if (_strokeDash.array) { |
|
free(_strokeDash.array); |
|
} |
|
[self invalidate]; |
|
_strokeDash = strokeDash; |
|
} |
|
|
|
- (void)dealloc |
|
{ |
|
CGColorRelease(_stroke); |
|
if (_strokeDash.array) { |
|
free(_strokeDash.array); |
|
} |
|
} |
|
|
|
- (void)renderTo:(CGContextRef)context |
|
{ |
|
if (self.opacity <= 0 || self.opacity >= 1 || (self.fill && self.stroke)) { |
|
// If we have both fill and stroke, we will need to paint this using normal compositing |
|
[super renderTo: context]; |
|
return; |
|
} |
|
// This is a terminal with only one painting. Therefore we don't need to paint this |
|
// off-screen. We can just composite it straight onto the buffer. |
|
CGContextSaveGState(context); |
|
CGContextConcatCTM(context, self.transform); |
|
CGContextSetAlpha(context, self.opacity); |
|
[self renderLayerTo:context]; |
|
CGContextRestoreGState(context); |
|
} |
|
|
|
- (void)renderLayerTo:(CGContextRef)context |
|
{ |
|
// abstract |
|
} |
|
|
|
@end
|
|
|