summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/EdgeStyleSelector.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/EdgeStyleSelector.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/EdgeStyleSelector.m')
-rw-r--r--tikzit/src/gtk/EdgeStyleSelector.m38
1 files changed, 10 insertions, 28 deletions
diff --git a/tikzit/src/gtk/EdgeStyleSelector.m b/tikzit/src/gtk/EdgeStyleSelector.m
index 243d176..4e7736f 100644
--- a/tikzit/src/gtk/EdgeStyleSelector.m
+++ b/tikzit/src/gtk/EdgeStyleSelector.m
@@ -18,6 +18,9 @@
#import "EdgeStyleSelector.h"
#import "CairoRenderContext.h"
+#import "Edge.h"
+#import "Edge+Render.h"
+#import "Node.h"
#import "Shape.h"
#import "Shape+Render.h"
#import "ShapeNames.h"
@@ -373,37 +376,16 @@ enum {
NSRect pixbufBounds = NSMakeRect(0.0, 0.0, width, height);
NSRect graphBounds = [transformer rectFromScreen:pixbufBounds];
- NSPoint mid = NSMakePoint (NSMidX (graphBounds), NSMidY (graphBounds));
- NSPoint start = NSMakePoint (NSMinX (graphBounds) + 0.1f, mid.y);
- NSPoint end = NSMakePoint (NSMaxX (graphBounds) - 0.1f, mid.y);
- NSPoint midTan = NSMakePoint (mid.x + 0.1f, mid.y);
- NSPoint leftNormal = NSMakePoint (mid.x, mid.y - 0.1f);
- NSPoint rightNormal = NSMakePoint (mid.x, mid.y + 0.1f);
+ NSPoint start = NSMakePoint (NSMinX (graphBounds) + 0.1f, NSMidY (graphBounds));
+ NSPoint end = NSMakePoint (NSMaxX (graphBounds) - 0.1f, NSMidY (graphBounds));
+ Node *src = [Node nodeWithPoint:start];
+ Node *tgt = [Node nodeWithPoint:end];
+ Edge *e = [Edge edgeWithSource:src andTarget:tgt];
+ [e setStyle:style];
CairoRenderContext *context = [[CairoRenderContext alloc] initForSurface:surface];
[context clearSurface];
-
- [context startPath];
- [context moveTo:[transformer toScreen:start]];
- [context lineTo:[transformer toScreen:end]];
-
- switch ([style decorationStyle]) {
- case ED_None:
- break;
- case ED_Tick:
- [context moveTo:[transformer toScreen:leftNormal]];
- [context lineTo:[transformer toScreen:rightNormal]];
- break;
- case ED_Arrow:
- [context moveTo:[transformer toScreen:leftNormal]];
- [context lineTo:[transformer toScreen:midTan]];
- [context lineTo:[transformer toScreen:rightNormal]];
- break;
- }
-
- [context setLineWidth:[style thickness]];
- [context strokePathWithColor:BlackRColor];
-
+ [e renderBasicEdgeInContext:context withTransformer:transformer selected:NO];
[context release];
return [self pixbufFromSurface:surface];