blob: 3a2f0c9c4f43f4bba1c8f629d10e32cfaddcf18d [file] [log] [blame]
/*
* Copyright (C) 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
// FIXME: Rename this file to WebEventIOS.mm after we upstream the iOS port and remove the PLATFORM(IOS_FAMILY)-guard.
#ifndef WebEventIOS_h
#define WebEventIOS_h
#import <CoreGraphics/CoreGraphics.h>
#import <Foundation/Foundation.h>
#if TARGET_OS_IPHONE
typedef enum {
WebEventMouseDown,
WebEventMouseUp,
WebEventMouseMoved,
WebEventScrollWheel,
WebEventKeyDown,
WebEventKeyUp,
WebEventTouchBegin,
WebEventTouchChange,
WebEventTouchEnd,
WebEventTouchCancel
} WebEventType;
typedef enum {
WebEventTouchPhaseBegan,
WebEventTouchPhaseMoved,
WebEventTouchPhaseStationary,
WebEventTouchPhaseEnded,
WebEventTouchPhaseCancelled
} WebEventTouchPhaseType;
// These enum values correspond to the GraphicsServices kGSEvent* enumerators for compatibility.
enum {
WebEventLeftCommandKey,
WebEventLeftShiftKey,
WebEventLeftCapsLockKey,
WebEventLeftOptionKey,
WebEventLeftControlKey,
WebEventRightShiftKey,
WebEventRightOptionKey,
WebEventRightControlKey,
WebEventRightCommandKey,
WebEventDeadKey,
};
// These enum values correspond to the GraphicsServices kGSEventFlagMask* enumerators for compatibility.
typedef enum {
WebEventFlagMaskLeftCommandKey = 1 << (WebEventLeftCommandKey + 16),
WebEventFlagMaskLeftShiftKey = 1 << (WebEventLeftShiftKey + 16),
WebEventFlagMaskLeftCapsLockKey = 1 << (WebEventLeftCapsLockKey + 16),
WebEventFlagMaskLeftOptionKey = 1 << (WebEventLeftOptionKey + 16),
WebEventFlagMaskLeftControlKey = 1 << (WebEventLeftControlKey + 16),
WebEventFlagMaskRightControlKey = 1 << (WebEventRightControlKey + 16),
WebEventFlagMaskRightShiftKey = 1 << (WebEventRightShiftKey + 16),
WebEventFlagMaskRightOptionKey = 1 << (WebEventRightOptionKey + 16),
WebEventFlagMaskRightCommandKey = 1 << (WebEventRightCommandKey + 16),
} WebEventFlagValues;
typedef unsigned WebEventFlags;
// These enum values correspond to the GraphicsServices kGSEventFlagMask* enumerators for compatibility.
enum {
WebEventFlagMaskCommandKey = WebEventFlagMaskLeftCommandKey | WebEventFlagMaskRightCommandKey,
WebEventFlagMaskOptionKey = WebEventFlagMaskLeftOptionKey | WebEventFlagMaskRightOptionKey,
WebEventFlagMaskControlKey = WebEventFlagMaskLeftControlKey | WebEventFlagMaskRightControlKey,
WebEventFlagMaskShiftKey = WebEventFlagMaskLeftShiftKey | WebEventFlagMaskRightShiftKey,
};
// These enum values correspond to the GraphicsServices kGSCharacterSet* constants for compatibility.
typedef enum {
WebEventCharacterSetASCII = 0,
WebEventCharacterSetSymbol = 1,
WebEventCharacterSetDingbats = 2,
WebEventCharacterSetUnicode = 253,
WebEventCharacterSetFunctionKeys = 254,
} WebEventCharacterSet;
// These enum values are copied directly from UIKit for compatibility.
typedef enum {
WebEventKeyboardInputRepeat = 1 << 0,
WebEventKeyboardInputModifierFlagsChanged = 1 << 5,
} WebKeyboardInputFlagValues;
typedef NSUInteger WebKeyboardInputFlags;
WEBCORE_EXPORT @interface WebEvent : NSObject {
@private
WebEventType _type;
CFTimeInterval _timestamp;
CGPoint _locationInWindow;
NSString *_characters;
NSString *_charactersIgnoringModifiers;
WebEventFlags _modifierFlags;
BOOL _keyRepeating;
WebKeyboardInputFlags _keyboardFlags;
NSString *_inputManagerHint;
uint16_t _keyCode;
BOOL _tabKey;
float _deltaX;
float _deltaY;
unsigned _touchCount;
NSArray *_touchLocations;
NSArray *_touchIdentifiers;
NSArray *_touchPhases;
BOOL _isGesture;
float _gestureScale;
float _gestureRotation;
BOOL _wasHandled;
}
// Deprecated. Remove once UIKit adopts -initWithMouseEventType taking modifiers.
- (WebEvent *)initWithMouseEventType:(WebEventType)type
timeStamp:(CFTimeInterval)timeStamp
location:(CGPoint)point;
- (WebEvent *)initWithMouseEventType:(WebEventType)type timeStamp:(CFTimeInterval)timeStamp location:(CGPoint)point modifiers:(WebEventFlags)modifiers;
- (WebEvent *)initWithScrollWheelEventWithTimeStamp:(CFTimeInterval)timeStamp
location:(CGPoint)point
deltaX:(float)deltaX
deltaY:(float)deltaY;
- (WebEvent *)initWithTouchEventType:(WebEventType)type
timeStamp:(CFTimeInterval)timeStamp
location:(CGPoint)point
modifiers:(WebEventFlags)modifiers
touchCount:(unsigned)touchCount
touchLocations:(NSArray *)touchLocations
touchIdentifiers:(NSArray *)touchIdentifiers
touchPhases:(NSArray *)touchPhases isGesture:(BOOL)isGesture
gestureScale:(float)gestureScale
gestureRotation:(float)gestureRotation;
- (WebEvent *)initWithKeyEventType:(WebEventType)type
timeStamp:(CFTimeInterval)timeStamp
characters:(NSString *)characters
charactersIgnoringModifiers:(NSString *)charactersIgnoringModifiers
modifiers:(WebEventFlags)modifiers
isRepeating:(BOOL)repeating
withFlags:(WebKeyboardInputFlags)flags
withInputManagerHint:(NSString *)hint
keyCode:(uint16_t)keyCode
isTabKey:(BOOL)tabKey;
@property(nonatomic, readonly) WebEventType type;
@property(nonatomic, readonly) CFTimeInterval timestamp;
// Mouse
@property(nonatomic, readonly) CGPoint locationInWindow;
// Keyboard
@property(nonatomic, readonly, retain) NSString *characters;
@property(nonatomic, readonly, retain) NSString *charactersIgnoringModifiers;
@property(nonatomic, readonly) WebEventFlags modifierFlags;
@property(nonatomic, readonly, getter = isKeyRepeating) BOOL keyRepeating;
@property(nonatomic, readonly, retain) NSString *inputManagerHint;
@property(nonatomic, readonly) WebKeyboardInputFlags keyboardFlags;
@property(nonatomic, readonly) uint16_t keyCode;
@property(nonatomic, readonly, getter = isTabKey) BOOL tabKey;
// Scroll Wheel
@property(nonatomic, readonly) float deltaX;
@property(nonatomic, readonly) float deltaY;
// Touch
@property(nonatomic, readonly) unsigned touchCount;
@property(nonatomic, readonly, retain) NSArray *touchLocations;
@property(nonatomic, readonly, retain) NSArray *touchIdentifiers;
@property(nonatomic, readonly, retain) NSArray *touchPhases;
// Gesture
@property(nonatomic, readonly) BOOL isGesture;
@property(nonatomic, readonly) float gestureScale;
@property(nonatomic, readonly) float gestureRotation;
@property(nonatomic) BOOL wasHandled;
@property (class, readonly) WebEventFlags modifierFlags;
@end
#endif // TARGET_OS_IPHONE
#endif // WebEventIOS_h