summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/Gravity.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/view/Gravity.java
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
downloadframeworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/view/Gravity.java')
-rw-r--r--core/java/android/view/Gravity.java306
1 files changed, 0 insertions, 306 deletions
diff --git a/core/java/android/view/Gravity.java b/core/java/android/view/Gravity.java
deleted file mode 100644
index 36d8ce6..0000000
--- a/core/java/android/view/Gravity.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2006 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.
- */
-
-package android.view;
-import android.graphics.Rect;
-
-/**
- * Standard constants and tools for placing an object within a potentially
- * larger container.
- */
-public class Gravity
-{
- /** Constant indicating that no gravity has been set **/
- public static final int NO_GRAVITY = 0x0000;
-
- /** Raw bit indicating the gravity for an axis has been specified. */
- public static final int AXIS_SPECIFIED = 0x0001;
-
- /** Raw bit controlling how the left/top edge is placed. */
- public static final int AXIS_PULL_BEFORE = 0x0002;
- /** Raw bit controlling how the right/bottom edge is placed. */
- public static final int AXIS_PULL_AFTER = 0x0004;
- /** Raw bit controlling whether the right/bottom edge is clipped to its
- * container, based on the gravity direction being applied. */
- public static final int AXIS_CLIP = 0x0008;
-
- /** Bits defining the horizontal axis. */
- public static final int AXIS_X_SHIFT = 0;
- /** Bits defining the vertical axis. */
- public static final int AXIS_Y_SHIFT = 4;
-
- /** Push object to the top of its container, not changing its size. */
- public static final int TOP = (AXIS_PULL_BEFORE|AXIS_SPECIFIED)<<AXIS_Y_SHIFT;
- /** Push object to the bottom of its container, not changing its size. */
- public static final int BOTTOM = (AXIS_PULL_AFTER|AXIS_SPECIFIED)<<AXIS_Y_SHIFT;
- /** Push object to the left of its container, not changing its size. */
- public static final int LEFT = (AXIS_PULL_BEFORE|AXIS_SPECIFIED)<<AXIS_X_SHIFT;
- /** Push object to the right of its container, not changing its size. */
- public static final int RIGHT = (AXIS_PULL_AFTER|AXIS_SPECIFIED)<<AXIS_X_SHIFT;
-
- /** Place object in the vertical center of its container, not changing its
- * size. */
- public static final int CENTER_VERTICAL = AXIS_SPECIFIED<<AXIS_Y_SHIFT;
- /** Grow the vertical size of the object if needed so it completely fills
- * its container. */
- public static final int FILL_VERTICAL = TOP|BOTTOM;
-
- /** Place object in the horizontal center of its container, not changing its
- * size. */
- public static final int CENTER_HORIZONTAL = AXIS_SPECIFIED<<AXIS_X_SHIFT;
- /** Grow the horizontal size of the object if needed so it completely fills
- * its container. */
- public static final int FILL_HORIZONTAL = LEFT|RIGHT;
-
- /** Place the object in the center of its container in both the vertical
- * and horizontal axis, not changing its size. */
- public static final int CENTER = CENTER_VERTICAL|CENTER_HORIZONTAL;
-
- /** Grow the horizontal and vertical size of the object if needed so it
- * completely fills its container. */
- public static final int FILL = FILL_VERTICAL|FILL_HORIZONTAL;
-
- /** Flag to clip the edges of the object to its container along the
- * vertical axis. */
- public static final int CLIP_VERTICAL = AXIS_CLIP<<AXIS_Y_SHIFT;
-
- /** Flag to clip the edges of the object to its container along the
- * horizontal axis. */
- public static final int CLIP_HORIZONTAL = AXIS_CLIP<<AXIS_X_SHIFT;
-
- /**
- * Binary mask to get the horizontal gravity of a gravity.
- */
- public static final int HORIZONTAL_GRAVITY_MASK = (AXIS_SPECIFIED |
- AXIS_PULL_BEFORE | AXIS_PULL_AFTER) << AXIS_X_SHIFT;
- /**
- * Binary mask to get the vertical gravity of a gravity.
- */
- public static final int VERTICAL_GRAVITY_MASK = (AXIS_SPECIFIED |
- AXIS_PULL_BEFORE | AXIS_PULL_AFTER) << AXIS_Y_SHIFT;
-
- /** Special constant to enable clipping to an overall display along the
- * vertical dimension. This is not applied by default by
- * {@link #apply(int, int, int, Rect, int, int, Rect)}; you must do so
- * yourself by calling {@link #applyDisplay}.
- */
- public static final int DISPLAY_CLIP_VERTICAL = 0x10000000;
-
- /** Special constant to enable clipping to an overall display along the
- * horizontal dimension. This is not applied by default by
- * {@link #apply(int, int, int, Rect, int, int, Rect)}; you must do so
- * yourself by calling {@link #applyDisplay}.
- */
- public static final int DISPLAY_CLIP_HORIZONTAL = 0x01000000;
-
- /**
- * Apply a gravity constant to an object.
- *
- * @param gravity The desired placement of the object, as defined by the
- * constants in this class.
- * @param w The horizontal size of the object.
- * @param h The vertical size of the object.
- * @param container The frame of the containing space, in which the object
- * will be placed. Should be large enough to contain the
- * width and height of the object.
- * @param outRect Receives the computed frame of the object in its
- * container.
- */
- public static void apply(int gravity, int w, int h, Rect container,
- Rect outRect) {
- apply(gravity, w, h, container, 0, 0, outRect);
- }
-
- /**
- * Apply a gravity constant to an object.
- *
- * @param gravity The desired placement of the object, as defined by the
- * constants in this class.
- * @param w The horizontal size of the object.
- * @param h The vertical size of the object.
- * @param container The frame of the containing space, in which the object
- * will be placed. Should be large enough to contain the
- * width and height of the object.
- * @param xAdj Offset to apply to the X axis. If gravity is LEFT this
- * pushes it to the right; if gravity is RIGHT it pushes it to
- * the left; if gravity is CENTER_HORIZONTAL it pushes it to the
- * right or left; otherwise it is ignored.
- * @param yAdj Offset to apply to the Y axis. If gravity is TOP this pushes
- * it down; if gravity is BOTTOM it pushes it up; if gravity is
- * CENTER_VERTICAL it pushes it down or up; otherwise it is
- * ignored.
- * @param outRect Receives the computed frame of the object in its
- * container.
- */
- public static void apply(int gravity, int w, int h, Rect container,
- int xAdj, int yAdj, Rect outRect) {
- switch (gravity&((AXIS_PULL_BEFORE|AXIS_PULL_AFTER)<<AXIS_X_SHIFT)) {
- case 0:
- outRect.left = container.left
- + ((container.right - container.left - w)/2) + xAdj;
- outRect.right = outRect.left + w;
- if ((gravity&(AXIS_CLIP<<AXIS_X_SHIFT))
- == (AXIS_CLIP<<AXIS_X_SHIFT)) {
- if (outRect.left < container.left) {
- outRect.left = container.left;
- }
- if (outRect.right > container.right) {
- outRect.right = container.right;
- }
- }
- break;
- case AXIS_PULL_BEFORE<<AXIS_X_SHIFT:
- outRect.left = container.left + xAdj;
- outRect.right = outRect.left + w;
- if ((gravity&(AXIS_CLIP<<AXIS_X_SHIFT))
- == (AXIS_CLIP<<AXIS_X_SHIFT)) {
- if (outRect.right > container.right) {
- outRect.right = container.right;
- }
- }
- break;
- case AXIS_PULL_AFTER<<AXIS_X_SHIFT:
- outRect.right = container.right - xAdj;
- outRect.left = outRect.right - w;
- if ((gravity&(AXIS_CLIP<<AXIS_X_SHIFT))
- == (AXIS_CLIP<<AXIS_X_SHIFT)) {
- if (outRect.left < container.left) {
- outRect.left = container.left;
- }
- }
- break;
- default:
- outRect.left = container.left + xAdj;
- outRect.right = container.right + xAdj;
- break;
- }
-
- switch (gravity&((AXIS_PULL_BEFORE|AXIS_PULL_AFTER)<<AXIS_Y_SHIFT)) {
- case 0:
- outRect.top = container.top
- + ((container.bottom - container.top - h)/2) + yAdj;
- outRect.bottom = outRect.top + h;
- if ((gravity&(AXIS_CLIP<<AXIS_Y_SHIFT))
- == (AXIS_CLIP<<AXIS_Y_SHIFT)) {
- if (outRect.top < container.top) {
- outRect.top = container.top;
- }
- if (outRect.bottom > container.bottom) {
- outRect.bottom = container.bottom;
- }
- }
- break;
- case AXIS_PULL_BEFORE<<AXIS_Y_SHIFT:
- outRect.top = container.top + yAdj;
- outRect.bottom = outRect.top + h;
- if ((gravity&(AXIS_CLIP<<AXIS_Y_SHIFT))
- == (AXIS_CLIP<<AXIS_Y_SHIFT)) {
- if (outRect.bottom > container.bottom) {
- outRect.bottom = container.bottom;
- }
- }
- break;
- case AXIS_PULL_AFTER<<AXIS_Y_SHIFT:
- outRect.bottom = container.bottom - yAdj;
- outRect.top = outRect.bottom - h;
- if ((gravity&(AXIS_CLIP<<AXIS_Y_SHIFT))
- == (AXIS_CLIP<<AXIS_Y_SHIFT)) {
- if (outRect.top < container.top) {
- outRect.top = container.top;
- }
- }
- break;
- default:
- outRect.top = container.top + yAdj;
- outRect.bottom = container.bottom + yAdj;
- break;
- }
- }
-
- /**
- * Apply addition gravity behavior based on the overall "display" that an
- * object exists in. This can be used after
- * {@link #apply(int, int, int, Rect, int, int, Rect)} to place the object
- * within a visible display. By default this moves or clips the object
- * to be visible in the display; the gravity flags
- * {@link #DISPLAY_CLIP_HORIZONTAL} and {@link #DISPLAY_CLIP_VERTICAL}
- * can be used to change this behavior.
- *
- * @param gravity Gravity constants to modify the placement within the
- * display.
- * @param display The rectangle of the display in which the object is
- * being placed.
- * @param inoutObj Supplies the current object position; returns with it
- * modified if needed to fit in the display.
- */
- public static void applyDisplay(int gravity, Rect display, Rect inoutObj) {
- if ((gravity&DISPLAY_CLIP_VERTICAL) != 0) {
- if (inoutObj.top < display.top) inoutObj.top = display.top;
- if (inoutObj.bottom > display.bottom) inoutObj.bottom = display.bottom;
- } else {
- int off = 0;
- if (inoutObj.top < display.top) off = display.top-inoutObj.top;
- else if (inoutObj.bottom > display.bottom) off = display.bottom-inoutObj.bottom;
- if (off != 0) {
- if (inoutObj.height() > (display.bottom-display.top)) {
- inoutObj.top = display.top;
- inoutObj.bottom = display.bottom;
- } else {
- inoutObj.top += off;
- inoutObj.bottom += off;
- }
- }
- }
-
- if ((gravity&DISPLAY_CLIP_HORIZONTAL) != 0) {
- if (inoutObj.left < display.left) inoutObj.left = display.left;
- if (inoutObj.right > display.right) inoutObj.right = display.right;
- } else {
- int off = 0;
- if (inoutObj.left < display.left) off = display.left-inoutObj.left;
- else if (inoutObj.right > display.right) off = display.right-inoutObj.right;
- if (off != 0) {
- if (inoutObj.width() > (display.right-display.left)) {
- inoutObj.left = display.left;
- inoutObj.right = display.right;
- } else {
- inoutObj.left += off;
- inoutObj.right += off;
- }
- }
- }
- }
-
- /**
- * <p>Indicate whether the supplied gravity has a vertical pull.</p>
- *
- * @param gravity the gravity to check for vertical pull
- * @return true if the supplied gravity has a vertical pull
- */
- public static boolean isVertical(int gravity) {
- return gravity > 0 && (gravity & VERTICAL_GRAVITY_MASK) != 0;
- }
-
- /**
- * <p>Indicate whether the supplied gravity has an horizontal pull.</p>
- *
- * @param gravity the gravity to check for horizontal pull
- * @return true if the supplied gravity has an horizontal pull
- */
- public static boolean isHorizontal(int gravity) {
- return gravity > 0 && (gravity & HORIZONTAL_GRAVITY_MASK) != 0;
- }
-}