nyctergatis.com

Contact

Projects
Sysquake Remote Live
NME
PDF
Hike
Sudoku
GifBuilder
jpeglib for Palm OS
MySQL Client
Cross-GCC for Mac OS
NMEObjC.m
Go to the documentation of this file.
00001 
00008 /* License: new BSD license (see NME.h) */
00009 
00010 #import "NMEObjC.h"
00011 #import "NME.h"
00012 
00013 @implementation NSData(NME)
00014 
00015 + (NSData *)dataWithNME:(char const *)src length:(int)length
00016         fontSize:(int)fontSize format:(char)format
00017 {
00018     NMEText buf, dest;
00019     NMEInt bufSize, destLen;
00020     NMEErr err;
00021     NSData *data;
00022     NMEOutputFormat const *f;
00023     NMEOutputFormat formatDebugNested;
00024     
00025     bufSize = 1024 + 2 * length;
00026     
00027 tryAgain:
00028     buf = malloc(bufSize);
00029     if (!buf)
00030         return nil;
00031     
00032     switch (format)
00033     {
00034         case 'd':
00035             f = &NMEOutputFormatDebug;
00036             break;
00037         case 'D':
00038             formatDebugNested = NMEOutputFormatDebug;
00039             formatDebugNested.sublistInListItem = TRUE;
00040             f = &formatDebugNested;
00041             break;
00042         case 'h':
00043             f = &NMEOutputFormatHTML;
00044             break;
00045         case 'l':
00046             f = &NMEOutputFormatLaTeX;
00047             break;
00048         case 'n':
00049             f = &NMEOutputFormatNME;
00050             break;
00051         case 'r':
00052             f = &NMEOutputFormatRTF;
00053             break;
00054         default:
00055             f = &NMEOutputFormatText;
00056             break;
00057     }
00058     
00059     err = NMEProcess(src, length,
00060             buf, bufSize,
00061             kNMEProcessOptDefault, "\n", f, fontSize,
00062             &dest, &destLen, NULL);
00063     if (err == kNMEErrNotEnoughMemory)
00064         if (bufSize < 65536 + 10 * length)
00065         {
00066             free((void *)buf);
00067             bufSize *= 2;
00068             goto tryAgain;
00069         }
00070         else
00071         {
00072             free((void *)buf);
00073             return nil;
00074         }
00075     
00076     data = [NSData dataWithBytes:dest length:destLen];
00077     free((void *)buf);
00078     return data;
00079 }
00080 
00081 + (NSData *)dataWithNME:(char const *)src length:(int)length
00082         fontSize:(int)fontSize
00083 {
00084     return [NSData dataWithNME:src length:length
00085             fontSize:fontSize format:'r'];
00086 }
00087 
00088 + (NSData *)dataWithNMEString:(NSString *)src
00089         fontSize:(int)fontSize format:(char)format;
00090 {
00091     NSData *data = [src dataUsingEncoding:NSUTF8StringEncoding];
00092     return [NSData dataWithNME:[data bytes] length:[data length]
00093             fontSize:fontSize format:'r'];
00094 }
00095 
00096 @end
Generated by Doxygen.
Copyright 2007-2011, Yves Piguet.
All rights reserved.