summaryrefslogtreecommitdiff
path: root/tikzit/src/linux
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src/linux')
-rw-r--r--tikzit/src/linux/Edge+Render.m8
-rw-r--r--tikzit/src/linux/GraphRenderer.m8
-rw-r--r--tikzit/src/linux/Node+Render.h4
-rw-r--r--tikzit/src/linux/Node+Render.m31
4 files changed, 33 insertions, 18 deletions
diff --git a/tikzit/src/linux/Edge+Render.m b/tikzit/src/linux/Edge+Render.m
index a6738b7..c64b35f 100644
--- a/tikzit/src/linux/Edge+Render.m
+++ b/tikzit/src/linux/Edge+Render.m
@@ -125,14 +125,14 @@ static const float cpLineWidth = 1.0;
}
- (void) createStrokePathInContext:(id<RenderContext>)context withTransformer:(Transformer*)transformer {
- NSPoint c_source = [transformer toScreen:src];
+ NSPoint c_head = [transformer toScreen:head];
NSPoint c_cp1 = [transformer toScreen:cp1];
NSPoint c_cp2 = [transformer toScreen:cp2];
- NSPoint c_target = [transformer toScreen:targ];
+ NSPoint c_tail = [transformer toScreen:tail];
[context startPath];
- [context moveTo:c_source];
- [context curveTo:c_target withCp1:c_cp1 andCp2:c_cp2];
+ [context moveTo:c_head];
+ [context curveTo:c_tail withCp1:c_cp1 andCp2:c_cp2];
if ([self style] != nil) {
// draw edge decoration
diff --git a/tikzit/src/linux/GraphRenderer.m b/tikzit/src/linux/GraphRenderer.m
index c964f1b..571390f 100644
--- a/tikzit/src/linux/GraphRenderer.m
+++ b/tikzit/src/linux/GraphRenderer.m
@@ -140,7 +140,7 @@ void graph_renderer_expose_event(GtkWidget *widget, GdkEventExpose *event);
if (node == nil) {
return;
}
- NSRect nodeRect = [node boundsWithLabelOnSurface:surface];
+ NSRect nodeRect = [node renderBoundsWithLabelForSurface:surface];
nodeRect = NSInsetRect (nodeRect, -2.0f, -2.0f);
[surface invalidateRect:nodeRect];
}
@@ -170,7 +170,7 @@ void graph_renderer_expose_event(GtkWidget *widget, GdkEventExpose *event);
}
- (BOOL) point:(NSPoint)p fuzzyHitsNode:(Node*)node {
- NSRect bounds = [node boundsOnSurface:surface];
+ NSRect bounds = [node renderBoundsForSurface:surface];
return NSPointInRect(p, bounds);
}
@@ -307,13 +307,13 @@ void graph_renderer_expose_event(GtkWidget *widget, GdkEventExpose *event);
- (void) invalidateHalfEdge {
if (halfEdgeOrigin != nil) {
NSRect invRect = NSRectAroundPoints(halfEdgeEnd, halfEdgeOriginPoint);
- invRect = NSUnionRect(invRect, [halfEdgeOrigin boundsWithLabelOnSurface:surface]);
+ invRect = NSUnionRect(invRect, [halfEdgeOrigin renderBoundsWithLabelForSurface:surface]);
NSEnumerator *enumerator = [doc nodeEnumerator];
Node *node;
while ((node = [enumerator nextObject]) != nil) {
if ([self point:halfEdgeEnd fuzzyHitsNode:node]) {
- invRect = NSUnionRect(invRect, [node boundsWithLabelOnSurface:surface]);
+ invRect = NSUnionRect(invRect, [node renderBoundsWithLabelForSurface:surface]);
}
}
[surface invalidateRect:NSInsetRect (invRect, -2.0f, -2.0f)];
diff --git a/tikzit/src/linux/Node+Render.h b/tikzit/src/linux/Node+Render.h
index 49667e1..60d2573 100644
--- a/tikzit/src/linux/Node+Render.h
+++ b/tikzit/src/linux/Node+Render.h
@@ -30,8 +30,8 @@ enum NodeState {
- (Transformer*) shapeTransformerForSurface:(id<Surface>)surface;
// the total rendered bounds, excluding label
-- (NSRect) boundsOnSurface:(id<Surface>)surface;
-- (NSRect) boundsWithLabelOnSurface:(id<Surface>)surface;
+- (NSRect) renderBoundsForSurface:(id<Surface>)surface;
+- (NSRect) renderBoundsWithLabelForSurface:(id<Surface>)surface;
- (NSString*) renderedLabel;
- (NSSize) renderedLabelSizeInContext:(id<RenderContext>)context;
- (void) renderLabelToSurface:(id<Surface>)surface withContext:(id<RenderContext>)context;
diff --git a/tikzit/src/linux/Node+Render.m b/tikzit/src/linux/Node+Render.m
index 7450dba..907d818 100644
--- a/tikzit/src/linux/Node+Render.m
+++ b/tikzit/src/linux/Node+Render.m
@@ -27,16 +27,31 @@
@implementation Node (Render)
+- (Shape*) shapeToRender {
+ if (style) {
+ return [Shape shapeForName:[style shapeName]];
+ } else {
+ return [Shape shapeForName:SHAPE_CIRCLE];
+ }
+}
+
- (Transformer*) shapeTransformerForSurface:(id<Surface>)surface {
return [self shapeTransformerFromTransformer:[surface transformer]];
}
-- (NSRect) boundsOnSurface:(id<Surface>)surface {
- return [self boundsUsingShapeTransform:[self shapeTransformerForSurface:surface]];
+- (NSRect) renderBoundsUsingShapeTransform:(Transformer*)shapeTrans {
+ float strokeThickness = style ? [style strokeThickness] : [NodeStyle defaultStrokeThickness];
+ NSRect screenBounds = [shapeTrans rectToScreen:[[self shapeToRender] boundingRect]];
+ screenBounds = NSInsetRect(screenBounds, -strokeThickness, -strokeThickness);
+ return screenBounds;
+}
+
+- (NSRect) renderBoundsForSurface:(id<Surface>)surface {
+ return [self renderBoundsUsingShapeTransform:[self shapeTransformerForSurface:surface]];
}
-- (NSRect) boundsWithLabelOnSurface:(id<Surface>)surface {
- NSRect nodeBounds = [self boundsOnSurface:surface];
+- (NSRect) renderBoundsWithLabelForSurface:(id<Surface>)surface {
+ NSRect nodeBounds = [self renderBoundsForSurface:surface];
NSRect labelRect = NSZeroRect;
if (![label isEqual:@""]) {
id<RenderContext> cr = [surface createRenderContext];
@@ -127,7 +142,7 @@
[context saveState];
- [[self shape] drawPathWithTransform:shapeTrans andContext:context];
+ [[self shapeToRender] drawPathWithTransform:shapeTrans andContext:context];
[context setLineWidth:strokeThickness];
if (!style) {
@@ -145,7 +160,7 @@
alpha = 0.25f;
RColor selectionColor = MakeSolidRColor(0.61f, 0.735f, 1.0f);
- [[self shape] drawPathWithTransform:shapeTrans andContext:context];
+ [[self shapeToRender] drawPathWithTransform:shapeTrans andContext:context];
[context strokePathWithColor:selectionColor andFillWithColor:selectionColor usingAlpha:alpha];
}
@@ -156,7 +171,7 @@
- (BOOL) hitByPoint:(NSPoint)p onSurface:(id<Surface>)surface {
Transformer *shapeTrans = [self shapeTransformerForSurface:surface];
- NSRect screenBounds = [self boundsUsingShapeTransform:shapeTrans];
+ NSRect screenBounds = [self renderBoundsUsingShapeTransform:shapeTrans];
if (!NSPointInRect(p, screenBounds)) {
return NO;
}
@@ -164,7 +179,7 @@
float strokeThickness = style ? [style strokeThickness] : [NodeStyle defaultStrokeThickness];
id<RenderContext> ctx = [surface createRenderContext];
[ctx setLineWidth:strokeThickness];
- [[self shape] drawPathWithTransform:shapeTrans andContext:ctx];
+ [[self shapeToRender] drawPathWithTransform:shapeTrans andContext:ctx];
return [ctx strokeIncludesPoint:p] || [ctx fillIncludesPoint:p];
}