/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ide.common.rendering.api; import com.android.resources.Density; import com.android.resources.ScreenSize; /** * Base class for rendering parameters. This include the generic parameters but not what needs * to be rendered or additional parameters. * */ public abstract class RenderParams { public final static long DEFAULT_TIMEOUT = 250; //ms private final Object mProjectKey; private final int mScreenWidth; private final int mScreenHeight; private final Density mDensity; private final float mXdpi; private final float mYdpi; private final RenderResources mRenderResources; private final IProjectCallback mProjectCallback; private final int mMinSdkVersion; private final int mTargetSdkVersion; private final LayoutLog mLog; private boolean mCustomBackgroundEnabled; private int mCustomBackgroundColor; private long mTimeout; private IImageFactory mImageFactory = null; private ScreenSize mConfigScreenSize = null; private String mAppIcon = null; private String mAppLabel = null; private String mLocale = null; private boolean mForceNoDecor; /** * * @param projectKey An Object identifying the project. This is used for the cache mechanism. * @param screenWidth the screen width * @param screenHeight the screen height * @param density the density factor for the screen. * @param xdpi the screen actual dpi in X * @param ydpi the screen actual dpi in Y * @param themeName The name of the theme to use. * @param isProjectTheme true if the theme is a project theme, false if it is a framework theme. * @param projectResources the resources of the project. The map contains (String, map) pairs * where the string is the type of the resource reference used in the layout file, and the * map contains (String, {@link ResourceValue}) pairs where the key is the resource name, * and the value is the resource value. * @param frameworkResources the framework resources. The map contains (String, map) pairs * where the string is the type of the resource reference used in the layout file, and the map * contains (String, {@link ResourceValue}) pairs where the key is the resource name, and the * value is the resource value. * @param projectCallback The {@link IProjectCallback} object to get information from * the project. * @param minSdkVersion the minSdkVersion of the project * @param targetSdkVersion the targetSdkVersion of the project * @param log the object responsible for displaying warning/errors to the user. */ public RenderParams( Object projectKey, int screenWidth, int screenHeight, Density density, float xdpi, float ydpi, RenderResources renderResources, IProjectCallback projectCallback, int minSdkVersion, int targetSdkVersion, LayoutLog log) { mProjectKey = projectKey; mScreenWidth = screenWidth; mScreenHeight = screenHeight; mDensity = density; mXdpi = xdpi; mYdpi = ydpi; mRenderResources = renderResources; mProjectCallback = projectCallback; mMinSdkVersion = minSdkVersion; mTargetSdkVersion = targetSdkVersion; mLog = log; mCustomBackgroundEnabled = false; mTimeout = DEFAULT_TIMEOUT; } /** * Copy constructor. */ public RenderParams(RenderParams params) { mProjectKey = params.mProjectKey; mScreenWidth = params.mScreenWidth; mScreenHeight = params.mScreenHeight; mDensity = params.mDensity; mXdpi = params.mXdpi; mYdpi = params.mYdpi; mRenderResources = params.mRenderResources; mProjectCallback = params.mProjectCallback; mMinSdkVersion = params.mMinSdkVersion; mTargetSdkVersion = params.mTargetSdkVersion; mLog = params.mLog; mCustomBackgroundEnabled = params.mCustomBackgroundEnabled; mCustomBackgroundColor = params.mCustomBackgroundColor; mTimeout = params.mTimeout; mImageFactory = params.mImageFactory; mConfigScreenSize = params.mConfigScreenSize; mAppIcon = params.mAppIcon; mAppLabel = params.mAppLabel; mLocale = params.mLocale; mForceNoDecor = params.mForceNoDecor; } public void setOverrideBgColor(int color) { mCustomBackgroundEnabled = true; mCustomBackgroundColor = color; } public void setTimeout(long timeout) { mTimeout = timeout; } public void setImageFactory(IImageFactory imageFactory) { mImageFactory = imageFactory; } public void setConfigScreenSize(ScreenSize size) { mConfigScreenSize = size; } public void setAppIcon(String appIcon) { mAppIcon = appIcon; } public void setAppLabel(String appLabel) { mAppLabel = appLabel; } public void setLocale(String locale) { mLocale = locale; } public void setForceNoDecor() { mForceNoDecor = true; } public Object getProjectKey() { return mProjectKey; } public int getMinSdkVersion() { return mMinSdkVersion; } public int getTargetSdkVersion() { return mTargetSdkVersion; } public int getScreenWidth() { return mScreenWidth; } public int getScreenHeight() { return mScreenHeight; } public Density getDensity() { return mDensity; } public float getXdpi() { return mXdpi; } public float getYdpi() { return mYdpi; } public RenderResources getResources() { return mRenderResources; } public IProjectCallback getProjectCallback() { return mProjectCallback; } public LayoutLog getLog() { return mLog; } public boolean isBgColorOverridden() { return mCustomBackgroundEnabled; } public int getOverrideBgColor() { return mCustomBackgroundColor; } public long getTimeout() { return mTimeout; } public IImageFactory getImageFactory() { return mImageFactory; } public ScreenSize getConfigScreenSize() { return mConfigScreenSize; } public String getAppIcon() { return mAppIcon; } public String getAppLabel() { return mAppLabel; } public String getLocale() { return mLocale; } public boolean isForceNoDecor() { return mForceNoDecor; } }