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.PorterDuffColorFilter
24d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet *
25d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Through the layoutlib_create tool, the original native methods of PorterDuffColorFilter have
26d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * been replaced 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 PorterDuffColorFilter class.
31d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet *
32d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * Because this extends {@link ColorFilter_Delegate}, there's no need to use a
33d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * {@link DelegateManager}, as all the Shader classes will be added to the manager
34d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * owned by {@link ColorFilter_Delegate}.
35d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet *
36d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet * @see ColorFilter_Delegate
37d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet *
38d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet */
39d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohetpublic class PorterDuffColorFilter_Delegate extends ColorFilter_Delegate {
40d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
41d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    // ---- delegate data ----
42d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
43d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    // ---- Public Helper methods ----
44d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
45d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    @Override
46d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    public boolean isSupported() {
47d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet        return false;
48d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    }
49d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
50d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    @Override
51d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    public String getSupportMessage() {
52d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet        return "PorterDuff Color Filters are not supported.";
53d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    }
54d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
55d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    // ---- native methods ----
56d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
579a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet    @LayoutlibDelegate
58d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    /*package*/ static int native_CreatePorterDuffFilter(int srcColor, int porterDuffMode) {
59d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet        PorterDuffColorFilter_Delegate newDelegate = new PorterDuffColorFilter_Delegate();
60cc4977d0fdaf657907912fd6cc2f9426dc8d2e36Xavier Ducrohet        return sManager.addNewDelegate(newDelegate);
61d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    }
62d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
639a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet    @LayoutlibDelegate
64d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    /*package*/ static int nCreatePorterDuffFilter(int nativeFilter, int srcColor,
65d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet            int porterDuffMode) {
66d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet        // pass
67d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet        return 0;
68d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    }
69d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet
70d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet    // ---- Private delegate/helper methods ----
71d43909c7503e11eb335a452d296a10804bb01fd6Xavier Ducrohet}
72