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; 209a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohetimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 21d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 22d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet/** 23d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Delegate implementing the native methods of android.graphics.MaskFilter 24d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 25d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Through the layoutlib_create tool, the original native methods of MaskFilter have been replaced 26d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * by calls to methods of the same name in this delegate class. 27d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 28d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * This class behaves like the original native implementation, but in Java, keeping previously 29d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * native data into its own objects and mapping them to int that are sent back and forth between 30d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * it and the original MaskFilter class. 31d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 32d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * This also serve as a base class for all MaskFilter delegate classes. 33d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 34d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * @see DelegateManager 35d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * 36d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet */ 37d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohetpublic abstract class MaskFilter_Delegate { 38d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 39d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate manager ---- 40d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet protected static final DelegateManager<MaskFilter_Delegate> sManager = 41f0a53435f14d23d9555fc46014352ee6a7baa647Xavier Ducrohet new DelegateManager<MaskFilter_Delegate>(MaskFilter_Delegate.class); 42d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 43d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate helper data ---- 44d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 45d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- delegate data ---- 46d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 47d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- Public Helper methods ---- 48d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 49d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public static MaskFilter_Delegate getDelegate(int nativeShader) { 50d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet return sManager.getDelegate(nativeShader); 51d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet } 52d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 53d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public abstract boolean isSupported(); 54d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet public abstract String getSupportMessage(); 55d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 56d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- native methods ---- 57d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 589a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet @LayoutlibDelegate 59d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet /*package*/ static void nativeDestructor(int native_filter) { 60cc4977d0fdaf657907912fd6cc2f9426dc8d2e36Xavier Ducrohet sManager.removeJavaReferenceFor(native_filter); 61d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet } 62d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet 63d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet // ---- Private delegate/helper methods ---- 64d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet} 65