DisplayList.java revision 65b345fa22b878e141b8fd8ece9c208df00fa40f
1b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy/* 2b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Copyright (C) 2010 The Android Open Source Project 3b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 4b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * you may not use this file except in compliance with the License. 6b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * You may obtain a copy of the License at 7b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 8b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 10b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Unless required by applicable law or agreed to in writing, software 11b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * See the License for the specific language governing permissions and 14b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * limitations under the License. 15b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 16b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 17b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guypackage android.view; 18b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 19b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy/** 20b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * A display lists records a series of graphics related operation and can replay 21b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * them later. Display lists are usually built by recording operations on a 22b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * {@link android.graphics.Canvas}. Replaying the operations from a display list 23b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * avoids executing views drawing code on every frame, and is thus much more 24daf98e941e140e8739458126640183b9f296a2abChet Haase * efficient. 25daf98e941e140e8739458126640183b9f296a2abChet Haase * 26daf98e941e140e8739458126640183b9f296a2abChet Haase * @hide 27b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 28daf98e941e140e8739458126640183b9f296a2abChet Haasepublic abstract class DisplayList { 29b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy /** 30b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Starts recording the display list. All operations performed on the 31b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * returned canvas are recorded and stored in this display list. 32b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * 33b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * @return A canvas to record drawing operations. 34b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 35b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy abstract HardwareCanvas start(); 36b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 37b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy /** 38b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * Ends the recording for this display list. A display list cannot be 39b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * replayed if recording is not finished. 40b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy */ 41b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy abstract void end(); 42b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy 43b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy /** 449e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * Invalidates the display list, indicating that it should be repopulated 459e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * with new drawing commands prior to being used again. Calling this method 469e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * causes calls to {@link #isValid()} to return <code>false</code>. 479e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase */ 489e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase abstract void invalidate(); 499e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase 509e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase /** 519e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * Returns whether the display list is currently usable. If this returns false, 529e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * the display list should be re-recorded prior to replaying it. 539e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * 549e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase * @return boolean true if the display list is able to be replayed, false otherwise. 559e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase */ 569e90a9953b65ae575ec8db3989857e0c145724b1Chet Haase abstract boolean isValid(); 5765b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy 5865b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy /** 5965b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy * Return the amount of memory used by this display list. 6065b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy * 6165b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy * @return The size of this display list in bytes 6265b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy */ 6365b345fa22b878e141b8fd8ece9c208df00fa40fRomain Guy abstract int getSize(); 64b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy} 65