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/EdgeStyleSelector.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/EdgeStyleSelector.m')
-rw-r--r-- | tikzit/src/gtk/EdgeStyleSelector.m | 38 |
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]; |