Saturday, November 29, 2008

“Fingerboarding” - A New App For The iPhone

“Fingerboarding,” or skateboarding on a miniature skateboard with your fingers remains a mystery to many adults, so they remain torn about the release of Touchgrind, which has now made its way into the App Store and is available for $4.99 right now. It’s one of those kind of apps that you’re either really into, or isn’t even on your radar.

Playing with a tiny skateboard in real-life seems unusual, but playing with a virtual skateboard that responds realistically to your fingers flipping and tapping on a multi touch screen could be really awesome — like a skating game with the most concise and pinpoint controls ever. Graphics are sharp and modern in nature.

Unfortunately, there are no free demos - either you jump in for $5 or you don’t. But if you do, there’s actually a lot that it offers - 3 game modes, 12 different boards each with their own abilities, and a set of tutorials to get you started. Experimenting with the physics alone might be worth the $5 admission price.

Reference:
http://www.touchgrind.com/

Friday, November 28, 2008

Google Voice Search for iPhone

Google added new Google Mobile App for iPhone which brings voice search to Apple's smartphone. The application is now available on the iPhone App Store.

v2.0 of the app should allow people to simply speak what they want to find into an iPhone's microphone, and receive a list of results, with suggested interpretations of what a person said. Searches can include both web and contact results, but there are no voice commands in the software for dialing or e-mailing a person. Instead, users must tap on a contact.

The voice search function of the tool needs to be activated in the settings option and the instructions say that it only works in English and is geared towards a North American accent.

References:
http://googleblog.blogspot.com/2008/11/now-you-can-speak-to-google-mobile-app.html

Mobiles.co.uk Gets The iPhone 3G

iPhone 3G is now available through a new retailer Mobiles.co.uk in the UK. The retailer is offering up the 8GB black model and the 16GB black and white models of the iPhone 3G.

However, with the higher-end monthly plans, you can get the iPhone for free! In order to get the free phone, you will have to either purchase a £45 a month plan for a free 8GB, or the £75 a month plan, which gets you 3000 mins, 500 texts and either a free 8GB or 16GB iPhone.

The company is a subsidiary of the Carphone Warehouse, which explains the connection, but might be thought surprising considering the site's dubious history with the device.

Customers ordering the iPhone 3G on the site can use the promo code MOB1108email to receive a free Bluetooth headset, car charger and in-car phone holder.

References:
http://www.mobiles.co.uk/iphone-3g.html

Thursday, November 27, 2008

Broadcast Via Your iPhone

TiVo is hopping on the iPhone bandwagon by launching the public beta for a new web app that will let you “browse, search and discover” TV shows on any platform and in any browser. Users can set their TiVo DVR remotely from anywhere with the app for the iPhone, and search by actor, title, director, and keyword, as well as browse Daily Recommendations and Most Popular shows. It also has an “If you like this…” tool for finding new shows that you may enjoy.

The new app also combines features from Amazon Video on Demand and YouTube. They hope to have on-demand streaming movies and TV shows from NetFlix by December as well. This could be huge if it grows to its potential, and TiVo is taking a bold step to being a big iPhone player in the apps arena. The app should be fully operational by mid-December, according to several internal reports.

Reference:
https://m.tivo.com/

Tuesday, November 25, 2008

RoadTrip certified for iPhone use

Griffin Technologies has announced that its RoadTrip with SmartScan is now certified by Apple for use with the iPhone. The RoadTrip with SmartScan costs $99.99.

The RoadTrip with SmartScan plugs into your vehicle’s cigarette lighter or 12 volt accessory jack. A built-in FM transmitter enables you to stream audio from your iPod or iPhone to your vehicle’s FM stereo. SmartScan is a feature in the FM transmitter that enables the RoadTrip to identify and lock on to the best open FM frequencies. The RoadTrip with SmartScan features a flexible steel neck that lets you position the iPod or iPhone at the right angle; the device also includes model-specific cradles for a custom fit.

Reference:
http://www.griffintechnology.com/products/roadtrip

Monday, November 24, 2008

Shameless Post

Today, I noticed that the book reached #213 on Amazon's overall rank. I never expected it to break 500 and was doubtful about 500. The fact that it's been hovering around 300 for a week, and now has come close to 200 is just got me feeling peachy.



Edit: We seem to have peaked at 147 and have now backed off a bit, but are still doing well.

Edit 2: Went back down to 139 tonight, and we've made Amazon's hot new arrival list. We've climbed ahead of Martha Stewart's book as well as I Can Haz Cheeseburger.

Sunday, November 23, 2008

“iPhone your life’ site”


A new section on Apple’s website - “iPhone Your Life,” as it’s called, allows you to see applications as they relate to different parts of your life, and what app they would recommend to make the phase of your life easier in some way.

Apple has sections for: Around Town (related to local food and events), World Travel (events and other stuff from around the world), At Home (on therange with family and home related apps), Getting Things Done (productivity apps for business), and Fun and Games (self-explanatory; games for the iPhone are an exploding market right now).

They have staff picks, top downloaded apps, and descriptions of featured applications. It’s an interesting philosophical approach to the everyday use of the smartphone, and the apps recommended are generally the best of the lot.
To the end and for the top of “iPhone your life’ site” – Once you own an iphone, you discover that it’s more than a phone. It’s a way of life. Take a look at some ideas to help you get the most out of your iphone, wherever you go. But first of all don’t forget about us - http://iphone.blogvasion.com/

Reference:
http://www.apple.com/iphone/iphone-your-life/

Scratch That

Dave and I won't be appearing on iPhone Alley this week, we got bumped so they would have time to cover the the 2.2 release. I'll let you know if we get rescheduled.

Friday, November 21, 2008

Power Slider Case Doubles iPhone Battery Life

Incase has revealed a new version of their Slider Case for the 3G iPhone, the Incase Power Slider Case. It features a built in battery pack that will double the battery life of your 3G iPhone.

The Power Slider's 1330mAh lithium-ion polymer battery more than doubles the phone's power capacity. Using a USB pass-through connection, you can leave the Power Slider connected to the phone at all times while still having access to the iPhone's ports. The pack features a five-LED charge indicator, for quick assessment of remaining power.

This new case will give you an additional 26 hours of audio playback, 5 hours of talk time on 3G, 10 on 2G and up to 7 extra hours of video playback.

Features:

* Integrated rechargeable lithium-ion polymer battery more than doubles the battery life of iPhone 3G

* Optimized power management system provides continuous charge to iPhone 3G internal battery

* 5 light LED battery status indicator

* Charge and sync without removing iPhone 3G from case using the custom USB cable provided

* Advanced lithium-ion polymer battery cell technology prevents overcharging and short circuiting and provides protection from extreme temperature

* Durable, lightweight hardshell construction with soft-touch coating

* Compatible with USB charging ports that provide 5V at 1A output

* “Works with iPhone” certified by Apple

The Incase Power Slider case will go on sale on the 28th of November for $99.95.

References:
http://goincase.com/products/detail/EC20003

A Novel Business Model

