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