17149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/*
27149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Copyright (C) 2017 The Android Open Source Project
37149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
47149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License");
57149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * you may not use this file except in compliance with the License.
67149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * You may obtain a copy of the License at
77149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
87149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *      http://www.apache.org/licenses/LICENSE-2.0
97149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas *
107149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software
117149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS,
127149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * See the License for the specific language governing permissions and
147149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * limitations under the License.
157149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */
167149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
177149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspackage com.android.internal.widget;
187149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
197149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/**
207149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * An interface that can be implemented by Views to provide scroll related APIs.
217149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */
227149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspublic interface ScrollingView {
237149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
247149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the horizontal range that the horizontal scrollbar
257149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * represents.</p>
267149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
277149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
287149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeHorizontalScrollExtent()} and
297149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeHorizontalScrollOffset()}.</p>
307149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
317149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default range is the drawing width of this view.</p>
327149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
337149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the total horizontal range represented by the horizontal
347149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *         scrollbar
357149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
367149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollExtent()
377149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollOffset()
387149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
397149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
407149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeHorizontalScrollRange();
417149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
427149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
437149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the horizontal offset of the horizontal scrollbar's thumb
447149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * within the horizontal range. This value is used to compute the position
457149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * of the thumb within the scrollbar's track.</p>
467149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
477149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
487149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeHorizontalScrollRange()} and
497149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeHorizontalScrollExtent()}.</p>
507149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
517149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default offset is the scroll offset of this view.</p>
527149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
537149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the horizontal offset of the scrollbar's thumb
547149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
557149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollRange()
567149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollExtent()
577149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
587149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
597149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeHorizontalScrollOffset();
607149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
617149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
627149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the horizontal extent of the horizontal scrollbar's thumb
637149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * within the horizontal range. This value is used to compute the length
647149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * of the thumb within the scrollbar's track.</p>
657149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
667149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
677149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeHorizontalScrollRange()} and
687149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeHorizontalScrollOffset()}.</p>
697149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
707149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default extent is the drawing width of this view.</p>
717149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
727149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the horizontal extent of the scrollbar's thumb
737149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
747149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollRange()
757149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeHorizontalScrollOffset()
767149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
777149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
787149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeHorizontalScrollExtent();
797149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
807149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
817149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the vertical range that the vertical scrollbar represents.</p>
827149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
837149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
847149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeVerticalScrollExtent()} and
857149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeVerticalScrollOffset()}.</p>
867149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
877149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the total vertical range represented by the vertical scrollbar
887149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
897149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default range is the drawing height of this view.</p>
907149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
917149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollExtent()
927149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollOffset()
937149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
947149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
957149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeVerticalScrollRange();
967149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
977149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
987149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the vertical offset of the vertical scrollbar's thumb
997149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * within the horizontal range. This value is used to compute the position
1007149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * of the thumb within the scrollbar's track.</p>
1017149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1027149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
1037149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeVerticalScrollRange()} and
1047149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeVerticalScrollExtent()}.</p>
1057149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1067149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default offset is the scroll offset of this view.</p>
1077149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1087149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the vertical offset of the scrollbar's thumb
1097149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1107149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollRange()
1117149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollExtent()
1127149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
1137149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
1147149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeVerticalScrollOffset();
1157149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas
1167149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    /**
1177149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>Compute the vertical extent of the vertical scrollbar's thumb
1187149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * within the vertical range. This value is used to compute the length
1197149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * of the thumb within the scrollbar's track.</p>
1207149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1217149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The range is expressed in arbitrary units that must be the same as the
1227149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * units used by {@link #computeVerticalScrollRange()} and
1237149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * {@link #computeVerticalScrollOffset()}.</p>
1247149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1257149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * <p>The default extent is the drawing height of this view.</p>
1267149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1277149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @return the vertical extent of the scrollbar's thumb
1287149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     *
1297149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollRange()
1307149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see #computeVerticalScrollOffset()
1317149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     * @see android.widget.ScrollBarDrawable
1327149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas     */
1337149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas    int computeVerticalScrollExtent();
1347149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas}
135