Here's a company that gives away their iPhone apps, but sells the underlying source code. Interesting approach, and I'm sure there is a market for good iPhone libraries and source code. The only shortcoming that I see is that there's no way to know how good the underlying code is. This company's apps undoubtedly look nice, but a pretty GUI is no guarantee of well-written code. The underlying code could be stellar, or it could be functional but disorganized and poorly written, and there's really no way to know without shelling out the cash. Unfortunately, the people who can benefit the most from code like this are the ones least able to distinguish between good and bad code.

That creates a bit of a catch-22 for the company. If they show people the code, it's hard to keep people from using it, but buying something sight unseen makes some people (like me) a little nervous. It's like buying a mystery bag, or playing the lottery, neither of which I would ever do.

If I were them, I'd probably try and get some testimonials from some respected developers - get a few people with some know-how to say "yeah, their code is good". I think it would make people more comfortable about shelling out cash to buy source code they can't look at first.

Note: I've heard from someone who has bought one of the source code projects, and the feedback was positive. This person said the code was "well organized" and "clean", though he hadn't had a chance to look at it in detail yet. That's definitely good news for the Tausendstern folks, and for their potential customers. I've decided to purchase the package and take a look for myself - I'll give a report here when I do.

iPhone Alley

Looks like Dave and I are going to make an appearance on the iPhone Alley Podcast next week. We're recording on Sunday night, so I would imagine the podcast will be available not more than a few days later. I'll post again with the URL when the podcast is actually available.

We've got a few more interviews being lined up, but if you've got a podcast, magazine, or blog with an iPhone-savvy audience, we've love to talk to you.

We're also trying to figure out about MacWorld. Dave and I were hoping to go there in some official capacity, being on a panel, or signing books, but that's starting to look unlikely. I will probably still be there, but just as an attendee, and I would love the opportunity to meet some new folks and re-connect with others while I'm out there.

Adding Photos to iPhone Library

Here's a tip I picked up from the iPhoneDevSDK forums courtesy of member hikinks.

The iPhone simulator comes with some sample images installed so that you can use and test the Image Picker and other functionality. The only problem is, if you clear the cache, or delete the ~/Library/Application Support/iPhone Simulator folder, you lose them.

You can put any photos you want in the library, however, to get them to show up, you need to put them in the right place and give them the correct names. Place your images in
~/Library/Application Support/iPhone Simulator/User/Media/DCIM/100APPLE

creating any folders that do not exist.

Now, rename the image files you want in your simulator's photo library using the following naming convention:

IMG_0000.JPG
IMG_0001.JPG
IMG_0002.JPG

Remember - unlike the Mac, the iPhone's file system is case sensitive, so make sure you use uppercase letters.

That will put them in the photo album. You do not see thumbnails though. To get thumbnails, you have to manually make re-sized copies of each image that are resized to 96x96 pixels. The thumbnail for a particular image should have the same name as the image it is a thumbnail for, but instead of a .JPG extension, it should have a .THM extension.


The Of Code and Men blog has a bash script that will functions for copying the files onto the simulator.

Edit: I've been told that there's an easier way - that you can simply drag an image onto the Simulator window when it's running and that will open the image in Mobile Safari and then let you add the image to the Simulator's Photo Library. I've found that to be half true - I can get the image from my computer to open in Mobile Safari in the Simulator, but the path from there to the Photo Library is not obvious to me if it exists.

iPhone SDK & OS 2.2 is Out

I'm a little slow on the ball this morning - usually the iPhone Dev Center is one of my first stops on my morning routine, but somehow didn't go there this morning. Was alerted to the fact that 2.2 is now the release version via a tweet. You should update your iPhone or iPod Touch via iTunes before installing the 2.2 SDK.

If my understanding is correct, that means 2.2 can now be openly discussed. Wonder how long it is until we start getting seeded 2.3 betas?

Edit: You should download the 2.2 SDK, THEN update your phone through iTunes, and then install the SDK. Once you update your phone, you will be unable to continue using it as a development device until you install the 2.2 SDK, and right now, throughput on the download isn't that great.

Thursday, November 20, 2008

Very Nice

Today, our book got a very nice plug from distorted-loop.com, with even a quote from my co-author. Big thanks to those folks for the kind words. If you're into music and technology, you should check them out.

Also, no a completely unrelated note, the holiday shopping season has arrived early this year. I know this because all the Google advertisements on the blogs I read have switched from iPhone and Mac related stuff to jewelry, perfume, and other such things.

"Officially" released

I guess the book is now officially released. Although Amazon has been filling pre-orders for almost a week now, the official press release didn't go out until yesterday, whichi s about the time that Amazon changed from "Usually ships in 4-7 weeks" to "In Stock".

Our Amazon rank jumped below #500 overall today. It probably won't stay down there - this is a niche book after all - but it feels good to see it even get to visit down there, not to mention seeing it be the #1 book in three categories to boot. I know these numbers are transient, but it does the ego good.

The official Book Website is live now, as are support forums where you can ask questions, get help, and find errata.

Daring Fireball on Google's use of Private APIs

Here is an interesting posting, and nice bit of detective work on the part of John Gruber with some help from Robert Marini. I often agree with Mr. Gruber, but I especially agree with the sentiment of this posting, I do think the chances that the app just slipped through the approval process are greater than he seems to, though: I think it's very possible that the app just slipped through and wasn't actually given special consideration.

But if Google was given special consideration, then I completely agree that that sucks.

Edit: Here's another blog posting that expands on the theory. Thanks, Prasad!

Wednesday, November 19, 2008

Pocket Jockey for the iPhone and iPod Touch

Warren Stringer has created a new multiplayer horse racing game Pocket Jockey for the iPhone and iPod Touch.

Playing multiplayer Pocket Jockey is easy: all you need is a Wifi connection and a friend who has Pocket Jockey.

The closer you gallop to the beat of the song, the faster your horse runs! An occasional whipping makes your horse go even faster.

There are 3 fun ways to race:

• Jumping up and down while holding the device in front of your face (whip by flicking)

• Bouncing your legs after putting the device in your back pocket (whip by spanking yourself!)

• Tapping the screen (whip by flicking)

The game is available at the App Store for $.99.

References:
http://www.tuaw.com/2008/11/14/whip-it-whip-it-good-pocket-jockey-for-
iphone-is-spanktastic/

World’s first iPhone case with glass screen and built-in battery

Iyskin have announced the World’s first iPhone case with glass screen and built-in battery called the QuattroPower™ and will be available for purchase on 22nd December for $99.99. It brings a premium power and protection experience to iPhone’s owners. It offers ivyskin’s newest Glass touch Thru case called Quattro T4 bundled with the new QuattroPac™ battery. Although there are a few companies that offer an extended battery for the 3G, none offers one as part of a case that is also fully removable.

QuattroPower™ SmartCase™ Features - The QuattroPower™ sends a signal to the iPhone to drain its power first before using the iPhone’s battery. This advanced power distribution system, enables the iPhone to receive an additional 200%

Battery life - 6 light LED battery status indicator; The QuattroPower™ case can be charged without removing the case, it includes a USB cable and a power charger; QuattroPower™ has a full rechargeable lithium polymer battery embedded into the Quattro case that provides a non-slip, soft grip case; Polycarbonate hard shell case with Polysilicon coating provides a protection that is secound to none in the market today

