1e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet/*
2e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * Copyright (C) 2011 The Android Open Source Project
3e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet *
4e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License");
5e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * you may not use this file except in compliance with the License.
6e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * You may obtain a copy of the License at
7e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet *
8e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet *      http://www.apache.org/licenses/LICENSE-2.0
9e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet *
10e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software
11e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS,
12e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * See the License for the specific language governing permissions and
14e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * limitations under the License.
15e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet */
16e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
17e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohetpackage com.android.ide.common.rendering.api;
18e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
19e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohetimport com.android.resources.Density;
20e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
21e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet/**
22e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet * Rendering parameters for {@link Bridge#renderDrawable(DrawableParams)}
23e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet *
24e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet */
25e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohetpublic class DrawableParams extends RenderParams {
26e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
27e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    private final ResourceValue mDrawable;
28e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
29e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    /**
30e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * Builds a param object with all the necessary parameters to render a drawable with
31e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * {@link Bridge#renderDrawable(DrawableParams)}
32e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    *
33e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param drawable the {@link ResourceValue} identifying the drawable.
34e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param projectKey An Object identifying the project. This is used for the cache mechanism.
35e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param screenWidth the screen width
36e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param screenHeight the screen height
37e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param density the density factor for the screen.
38e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param xdpi the screen actual dpi in X
39e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param ydpi the screen actual dpi in Y
40e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param themeName The name of the theme to use.
41e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param isProjectTheme true if the theme is a project theme, false if it is a framework theme.
42e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param projectResources the resources of the project. The map contains (String, map) pairs
43e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * where the string is the type of the resource reference used in the layout file, and the
44e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * map contains (String, {@link ResourceValue}) pairs where the key is the resource name,
45e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * and the value is the resource value.
46e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param frameworkResources the framework resources. The map contains (String, map) pairs
47e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * where the string is the type of the resource reference used in the layout file, and the map
48e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * contains (String, {@link ResourceValue}) pairs where the key is the resource name, and the
49e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * value is the resource value.
50e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param projectCallback The {@link IProjectCallback} object to get information from
51e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * the project.
52e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param minSdkVersion the minSdkVersion of the project
53e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param targetSdkVersion the targetSdkVersion of the project
54e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    * @param log the object responsible for displaying warning/errors to the user.
55e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    */
56e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    public DrawableParams(
57e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            ResourceValue drawable,
58e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            Object projectKey,
59e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            int screenWidth, int screenHeight,
60e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            Density density, float xdpi, float ydpi,
61e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            RenderResources renderResources,
62e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            IProjectCallback projectCallback,
63e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            int minSdkVersion, int targetSdkVersion,
64e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet            LayoutLog log) {
65e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet        super(projectKey, screenWidth, screenHeight, density, xdpi, ydpi,
66e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet                renderResources, projectCallback, minSdkVersion, targetSdkVersion, log);
67e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet        mDrawable = drawable;
68e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    }
69e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
70e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    public DrawableParams(DrawableParams params) {
71e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet        super(params);
72e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet        mDrawable = params.mDrawable;
73e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    }
74e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet
75e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    public ResourceValue getDrawable() {
76e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet        return mDrawable;
77e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet    }
78e25af9f721bcc89d73c8e56adc9d02a6bcfac1c6Xavier Ducrohet}
79