diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-18 12:09:21 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-18 12:09:21 +0000 |
commit | 42cc92ea91cb770e9e0e64e5bede18aa5cfce25d (patch) | |
tree | 8a7c592d746e760b68eb7b0da17de4c5ec16f928 /tikzit/src/gtk/Edge+Render.m | |
parent | 9e71f7db3c487633d2ec170369d0ecc5f61280cf (diff) |
GTK: Arrow heads (and tails)!
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@396 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/gtk/Edge+Render.m')
-rw-r--r-- | tikzit/src/gtk/Edge+Render.m | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/tikzit/src/gtk/Edge+Render.m b/tikzit/src/gtk/Edge+Render.m index 2c89b48..61a78d7 100644 --- a/tikzit/src/gtk/Edge+Render.m +++ b/tikzit/src/gtk/Edge+Render.m @@ -42,9 +42,7 @@ static const float cpLineWidth = 1.0; } } -- (void) renderControlsToSurface:(id <Surface>)surface withContext:(id<RenderContext>)context { - Transformer *transformer = [surface transformer]; - +- (void) renderControlsInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer { [context saveState]; [self updateControls]; @@ -124,38 +122,45 @@ static const float cpLineWidth = 1.0; [context restoreState]; } -- (void) createArrowStrokePathInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer { - [context startPath]; +- (void) renderArrowStrokePathInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer color:(RColor)color { if ([self style] != nil) { switch ([[self style] headStyle]) { case AH_None: break; case AH_Plain: + [context startPath]; [context moveTo:[transformer toScreen:[self leftHeadNormal]]]; [context lineTo:[transformer toScreen:head]]; [context lineTo:[transformer toScreen:[self rightHeadNormal]]]; + [context strokePathWithColor:color]; break; case AH_Latex: + [context startPath]; [context moveTo:[transformer toScreen:[self leftHeadNormal]]]; [context lineTo:[transformer toScreen:head]]; [context lineTo:[transformer toScreen:[self rightHeadNormal]]]; [context closeSubPath]; + [context strokePathWithColor:color andFillWithColor:color]; break; } switch ([[self style] tailStyle]) { case AH_None: break; case AH_Plain: + [context startPath]; [context moveTo:[transformer toScreen:[self leftTailNormal]]]; [context lineTo:[transformer toScreen:tail]]; [context lineTo:[transformer toScreen:[self rightTailNormal]]]; + [context strokePathWithColor:color]; break; case AH_Latex: + [context startPath]; [context moveTo:[transformer toScreen:[self leftTailNormal]]]; [context lineTo:[transformer toScreen:tail]]; [context lineTo:[transformer toScreen:[self rightTailNormal]]]; [context closeSubPath]; + [context strokePathWithColor:color andFillWithColor:color]; break; } } @@ -190,10 +195,10 @@ static const float cpLineWidth = 1.0; } } -- (void) renderToSurface:(id <Surface>)surface withContext:(id<RenderContext>)context selected:(BOOL)selected { +- (void) renderBasicEdgeInContext:(id<RenderContext>)context withTransformer:(Transformer*)t selected:(BOOL)selected { [self updateControls]; - [context saveState]; + const CGFloat lineWidth = style ? [style thickness] : edgeWidth; [context setLineWidth:lineWidth]; RColor color = BlackRColor; @@ -201,16 +206,19 @@ static const float cpLineWidth = 1.0; color.alpha = 0.5; } - [self createStrokePathInContext:context withTransformer:[surface transformer]]; + [self createStrokePathInContext:context withTransformer:t]; [context strokePathWithColor:color]; - [self createArrowStrokePathInContext:context withTransformer:[surface transformer]]; - [context strokePathWithColor:color andFillWithColor:color]; + [self renderArrowStrokePathInContext:context withTransformer:t color:color]; [context restoreState]; +} + +- (void) renderToSurface:(id <Surface>)surface withContext:(id<RenderContext>)context selected:(BOOL)selected { + [self renderBasicEdgeInContext:context withTransformer:[surface transformer] selected:selected]; if (selected) { - [self renderControlsToSurface:surface withContext:context]; + [self renderControlsInContext:context withTransformer:[surface transformer]]; } if ([self hasEdgeNode]) { |