AbstractDrawingPreview.java revision 0c01fc6f1c01a2009546a2982818e68c08012ab3
1d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi/*
2d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi * Copyright (C) 2012 The Android Open Source Project
3d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi *
48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License.
68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at
7d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi *
88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
9d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi *
10d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi * Unless required by applicable law or agreed to in writing, software
118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and
148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License.
15d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi */
16d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
17d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bipackage com.android.inputmethod.keyboard.internal;
18d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
19d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Biimport android.graphics.Canvas;
204987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaokaimport android.view.View;
21d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
22d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Biimport com.android.inputmethod.keyboard.PointerTracker;
23d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
24d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi/**
25cf915ddc878699909365dd599a0e154552e244e2Tadashi G. Takaoka * Abstract base class for previews that are drawn on DrawingPreviewPlacerView, e.g.,
26cf915ddc878699909365dd599a0e154552e244e2Tadashi G. Takaoka * GestureFloatingTextDrawingPreview, GestureTrailsDrawingPreview, and
27cf915ddc878699909365dd599a0e154552e244e2Tadashi G. Takaoka * SlidingKeyInputDrawingPreview.
28d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi */
29d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bipublic abstract class AbstractDrawingPreview {
304987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    private final View mDrawingView;
31d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi    private boolean mPreviewEnabled;
320c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    private boolean mHasValidGeometry;
33d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
344987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    protected AbstractDrawingPreview(final View drawingView) {
354987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka        mDrawingView = drawingView;
364987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    }
374987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka
380c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    protected final View getDrawingView() {
394987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka        return mDrawingView;
404987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    }
414987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka
420c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    protected final boolean isPreviewEnabled() {
430c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka        return mPreviewEnabled && mHasValidGeometry;
44d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi    }
45d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
460c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    public final void setPreviewEnabled(final boolean enabled) {
470c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka        mPreviewEnabled = enabled;
48d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi    }
49d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
500c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    /**
510c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     * Set {@link MainKeyboardView} geometry and position in the {@link SoftInputWindow}.
520c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     * The class that is overriding this method must call this super implementation.
530c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     *
540c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     * @param originCoords the top-left coordinates of the {@link MainKeyboardView} in
550c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     *        {@link SoftInputWindow} coordinate-system. This is unused but has a point in an
560c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     *        extended class, such as {@link GestureTrailsDrawingPreview}.
570c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     * @param width the width of {@link MainKeyboardView}.
580c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     * @param height the height of {@link MainKeyboardView}.
590c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka     */
600c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka    public void setKeyboardViewGeometry(final int[] originCoords, final int width,
610c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka            final int height) {
620c01fc6f1c01a2009546a2982818e68c08012ab3Tadashi G. Takaoka        mHasValidGeometry = (width > 0 && height > 0);
634987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    }
644987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka
65afca1ddd233c03d79433931a0b6ba97ed22663edTadashi G. Takaoka    public abstract void onDeallocateMemory();
664987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka
67d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi    /**
68d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi     * Draws the preview
69d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi     * @param canvas The canvas where the preview is drawn.
70d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi     */
712ecbfe8e93f8d8fce0adc47659b5d2f52cb68849Tadashi G. Takaoka    public abstract void drawPreview(final Canvas canvas);
72d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi
73d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi    /**
74d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi     * Set the position of the preview.
754987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka     * @param tracker The new location of the preview is based on the points in PointerTracker.
76d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi     */
774987108f34c08825ccb1c859c971bf232438c4aaTadashi G. Takaoka    public abstract void setPreviewPosition(final PointerTracker tracker);
78d52730a2d7a6e98245719ce5c53bcf4b3a3ba1c9Xiaojun Bi}
79