Posts tagged: iPhone

Gamers Assistant 1.1 available now!

Check out the new version of gamers assistant in the iTunes store!

I’ve also added two new howto videos to show off the new features and functionality

Find them, and read more in the gamers assistant blog.

Finally… Because it’s a new version, here are some free codes (Let me know if they are all used up)!

XEXEY3XEYNEJ
RJWTTYYPE64E
6MTFMXWLKNT3
NLFT6T4JTFA3
9KW6AJWTH7EA

Share

Gamers Assistant howto – Dungeons and Dragons setup

Check out gamers assistant in the iTunes store!


Fast Tube by Casper

Sample How to – setup Gamers Assistant for use with Dungeons and Dragons

Share

Gamers Assistant howto – Magic: The Gathering Setup

Check out gamers assistant in the iTunes store!


Fast Tube by Casper

Sample How to – setup Gamers Assistant for use with Magic: The Gathering

Share

Gamers Assistant 1.1 awaiting review

Version 1.0 application blues got you down? Well cry no more, because here comes Gamers Assistant v1.1!

Changes!

* You can now change the label of the modules in the main menu
* Set counter to number function added so that you can instantly and variably change the count on any counter to any keyboard entered number
* You can now change the label of the modules in the main menu
* Change display name to GA (Gamers Assistant)
* Dice roll now icon prettified with top glare
* More responsive
* If you use the wand to place the roll dice function onto the main menu that button will now roll all dice instead of just the module you took it from.
* BUG SQUASHED: Should not be able to delete the settings module
* BUG SQUASHED: Add module should not be a placable function using the wand tool
* BUG SQUASHED: Add Counter function – no icon

And now with new shiny icon!

Coming soon to an App Store near you!

Share

All gone!

Really excited to have my first application available in the Apple iTunes store!

Gamers assistant is a highly customizable gamers tool with dice and counters to help you play everything from D&D to Monopoly.

Free codes:

Too slow :)   All the codes are used up!

Share

Which Logo is best?

I’m forming a Corporation with a few partners in Hawaii, and kind of torn on logo design.  What do you think?

[polldaddy poll="912174"]

Share

Partnership

I’m excited to announce a business partnership between Logic High Software and Top Level Communications of Honolulu, this relationship will bring high quality user interface and graphics design to all of our iPhone projects and well help ensure that the user experience is up to the level Apple customers have come to expect.

Share

Beta Testers Wanted!… and WWDC

Well, it’s official, Apple is releasing a 3G iphone, and the Application Store in early July. Todays announcement at WWDC in San Francisco contained some really good news for early Logic High Software supporters; ad-hoc installation. Basically this means that I will be able to have 100 of my closest iPhone toting friends as beta testers, and they will get to play with the software before its final release. So if you are interested in being on the short list, leave a comment or shoot me an e-mail. xHunt is really rounding out to be a nice piece of software, the development toolkit is every bit as slick as Apple says it is, and I can’t wait to get a release out first thing when Apple opens the doors.


Fast Tube by Casper

Share

UIImage fix

If you aren’t interested in Objective C Cocoa development for the iPhone… read on.

The problems:

  • UIImage provides no easy way to scale, rotate or transform the underlying CGImage.  While it is easy to transform it by placing the image in a view, if you need the actual image changed then good luck.
  • UIImageJPEGRepresentation(), the easiest (only?) way to convert a UIImage to a JPEG uses the underlying CGImage, and ignores your UIImage imageOrientation, so regardless of camera position when the picture was taken the exported JPEG will always be oriented in landscape or right mode, ending up with pictures that need rotation.

The solution:  Thanks to some help in the Apple Support forums, and the #iphonedev IRC chat groups, I was able to clean up a function that takes a UIImage, and fixes it’s underlying core image.

Update: The “Forever” setting on Pastebin doesn’t seem to be so forever… but still lots of interest in this fix, so enjoy below:

UIImage *scaleAndRotateImage(UIImage *image)
{
    int kMaxResolution = 320; // Or whatever

    CGImageRef imgRef = image.CGImage;

    CGFloat width = CGImageGetWidth(imgRef);
    CGFloat height = CGImageGetHeight(imgRef);

    CGAffineTransform transform = CGAffineTransformIdentity;
    CGRect bounds = CGRectMake(0, 0, width, height);
    if (width > kMaxResolution || height > kMaxResolution) {
        CGFloat ratio = width/height;
        if (ratio > 1) {
            bounds.size.width = kMaxResolution;
            bounds.size.height = bounds.size.width / ratio;
        }
        else {
            bounds.size.height = kMaxResolution;
            bounds.size.width = bounds.size.height * ratio;
        }
    }

    CGFloat scaleRatio = bounds.size.width / width;
    CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));
    CGFloat boundHeight;
    UIImageOrientation orient = image.imageOrientation;
    switch(orient) {

        case UIImageOrientationUp: //EXIF = 1
            transform = CGAffineTransformIdentity;
            break;

        case UIImageOrientationUpMirrored: //EXIF = 2
            transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);
            transform = CGAffineTransformScale(transform, -1.0, 1.0);
            break;

        case UIImageOrientationDown: //EXIF = 3
            transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);
            transform = CGAffineTransformRotate(transform, M_PI);
            break;

        case UIImageOrientationDownMirrored: //EXIF = 4
            transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);
            transform = CGAffineTransformScale(transform, 1.0, -1.0);
            break;

        case UIImageOrientationLeftMirrored: //EXIF = 5
            boundHeight = bounds.size.height;
            bounds.size.height = bounds.size.width;
            bounds.size.width = boundHeight;
            transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);
            transform = CGAffineTransformScale(transform, -1.0, 1.0);
            transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
            break;

        case UIImageOrientationLeft: //EXIF = 6
            boundHeight = bounds.size.height;
            bounds.size.height = bounds.size.width;
            bounds.size.width = boundHeight;
            transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);
            transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
            break;

        case UIImageOrientationRightMirrored: //EXIF = 7
            boundHeight = bounds.size.height;
            bounds.size.height = bounds.size.width;
            bounds.size.width = boundHeight;
            transform = CGAffineTransformMakeScale(-1.0, 1.0);
            transform = CGAffineTransformRotate(transform, M_PI / 2.0);
            break;

        case UIImageOrientationRight: //EXIF = 8
            boundHeight = bounds.size.height;
            bounds.size.height = bounds.size.width;
            bounds.size.width = boundHeight;
            transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);
            transform = CGAffineTransformRotate(transform, M_PI / 2.0);
            break;

        default:
            [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];

    }

    UIGraphicsBeginImageContext(bounds.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) {
        CGContextScaleCTM(context, -scaleRatio, scaleRatio);
        CGContextTranslateCTM(context, -height, 0);
    }
    else {
        CGContextScaleCTM(context, scaleRatio, -scaleRatio);
        CGContextTranslateCTM(context, 0, -height);
    }

    CGContextConcatCTM(context, transform);

    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
    UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return imageCopy;
}
Share

xHunt progress report

Beta is nearly 75% complete, and will soon be functional. Spent time today getting the picture taking, geocoordinate, and photo upload/thumbnail generating code working. And I’m proud to say 8 hours and countless test pictures of my cats later… all those major routines are laid down. Hoping that WWDC keynote (June 9th) will have an announcement that applications will be going on line right away. Should have a fully functioning Beta by then.

Also, I have decided to offer a special incentive to beta testers and early adopters. xHunt will be free to you, and when it goes into it’s final version you will be able to update no charge.  Sort of a no-cover before 7pm sort of deal :)

Share

WordPress Themes