Features:
* Standby Time – Up to 350 hours
* Talk Time – Up to 6 hours on 3G | Up to 12 hours on 2G
* Internet Use – Up to 6 hours on 3G | Up to 7 hours on Wi-Fi
* Audio Playback – Up to 28 hours
* Video Playback – Up to 8 hours

Reference:
http://ivyskin.com/xpnews/view/index/id/21

Monday, November 17, 2008

New Game - Cosmic One For iPhone and iPod Touch

oeFun released a new Cosmic One puzzle game for the iPhone and iPod Touch. At the beginning the game was free but now you can download it from the App Store and it costs $1.99.

To play Cosmic One you just need to use your catcher at the bottom of the screen to capture the falling tiles. Simply move the catcher by turning it with your thumb to match the symbol of the falling tile. If you want to drop the tile faster for more points, tap the top of the screen.

Cosmic One features an integrated online leader-board for high scoring and a scoring system that rewards quick and accurate play.

Features:

* Easy to pick up and play.

* Addictive, casual gameplay.

* Intuitive touch interface and controls.

* Supports left or right handed play.

* Pause / resume function for interrupted games.

* Integrated online high-score table shows your position and the top 10 players in the world.

* Compete with people from around the globe.

* Unique space themed ambient score enhances gameplay

* Work up a musical beat as you try to keep up to the game’s ever quickening pace.

* OpenGL ES / OpenAL for smooth graphics and sound.

References:
http://www.oefun.com/

Sunday, November 16, 2008

The DLO Hybridshell iPhone case


The DLO HybridShell is a hard case that keeps your iPhone safe from the perils of riding in your backpack or briefcase without hiding the sleek beauty of your phone. The design itself is not very amazing but just slides the silicone-coated back off, set your iPhone in place, and lock the back securely in place. Grip dots on the case back let you keep a firm hold on your iPhone, and prevent it from sliding around when you set it down in the car.

The clear polycarbonate case front protects your display without reducing your view. The included SurfaceShield protects your touchscreen without slowing down its response. You’ll have full access to the touchscreen, connectors, and controls while your iPhone stays safe from dust, scratches, and drop-damage. The trim HybridShell gives you crystal-clear protection without adding bulk. The retail price should be around $24.95 or so.

Reference:
http://www.dlo.com/

Saturday, November 15, 2008

Citrix developing XenApps and XenDesktop for the iPhone

By the first half of 2009, Citrix will make its XenDesktop and XenApp client and server software for remote access to Windows applications available for the iPhone. “We expect to have it sooner rather than later,” said Chris Fleck, vice president of Solutions Development at Citrix .

The company is addressing an “unbelievable market demand” for such a product. Requests have become the number-one topic of discussion on its blog site. Citrix XenApp virtualizes an individual application, be it Microsoft Office, PowerPoint, Excel, or SAP, allowing users to run those applications on a client directly from a XenApp server hosted with a Windows application like SAP. XenDesktop provides access to a centrally hosted desktop, in particular a user’s desktop on a remote server.

Similar Citrix technology is available for Windows Mobile devices and devices running the Symbian operating system. However, in the case of the iPhone, Citrix has tweaked the XenApp and XenDesktop technology so that it can leverage the unique features and capabilities of iPhone, such as touch gestures, pinch and pull, zoom, and pan. It will make available the entire world of a half-million Windows applications. Citrix developers worked with Apple to design the iPhone version of the Xen App and Desktop in order to preserve as much of iPhone’s unique capabilities as possible. For example, although an enterprise application remains unchanged, users accessing that application on the iPhone will be able to use iPhone’s Accelerometer technology to change screen view from portrait to landscape to help provide visibility, usability, and navigability.

Reference:
http://www.citrix.com/

Friday, November 14, 2008

Merriam-Webster's Collegiate Dictionary For iPhone And iPod Touch

Paragon Software Group has launched Merriam-Webster's Collegiate Dictionary, Eleventh Edition for iPhone and iPod touch. The dictionary is now available on the App Store.

The best-selling Collegiate Dictionary was tailor-made for the special characteristics and unique features of the iPhone. Merriam-Webster's database contains 225,000 entries, including more than 10,000 new words and definitions, which can be accessed anywhere, anytime, without Internet connection or additional charges.

Merriam-Webster's Collegiate® Dictionary features an easy-to-use, single-click application to access definitions instantly. The SlovoEd engine compresses the dictionary content to a minimum of memory space while allowing the user to perform multiple learning, word reference and translation functions as quickly as possible. The "History" feature shows the last 15 translated words, and the "Cross-Lookup" feature is an easy check of language comprehension.

Merriam-Webster’s Collegiate Dictionary sells for US$24.99 (19, 99 EUR) in the App Store. The program is supported by iPhones with firmware 2.0, iPhone 3G and iPod touch with firmware 2.0.

References:
http://www.tuaw.com/2008/10/22/noah-websters-ghost-happily-haunting-your-iphone/

Vibe II earphones launch for the iPhone

V-Moda has introduced the Vibe II line of earphones with a built in microphone, designed to work with the iPhone 3G and other smartphones equipped with a 3.5-mm jack, such as BlackBerry’s new Bold and Storm handsets. They sell for $128 and are available for pre-order from the V-Moda Web site right now (no firm release date posted yet).

Made from a stainless steel alloy, the Vibe II features a jewelry-like design with a unique woven fabric cable. The earphones are designed for in-ear use. A music control feature lets you talk then switch to listen to your music.

The Vibe II features V-Moda’s trademark Bass Level Isolating Soft Silicone (BLISS) noise-isolating technology, and includes a dynamic driver which helps to produce a 3D soundstage, according to the manufacturer. The plug has a 45-degree design and is plated with 24-carat gold. The Vibe II includes four pairs of black and clear silicone fittings and comes with earhooks if you prefer an over-the-ear fit, and a carrying pouch is also included. The Vibe II comes in two colors — black with metal accents, and a more trendy, slick chrome with red accents.

Reference:
http://www.v-moda.com/

Thursday, November 13, 2008

Book is Shipping

If you pre-ordered our iPhone book from Amazon, you should receive a shipment notification in the next day or two, if you haven't already. They still have two in stock after filling pre-orders.
List Aplikasi terinstal

Browse via SSH ke:
/private/var/mobile/Library/Caches/
Copy 'com.apple.mobile.installation.plist' ke Desktop
Buka memakai Text Editor (dalam contoh ini memakai UltraEdit)

Find string: app< /string>
Pilih: 'Highlight all items found', dan 'List line containing String'
Count all, Ok, Next.
Pada window Lines containing find string, klik Bookmark All lalu klik Clipboard.
Close window.
Tetap di Text editor, Buat New file
Paste
Find dan Replace string:< /string>/private/var/mobile/Applications
dengan: -
Klik Replace All,
Kita dapatkan List semua app terinstal termasuk list app didalam Folder (nama code).

Creating Transparent UIViews - a Rounded Rect View

