Updated iOSSampleApp to display FPS and display in OpenGL
git-svn-id: http://skia.googlecode.com/svn/trunk@1879 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm b/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm
new file mode 100644
index 0000000..17e0ec2
--- /dev/null
+++ b/experimental/iOSSampleApp/Shared/SkUIDetailViewController.mm
@@ -0,0 +1,179 @@
+#import "SkAlertPrompt.h"
+#import "SkUIDetailViewController.h"
+#include "SampleApp.h"
+#include "SkApplication.h"
+#include "SkCGUtils.h"
+#include "SkData.h"
+@implementation SkUIDetailViewController
+@synthesize fNavigationBar, fPrintButton, fCycleButton, fPopOverController;
+
+//Overwritten from UIViewController
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ fSkUIView = (SkUIView*)self.view;
+ fWind = (SampleWindow*)fSkUIView.fWind;
+ fSkUIView.fTitleItem = fNavigationBar.topItem;
+
+ [NSTimer scheduledTimerWithTimeInterval:0.001 target:self
+ selector:@selector(redraw) userInfo:nil
+ repeats:YES];
+ [self createButtons];
+}
+
+- (void)createButtons {
+ UIToolbar* toolbar = [[UIToolbar alloc]
+ initWithFrame:CGRectMake(0, 0, 150, 45)];
+ [toolbar setBarStyle: UIBarStyleBlackOpaque];
+
+ UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
+ target:nil
+ action:nil];
+
+ fCycleButton = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
+ target:self
+ action:@selector(cycleDeviceType)];
+ fCycleButton.style = UIBarButtonItemStylePlain;
+
+ UIBarButtonItem* fixedSpace = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
+ target:nil
+ action:nil];
+ fixedSpace.width = 10;
+
+ fPrintButton = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemAction
+ target:self
+ action:@selector(printContent)];
+ fPrintButton.style = UIBarButtonItemStylePlain;
+
+ [toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, fCycleButton, fixedSpace, fPrintButton, nil]
+ animated:NO];
+
+ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
+ initWithCustomView:toolbar];
+ [flexibleSpace release];
+ [fixedSpace release];
+ [toolbar release];
+}
+
+- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+ return YES; // Overriden to allow auto rotation for any direction
+}
+
+- (void)dealloc {
+ [fNavigationBar release];
+ [fPrintButton release];
+ [fCycleButton release];
+ [fPopOverController release];
+ application_term();
+ [super dealloc];
+}
+
+//Instance Methods
+- (void)redraw {
+ [self.view setNeedsDisplay];
+}
+
+- (void)populateRoot:(SkUIRootViewController*)rootVC {
+ for (int i = 0; i < fWind->sampleCount(); ++i) {
+ [rootVC addItem:[NSString stringWithUTF8String:fWind->getSampleTitle(i).c_str()]];
+ }
+}
+
+- (void)goToItem:(NSUInteger)index {
+ fWind->goToSample(index);
+}
+
+//UI actions
+- (IBAction)usePipe:(id)sender {
+ //fWind->togglePipe();
+}
+
+- (void)printContent {
+ UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
+ UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+ printInfo.jobName = @"Skia iOS SampleApp";
+ printInfo.duplex = UIPrintInfoDuplexLongEdge;
+ printInfo.outputType = UIPrintInfoOutputGeneral;
+ fWind->saveToPdf();
+ [self.view drawRect:self.view.bounds];
+ fData = fWind->getPDFData();
+ NSData* data = [NSData dataWithBytesNoCopy:(void*)fData->data() length:fData->size()];
+ controller.printInfo = printInfo;
+ controller.printingItem = data;
+ //Add ref because data pointer retains a pointer to data
+ fData->ref();
+
+ void (^SkCompletionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
+ ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
+ fData->unref();
+ if (!completed && error)
+ NSLog(@"FAILED! due to error in domain %@ with error code %u",
+ error.domain, error.code);
+ };
+
+ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+ [controller presentFromBarButtonItem:fPrintButton animated:YES
+ completionHandler:SkCompletionHandler];
+ } else {
+ [controller presentAnimated:YES completionHandler:SkCompletionHandler];
+ }
+}
+
+- (IBAction)enterServerIP:(id)sender {
+ SkAlertPrompt *prompt = [[SkAlertPrompt alloc] initWithTitle:@"Enter Server IP:"
+ message:@"\n"
+ delegate:self
+ cancelButtonTitle:@"Cancel"
+ otherButtonTitles:@"Enter", nil];
+ // show the dialog box
+ [prompt show];
+ [prompt release];
+}
+
+- (void)cycleDeviceType {
+ fWind->toggleRendering();
+}
+
+/*
+- (void)presentActions {
+ if (!fPopOverController) {
+ SkOptionsTableViewController* controller = [[SkOptionsTableViewController alloc]
+ initWithStyle:UITableViewStyleGrouped];
+ fPopOverController = [[UIPopoverController alloc] initWithContentViewController:controller];
+ fPopOverController.popoverContentSize = CGSizeMake(500, 400);
+ [controller release];
+ }
+
+ if (fPopOverController.isPopoverVisible)
+ [fPopOverController dismissPopoverAnimated:YES];
+ else
+ [fPopOverController presentPopoverFromBarButtonItem:fPrintButton
+ permittedArrowDirections:UIPopoverArrowDirectionAny
+ animated:YES];
+
+}
+ */
+
+// manage popup
+- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
+{
+ if (buttonIndex != [alertView cancelButtonIndex])
+ {
+ NSString *entered = [(SkAlertPrompt*)alertView enteredText];
+ //fWind->setServerIP([entered UTF8String]);
+ }
+}
+//Popover Management
+- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem {
+ [fNavigationBar.topItem setLeftBarButtonItem:barButtonItem animated:NO];
+}
+
+- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem {
+ [fNavigationBar.topItem setLeftBarButtonItem:nil animated:NO];
+}
+
+@end
\ No newline at end of file