From: glenlow Date: Mon, 4 Feb 2008 13:30:08 +0000 (+0000) Subject: basic viewer app for Mac OS X X-Git-Tag: LAST_LIBGRAPH~32^2~4780 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e53424ff1d630aa013d03f8ad8d5b09f90d58761;p=graphviz basic viewer app for Mac OS X --- diff --git a/macbuild b/macbuild index 950511ee2..cd76e52d3 100755 --- a/macbuild +++ b/macbuild @@ -1,6 +1,7 @@ #!/bin/sh PACKAGEMAKER="/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker" +XCODEBUILD="xcodebuild" # configure for Universal Binaries ./configure --disable-dependency-tracking --with-quartz CFLAGS="-arch i386 -arch ppc" LDFLAGS="-arch i386 -arch ppc" @@ -10,5 +11,8 @@ make rm -rf macosx/build/usr/local/* make DESTDIR=$PWD/macosx/build install +# build the GUI application +$XCODEBUILD -project macosx/graphviz.xcodeproj -configuration Release + # convert the build directory into a package $PACKAGEMAKER --doc macosx/graphviz.pmdoc --out $1 diff --git a/macosx/GVContext.h b/macosx/GVContext.h new file mode 100644 index 000000000..58f54b44c --- /dev/null +++ b/macosx/GVContext.h @@ -0,0 +1,33 @@ +/* $Id$ $Revision$ */ +/* vim:set shiftwidth=4 ts=8: */ + +/********************************************************** +* This software is part of the graphviz package * +* http://www.graphviz.org/ * +* * +* Copyright (c) 1994-2008 AT&T Corp. * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Corp. * +* * +* Information and Software Systems Research * +* AT&T Research, Florham Park NJ * +**********************************************************/ + +#import +#include + +@interface GVContext : NSObject +{ + GVC_t *_context; +} + ++ (GVContext *)sharedContext; + +- (id)init; + +- (void)layoutGraph:(graph_t *)graph withEngine:(NSString*)engine; + +- (NSData*)renderGraph:(graph_t *)graph withFormat:(NSString*)format; +- (void)renderGraph:(graph_t *)graph withFormat:(NSString*) format toURL:(NSURL*)URL; +@end diff --git a/macosx/GVContext.m b/macosx/GVContext.m new file mode 100644 index 000000000..86145f7c7 --- /dev/null +++ b/macosx/GVContext.m @@ -0,0 +1,67 @@ +/* $Id$ $Revision$ */ +/* vim:set shiftwidth=4 ts=8: */ + +/********************************************************** +* This software is part of the graphviz package * +* http://www.graphviz.org/ * +* * +* Copyright (c) 1994-2008 AT&T Corp. * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Corp. * +* * +* Information and Software Systems Research * +* AT&T Research, Florham Park NJ * +**********************************************************/ + +#import "GVContext.h" + +@implementation GVContext + ++ (GVContext *)sharedContext +{ + static GVContext *shared = nil; + if (!shared) + shared = [[GVContext alloc] init]; + return shared; +} + +- (id)init +{ + if (self = [super init]) + _context = gvContext(); + return self; +} + +- (void)layoutGraph:(graph_t *)graph withEngine:(NSString*)engine +{ + if (gvLayout(_context, graph, (char*)[engine UTF8String]) != 0) + @throw [NSException exceptionWithName:@"GVException" reason:@"Bad layout" userInfo:nil]; +} + +- (NSData*)renderGraph:(graph_t *)graph withFormat:(NSString*)format +{ + char *renderedData = NULL; + unsigned int renderedLength = 0; + if (gvRenderData(_context, graph, (char*)[format UTF8String], &renderedData, &renderedLength) != 0) + @throw [NSException exceptionWithName:@"GVException" reason:@"Bad render" userInfo:nil]; + return [NSData dataWithBytesNoCopy:renderedData length:renderedLength freeWhenDone:YES]; +} + +- (void)renderGraph:(graph_t *)graph withFormat:(NSString*)format toURL:(NSURL*)URL +{ + if ([URL isFileURL]) { + if (gvRenderFilename(_context, graph, (char*)[format UTF8String], (char*)[[URL path] UTF8String]) != 0) + @throw [NSException exceptionWithName:@"GVException" reason:@"Bad render" userInfo:nil]; + } + else + [[self renderGraph:graph withFormat:format] writeToURL:URL atomically:NO]; +} + +- (void)dealloc +{ + if(_context) + gvFreeContext(_context); + [super dealloc]; +} +@end