/**
* \cond LICENSE
* ********************************************************************
* This is a conditional block for preventing the DoxyGen documentation
* tool to include this license header within the description of each
* source code file. If you want to include this block, please define
* the LICENSE parameter into the provided DoxyFile.
* ********************************************************************
*
* JCarrierPigeon - A notification library
* Copyright (c) 2010, Paulo Roberto Massa Cereda
* 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.
*
* 3. Neither the name of the project's author nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE
* COPYRIGHT HOLDER OR 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.
*
* ********************************************************************
* End of the LICENSE conditional block
* ********************************************************************
* \endcond
*
* <b>WindowPosition.java</b>: provides an enumeration for the window position
* on screen. This enumeration is used to set the parameters referring the
* window position and to assign the correct mathematical formulas to the
* animation handlers.
*/
package net.sf.jcarrierpigeon;
/**
* Provides an enumeration for the window position on screen. This enumeration
* basically consists on four states, defined later on the documentation.
* Consider \f$ f: \mathbb{R} \rightarrow \mathbb{Z} \f$ as a function to
* calculate the current position of a window on the screen. Lets take a
* parameter \f$ x \in \mathbb{R} \f$ that \f$ 0 \leq x \leq 1 \f$, then
* \f$ f(x) \in \mathbb{Z} \f$. The animation handler will return a continuum
* value which must be converted to a screen position through this function
* \f$ f \f$. Each screen position has its own assignment for this calculation.
* To enhance the comprehension, consider these symbols:
* - \f$ d \f$ refers to the screen dimension. That way, we may also consider
* the following notation:
* - \f$ d_h \f$ is the X axis, that is, the width of the screen.
* - \f$ d_v \f$ is the Y axis, that is, the height of the screen.
* - \f$ j \f$ refers to the window acting as a notification. We may also
* consider the following notation:
* - \f$ j_h \f$ is the X axis, that is, the width of the window.
* - \f$ j_v \f$ is the Y axis, that is, the height of the window.
* - \f$ b \f$ is the distance between the window bounds to the screen bounds.
* We consider the following notation:
* - \f$ b_h \f$ is the X axis, that is, the width of the distance.
* - \f$ b_v \f$ is the Y axis, that is, the height of the distance.
* - \f$ p \f$ is the coordinate for the window acting as a notification. We
* consider the following notations:
* - \f$ p_h \f$ is the X axis, and by that we really mean the X axis.
* - \f$ p_v \f$ is the Y axis, and by that we really mean the Y axis.
*
* It is also important to note that the assignments for \f$ f(x) \f$ also
* depend on <b>net.sf.jcarrierpigeon.AnimationFrame</b>.
*
* @author Paulo Roberto Massa Cereda
* @version 1.3
* @since 1.0
*/
public enum WindowPosition {
/**
* The window will be displayed on the top left of the screen.
* - \f$ p_h = b_h \f$
* - \f$ p_v = b_v \f$
* - <i>ONSHOW</i>: \f$ f(x) = p_v - ((j_v + b_v) (1 - x)) \f$
* - <I>ONDISPLAY</i>: Not applicable.
* - <i>ONCLOSE</i>: \f$ f(x) = p_v - ((j_v + b_v) x) \f$
*/
TOPLEFT,
/**
* The window will be displayed on the top right of the screen.
* - \f$ p_h = d_h - (j_h + b_h) \f$
* - \f$ p_v = b_v \f$
* - <i>ONSHOW</i>: \f$ f(x) = p_v - ((j_v + b_v) (1 - x)) \f$
* - <I>ONDISPLAY</i>: Not applicable.
* - <i>ONCLOSE</i>: \f$ f(x) = p_v - ((j_v + b_v) x) \f$
*/
TOPRIGHT,
/**
* The window will be displayed on the bottom left of the screen.
* - \f$ p_h = b_h \f$
* - \f$ p_v = d_v - (j_v + b_v) \f$
* - <i>ONSHOW</i>: \f$ f(x) = p_v + ((d_v - p_v) (1 - x)) \f$
* - <I>ONDISPLAY</i>: Not applicable.
* - <i>ONCLOSE</i>: \f$ f(x) = p_v + ((d_v - p_v) x) \f$
*/
BOTTOMLEFT,
/**
* The window will be displayed on the bottom right of the screen.
* - \f$ p_h = d_h - (j_h + b_h) \f$
* - \f$ p_v = d_v - (j_v + b_v) \f$
* - <i>ONSHOW</i>: \f$ f(x) = p_v + ((d_v - p_v) (1 - x)) \f$
* - <I>ONDISPLAY</i>: Not applicable.
* - <i>ONCLOSE</i>: \f$ f(x) = p_v + ((d_v - p_v) x) \f$
*/
BOTTOMRIGHT
}