Some C / Objective-C helpers related to
- CGPoint,
- CGAffineTransform,
- CGPath and
- SVG path.
Parse a SVG path and return a retained CGPathRef.
See PathParser.h
Write a very simple, non-optimized form of SVG path.
Simple CGPoint math:
- add,
- subtract,
- scale (multiply x and y with a number),
- dot product,
- distance square and distance.
Persist a CGPathRef using the SVG path format as ASCII/C String.
Parse a SVG path and return a retained CGPathRef.
Uses the Ragel-generate state machine PathParser.rl directly based on the W3C BNF path grammar for parsing.
Parse a SVG transform attribute and return a CGAffineTransform.
Uses the Ragel-generate state machine TrafoParser.rl directly based on the W3C grammar for parsing.
There are some macros I use all over the place. Instead including the same header in every source file I list them here (usually I put them into the common header *.pch):
// http://blog.mro.name/2010/06/xcode-missing-deprecated-warnings/ #define alloc(c) ( (c *)[c alloc] ) #ifndef DEBUG // Ensure DEBUG is defined properly #if NS_BLOCK_ASSERTIONS //#error Define -DDEBUG=0 in Project Settings->GCC 4.2 Language->Other C Flags #define DEBUG 0 #else #error Define -DDEBUG=1 in Project Settings->GCC 4.2 Language->Other C Flags #endif #endif #if DEBUG #ifdef NS_BLOCK_ASSERTIONS #error Don't define -DNS_BLOCK_ASSERTIONS=0 in Project Settings->GCC 4.2 Language->Other C Flags #endif // Do Logging #define MRLogD(x, ...) NSLog(@"%s " x, __FUNCTION__, ## __VA_ARGS__) #else #ifndef NS_BLOCK_ASSERTIONS #error Define -DNS_BLOCK_ASSERTIONS=1 in Project Settings->GCC 4.2 Language->Other C Flags #endif #if !NS_BLOCK_ASSERTIONS #error Define -DNS_BLOCK_ASSERTIONS=1 in Project Settings->GCC 4.2 Language->Other C Flags #endif // No Logging #define MRLogD(x, ...) /* NSLog(x,##__VA_ARGS__) */ #define NSLog(x, ...) /* NSLog(x,##__VA_ARGS__) */ #endif
Generate C state machines and pdf docs from Ragel sources.