1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.ide.common.rendering.api; 18 19import com.android.resources.Density; 20import com.android.resources.ScreenSize; 21 22/** 23 * Base class for rendering parameters. This include the generic parameters but not what needs 24 * to be rendered or additional parameters. 25 * 26 */ 27public abstract class RenderParams { 28 29 public final static long DEFAULT_TIMEOUT = 250; //ms 30 31 private final Object mProjectKey; 32 private final int mScreenWidth; 33 private final int mScreenHeight; 34 private final Density mDensity; 35 private final float mXdpi; 36 private final float mYdpi; 37 private final RenderResources mRenderResources; 38 private final IProjectCallback mProjectCallback; 39 private final int mMinSdkVersion; 40 private final int mTargetSdkVersion; 41 private final LayoutLog mLog; 42 43 private boolean mCustomBackgroundEnabled; 44 private int mCustomBackgroundColor; 45 private long mTimeout; 46 47 private IImageFactory mImageFactory = null; 48 49 private ScreenSize mConfigScreenSize = null; 50 private String mAppIcon = null; 51 private String mAppLabel = null; 52 private String mLocale = null; 53 private boolean mForceNoDecor; 54 55 /** 56 * 57 * @param projectKey An Object identifying the project. This is used for the cache mechanism. 58 * @param screenWidth the screen width 59 * @param screenHeight the screen height 60 * @param density the density factor for the screen. 61 * @param xdpi the screen actual dpi in X 62 * @param ydpi the screen actual dpi in Y 63 * @param themeName The name of the theme to use. 64 * @param isProjectTheme true if the theme is a project theme, false if it is a framework theme. 65 * @param projectResources the resources of the project. The map contains (String, map) pairs 66 * where the string is the type of the resource reference used in the layout file, and the 67 * map contains (String, {@link ResourceValue}) pairs where the key is the resource name, 68 * and the value is the resource value. 69 * @param frameworkResources the framework resources. The map contains (String, map) pairs 70 * where the string is the type of the resource reference used in the layout file, and the map 71 * contains (String, {@link ResourceValue}) pairs where the key is the resource name, and the 72 * value is the resource value. 73 * @param projectCallback The {@link IProjectCallback} object to get information from 74 * the project. 75 * @param minSdkVersion the minSdkVersion of the project 76 * @param targetSdkVersion the targetSdkVersion of the project 77 * @param log the object responsible for displaying warning/errors to the user. 78 */ 79 public RenderParams( 80 Object projectKey, 81 int screenWidth, int screenHeight, 82 Density density, float xdpi, float ydpi, 83 RenderResources renderResources, 84 IProjectCallback projectCallback, 85 int minSdkVersion, int targetSdkVersion, 86 LayoutLog log) { 87 mProjectKey = projectKey; 88 mScreenWidth = screenWidth; 89 mScreenHeight = screenHeight; 90 mDensity = density; 91 mXdpi = xdpi; 92 mYdpi = ydpi; 93 mRenderResources = renderResources; 94 mProjectCallback = projectCallback; 95 mMinSdkVersion = minSdkVersion; 96 mTargetSdkVersion = targetSdkVersion; 97 mLog = log; 98 mCustomBackgroundEnabled = false; 99 mTimeout = DEFAULT_TIMEOUT; 100 } 101 102 /** 103 * Copy constructor. 104 */ 105 public RenderParams(RenderParams params) { 106 mProjectKey = params.mProjectKey; 107 mScreenWidth = params.mScreenWidth; 108 mScreenHeight = params.mScreenHeight; 109 mDensity = params.mDensity; 110 mXdpi = params.mXdpi; 111 mYdpi = params.mYdpi; 112 mRenderResources = params.mRenderResources; 113 mProjectCallback = params.mProjectCallback; 114 mMinSdkVersion = params.mMinSdkVersion; 115 mTargetSdkVersion = params.mTargetSdkVersion; 116 mLog = params.mLog; 117 mCustomBackgroundEnabled = params.mCustomBackgroundEnabled; 118 mCustomBackgroundColor = params.mCustomBackgroundColor; 119 mTimeout = params.mTimeout; 120 mImageFactory = params.mImageFactory; 121 mConfigScreenSize = params.mConfigScreenSize; 122 mAppIcon = params.mAppIcon; 123 mAppLabel = params.mAppLabel; 124 mLocale = params.mLocale; 125 mForceNoDecor = params.mForceNoDecor; 126 } 127 128 public void setOverrideBgColor(int color) { 129 mCustomBackgroundEnabled = true; 130 mCustomBackgroundColor = color; 131 } 132 133 public void setTimeout(long timeout) { 134 mTimeout = timeout; 135 } 136 137 public void setImageFactory(IImageFactory imageFactory) { 138 mImageFactory = imageFactory; 139 } 140 141 public void setConfigScreenSize(ScreenSize size) { 142 mConfigScreenSize = size; 143 } 144 145 public void setAppIcon(String appIcon) { 146 mAppIcon = appIcon; 147 } 148 149 public void setAppLabel(String appLabel) { 150 mAppLabel = appLabel; 151 } 152 153 public void setLocale(String locale) { 154 mLocale = locale; 155 } 156 157 public void setForceNoDecor() { 158 mForceNoDecor = true; 159 } 160 161 public Object getProjectKey() { 162 return mProjectKey; 163 } 164 165 public int getMinSdkVersion() { 166 return mMinSdkVersion; 167 } 168 169 public int getTargetSdkVersion() { 170 return mTargetSdkVersion; 171 } 172 173 public int getScreenWidth() { 174 return mScreenWidth; 175 } 176 177 public int getScreenHeight() { 178 return mScreenHeight; 179 } 180 181 public Density getDensity() { 182 return mDensity; 183 } 184 185 public float getXdpi() { 186 return mXdpi; 187 } 188 189 public float getYdpi() { 190 return mYdpi; 191 } 192 193 public RenderResources getResources() { 194 return mRenderResources; 195 } 196 197 public IProjectCallback getProjectCallback() { 198 return mProjectCallback; 199 } 200 201 public LayoutLog getLog() { 202 return mLog; 203 } 204 205 public boolean isBgColorOverridden() { 206 return mCustomBackgroundEnabled; 207 } 208 209 public int getOverrideBgColor() { 210 return mCustomBackgroundColor; 211 } 212 213 public long getTimeout() { 214 return mTimeout; 215 } 216 217 public IImageFactory getImageFactory() { 218 return mImageFactory; 219 } 220 221 public ScreenSize getConfigScreenSize() { 222 return mConfigScreenSize; 223 } 224 225 public String getAppIcon() { 226 return mAppIcon; 227 } 228 229 public String getAppLabel() { 230 return mAppLabel; 231 } 232 233 public String getLocale() { 234 return mLocale; 235 } 236 237 public boolean isForceNoDecor() { 238 return mForceNoDecor; 239 } 240} 241