18f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian/*
28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2003, 2009 Apple Inc.  All rights reserved.
38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
48f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Portions are Copyright (C) 1998 Netscape Communications Corporation.
58f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
68f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Other contributors:
78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Robert O'Callahan <roc+@cs.cmu.edu>
88f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   David Baron <dbaron@fas.harvard.edu>
98f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Christian Biesinger <cbiesinger@web.de>
108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Randall Jesup <rjesup@wgate.com>
118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Roland Mainz <roland.mainz@informatik.med.uni-giessen.de>
128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Josh Soref <timeless@mac.com>
138f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *   Boris Zbarsky <bzbarsky@mit.edu>
148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * This library is free software; you can redistribute it and/or
168f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * modify it under the terms of the GNU Lesser General Public
178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * License as published by the Free Software Foundation; either
188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * version 2.1 of the License, or (at your option) any later version.
198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * This library is distributed in the hope that it will be useful,
218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * but WITHOUT ANY WARRANTY; without even the implied warranty of
228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Lesser General Public License for more details.
248f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
258f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * You should have received a copy of the GNU Lesser General Public
268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * License along with this library; if not, write to the Free Software
278f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *
298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Alternatively, the contents of this file may be used under the terms
308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * of either the Mozilla Public License Version 1.1, found at
318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * http://www.mozilla.org/MPL/ (the "MPL") or the GNU General Public
328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * License Version 2.0, found at http://www.fsf.org/copyleft/gpl.html
338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * (the "GPL"), in which case the provisions of the MPL or the GPL are
348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * applicable instead of those above.  If you wish to allow use of your
358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * version of this file only under the terms of one of those two
368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * licenses (the MPL or the GPL) and not to allow others to use your
378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * version of this file under the LGPL, indicate your decision by
388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * deletingthe provisions above and replace them with the notice and
398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * other provisions required by the MPL or the GPL, as the case may be.
408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * If you do not delete the provisions above, a recipient may use your
418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * version of this file under any of the LGPL, the MPL or the GPL.
428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian */
438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#ifndef ScrollBehavior_h
458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#define ScrollBehavior_h
468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
478f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiannamespace WebCore {
488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
498f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianenum ScrollBehavior {
508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    noScroll,
518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignCenter,
528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignTop,
538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignBottom,
548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignLeft,
558f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignRight,
568f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    alignToClosestEdge
578f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian};
588f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
598f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianstruct ScrollAlignment {
608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static ScrollBehavior getVisibleBehavior(const ScrollAlignment& s) { return s.m_rectVisible; }
618f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static ScrollBehavior getPartialBehavior(const ScrollAlignment& s) { return s.m_rectPartial; }
628f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static ScrollBehavior getHiddenBehavior(const ScrollAlignment& s) { return s.m_rectHidden; }
638f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
648f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static const ScrollAlignment alignCenterIfNeeded;
658f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static const ScrollAlignment alignToEdgeIfNeeded;
668f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static const ScrollAlignment alignCenterAlways;
678f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static const ScrollAlignment alignTopAlways;
688f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    static const ScrollAlignment alignBottomAlways;
698f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
708f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    ScrollBehavior m_rectVisible;
718f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    ScrollBehavior m_rectHidden;
728f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    ScrollBehavior m_rectPartial;
738f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian};
748f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
758f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
768f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian}; // namespace WebCore
778f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
788f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif // ScrollBehavior_h
79