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