diff options
Diffstat (limited to 'tikzit-old/src/common/Preambles.m')
-rw-r--r-- | tikzit-old/src/common/Preambles.m | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/tikzit-old/src/common/Preambles.m b/tikzit-old/src/common/Preambles.m deleted file mode 100644 index 922fc30..0000000 --- a/tikzit-old/src/common/Preambles.m +++ /dev/null @@ -1,320 +0,0 @@ -// -// Preambles.m -// TikZiT -// -// Copyright 2010 Aleks Kissinger. All rights reserved. -// -// -// This file is part of TikZiT. -// -// TikZiT is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// TikZiT is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with TikZiT. If not, see <http://www.gnu.org/licenses/>. -// - -#import "Preambles.h" -#import "NodeStyle.h" -#import "EdgeStyle.h" -#import "Graph.h" - -static NSString *DEF_PREAMBLE_START = -@"\\usepackage[svgnames]{xcolor}\n" -@"\\usepackage{tikz}\n" -@"\\usetikzlibrary{decorations.markings}\n" -@"\\usetikzlibrary{shapes.geometric}\n" -@"\n" -@"\\pgfdeclarelayer{edgelayer}\n" -@"\\pgfdeclarelayer{nodelayer}\n" -@"\\pgfsetlayers{edgelayer,nodelayer,main}\n" -@"\n" -@"\\tikzstyle{none}=[inner sep=0pt]\n"; - -static NSString *PREAMBLE_TAIL = -@"\n" -@"\\pagestyle{empty}\n" -@"\\usepackage[graphics,tightpage,active]{preview}\n" -@"\\PreviewEnvironment{tikzpicture}\n" -@"\\newlength{\\imagewidth}\n" -@"\\newlength{\\imagescale}\n" -@"\n" -@"\\begin{document}\n"; - -static NSString *POSTAMBLE = -@"\n" -@"\\end{document}\n"; - -@implementation Preambles - -+ (Preambles*)preambles { -#if __has_feature(objc_arc) - return [[self alloc] init]; -#else - return [[[self alloc] init] autorelease]; -#endif -} - -- (id)init { - self = [super init]; - if (self) { - selectedPreambleName = @"default"; - preambleDict = [[NSMutableDictionary alloc] initWithCapacity:1]; - [preambleDict setObject:[self defaultPreamble] forKey:@"custom"]; - styles = nil; - edges = nil; - styleManager = nil; - } - return self; -} - -- (void)dealloc { -#if ! __has_feature(objc_arc) - [selectedPreambleName release]; - [styles release]; - [styleManager release]; - [super dealloc]; -#endif -} - -- (NSString*)preambleForName:(NSString*)name { - if ([name isEqualToString:@"default"]) - return [self defaultPreamble]; - else - return [preambleDict objectForKey:name]; -} - -- (BOOL)setPreamble:(NSString*)content forName:(NSString*)name { - if ([name isEqualToString:@"default"]) - return NO; - [preambleDict setObject:content forKey:name]; - return YES; -} - -- (void)removeAllPreambles { - [preambleDict removeAllObjects]; -} - -- (NSEnumerator*)customPreambleNameEnumerator { - return [preambleDict keyEnumerator]; -} - -- (void)setStyles:(NSArray*)sty { -#if ! __has_feature(objc_arc) - [sty retain]; - [styles release]; -#endif - styles = sty; -} - -- (void)setEdges:(NSArray*)edg { -#if ! __has_feature(objc_arc) - [edg retain]; - [edges release]; -#endif - edges = edg; -} - -- (NSString*)styleDefinitions { - if (styleManager != nil) { - [self setStyles:[styleManager nodeStyles]]; - } -#if ! __has_feature(objc_arc) - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; -#endif - NSMutableString *buf = [NSMutableString string]; - NSMutableString *colbuf = [NSMutableString string]; - NSMutableSet *colors = [NSMutableSet setWithCapacity:2*[styles count]]; - for (NodeStyle *st in styles) { - [buf appendFormat:@"%@\n", [st tikz]]; - ColorRGB *fill = [st fillColorRGB]; - ColorRGB *stroke = [st strokeColorRGB]; - if ([fill name] == nil && ![colors containsObject:fill]) { - [colors addObject:fill]; - [colbuf appendFormat:@"\\definecolor{%@}{rgb}{%.3f,%.3f,%.3f}\n", - [fill hexName], [fill redFloat], [fill greenFloat], [fill blueFloat]]; - } - - if ([stroke name] == nil && ![colors containsObject:stroke]) { - [colors addObject:stroke]; - [colbuf appendFormat:@"\\definecolor{%@}{rgb}{%.3f,%.3f,%.3f}\n", - [stroke hexName], [stroke redFloat], [stroke greenFloat], [stroke blueFloat]]; - } - } - - if (styleManager != nil) { - [self setEdges:[styleManager edgeStyles]]; - } - - [buf appendString:@"\n"]; - for (EdgeStyle *st in edges) { - [buf appendFormat:@"%@\n", [st tikz]]; - ColorRGB *color = [st colorRGB]; - if (color != nil && [color name] == nil && ![colors containsObject:color]) { - [colors addObject:color]; - [colbuf appendFormat:@"\\definecolor{%@}{rgb}{%.3f,%.3f,%.3f}\n", - [color hexName], [color redFloat], [color greenFloat], [color blueFloat]]; - } - } - - NSString *defs = [[NSString alloc] initWithFormat:@"%@\n%@", colbuf, buf]; - -#if __has_feature(objc_arc) - return defs; -#else - [pool drain]; - return [defs autorelease]; -#endif -} - -- (NSString*)defaultPreamble { - return [NSString stringWithFormat:@"%@%@", - DEF_PREAMBLE_START, [self styleDefinitions]]; -} - -- (BOOL)selectedPreambleIsDefault { - return [selectedPreambleName isEqualToString:@"default"]; -} - -- (NSString*)selectedPreambleName { return selectedPreambleName; } -- (void)setSelectedPreambleName:(NSString *)sel { - if (sel != selectedPreambleName) { -#if ! __has_feature(objc_arc) - [selectedPreambleName release]; -#endif - selectedPreambleName = [sel copy]; - } -} - -- (NSString*)currentPreamble { - NSString *pre = [self preambleForName:selectedPreambleName]; - return (pre == nil) ? [self defaultPreamble] : pre; -} - -- (void)setCurrentPreamble:(NSString*)str { - if (![selectedPreambleName isEqualToString:@"default"]) - [preambleDict setObject:str forKey:selectedPreambleName]; -} - -- (StyleManager*)styleManager { - return styleManager; -} - -- (void)setStyleManager:(StyleManager *)manager { -#if ! __has_feature(objc_arc) - [manager retain]; - [styleManager release]; -#endif - styleManager = manager; -} - -- (NSString*)currentPostamble { - return POSTAMBLE; -} - -- (NSMutableDictionary*)preambleDict { - return preambleDict; -} - -- (NSString*)defaultPreambleName { - return @"default"; -} - -- (NSString*)addPreamble { - return [self addPreambleWithNameBase:@"new preamble"]; -} - -- (NSString*)addPreambleWithNameBase:(NSString*)base { - if ([preambleDict objectForKey:base] == nil) { - [self setPreamble:[self defaultPreamble] forName:base]; - return base; - } - int i = 0; - NSString *tryName = nil; - do { - ++i; - tryName = [NSString stringWithFormat:@"%@ %d", base, i]; - } while ([preambleDict objectForKey:tryName] != nil); - - [self setPreamble:[self defaultPreamble] forName:tryName]; - return tryName; -} - -- (BOOL)renamePreambleFrom:(NSString*)old to:(NSString*)new { - if ([old isEqualToString:@"default"]) - return NO; - if ([new isEqualToString:@"default"]) - return NO; - if ([old isEqualToString:new]) - return YES; - BOOL isSelected = NO; - if ([old isEqualToString:selectedPreambleName]) { - [self setSelectedPreambleName:nil]; - isSelected = YES; - } - NSString *preamble = [preambleDict objectForKey:old]; -#if ! __has_feature(objc_arc) - [preamble retain]; -#endif - [preambleDict removeObjectForKey:old]; - [preambleDict setObject:preamble forKey:new]; -#if ! __has_feature(objc_arc) - [preamble release]; -#endif - if (isSelected) { - [self setSelectedPreambleName:new]; - } - return YES; -} - -- (BOOL)removePreamble:(NSString*)name { - if ([name isEqualToString:@"default"]) - return NO; - // "name" may be held only by being the selected preamble... -#if ! __has_feature(objc_arc) - [name retain]; -#endif - if ([name isEqualToString:selectedPreambleName]) - [self setSelectedPreambleName:nil]; - [preambleDict removeObjectForKey:name]; -#if ! __has_feature(objc_arc) - [name release]; -#endif - return YES; -} - -- (NSString*)buildDocumentForTikz:(NSString*)tikz -{ - NSString *preamble = [self currentPreamble]; - NSString *doc_head = @""; - if (![preamble hasPrefix:@"\\documentclass"]) { - doc_head = @"\\documentclass{article}\n"; - } - NSString *preamble_suffix = @""; - if ([preamble rangeOfString:@"\\begin{document}" - options:NSBackwardsSearch].length == 0) { - preamble_suffix = PREAMBLE_TAIL; - } - return [NSString stringWithFormat:@"%@%@%@%@%@", - doc_head, - [self currentPreamble], - preamble_suffix, - tikz, - POSTAMBLE]; -} - -- (NSString*)buildDocumentForGraph:(Graph*)g -{ - return [self buildDocumentForTikz:[g tikz]]; -} - -@end - -// vi:ft=objc:ts=4:noet:sts=4:sw=4 |