I recently needed a view that had the shape of a rounded rectangle. Drawing a rounded rect using Core Graphics isn't particularly hard. As a matter of fact, the QuartzDemo sample code shows one way to do it. So, I dutifully created the view to draw a rounded rect. No matter what I did, however, it drew white all the way to the boundary of the view. My first version of the rounded rectangle view came out decidedly non-rounded.

The problem was that I was using the backgroundColor property inherited from UIView to identify what color to draw the rounded rectangle. But, and here's the point to remember today: if you need objects below yours to show through parts of your view without using alpha, the backgroundColor property MUST be set to [UIColor clearColor]. This is true even if you do not call drawRect on super.

The other thing you need to do is make sure that the opaqueproperty is set to NO. Ordinarily, opaque should be set to YES as an optimization, but that optimization isn't available to us if we want stuff to show through from below.

My second attempt at a rounded rectangle view was decidedly more rounded:

Because I knew that I would likely have need of a rounded rectangle view in the future, I wrote it generically. And, here it is, may it serve you well:

RoundedRectView.h
//
// RoundedRectView.h
//
// Created by Jeff LaMarche on 11/13/08.

#import <UIKit/UIKit.h>

#define kDefaultStrokeColor [UIColor whiteColor]
#define kDefaultRectColor [UIColor whiteColor]
#define kDefaultStrokeWidth 1.0
#define kDefaultCornerRadius 30.0

@interface RoundedRectView : UIView {
UIColor *strokeColor;
UIColor *rectColor;
CGFloat strokeWidth;
CGFloat cornerRadius;
}
@property (nonatomic, retain) UIColor *strokeColor;
@property (nonatomic, retain) UIColor *rectColor;
@property CGFloat strokeWidth;
@property CGFloat cornerRadius;
@end



RoundedRectView.m
//
// RoundedRectView.m
//
// Created by Jeff LaMarche on 11/13/08.

#import "RoundedRectView.h"

@implementation RoundedRectView
@synthesize strokeColor;
@synthesize rectColor;
@synthesize strokeWidth;
@synthesize cornerRadius;
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder:decoder])
{
self.strokeColor = kDefaultStrokeColor;
self.backgroundColor = [UIColor clearColor];
self.strokeWidth = kDefaultStrokeWidth;
self.rectColor = kDefaultRectColor;
self.cornerRadius = kDefaultCornerRadius;
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
// Initialization code
self.opaque = NO;
self.strokeColor = kDefaultStrokeColor;
self.backgroundColor = [UIColor clearColor];
self.rectColor = kDefaultRectColor;
self.strokeWidth = kDefaultStrokeWidth;
self.cornerRadius = kDefaultCornerRadius;
}
return self;
}
- (void)setBackgroundColor:(UIColor *)newBGColor
{
// Ignore any attempt to set background color - backgroundColor must stay set to clearColor
// We could throw an exception here, but that would cause problems with IB, since backgroundColor
// is a palletized property, IB will attempt to set backgroundColor for any view that is loaded
// from a nib, so instead, we just quietly ignore this.
//
// Alternatively, we could put an NSLog statement here to tell the programmer to set rectColor...
}
- (void)setOpaque:(BOOL)newIsOpaque
{
// Ignore attempt to set opaque to YES.
}
- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, strokeWidth);
CGContextSetStrokeColorWithColor(context, self.strokeColor.CGColor);
CGContextSetFillColorWithColor(context, self.rectColor.CGColor);

CGRect rrect = self.bounds;

CGFloat radius = cornerRadius;
CGFloat width = CGRectGetWidth(rrect);
CGFloat height = CGRectGetHeight(rrect);

// Make sure corner radius isn't larger than half the shorter side
if (radius > width/2.0)
radius = width/2.0;
if (radius > height/2.0)
radius = height/2.0;

CGFloat minx = CGRectGetMinX(rrect);
CGFloat midx = CGRectGetMidX(rrect);
CGFloat maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect);
CGFloat midy = CGRectGetMidY(rrect);
CGFloat maxy = CGRectGetMaxY(rrect);
CGContextMoveToPoint(context, minx, midy);
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);
}

- (void)dealloc {
[strokeColor release];
[rectColor release];
[super dealloc];
}

@end

A Note on Code Samples

For the record, any code that I post on this blog can be freely used for any purpose without restriction or limitation. You do not need to ask permission, nor do you need to attribute me.

I will make it clear in the posting if any code is released under other terms. I would only do that if I had to, because (for example) the code was based on existing code that used a viral license, or the code was written for a client that insists on a license in order to allow me to distribute it

But, if I don't clearly state that there are restrictions or limitations, assume there are none.

Wednesday, November 12, 2008

Calliflower Brings Easy Interactive Conference Clling to the Phone

iotum™ announced that its Calliflower conference-calling service is now available on iPhone. Calliflower conference-calling service which makes it easy to plan and participate in highly interactive conference calls that bridge business and social networks.

Calliflower on iPhone makes organizing and participating in multi-party calls simple and engaging by allowing participants to see the status of other callers, along with features such as interactive chat, intuitive conference controls, call archives, invitations and reminders, integration with calendars, and more.

Calliflower on iPhone will be free until Jan. 1, 2009, after which it will be a one-time download charge of $9.99. The application will be available shortly in Apple’s iPhone App Store.

iotum also announced Calliflower Premium, which introduces document sharing and other new features for business users.

Calliflower Premium is designed to help business users of Web conference-calling facilitate active participation in calls, share agendas and documents, coordinate participants’ schedules, capture and share information discussed during conferences, and manage agreements, action items and follow-ups to keep projects moving.

Calliflower Premium is priced at the special introductory price of $50 per month, for two organizers, with a no-risk 30-day free trial period, until Jan. 1, 2009. Additional organizers cost $25 per month each.

References:
http://www.iotum.com/

Testing Code Signing

Another hugely helpful blog posting from Craig Hockenberry about how to test your codesigned apps. I'd put this posting as a must-read for anyone compiling their apps for the App Store.

More Colors, More Compact

Whenever I have need of a new color in a project, I add new methods to my UIColor(MoreColors) category. I recently refactored it to be more compact and to require less typing to add a new color. I'm pulling the color names and definitions from Wikipedia.

Edit: I got tired of doing these piecemeal, so I decided to use awk to generate a category that includes all the colors that Wikipedia lists.

I'm normally not someone to skimp on vertical space, but compacting this just fell right, makes it more comprehensible. Consistency, after all, is the hobgoblin of little minds.

For those playing along at home, here is where it currently stands:

UIColor-MoreColors.h
//
// UIColor-MoreColors.h
//
// Created by Jeff LaMarche on 9/29/08.

#import <UIKit/UIKit.h>

