MaskFilter_Delegate.java revision d43909c7503e11eb335a452d296a10804bb01fd6
1d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet/* 2d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Copyright (C) 2010 The Android Open Source Project 3d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 4d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 5d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * you may not use this file except in compliance with the License. 6d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * You may obtain a copy of the License at 7d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 8d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 9d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 10d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software 11d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 12d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * See the License for the specific language governing permissions and 14d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * limitations under the License. 15d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet */ 16d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 17d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohetpackage android.graphics; 18d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 19d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohetimport com.android.layoutlib.bridge.impl.DelegateManager; 20d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 21d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet/** 22d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Delegate implementing the native methods of android.graphics.MaskFilter 23d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 24d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Through the layoutlib_create tool, the original native methods of MaskFilter have been replaced 25d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * by calls to methods of the same name in this delegate class. 26d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 27d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * This class behaves like the original native implementation, but in Java, keeping previously 28d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * native data into its own objects and mapping them to int that are sent back and forth between 29d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * it and the original MaskFilter class. 30d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 31d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * This also serve as a base class for all MaskFilter delegate classes. 32d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 33d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * @see DelegateManager 34d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 35d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet */ 36d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohetpublic abstract class MaskFilter_Delegate { 37d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 38d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate manager ---- 39d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet protected static final DelegateManager<MaskFilter_Delegate> sManager = 40d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet new DelegateManager<MaskFilter_Delegate>(); 41d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 42d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate helper data ---- 43d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 44d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate data ---- 45d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 46d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- Public Helper methods ---- 47d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 48d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public static MaskFilter_Delegate getDelegate(int nativeShader) { 49d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet return sManager.getDelegate(nativeShader); 50d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet } 51d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 52d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public abstract boolean isSupported(); 53d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public abstract String getSupportMessage(); 54d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 55d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- native methods ---- 56d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 57d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet /*package*/ static void nativeDestructor(int native_filter) { 58d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet sManager.removeDelegate(native_filter); 59d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet } 60d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 61d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- Private delegate/helper methods ---- 62d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet} 63