//
//  GMSUISettings.h
//  Google Maps SDK for iOS
//
//  Copyright 2013 Google Inc.
//
//  Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
//  Service: https://developers.google.com/maps/terms
//

/** Settings for the user interface of a GMSMapView. */
@interface GMSUISettings : NSObject

/**
 * Sets the preference for whether all gestures should be enabled (default) or
 * disabled. This doesn't restrict users from tapping any on screen buttons to
 * move the camera (e.g., compass or zoom controls), nor does it restrict
 * programmatic movements and animation.
 */
- (void)setAllGesturesEnabled:(BOOL)enabled;

/**
 * Controls whether scroll gestures are enabled (default) or disabled. If
 * enabled, users may drag to pan the camera. This does not limit programmatic
 * movement of the camera.
 */
@property(nonatomic, assign) BOOL scrollGestures;

/**
 * Controls whether zoom gestures are enabled (default) or disabled. If
 * enabled, users may double tap/two-finger tap or pinch to zoom the camera.
 * This does not limit programmatic movement of the camera.
 */
@property(nonatomic, assign) BOOL zoomGestures;

/**
 * Controls whether tilt gestures are enabled (default) or disabled. If enabled,
 * users may use a two-finger vertical down or up swipe to tilt the camera. This
 * does not limit programmatic control of the camera's viewingAngle.
 */
@property(nonatomic, assign) BOOL tiltGestures;

/**
 * Controls whether rotate gestures are enabled (default) or disabled. If
 * enabled, users may use a two-finger rotate gesture to rotate the camera. This
 * does not limit programmatic control of the camera's bearing.
 */
@property(nonatomic, assign) BOOL rotateGestures;

/**
 * Controls whether gestures by users are completely consumed by the GMSMapView
 * when gestures are enabled (default YES).  This prevents these gestures from
 * being received by parent views.
 *
 * When the GMSMapView is contained by a UIScrollView (or other scrollable area),
 * this means that gestures on the map will not be additional consumed as scroll
 * gestures.  However, disabling this (set to NO) may be userful to support
 * complex view hierarchies or requirements.
 */
@property(nonatomic, assign) BOOL consumesGesturesInView;

/**
 * Enables or disables the compass. The compass is an icon on the map that
 * indicates the direction of north on the map.
 *
 * If enabled, it is only shown when the camera is rotated away from its default
 * orientation (bearing of 0). When a user taps the compass, the camera orients
 * itself to its default orientation and fades away shortly after. If disabled,
 * the compass will never be displayed.
 */
@property(nonatomic, assign) BOOL compassButton;

/**
 * Enables or disables the My Location button. This is a button visible on the
 * map that, when tapped by users, will center the map on the current user
 * location.
 */
@property(nonatomic, assign) BOOL myLocationButton;

/**
 * Enables (default) or disables the indoor floor picker. If enabled, it is only
 * visible when the view is focused on a building with indoor floor data.
 * If disabled, the selected floor can still be controlled programatically via
 * the indoorDisplay mapView property.
 */
@property(nonatomic, assign) BOOL indoorPicker;

@end