@interface UIColor(MoreColors)
+ (id)aliceBlue;
+ (id)alizarin;
+ (id)amaranth;
+ (id)amber;
+ (id)amethyst;
+ (id)apricot;
+ (id)aqua;
+ (id)aquamarine;
+ (id)armyGreen;
+ (id)asparagus;
+ (id)atomicTangerine;
+ (id)auburn;
+ (id)azure;
+ (id)azureWeb;
+ (id)babyBlue;
+ (id)beige;
+ (id)bistre;
+ (id)black;
+ (id)blue;
+ (id)pigmentBlue;
+ (id)rybBlue;
+ (id)blueGreen;
+ (id)blueViolet;
+ (id)bondiBlue;
+ (id)brass;
+ (id)brightGreen;
+ (id)brightPink;
+ (id)brightTurquoise;
+ (id)brilliantRose;
+ (id)britishRacingGreen;
+ (id)bronze;
+ (id)brown;
+ (id)buff;
+ (id)burgundy;
+ (id)burntOrange;
+ (id)burntSienna;
+ (id)burntUmber;
+ (id)camouflageGreen;
+ (id)caputMortuum;
+ (id)cardinal;
+ (id)carmine;
+ (id)carnationPink;
+ (id)carolinaBlue;
+ (id)carrotOrange;
+ (id)celadon;
+ (id)cerise;
+ (id)cerulean;
+ (id)ceruleanBlue;
+ (id)champagne;
+ (id)charcoal;
+ (id)chartreuse;
+ (id)chartreuseWeb;
+ (id)cherryBlossomPink;
+ (id)chestnut;
+ (id)chocolate;
+ (id)cinnabar;
+ (id)cinnamon;
+ (id)cobalt;
+ (id)columbiaBlue;
+ (id)copper;
+ (id)copperRose;
+ (id)coral;
+ (id)coralRed;
+ (id)corn;
+ (id)cornflowerBlue;
+ (id)cosmicLatte;
+ (id)cream;
+ (id)crimson;
+ (id)cyan;
+ (id)processCyan;
+ (id)darkBlue;
+ (id)darkBrown;
+ (id)darkCerulean;
+ (id)darkChestnut;
+ (id)darkCoral;
+ (id)darkGoldenrod;
+ (id)darkGreen;
+ (id)darkKhaki;
+ (id)darkPastelGreen;
+ (id)darkPink;
+ (id)darkScarlet;
+ (id)darkSalmon;
+ (id)darkSlateGray;
+ (id)darkSpringGreen;
+ (id)darkTan;
+ (id)darkTurquoise;
+ (id)darkViolet;
+ (id)deepCerise;
+ (id)deepChestnut;
+ (id)deepFuchsia;
+ (id)deepLilac;
+ (id)deepMagenta;
+ (id)deepPeach;
+ (id)deepPink;
+ (id)denim;
+ (id)dodgerBlue;
+ (id)ecru;
+ (id)egyptianBlue;
+ (id)electricBlue;
+ (id)electricGreen;
+ (id)electricIndigo;
+ (id)electricLime;
+ (id)electricPurple;
+ (id)emerald;
+ (id)eggplant;
+ (id)faluRed;
+ (id)fernGreen;
+ (id)firebrick;
+ (id)flax;
+ (id)forestGreen;
+ (id)frenchRose;
+ (id)fuchsia;
+ (id)fuchsiaPink;
+ (id)gamboge;
+ (id)metallicGold;
+ (id)goldWeb;
+ (id)goldenBrown;
+ (id)goldenYellow;
+ (id)goldenrod;
+ (id)greyAsparagus;
+ (id)green;
+ (id)greenWeb;
+ (id)pigmentGreen;
+ (id)rybGreen;
+ (id)greenYellow;
+ (id)grey;
+ (id)hanPurple;
+ (id)harlequin;
+ (id)heliotrope;
+ (id)hollywoodCerise;
+ (id)hotMagenta;
+ (id)hotPink;
+ (id)indigo;
+ (id)indigoWeb;
+ (id)internationalKleinBlue;
+ (id)internationalOrange;
+ (id)islamicGreen;
+ (id)ivory;
+ (id)jade;
+ (id)kellyGreen;
+ (id)khaki;
+ (id)lightKhaki;
+ (id)lavender;
+ (id)lavenderWeb;
+ (id)lavenderBlue;
+ (id)lavenderBlush;
+ (id)lavenderGrey;
+ (id)lavenderMagenta;
+ (id)lavenderPink;
+ (id)lavenderPurple;
+ (id)lavenderRose;
+ (id)lawnGreen;
+ (id)lemon;
+ (id)lemonChiffon;
+ (id)lightBlue;
+ (id)lightPink;
+ (id)lilac;
+ (id)lime;
+ (id)limeWeb;
+ (id)limeGreen;
+ (id)linen;
+ (id)magenta;
+ (id)magentaDye;
+ (id)processMagenta;
+ (id)magicMint;
+ (id)magnolia;
+ (id)malachite;
+ (id)maroonWeb;
+ (id)maroon;
+ (id)mayaBlue;
+ (id)mauve;
+ (id)mauveTaupe;
+ (id)mediumBlue;
+ (id)mediumCarmine;
+ (id)mediumLavenderMagenta;
+ (id)mediumPurple;
+ (id)mediumSpringGreen;
+ (id)midnightBlue;
+ (id)mintGreen;
+ (id)mistyRose;
+ (id)mossGreen;
+ (id)mountbattenPink;
+ (id)mustard;
+ (id)myrtle;
+ (id)navajoWhite;
+ (id)navyBlue;
+ (id)ochre;
+ (id)officeGreen;
+ (id)oldGold;
+ (id)oldLace;
+ (id)oldLavender;
+ (id)oldRose;
+ (id)olive;
+ (id)oliveDrab;
+ (id)olivine;
+ (id)orange;
+ (id)rybOrange;
+ (id)orangeWeb;
+ (id)orangePeel;
+ (id)orangeRed;
+ (id)orchid;
+ (id)paleBlue;
+ (id)paleBrown;
+ (id)paleCarmine;
+ (id)paleChestnut;
+ (id)paleCornflowerBlue;
+ (id)paleMagenta;
+ (id)palePink;
+ (id)paleRedViolet;
+ (id)papayaWhip;
+ (id)pastelGreen;
+ (id)pastelPink;
+ (id)peach;
+ (id)peachOrange;
+ (id)peachYellow;
+ (id)pear;
+ (id)periwinkle;
+ (id)persianBlue;
+ (id)persianGreen;
+ (id)persianIndigo;
+ (id)persianOrange;
+ (id)persianRed;
+ (id)persianPink;
+ (id)persianRose;
+ (id)persimmon;
+ (id)pineGreen;
+ (id)pink;
+ (id)pinkOrange;
+ (id)platinum;
+ (id)plum;
+ (id)powderBlue;
+ (id)puce;
+ (id)prussianBlue;
+ (id)psychedelicPurple;
+ (id)pumpkin;
+ (id)purpleWeb;
+ (id)purple;
+ (id)purpleTaupe;
+ (id)rawUmber;
+ (id)razzmatazz;
+ (id)red;
+ (id)pigmentRed;
+ (id)rybRed;
+ (id)redBiolet;
+ (id)richCarmine;
+ (id)robinEggBlue;
+ (id)rose;
+ (id)roseMadder;
+ (id)roseTaupe;
+ (id)royalBlue;
+ (id)royalPurple;
+ (id)ruby;
+ (id)russet;
+ (id)rust;
+ (id)safetyOrange;
+ (id)blazeOrange;
+ (id)saffron;
+ (id)salmon;
+ (id)sandyBrown;
+ (id)sangria;
+ (id)sapphire;
+ (id)scarlet;
+ (id)schoolBusYellow;
+ (id)seaGreen;
+ (id)seashell;
+ (id)selectiveYellow;
+ (id)sepia;
+ (id)shamrockGreen;
+ (id)shockingPink;
+ (id)silver;
+ (id)skyBlue;
+ (id)slateGrey;
+ (id)smalt;
+ (id)springBud;
+ (id)springGreen;
+ (id)steelBlue;
+ (id)tan;
+ (id)tangerine;
+ (id)tangerineYellow;
+ (id)taupe;
+ (id)teaGreen;
+ (id)teaRoseOrange;
+ (id)teaRose;
+ (id)teal;
+ (id)tawny;
+ (id)terraCotta;
+ (id)thistle;
+ (id)tomato;
+ (id)turquoise;
+ (id)tyrianPurple;
+ (id)ultramarine;
+ (id)unitedNationsBlue;
+ (id)vegasGold;
+ (id)vermilion;
+ (id)violet;
+ (id)violetWeb;
+ (id)rybViolet;
+ (id)viridian;
+ (id)wheat;
+ (id)white;
+ (id)wisteria;
+ (id)yellow;
+ (id)processYellow;
+ (id)rybYellow;
+ (id)yellowGreen;
+ (id)zinnwaldite;
@end



