com.android.ide.common.rendering.api.RenderParams Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of layoutlib-api Show documentation
Show all versions of layoutlib-api Show documentation
Library to use the rendering library for Android layouts: layoutlib
/*
* 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.ide.common.rendering.api.SessionParams.Key;
import com.android.resources.Density;
import com.android.resources.ScreenSize;
import java.util.HashMap;
import java.util.Map;
/**
* 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 static final long DEFAULT_TIMEOUT = 250; //ms
private final Object mProjectKey;
private final HardwareConfig mHardwareConfig;
private final RenderResources mRenderResources;
private final LayoutlibCallback mLayoutlibCallback;
private final int mMinSdkVersion;
private final int mTargetSdkVersion;
private final LayoutLog mLog;
private boolean mCustomBackgroundEnabled;
private int mCustomBackgroundColor;
private long mTimeout;
private AssetRepository mAssetRepository;
private IImageFactory mImageFactory;
private String mAppIcon;
private String mAppLabel;
private String mLocale;
private String mActivityName;
private boolean mForceNoDecor;
private boolean mSupportsRtl;
/**
* A flexible map to pass additional flags to LayoutLib. LayoutLib will ignore flags that it
* doesn't recognize.
*/
private Map mFlags;
/**
* @param projectKey An Object identifying the project. This is used for the cache mechanism.
* @param hardwareConfig the {@link HardwareConfig}.
* @param renderResources a {@link RenderResources} object providing access to the resources.
* @param layoutlibCallback The {@link LayoutlibCallback} 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,
HardwareConfig hardwareConfig,
RenderResources renderResources,
LayoutlibCallback layoutlibCallback,
int minSdkVersion, int targetSdkVersion,
LayoutLog log) {
mProjectKey = projectKey;
mHardwareConfig = hardwareConfig;
mRenderResources = renderResources;
mLayoutlibCallback = layoutlibCallback;
mMinSdkVersion = minSdkVersion;
mTargetSdkVersion = targetSdkVersion;
mLog = log;
mCustomBackgroundEnabled = false;
mTimeout = DEFAULT_TIMEOUT;
}
/**
* Copy constructor.
*/
public RenderParams(RenderParams params) {
mProjectKey = params.mProjectKey;
mHardwareConfig = params.mHardwareConfig;
mRenderResources = params.mRenderResources;
mAssetRepository = params.mAssetRepository;
mLayoutlibCallback = params.mLayoutlibCallback;
mMinSdkVersion = params.mMinSdkVersion;
mTargetSdkVersion = params.mTargetSdkVersion;
mLog = params.mLog;
mCustomBackgroundEnabled = params.mCustomBackgroundEnabled;
mCustomBackgroundColor = params.mCustomBackgroundColor;
mTimeout = params.mTimeout;
mImageFactory = params.mImageFactory;
mAppIcon = params.mAppIcon;
mAppLabel = params.mAppLabel;
mLocale = params.mLocale;
mActivityName = params.mActivityName;
mForceNoDecor = params.mForceNoDecor;
mSupportsRtl = params.mSupportsRtl;
if (params.mFlags != null) {
mFlags = new HashMap(params.mFlags);
}
}
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 setAppIcon(String appIcon) {
mAppIcon = appIcon;
}
public void setAppLabel(String appLabel) {
mAppLabel = appLabel;
}
public void setLocale(String locale) {
mLocale = locale;
}
public void setActivityName(String activityName) {
mActivityName = activityName;
}
public void setForceNoDecor() {
mForceNoDecor = true;
}
public void setRtlSupport(boolean supportsRtl) {
mSupportsRtl = supportsRtl;
}
public void setAssetRepository(AssetRepository assetRepository) {
mAssetRepository = assetRepository;
}
public Object getProjectKey() {
return mProjectKey;
}
public HardwareConfig getHardwareConfig() {
return mHardwareConfig;
}
public int getMinSdkVersion() {
return mMinSdkVersion;
}
public int getTargetSdkVersion() {
return mTargetSdkVersion;
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public int getScreenWidth() {
return mHardwareConfig.getScreenWidth();
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public int getScreenHeight() {
return mHardwareConfig.getScreenHeight();
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public Density getDensity() {
return mHardwareConfig.getDensity();
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public float getXdpi() {
return mHardwareConfig.getXdpi();
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public float getYdpi() {
return mHardwareConfig.getYdpi();
}
public RenderResources getResources() {
return mRenderResources;
}
public AssetRepository getAssets() {
return mAssetRepository;
}
/** @deprecated use {@link #getLayoutlibCallback()} */
@Deprecated
public IProjectCallback getProjectCallback() {
return getLayoutlibCallback();
}
public LayoutlibCallback getLayoutlibCallback() {
return mLayoutlibCallback;
}
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;
}
/**
* @deprecated Use {@link #getHardwareConfig()}
*/
@Deprecated
public ScreenSize getConfigScreenSize() {
return mHardwareConfig.getScreenSize();
}
public String getAppIcon() {
return mAppIcon;
}
public String getAppLabel() {
return mAppLabel;
}
public String getLocale() {
return mLocale;
}
public String getActivityName() {
return mActivityName;
}
public boolean isForceNoDecor() {
return mForceNoDecor;
}
public boolean isRtlSupported() {
return mSupportsRtl;
}
public void setFlag(Key key, T value) {
if (mFlags == null) {
mFlags = new HashMap();
}
mFlags.put(key, value);
}
public T getFlag(Key key) {
// noinspection since the values in the map can be added only by setFlag which ensures that
// the types match.
//noinspection unchecked
return mFlags == null ? null : (T) mFlags.get(key);
}
}