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