Mercurial > sdl-ios-xcode
diff src/video/uikit/SDL_uikitview.m @ 5134:7b7da52e8775
Fixed spacing
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 01 Feb 2011 08:59:22 -0800 |
parents | 25d4feb7c127 |
children | 5f09cb749d75 |
line wrap: on
line diff
--- a/src/video/uikit/SDL_uikitview.m Tue Feb 01 08:54:34 2011 -0800 +++ b/src/video/uikit/SDL_uikitview.m Tue Feb 01 08:59:22 2011 -0800 @@ -35,271 +35,271 @@ @implementation SDL_uikitview - (void)dealloc { - [super dealloc]; + [super dealloc]; } - (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame: frame]; - + self = [super initWithFrame: frame]; + #if SDL_IPHONE_KEYBOARD - [self initializeKeyboard]; -#endif + [self initializeKeyboard]; +#endif #ifdef FIXED_MULTITOUCH - SDL_Touch touch; - touch.id = 0; //TODO: Should be -1? + SDL_Touch touch; + touch.id = 0; //TODO: Should be -1? - //touch.driverdata = SDL_malloc(sizeof(EventTouchData)); - //EventTouchData* data = (EventTouchData*)(touch.driverdata); - - touch.x_min = 0; - touch.x_max = frame.size.width; - touch.native_xres = touch.x_max - touch.x_min; - touch.y_min = 0; - touch.y_max = frame.size.height; - touch.native_yres = touch.y_max - touch.y_min; - touch.pressure_min = 0; - touch.pressure_max = 1; - touch.native_pressureres = touch.pressure_max - touch.pressure_min; + //touch.driverdata = SDL_malloc(sizeof(EventTouchData)); + //EventTouchData* data = (EventTouchData*)(touch.driverdata); + + touch.x_min = 0; + touch.x_max = frame.size.width; + touch.native_xres = touch.x_max - touch.x_min; + touch.y_min = 0; + touch.y_max = frame.size.height; + touch.native_yres = touch.y_max - touch.y_min; + touch.pressure_min = 0; + touch.pressure_max = 1; + touch.native_pressureres = touch.pressure_max - touch.pressure_min; - touchId = SDL_AddTouch(&touch, "IPHONE SCREEN"); + touchId = SDL_AddTouch(&touch, "IPHONE SCREEN"); #endif - return self; + return self; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - NSEnumerator *enumerator = [touches objectEnumerator]; - UITouch *touch = (UITouch*)[enumerator nextObject]; - - //NSLog("Click"); - - if (touch) { - CGPoint locationInView = [touch locationInView: self]; - - /* send moved event */ - SDL_SendMouseMotion(NULL, 0, locationInView.x, locationInView.y); + NSEnumerator *enumerator = [touches objectEnumerator]; + UITouch *touch = (UITouch*)[enumerator nextObject]; + + //NSLog("Click"); + + if (touch) { + CGPoint locationInView = [touch locationInView: self]; + + /* send moved event */ + SDL_SendMouseMotion(NULL, 0, locationInView.x, locationInView.y); - /* send mouse down event */ - SDL_SendMouseButton(NULL, SDL_PRESSED, SDL_BUTTON_LEFT); - } + /* send mouse down event */ + SDL_SendMouseButton(NULL, SDL_PRESSED, SDL_BUTTON_LEFT); + } #ifdef FIXED_MULTITOUCH - while(touch) { - CGPoint locationInView = [touch locationInView: self]; + while(touch) { + CGPoint locationInView = [touch locationInView: self]; #ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS - //FIXME: TODO: Using touch as the fingerId is potentially dangerous - //It is also much more efficient than storing the UITouch pointer - //and comparing it to the incoming event. - SDL_SendFingerDown(touchId,(long)touch, - SDL_TRUE,locationInView.x,locationInView.y, - 1); + //FIXME: TODO: Using touch as the fingerId is potentially dangerous + //It is also much more efficient than storing the UITouch pointer + //and comparing it to the incoming event. + SDL_SendFingerDown(touchId,(long)touch, + SDL_TRUE,locationInView.x,locationInView.y, + 1); #else - int i; - for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { - if(finger[i] == NULL) { - finger[i] = touch; - SDL_SendFingerDown(touchId,i, - SDL_TRUE,locationInView.x,locationInView.y, - 1); - break; - } - } + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == NULL) { + finger[i] = touch; + SDL_SendFingerDown(touchId,i, + SDL_TRUE,locationInView.x,locationInView.y, + 1); + break; + } + } #endif - + - + - touch = (UITouch*)[enumerator nextObject]; - } + touch = (UITouch*)[enumerator nextObject]; + } #endif } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - - NSEnumerator *enumerator = [touches objectEnumerator]; - UITouch *touch = (UITouch*)[enumerator nextObject]; - - if (touch) { - /* send mouse up */ - SDL_SendMouseButton(NULL, SDL_RELEASED, SDL_BUTTON_LEFT); - } + + NSEnumerator *enumerator = [touches objectEnumerator]; + UITouch *touch = (UITouch*)[enumerator nextObject]; + + if (touch) { + /* send mouse up */ + SDL_SendMouseButton(NULL, SDL_RELEASED, SDL_BUTTON_LEFT); + } #ifdef FIXED_MULTITOUCH - while(touch) { - CGPoint locationInView = [touch locationInView: self]; - + while(touch) { + CGPoint locationInView = [touch locationInView: self]; + #ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS - SDL_SendFingerDown(touchId,(long)touch, - SDL_FALSE,locationInView.x,locationInView.y, - 1); + SDL_SendFingerDown(touchId,(long)touch, + SDL_FALSE,locationInView.x,locationInView.y, + 1); #else - int i; - for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { - if(finger[i] == touch) { - SDL_SendFingerDown(touchId,i, - SDL_FALSE,locationInView.x,locationInView.y, - 1); - break; - } - } + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == touch) { + SDL_SendFingerDown(touchId,i, + SDL_FALSE,locationInView.x,locationInView.y, + 1); + break; + } + } #endif - touch = (UITouch*)[enumerator nextObject]; - } + touch = (UITouch*)[enumerator nextObject]; + } #endif } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { - /* - this can happen if the user puts more than 5 touches on the screen - at once, or perhaps in other circumstances. Usually (it seems) - all active touches are canceled. - */ - [self touchesEnded: touches withEvent: event]; + /* + this can happen if the user puts more than 5 touches on the screen + at once, or perhaps in other circumstances. Usually (it seems) + all active touches are canceled. + */ + [self touchesEnded: touches withEvent: event]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { - - NSEnumerator *enumerator = [touches objectEnumerator]; - UITouch *touch = (UITouch*)[enumerator nextObject]; - - if (touch) { - CGPoint locationInView = [touch locationInView: self]; + + NSEnumerator *enumerator = [touches objectEnumerator]; + UITouch *touch = (UITouch*)[enumerator nextObject]; + + if (touch) { + CGPoint locationInView = [touch locationInView: self]; - /* send moved event */ - SDL_SendMouseMotion(NULL, 0, locationInView.x, locationInView.y); - } + /* send moved event */ + SDL_SendMouseMotion(NULL, 0, locationInView.x, locationInView.y); + } #ifdef FIXED_MULTITOUCH - while(touch) { - CGPoint locationInView = [touch locationInView: self]; - + while(touch) { + CGPoint locationInView = [touch locationInView: self]; + #ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS - SDL_SendTouchMotion(touchId,(long)touch, - SDL_FALSE,locationInView.x,locationInView.y, - 1); + SDL_SendTouchMotion(touchId,(long)touch, + SDL_FALSE,locationInView.x,locationInView.y, + 1); #else - int i; - for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { - if(finger[i] == touch) { - SDL_SendTouchMotion(touchId,i, - SDL_FALSE,locationInView.x,locationInView.y, - 1); - break; - } - } + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == touch) { + SDL_SendTouchMotion(touchId,i, + SDL_FALSE,locationInView.x,locationInView.y, + 1); + break; + } + } #endif - touch = (UITouch*)[enumerator nextObject]; - } + touch = (UITouch*)[enumerator nextObject]; + } #endif } /* - ---- Keyboard related functionality below this line ---- + ---- Keyboard related functionality below this line ---- */ #if SDL_IPHONE_KEYBOARD /* Is the iPhone virtual keyboard visible onscreen? */ - (BOOL)keyboardVisible { - return keyboardVisible; + return keyboardVisible; } /* Set ourselves up as a UITextFieldDelegate */ - (void)initializeKeyboard { - - textField = [[UITextField alloc] initWithFrame: CGRectZero]; - textField.delegate = self; - /* placeholder so there is something to delete! */ - textField.text = @" "; - - /* set UITextInputTrait properties, mostly to defaults */ - textField.autocapitalizationType = UITextAutocapitalizationTypeNone; - textField.autocorrectionType = UITextAutocorrectionTypeNo; - textField.enablesReturnKeyAutomatically = NO; - textField.keyboardAppearance = UIKeyboardAppearanceDefault; - textField.keyboardType = UIKeyboardTypeDefault; - textField.returnKeyType = UIReturnKeyDefault; - textField.secureTextEntry = NO; - - textField.hidden = YES; - keyboardVisible = NO; - /* add the UITextField (hidden) to our view */ - [self addSubview: textField]; - [textField release]; + + textField = [[UITextField alloc] initWithFrame: CGRectZero]; + textField.delegate = self; + /* placeholder so there is something to delete! */ + textField.text = @" "; + + /* set UITextInputTrait properties, mostly to defaults */ + textField.autocapitalizationType = UITextAutocapitalizationTypeNone; + textField.autocorrectionType = UITextAutocorrectionTypeNo; + textField.enablesReturnKeyAutomatically = NO; + textField.keyboardAppearance = UIKeyboardAppearanceDefault; + textField.keyboardType = UIKeyboardTypeDefault; + textField.returnKeyType = UIReturnKeyDefault; + textField.secureTextEntry = NO; + + textField.hidden = YES; + keyboardVisible = NO; + /* add the UITextField (hidden) to our view */ + [self addSubview: textField]; + [textField release]; } /* reveal onscreen virtual keyboard */ - (void)showKeyboard { - keyboardVisible = YES; - [textField becomeFirstResponder]; + keyboardVisible = YES; + [textField becomeFirstResponder]; } /* hide onscreen virtual keyboard */ - (void)hideKeyboard { - keyboardVisible = NO; - [textField resignFirstResponder]; + keyboardVisible = NO; + [textField resignFirstResponder]; } /* UITextFieldDelegate method. Invoked when user types something. */ - (BOOL)textField:(UITextField *)_textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - - if ([string length] == 0) { - /* it wants to replace text with nothing, ie a delete */ - SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_DELETE); - SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_DELETE); - } - else { - /* go through all the characters in the string we've been sent - and convert them to key presses */ - int i; - for (i=0; i<[string length]; i++) { - - unichar c = [string characterAtIndex: i]; - - Uint16 mod = 0; - SDL_ScanCode code; - - if (c < 127) { - /* figure out the SDL_ScanCode and SDL_keymod for this unichar */ - code = unicharToUIKeyInfoTable[c].code; - mod = unicharToUIKeyInfoTable[c].mod; - } - else { - /* we only deal with ASCII right now */ - code = SDL_SCANCODE_UNKNOWN; - mod = 0; - } - - if (mod & KMOD_SHIFT) { - /* If character uses shift, press shift down */ - SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_LSHIFT); - } - /* send a keydown and keyup even for the character */ - SDL_SendKeyboardKey(SDL_PRESSED, code); - SDL_SendKeyboardKey(SDL_RELEASED, code); - if (mod & KMOD_SHIFT) { - /* If character uses shift, press shift back up */ - SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT); - } - } - } - return NO; /* don't allow the edit! (keep placeholder text there) */ + + if ([string length] == 0) { + /* it wants to replace text with nothing, ie a delete */ + SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_DELETE); + SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_DELETE); + } + else { + /* go through all the characters in the string we've been sent + and convert them to key presses */ + int i; + for (i=0; i<[string length]; i++) { + + unichar c = [string characterAtIndex: i]; + + Uint16 mod = 0; + SDL_ScanCode code; + + if (c < 127) { + /* figure out the SDL_ScanCode and SDL_keymod for this unichar */ + code = unicharToUIKeyInfoTable[c].code; + mod = unicharToUIKeyInfoTable[c].mod; + } + else { + /* we only deal with ASCII right now */ + code = SDL_SCANCODE_UNKNOWN; + mod = 0; + } + + if (mod & KMOD_SHIFT) { + /* If character uses shift, press shift down */ + SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_LSHIFT); + } + /* send a keydown and keyup even for the character */ + SDL_SendKeyboardKey(SDL_PRESSED, code); + SDL_SendKeyboardKey(SDL_RELEASED, code); + if (mod & KMOD_SHIFT) { + /* If character uses shift, press shift back up */ + SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT); + } + } + } + return NO; /* don't allow the edit! (keep placeholder text there) */ } /* Terminates the editing session */ - (BOOL)textFieldShouldReturn:(UITextField*)_textField { - [self hideKeyboard]; - return YES; + [self hideKeyboard]; + return YES; } #endif @@ -310,99 +310,99 @@ #if SDL_IPHONE_KEYBOARD int SDL_iPhoneKeyboardShow(SDL_Window * window) { - - SDL_WindowData *data; - SDL_uikitview *view; - - if (NULL == window) { - SDL_SetError("Window does not exist"); - return -1; - } - - data = (SDL_WindowData *)window->driverdata; - view = data->view; - - if (nil == view) { - SDL_SetError("Window has no view"); - return -1; - } - else { - [view showKeyboard]; - return 0; - } + + SDL_WindowData *data; + SDL_uikitview *view; + + if (NULL == window) { + SDL_SetError("Window does not exist"); + return -1; + } + + data = (SDL_WindowData *)window->driverdata; + view = data->view; + + if (nil == view) { + SDL_SetError("Window has no view"); + return -1; + } + else { + [view showKeyboard]; + return 0; + } } int SDL_iPhoneKeyboardHide(SDL_Window * window) { - - SDL_WindowData *data; - SDL_uikitview *view; - - if (NULL == window) { - SDL_SetError("Window does not exist"); - return -1; - } - - data = (SDL_WindowData *)window->driverdata; - view = data->view; - - if (NULL == view) { - SDL_SetError("Window has no view"); - return -1; - } - else { - [view hideKeyboard]; - return 0; - } + + SDL_WindowData *data; + SDL_uikitview *view; + + if (NULL == window) { + SDL_SetError("Window does not exist"); + return -1; + } + + data = (SDL_WindowData *)window->driverdata; + view = data->view; + + if (NULL == view) { + SDL_SetError("Window has no view"); + return -1; + } + else { + [view hideKeyboard]; + return 0; + } } SDL_bool SDL_iPhoneKeyboardIsShown(SDL_Window * window) { - - SDL_WindowData *data; - SDL_uikitview *view; - - if (NULL == window) { - SDL_SetError("Window does not exist"); - return -1; - } - - data = (SDL_WindowData *)window->driverdata; - view = data->view; - - if (NULL == view) { - SDL_SetError("Window has no view"); - return 0; - } - else { - return view.keyboardVisible; - } + + SDL_WindowData *data; + SDL_uikitview *view; + + if (NULL == window) { + SDL_SetError("Window does not exist"); + return -1; + } + + data = (SDL_WindowData *)window->driverdata; + view = data->view; + + if (NULL == view) { + SDL_SetError("Window has no view"); + return 0; + } + else { + return view.keyboardVisible; + } } int SDL_iPhoneKeyboardToggle(SDL_Window * window) { - - SDL_WindowData *data; - SDL_uikitview *view; - - if (NULL == window) { - SDL_SetError("Window does not exist"); - return -1; - } - - data = (SDL_WindowData *)window->driverdata; - view = data->view; - - if (NULL == view) { - SDL_SetError("Window has no view"); - return -1; - } - else { - if (SDL_iPhoneKeyboardIsShown(window)) { - SDL_iPhoneKeyboardHide(window); - } - else { - SDL_iPhoneKeyboardShow(window); - } - return 0; - } + + SDL_WindowData *data; + SDL_uikitview *view; + + if (NULL == window) { + SDL_SetError("Window does not exist"); + return -1; + } + + data = (SDL_WindowData *)window->driverdata; + view = data->view; + + if (NULL == view) { + SDL_SetError("Window has no view"); + return -1; + } + else { + if (SDL_iPhoneKeyboardIsShown(window)) { + SDL_iPhoneKeyboardHide(window); + } + else { + SDL_iPhoneKeyboardShow(window); + } + return 0; + } } #else @@ -410,22 +410,22 @@ /* stubs, used if compiled without keyboard support */ int SDL_iPhoneKeyboardShow(SDL_Window * window) { - SDL_SetError("Not compiled with keyboard support"); - return -1; + SDL_SetError("Not compiled with keyboard support"); + return -1; } int SDL_iPhoneKeyboardHide(SDL_Window * window) { - SDL_SetError("Not compiled with keyboard support"); - return -1; + SDL_SetError("Not compiled with keyboard support"); + return -1; } SDL_bool SDL_iPhoneKeyboardIsShown(SDL_Window * window) { - return 0; + return 0; } int SDL_iPhoneKeyboardToggle(SDL_Window * window) { - SDL_SetError("Not compiled with keyboard support"); - return -1; + SDL_SetError("Not compiled with keyboard support"); + return -1; }