Archive for November, 2008

Tip: Atomic operations

Tip of the day: Do you have threaded OS X desktop code that relies on the ever so handy IncrementAtomic(), CompareAndSwap(), and so forth from DriverSynchronization.h and are wondering how you convert that over to iPhone-usable code, since the CoreServices framework isn’t available?

Well, turns out the solution is easy — everything you’re used to and plenty more besides is available in <libkern/OSAtomic.h> which despite the possibly confusing “libkern” prefix is in no way restricted to kernel code, and is available on both OS X and iPhone. Straight from the renowned Quinn “The Eskimo!” himself. So you know it’s true!

And as an aside, I notice the <libkern/OSByteOrder.h> file also right there, which presumably would be the approved compatible replacements for any Carbon/Cocoa/whatever flavours of endian detection and swapping code might be littering up your source libraries from the 68K days. (We assume you’re not such a newbie as to only have PowerPC vintage code, of course!)

Continue Reading →
0

Code: OpenGL Bitmap Fonts

Today, we draw your attention to some work-in-progress code that could be of use if you’re interested in using fonts in your OpenGL ES application that aren’t available on the iPhone. It’s called OpenGL ES BitmapFont, intuitively enough, and is simple to use

// loading a font

m_pScoreFont = [BMFont alloc];
[m_pScoreFont loadFont:@"font.xml"];
[m_pScoreFont setTexture:[TextureManager loadTexture:@"font_00.png"]];
[m_pScoreFont setRotation:-90.0f];
[m_pScoreFont setScaling:0.005f];

// printing some text

[m_pScoreFont print:@"SCORE: 0" posX:0 posY:0.8f];

but getting the texture to load requires the use of the Windows Bitmap Font Generator application from AngelCode.com. Still, hey, it’s a start!
[UPDATE: Now links to the 0.2 release with no known issues!]

Continue Reading →
6

Library: RegexKit

Here’s another useful package to stick in your iPhone programming toolbox: the RegExKitLite framework, which wraps the PCRE library in a vast array of Cocoa-oriented conveniences:

RegexKit is an Objective-C framework for regular expressions:

  • Support for Mac OS X Cocoa and GNUstep. Mac OS X 10.4 or later required.
  • Mac OS X Universal Binary, including 64-bit support on Mac OS X 10.5.
  • No sub-classing required. Seamlessly adds regular expression support to all NSArray, NSData, NSDictionary, NSSet, and NSString Foundationobjects with a rich set of Objective-C category additions.
  • Unicode enabled. Full Unicode support for NSString objects.
  • Extensive, high quality documentation.
  • Full source code with a BSD license.
  • Uses the BSD licensed PCRE Perl Compatible Regular Expressions library for the regular expression engine.

Tuned for high performance, including such features as:

  • Caches the compiled form of the regular expression for speed.
  • Multithreading safe, including multiple reader, single writer multithreaded access to the compiled regular expression cache.
  • Makes minimal use of heap storage (ie, malloc() and free()), instead allocating most temporary buffer needs dynamically from the stack.
  • Uses Core Foundation directly on Mac OS X for additional speed.

Includes support for Mac OS X 10.5 Leopard:

  • 64 bit support. Pre-built for ppc, ppc64, i386, and x86_64.
  • Garbage Collection enabled. Complete support for Leopards Garbage Collection feature.
  • Integrated Xcode 3.0 documentation. Get real time API information via the Research Assistant.
  • Collection of instruments for Instruments.app.

Everything you need to support regular expression programming goodness!

And if you’re not so familiar with this whole regular expression thing, we’d like to ever so subtly draw your attention to the general programming resources page of the Under The Bridge Store, where you can find the classic O’Reilly Mastering Regular Expressions, which should be on the bookshelf of every serious programmer of every platform out there, not just the Mac/iPhone world!

h/t: iphonesdk!

Continue Reading →
2
Page 2 of 2 12