/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @addtogroup NativeActivity Native Activity
 * @{
 */

/**
 * @file window.h
 */

#ifndef ANDROID_WINDOW_H
#define ANDROID_WINDOW_H

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Window flags, as per the Java API at android.view.WindowManager.LayoutParams.
 */
enum {
    /**
     * As long as this window is visible to the user, allow the lock
     * screen to activate while the screen is on.  This can be used
     * independently, or in combination with {@link
     * AWINDOW_FLAG_KEEP_SCREEN_ON} and/or {@link
     * AWINDOW_FLAG_SHOW_WHEN_LOCKED}
     */
    AWINDOW_FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001,
    /** Everything behind this window will be dimmed. */
    AWINDOW_FLAG_DIM_BEHIND                 = 0x00000002,
    /**
     * Blur everything behind this window.
     * @deprecated Blurring is no longer supported.
     */
    AWINDOW_FLAG_BLUR_BEHIND                = 0x00000004,
    /**
     * This window won't ever get key input focus, so the
     * user can not send key or other button events to it.  Those will
     * instead go to whatever focusable window is behind it.  This flag
     * will also enable {@link AWINDOW_FLAG_NOT_TOUCH_MODAL} whether or not that
     * is explicitly set.
     *
     * Setting this flag also implies that the window will not need to
     * interact with
     * a soft input method, so it will be Z-ordered and positioned
     * independently of any active input method (typically this means it
     * gets Z-ordered on top of the input method, so it can use the full
     * screen for its content and cover the input method if needed.  You
     * can use {@link AWINDOW_FLAG_ALT_FOCUSABLE_IM} to modify this behavior.
     */
    AWINDOW_FLAG_NOT_FOCUSABLE              = 0x00000008,
    /** this window can never receive touch events. */
    AWINDOW_FLAG_NOT_TOUCHABLE              = 0x00000010,
    /**
     * Even when this window is focusable (its
     * {@link AWINDOW_FLAG_NOT_FOCUSABLE} is not set), allow any pointer events
     * outside of the window to be sent to the windows behind it.  Otherwise
     * it will consume all pointer events itself, regardless of whether they
     * are inside of the window.
     */
    AWINDOW_FLAG_NOT_TOUCH_MODAL            = 0x00000020,
    /**
     * When set, if the device is asleep when the touch
     * screen is pressed, you will receive this first touch event.  Usually
     * the first touch event is consumed by the system since the user can
     * not see what they are pressing on.
     *
     * @deprecated This flag has no effect.
     */
    AWINDOW_FLAG_TOUCHABLE_WHEN_WAKING      = 0x00000040,
    /**
     * As long as this window is visible to the user, keep
     * the device's screen turned on and bright.
     */
    AWINDOW_FLAG_KEEP_SCREEN_ON             = 0x00000080,
    /**
     * Place the window within the entire screen, ignoring
     * decorations around the border (such as the status bar).  The
     * window must correctly position its contents to take the screen
     * decoration into account.
     */
    AWINDOW_FLAG_LAYOUT_IN_SCREEN           = 0x00000100,
    /** allow window to extend outside of the screen. */
    AWINDOW_FLAG_LAYOUT_NO_LIMITS           = 0x00000200,
    /**
     * Hide all screen decorations (such as the status
     * bar) while this window is displayed.  This allows the window to
     * use the entire display space for itself -- the status bar will
     * be hidden when an app window with this flag set is on the top
     * layer. A fullscreen window will ignore a value of
     * <a href="/reference/android/view/WindowManager.LayoutParams#SOFT_INPUT_ADJUST_RESIZE">
     * SOFT_INPUT_ADJUST_RESIZE</a>; the window will stay
     * fullscreen and will not resize.
     */
    AWINDOW_FLAG_FULLSCREEN                 = 0x00000400,
    /**
     * Override {@link AWINDOW_FLAG_FULLSCREEN} and force the
     * screen decorations (such as the status bar) to be shown.
     */
    AWINDOW_FLAG_FORCE_NOT_FULLSCREEN       = 0x00000800,
    /**
     * Turn on dithering when compositing this window to
     * the screen.
     * @deprecated This flag is no longer used.
     */
    AWINDOW_FLAG_DITHER                     = 0x00001000,
    /**
     * Treat the content of the window as secure, preventing
     * it from appearing in screenshots or from being viewed on non-secure
     * displays.
     */
    AWINDOW_FLAG_SECURE                     = 0x00002000,
    /**
     * A special mode where the layout parameters are used
     * to perform scaling of the surface when it is composited to the
     * screen.
     */
    AWINDOW_FLAG_SCALED                     = 0x00004000,
    /**
     * Intended for windows that will often be used when the user is
     * holding the screen against their face, it will aggressively
     * filter the event stream to prevent unintended presses in this
     * situation that may not be desired for a particular window, when
     * such an event stream is detected, the application will receive
     * a {@link AMOTION_EVENT_ACTION_CANCEL} to indicate this so
     * applications can handle this accordingly by taking no action on
     * the event until the finger is released.
     */
    AWINDOW_FLAG_IGNORE_CHEEK_PRESSES       = 0x00008000,
    /**
     * A special option only for use in combination with
     * {@link AWINDOW_FLAG_LAYOUT_IN_SCREEN}.  When requesting layout in the
     * screen your window may appear on top of or behind screen decorations
     * such as the status bar.  By also including this flag, the window
     * manager will report the inset rectangle needed to ensure your
     * content is not covered by screen decorations.
     */
    AWINDOW_FLAG_LAYOUT_INSET_DECOR         = 0x00010000,
    /**
     * Invert the state of {@link AWINDOW_FLAG_NOT_FOCUSABLE} with
     * respect to how this window interacts with the current method.
     * That is, if FLAG_NOT_FOCUSABLE is set and this flag is set,
     * then the window will behave as if it needs to interact with the
     * input method and thus be placed behind/away from it; if {@link
     * AWINDOW_FLAG_NOT_FOCUSABLE} is not set and this flag is set,
     * then the window will behave as if it doesn't need to interact
     * with the input method and can be placed to use more space and
     * cover the input method.
     */
    AWINDOW_FLAG_ALT_FOCUSABLE_IM           = 0x00020000,
    /**
     * If you have set {@link AWINDOW_FLAG_NOT_TOUCH_MODAL}, you
     * can set this flag to receive a single special MotionEvent with
     * the action
     * {@link AMOTION_EVENT_ACTION_OUTSIDE} for
     * touches that occur outside of your window.  Note that you will not
     * receive the full down/move/up gesture, only the location of the
     * first down as an {@link AMOTION_EVENT_ACTION_OUTSIDE}.
     */
    AWINDOW_FLAG_WATCH_OUTSIDE_TOUCH        = 0x00040000,
    /**
     * Special flag to let windows be shown when the screen
     * is locked. This will let application windows take precedence over
     * key guard or any other lock screens. Can be used with
     * {@link AWINDOW_FLAG_KEEP_SCREEN_ON} to turn screen on and display windows
     * directly before showing the key guard window.  Can be used with
     * {@link AWINDOW_FLAG_DISMISS_KEYGUARD} to automatically fully dismisss
     * non-secure keyguards.  This flag only applies to the top-most
     * full-screen window.
     */
    AWINDOW_FLAG_SHOW_WHEN_LOCKED           = 0x00080000,
    /**
     * Ask that the system wallpaper be shown behind
     * your window.  The window surface must be translucent to be able
     * to actually see the wallpaper behind it; this flag just ensures
     * that the wallpaper surface will be there if this window actually
     * has translucent regions.
     */
    AWINDOW_FLAG_SHOW_WALLPAPER             = 0x00100000,
    /**
     * When set as a window is being added or made
     * visible, once the window has been shown then the system will
     * poke the power manager's user activity (as if the user had woken
     * up the device) to turn the screen on.
     */
    AWINDOW_FLAG_TURN_SCREEN_ON             = 0x00200000,
    /**
     * When set the window will cause the keyguard to
     * be dismissed, only if it is not a secure lock keyguard.  Because such
     * a keyguard is not needed for security, it will never re-appear if
     * the user navigates to another window (in contrast to
     * {@link AWINDOW_FLAG_SHOW_WHEN_LOCKED}, which will only temporarily
     * hide both secure and non-secure keyguards but ensure they reappear
     * when the user moves to another UI that doesn't hide them).
     * If the keyguard is currently active and is secure (requires an
     * unlock pattern) than the user will still need to confirm it before
     * seeing this window, unless {@link AWINDOW_FLAG_SHOW_WHEN_LOCKED} has
     * also been set.
     */
    AWINDOW_FLAG_DISMISS_KEYGUARD           = 0x00400000,
};

#ifdef __cplusplus
};
#endif

#endif // ANDROID_WINDOW_H

/** @} */
