summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/Edge+Render.m
diff options
context:
space:
mode:
authorrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-18 12:09:21 +0000
committerrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-18 12:09:21 +0000
commit42cc92ea91cb770e9e0e64e5bede18aa5cfce25d (patch)
tree8a7c592d746e760b68eb7b0da17de4c5ec16f928 /tikzit/src/gtk/Edge+Render.m
parent9e71f7db3c487633d2ec170369d0ecc5f61280cf (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.m30
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]) {