diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-17 19:47:18 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-17 19:47:18 +0000 |
commit | 659d89d7410f3addd563b8eb9e8ba7ddaaeb3cbe (patch) | |
tree | 312896e96e59e59ea92ebf686db8f8c4575fa162 /tikzit/src/linux | |
parent | 79de5d881ffa864b8c33462fda27608a9b20a651 (diff) |
We can now render arrow heads (in the GTK port, at least).
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@390 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/linux')
-rw-r--r-- | tikzit/src/linux/Edge+Render.m | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/tikzit/src/linux/Edge+Render.m b/tikzit/src/linux/Edge+Render.m index c64b35f..d4a49c9 100644 --- a/tikzit/src/linux/Edge+Render.m +++ b/tikzit/src/linux/Edge+Render.m @@ -124,6 +124,43 @@ static const float cpLineWidth = 1.0; [context restoreState]; } +- (void) createArrowStrokePathInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer { + [context startPath]; + + if ([self style] != nil) { + switch ([[self style] headStyle]) { + case AH_None: + break; + case AH_Plain: + [context moveTo:[transformer toScreen:[self leftHeadNormal]]]; + [context lineTo:[transformer toScreen:head]]; + [context lineTo:[transformer toScreen:[self rightHeadNormal]]]; + break; + case AH_Latex: + [context moveTo:[transformer toScreen:[self leftHeadNormal]]]; + [context lineTo:[transformer toScreen:head]]; + [context lineTo:[transformer toScreen:[self rightHeadNormal]]]; + [context closeSubPath]; + break; + } + switch ([[self style] tailStyle]) { + case AH_None: + break; + case AH_Plain: + [context moveTo:[transformer toScreen:[self leftTailNormal]]]; + [context lineTo:[transformer toScreen:tail]]; + [context lineTo:[transformer toScreen:[self rightTailNormal]]]; + break; + case AH_Latex: + [context moveTo:[transformer toScreen:[self leftTailNormal]]]; + [context lineTo:[transformer toScreen:tail]]; + [context lineTo:[transformer toScreen:[self rightTailNormal]]]; + [context closeSubPath]; + break; + } + } +} + - (void) createStrokePathInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer { NSPoint c_head = [transformer toScreen:head]; NSPoint c_cp1 = [transformer toScreen:cp1]; @@ -149,8 +186,8 @@ static const float cpLineWidth = 1.0; [context lineTo:[transformer toScreen:[self rightNormal]]]; break; } - } + } } - (void) renderToSurface:(id <Surface>)surface withContext:(id<RenderContext>)context selected:(BOOL)selected { @@ -159,12 +196,17 @@ static const float cpLineWidth = 1.0; [context saveState]; const CGFloat lineWidth = style ? [style thickness] : edgeWidth; [context setLineWidth:lineWidth]; - [self createStrokePathInContext:context withTransformer:[surface transformer]]; RColor color = BlackRColor; if (selected) { color.alpha = 0.5; } + + [self createStrokePathInContext:context withTransformer:[surface transformer]]; [context strokePathWithColor:color]; + + [self createArrowStrokePathInContext:context withTransformer:[surface transformer]]; + [context strokePathWithColor:color andFillWithColor:color]; + [context restoreState]; if (selected) { |