UIColor-MoreColors.m
//
// UIColor-MoreColors.m
//
// Created by Jeff LaMarche on 9/29/08.

#import "UIColor-MoreColors.h"

#define vendColor(r, g, b) static UIColor *ret; if (ret == nil) ret = [[UIColor colorWithRed:(CGFloat)r/255.0 green:(CGFloat)g/255.0 blue:(CGFloat)b/255.0 alpha:1.0] retain]; return ret

@implementation UIColor(MoreColors)
+ (id)aliceBlue {vendColor(240, 248, 255);}
+ (id)alizarin {vendColor(227, 38, 54);}
+ (id)amaranth {vendColor(229, 43, 80);}
+ (id)amber {vendColor(255, 191, 0);}
+ (id)amethyst {vendColor(153, 102, 204);}
+ (id)apricot {vendColor(251, 206, 177);}
+ (id)aqua {vendColor(0, 255, 255);}
+ (id)aquamarine {vendColor(127, 255, 212);}
+ (id)armyGreen {vendColor(75, 83, 32);}
+ (id)asparagus {vendColor(123, 160, 91);}
+ (id)atomicTangerine {vendColor(255, 153, 102);}
+ (id)auburn {vendColor(111, 53, 26);}
+ (id)azure {vendColor(0, 127, 255);}
+ (id)azureWeb {vendColor(240, 255, 255);}
+ (id)babyBlue {vendColor(224, 255, 255);}
+ (id)beige {vendColor(245, 245, 220);}
+ (id)bistre {vendColor(61, 43, 31);}
+ (id)black {vendColor(0, 0, 0);}
+ (id)blue {vendColor(0, 0, 255);}
+ (id)pigmentBlue {vendColor(51, 51, 153);}
+ (id)rybBlue {vendColor(2, 71, 254);}
+ (id)blueGreen {vendColor(0, 223, 223);}
+ (id)blueViolet {vendColor(138, 43, 226);}
+ (id)bondiBlue {vendColor(0, 149, 182);}
+ (id)brass {vendColor(181, 166, 66);}
+ (id)brightGreen {vendColor(102, 255, 0);}
+ (id)brightPink {vendColor(255, 0, 127);}
+ (id)brightTurquoise {vendColor(8, 232, 222);}
+ (id)brilliantRose {vendColor(255, 85, 163);}
+ (id)britishRacingGreen {vendColor(0, 66, 37);}
+ (id)bronze {vendColor(205, 127, 50);}
+ (id)brown {vendColor(150, 75, 0);}
+ (id)buff {vendColor(240, 220, 130);}
+ (id)burgundy {vendColor(128, 0, 32);}
+ (id)burntOrange {vendColor(204, 85, 0);}
+ (id)burntSienna {vendColor(233, 116, 81);}
+ (id)burntUmber {vendColor(138, 51, 36);}
+ (id)camouflageGreen {vendColor(120, 134, 107);}
+ (id)caputMortuum {vendColor(89, 39, 32);}
+ (id)cardinal {vendColor(196, 30, 58);}
+ (id)carmine {vendColor(150, 0, 24);}
+ (id)carnationPink {vendColor(255, 166, 201);}
+ (id)carolinaBlue {vendColor(156, 186, 227);}
+ (id)carrotOrange {vendColor(237, 145, 33);}
+ (id)celadon {vendColor(172, 225, 175);}
+ (id)cerise {vendColor(222, 49, 99);}
+ (id)cerulean {vendColor(0, 123, 167);}
+ (id)ceruleanBlue {vendColor(42, 82, 190);}
+ (id)champagne {vendColor(247, 231, 206);}
+ (id)charcoal {vendColor(70, 70, 70);}
+ (id)chartreuse {vendColor(223, 255, 0);}
+ (id)chartreuseWeb {vendColor(127, 255, 0);}
+ (id)cherryBlossomPink {vendColor(255, 183, 197);}
+ (id)chestnut {vendColor(205, 92, 92);}
+ (id)chocolate {vendColor(123, 63, 0);}
+ (id)cinnabar {vendColor(227, 66, 52);}
+ (id)cinnamon {vendColor(210, 105, 30);}
+ (id)cobalt {vendColor(0, 71, 171);}
+ (id)columbiaBlue {vendColor(155, 221, 255);}
+ (id)copper {vendColor(184, 115, 51);}
+ (id)copperRose {vendColor(153, 102, 102);}
+ (id)coral {vendColor(255, 127, 80);}
+ (id)coralRed {vendColor(255, 64, 64);}
+ (id)corn {vendColor(251, 236, 93);}
+ (id)cornflowerBlue {vendColor(100, 149, 237);}
+ (id)cosmicLatte {vendColor(255, 248, 231);}
+ (id)cream {vendColor(255, 253, 208);}
+ (id)crimson {vendColor(220, 20, 60);}
+ (id)cyan {vendColor(0, 255, 255);}
+ (id)processCyan {vendColor(0, 180, 247);}
+ (id)darkBlue {vendColor(0, 0, 139);}
+ (id)darkBrown {vendColor(101, 67, 33);}
+ (id)darkCerulean {vendColor(8, 69, 126);}
+ (id)darkChestnut {vendColor(152, 105, 96);}
+ (id)darkCoral {vendColor(205, 91, 69);}
+ (id)darkGoldenrod {vendColor(184, 134, 11);}
+ (id)darkGreen {vendColor(1, 50, 32);}
+ (id)darkKhaki {vendColor(189, 183, 107);}
+ (id)darkPastelGreen {vendColor(3, 192, 60);}
+ (id)darkPink {vendColor(231, 84, 128);}
+ (id)darkScarlet {vendColor(86, 3, 125);}
+ (id)darkSalmon {vendColor(233, 150, 122);}
+ (id)darkSlateGray {vendColor(47, 79, 79);}
+ (id)darkSpringGreen {vendColor(23, 114, 69);}
+ (id)darkTan {vendColor(145, 129, 81);}
+ (id)darkTurquoise {vendColor(0, 206, 209);}
+ (id)darkViolet {vendColor(148, 0, 211);}
+ (id)deepCerise {vendColor(218, 50, 135);}
+ (id)deepChestnut {vendColor(185, 78, 72);}
+ (id)deepFuchsia {vendColor(193, 84, 193);}
+ (id)deepLilac {vendColor(153, 85, 187);}
+ (id)deepMagenta {vendColor(204, 0, 204);}
+ (id)deepPeach {vendColor(255, 203, 164);}
+ (id)deepPink {vendColor(255, 20, 147);}
+ (id)denim {vendColor(21, 96, 189);}
+ (id)dodgerBlue {vendColor(30, 144, 255);}
+ (id)ecru {vendColor(194, 178, 128);}
+ (id)egyptianBlue {vendColor(16, 52, 166);}
+ (id)electricBlue {vendColor(125, 249, 255);}
+ (id)electricGreen {vendColor(0, 255, 0);}
+ (id)electricIndigo {vendColor(102, 0, 255);}
+ (id)electricLime {vendColor(204, 255, 0);}
+ (id)electricPurple {vendColor(191, 0, 255);}
+ (id)emerald {vendColor(80, 200, 120);}
+ (id)eggplant {vendColor(97, 64, 81);}
+ (id)faluRed {vendColor(128, 24, 24);}
+ (id)fernGreen {vendColor(79, 121, 66);}
+ (id)firebrick {vendColor(178, 34, 34);}
+ (id)flax {vendColor(238, 220, 130);}
+ (id)forestGreen {vendColor(34, 139, 34);}
+ (id)frenchRose {vendColor(246, 74, 138);}
+ (id)fuchsia {vendColor(255, 0, 255);}
+ (id)fuchsiaPink {vendColor(255, 119, 255);}
+ (id)gamboge {vendColor(228, 155, 15);}
+ (id)metallicGold {vendColor(212, 175, 55);}
+ (id)goldWeb {vendColor(255, 215, 0);}
+ (id)goldenBrown {vendColor(153, 101, 21);}
+ (id)goldenYellow {vendColor(255, 223, 0);}
+ (id)goldenrod {vendColor(218, 165, 32);}
+ (id)greyAsparagus {vendColor(70, 89, 69);}
+ (id)green {vendColor(0, 255, 0);}
+ (id)greenWeb {vendColor(0, 128, 0);}
+ (id)pigmentGreen {vendColor(0, 165, 80);}
+ (id)rybGreen {vendColor(102, 176, 50);}
+ (id)greenYellow {vendColor(173, 255, 47);}
+ (id)grey {vendColor(128, 128, 128);}
+ (id)hanPurple {vendColor(82, 24, 250);}
+ (id)harlequin {vendColor(63, 255, 0);}
+ (id)heliotrope {vendColor(223, 115, 255);}
+ (id)hollywoodCerise {vendColor(244, 0, 161);}
+ (id)hotMagenta {vendColor(255, 0, 204);}
+ (id)hotPink {vendColor(255, 105, 180);}
+ (id)indigo {vendColor(0, 65, 106);}
+ (id)indigoWeb {vendColor(75, 0, 130);}
+ (id)internationalKleinBlue {vendColor(0, 47, 167);}
+ (id)internationalOrange {vendColor(255, 79, 0);}
+ (id)islamicGreen {vendColor(0, 153, 0);}
+ (id)ivory {vendColor(255, 255, 240);}
+ (id)jade {vendColor(0, 168, 107);}
+ (id)kellyGreen {vendColor(76, 187, 23);}
+ (id)khaki {vendColor(195, 176, 145);}
+ (id)lightKhaki {vendColor(240, 230, 140);}
+ (id)lavender {vendColor(181, 126, 220);}
+ (id)lavenderWeb {vendColor(230, 230, 250);}
+ (id)lavenderBlue {vendColor(204, 204, 255);}
+ (id)lavenderBlush {vendColor(255, 240, 245);}
+ (id)lavenderGrey {vendColor(196, 195, 221);}
+ (id)lavenderMagenta {vendColor(238, 130, 238);}
+ (id)lavenderPink {vendColor(251, 174, 210);}
+ (id)lavenderPurple {vendColor(150, 120, 182);}
+ (id)lavenderRose {vendColor(251, 160, 227);}
+ (id)lawnGreen {vendColor(124, 252, 0);}
+ (id)lemon {vendColor(253, 233, 16);}
+ (id)lemonChiffon {vendColor(255, 250, 205);}
+ (id)lightBlue {vendColor(173, 216, 230);}
+ (id)lightPink {vendColor(255, 182, 193);}
+ (id)lilac {vendColor(200, 162, 200);}
+ (id)lime {vendColor(191, 255, 0);}
+ (id)limeWeb {vendColor(0, 255, 0);}
+ (id)limeGreen {vendColor(50, 205, 50);}
+ (id)linen {vendColor(250, 240, 230);}
+ (id)magenta {vendColor(255, 0, 255);}
+ (id)magentaDye {vendColor(202, 31, 23);}
+ (id)processMagenta {vendColor(255, 0, 144);}
+ (id)magicMint {vendColor(170, 240, 209);}
+ (id)magnolia {vendColor(248, 244, 255);}
+ (id)malachite {vendColor(11, 218, 81);}
+ (id)maroonWeb {vendColor(128, 0, 0);}
+ (id)maroon {vendColor(176, 48, 96);}
+ (id)mayaBlue {vendColor(115, 194, 251);}
+ (id)mauve {vendColor(224, 176, 255);}
+ (id)mauveTaupe {vendColor(145, 95, 109);}
+ (id)mediumBlue {vendColor(0, 0, 205);}
+ (id)mediumCarmine {vendColor(175, 64, 53);}
+ (id)mediumLavenderMagenta {vendColor(204, 153, 204);}
+ (id)mediumPurple {vendColor(147, 112, 219);}
+ (id)mediumSpringGreen {vendColor(0, 250, 154);}
+ (id)midnightBlue {vendColor(0, 51, 102);}
+ (id)mintGreen {vendColor(152, 255, 152);}
+ (id)mistyRose {vendColor(255, 228, 225);}
+ (id)mossGreen {vendColor(173, 223, 173);}
+ (id)mountbattenPink {vendColor(153, 122, 141);}
+ (id)mustard {vendColor(255, 219, 88);}
+ (id)myrtle {vendColor(33, 66, 30);}
+ (id)navajoWhite {vendColor(255, 222, 173);}
+ (id)navyBlue {vendColor(0, 0, 128);}
+ (id)ochre {vendColor(204, 119, 34);}
+ (id)officeGreen {vendColor(0, 128, 0);}
+ (id)oldGold {vendColor(207, 181, 59);}
+ (id)oldLace {vendColor(253, 245, 230);}
+ (id)oldLavender {vendColor(121, 104, 120);}
+ (id)oldRose {vendColor(192, 46, 76);}
+ (id)olive {vendColor(128, 128, 0);}
+ (id)oliveDrab {vendColor(107, 142, 35);}
+ (id)olivine {vendColor(154, 185, 115);}
+ (id)orange {vendColor(255, 127, 0);}
+ (id)rybOrange {vendColor(251, 153, 2);}
+ (id)orangeWeb {vendColor(255, 165, 0);}
+ (id)orangePeel {vendColor(255, 160, 0);}
+ (id)orangeRed {vendColor(255, 69, 0);}
+ (id)orchid {vendColor(218, 112, 214);}
+ (id)paleBlue {vendColor(175, 238, 238);}
+ (id)paleBrown {vendColor(152, 118, 84);}
+ (id)paleCarmine {vendColor(175, 64, 53);}
+ (id)paleChestnut {vendColor(221, 173, 175);}
+ (id)paleCornflowerBlue {vendColor(171, 205, 239);}
+ (id)paleMagenta {vendColor(249, 132, 229);}
+ (id)palePink {vendColor(250, 218, 221);}
+ (id)paleRedViolet {vendColor(219, 112, 147);}
+ (id)papayaWhip {vendColor(255, 239, 213);}
+ (id)pastelGreen {vendColor(119, 221, 119);}
+ (id)pastelPink {vendColor(255, 209, 220);}
+ (id)peach {vendColor(255, 229, 180);}
+ (id)peachOrange {vendColor(255, 204, 153);}
+ (id)peachYellow {vendColor(250, 223, 173);}
+ (id)pear {vendColor(209, 226, 49);}
+ (id)periwinkle {vendColor(204, 204, 255);}
+ (id)persianBlue {vendColor(28, 57, 187);}
+ (id)persianGreen {vendColor(0, 166, 147);}
+ (id)persianIndigo {vendColor(50, 18, 122);}
+ (id)persianOrange {vendColor(217, 144, 88);}
+ (id)persianRed {vendColor(204, 51, 51);}
+ (id)persianPink {vendColor(247, 127, 190);}
+ (id)persianRose {vendColor(254, 40, 162);}
+ (id)persimmon {vendColor(236, 88, 0);}
+ (id)pineGreen {vendColor(1, 121, 111);}
+ (id)pink {vendColor(255, 192, 203);}
+ (id)pinkOrange {vendColor(255, 153, 102);}
+ (id)platinum {vendColor(229, 228, 226);}
+ (id)plum {vendColor(204, 153, 204);}
+ (id)powderBlue {vendColor(176, 224, 230);}
+ (id)puce {vendColor(204, 136, 153);}
+ (id)prussianBlue {vendColor(0, 49, 83);}
+ (id)psychedelicPurple {vendColor(221, 0, 255);}
+ (id)pumpkin {vendColor(255, 117, 24);}
+ (id)purpleWeb {vendColor(128, 0, 128);}
+ (id)purple {vendColor(160, 92, 240);}
+ (id)purpleTaupe {vendColor(80, 64, 77);}
+ (id)rawUmber {vendColor(115, 74, 18);}
+ (id)razzmatazz {vendColor(227, 11, 92);}
+ (id)red {vendColor(255, 0, 0);}
+ (id)pigmentRed {vendColor(237, 28, 36);}
+ (id)rybRed {vendColor(254, 39, 18);}
+ (id)redBiolet {vendColor(199, 21, 133);}
+ (id)richCarmine {vendColor(215, 0, 64);}
+ (id)robinEggBlue {vendColor(0, 204, 204);}
+ (id)rose {vendColor(255, 0, 127);}
+ (id)roseMadder {vendColor(227, 38, 54);}
+ (id)roseTaupe {vendColor(144, 93, 93);}
+ (id)royalBlue {vendColor(65, 105, 225);}
+ (id)royalPurple {vendColor(107, 63, 160);}
+ (id)ruby {vendColor(224, 17, 95);}
+ (id)russet {vendColor(128, 70, 27);}
+ (id)rust {vendColor(183, 65, 14);}
+ (id)safetyOrange {vendColor(255, 102, 0);}
+ (id)blazeOrange {vendColor(255, 102, 0);}
+ (id)saffron {vendColor(244, 196, 48);}
+ (id)salmon {vendColor(255, 140, 105);}
+ (id)sandyBrown {vendColor(244, 164, 96);}
+ (id)sangria {vendColor(146, 0, 10);}
+ (id)sapphire {vendColor(8, 37, 103);}
+ (id)scarlet {vendColor(255, 36, 0);}
+ (id)schoolBusYellow {vendColor(255, 216, 0);}
+ (id)seaGreen {vendColor(46, 139, 87);}
+ (id)seashell {vendColor(255, 245, 238);}
+ (id)selectiveYellow {vendColor(255, 186, 0);}
+ (id)sepia {vendColor(112, 66, 20);}
+ (id)shamrockGreen {vendColor(0, 158, 96);}
+ (id)shockingPink {vendColor(252, 15, 192);}
+ (id)silver {vendColor(192, 192, 192);}
+ (id)skyBlue {vendColor(135, 206, 235);}
+ (id)slateGrey {vendColor(112, 128, 144);}
+ (id)smalt {vendColor(0, 51, 153);}
+ (id)springBud {vendColor(167, 252, 0);}
+ (id)springGreen {vendColor(0, 255, 127);}
+ (id)steelBlue {vendColor(70, 130, 180);}
+ (id)tan {vendColor(210, 180, 140);}
+ (id)tangerine {vendColor(242, 133, 0);}
+ (id)tangerineYellow {vendColor(255, 204, 0);}
+ (id)taupe {vendColor(72, 60, 50);}
+ (id)teaGreen {vendColor(208, 240, 192);}
+ (id)teaRoseOrange {vendColor(248, 131, 194);}
+ (id)teaRose {vendColor(244, 194, 194);}
+ (id)teal {vendColor(0, 128, 128);}
+ (id)tawny {vendColor(205, 87, 0);}
+ (id)terraCotta {vendColor(226, 114, 91);}
+ (id)thistle {vendColor(216, 191, 216);}
+ (id)tomato {vendColor(255, 99, 71);}
+ (id)turquoise {vendColor(48, 213, 200);}
+ (id)tyrianPurple {vendColor(102, 2, 60);}
+ (id)ultramarine {vendColor(18, 10, 143);}
+ (id)unitedNationsBlue {vendColor(91, 146, 229);}
+ (id)vegasGold {vendColor(197, 179, 88);}
+ (id)vermilion {vendColor(227, 66, 51);}
+ (id)violet {vendColor(139, 0, 255);}
+ (id)violetWeb {vendColor(238, 130, 238);}
+ (id)rybViolet {vendColor(2, 71, 54);}
+ (id)viridian {vendColor(64, 130, 109);}
+ (id)wheat {vendColor(245, 222, 179);}
+ (id)white {vendColor(255, 255, 255);}
+ (id)wisteria {vendColor(201, 160, 220);}
+ (id)yellow {vendColor(255, 255, 0);}
+ (id)processYellow {vendColor(255, 239, 0);}
+ (id)rybYellow {vendColor(254, 254, 51);}
+ (id)yellowGreen {vendColor(154, 205, 50);}
+ (id)zinnwaldite {vendColor(235, 194, 175);}
@end