19b34676d5d341622e42608af2987724f691e569bDiego Perez/* 29b34676d5d341622e42608af2987724f691e569bDiego Perez * Copyright (C) 2016 The Android Open Source Project 39b34676d5d341622e42608af2987724f691e569bDiego Perez * 49b34676d5d341622e42608af2987724f691e569bDiego Perez * Licensed under the Apache License, Version 2.0 (the "License"); 59b34676d5d341622e42608af2987724f691e569bDiego Perez * you may not use this file except in compliance with the License. 69b34676d5d341622e42608af2987724f691e569bDiego Perez * You may obtain a copy of the License at 79b34676d5d341622e42608af2987724f691e569bDiego Perez * 89b34676d5d341622e42608af2987724f691e569bDiego Perez * http://www.apache.org/licenses/LICENSE-2.0 99b34676d5d341622e42608af2987724f691e569bDiego Perez * 109b34676d5d341622e42608af2987724f691e569bDiego Perez * Unless required by applicable law or agreed to in writing, software 119b34676d5d341622e42608af2987724f691e569bDiego Perez * distributed under the License is distributed on an "AS IS" BASIS, 129b34676d5d341622e42608af2987724f691e569bDiego Perez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139b34676d5d341622e42608af2987724f691e569bDiego Perez * See the License for the specific language governing permissions and 149b34676d5d341622e42608af2987724f691e569bDiego Perez * limitations under the License. 159b34676d5d341622e42608af2987724f691e569bDiego Perez */ 169b34676d5d341622e42608af2987724f691e569bDiego Perez 179b34676d5d341622e42608af2987724f691e569bDiego Perezpackage com.android.layoutlib.bridge;import com.android.ide.common.rendering.api.RenderSession; 189b34676d5d341622e42608af2987724f691e569bDiego Perezimport com.android.ide.common.rendering.api.Result; 199b34676d5d341622e42608af2987724f691e569bDiego Perezimport com.android.ide.common.rendering.api.Result.Status; 209b34676d5d341622e42608af2987724f691e569bDiego Perezimport com.android.ide.common.rendering.api.SessionParams; 219b34676d5d341622e42608af2987724f691e569bDiego Perez 229b34676d5d341622e42608af2987724f691e569bDiego Perezimport java.awt.Graphics2D; 239b34676d5d341622e42608af2987724f691e569bDiego Perezimport java.awt.image.BufferedImage; 249b34676d5d341622e42608af2987724f691e569bDiego Perez 259b34676d5d341622e42608af2987724f691e569bDiego Perez/** 269b34676d5d341622e42608af2987724f691e569bDiego Perez * Legacy Bridge used in the SDK version of layoutlib 279b34676d5d341622e42608af2987724f691e569bDiego Perez */ 289b34676d5d341622e42608af2987724f691e569bDiego Perezpublic final class Bridge extends com.android.ide.common.rendering.api.Bridge { 299b34676d5d341622e42608af2987724f691e569bDiego Perez private static final String SDK_NOT_SUPPORTED = "The SDK layoutlib version is not supported"; 309b34676d5d341622e42608af2987724f691e569bDiego Perez private static final Result NOT_SUPPORTED_RESULT = 319b34676d5d341622e42608af2987724f691e569bDiego Perez Status.NOT_IMPLEMENTED.createResult(SDK_NOT_SUPPORTED); 329b34676d5d341622e42608af2987724f691e569bDiego Perez private static BufferedImage sImage; 339b34676d5d341622e42608af2987724f691e569bDiego Perez 349b34676d5d341622e42608af2987724f691e569bDiego Perez private static class BridgeRenderSession extends RenderSession { 359b34676d5d341622e42608af2987724f691e569bDiego Perez 369b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 379b34676d5d341622e42608af2987724f691e569bDiego Perez public synchronized BufferedImage getImage() { 389b34676d5d341622e42608af2987724f691e569bDiego Perez if (sImage == null) { 399b34676d5d341622e42608af2987724f691e569bDiego Perez sImage = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB); 409b34676d5d341622e42608af2987724f691e569bDiego Perez Graphics2D g = sImage.createGraphics(); 419b34676d5d341622e42608af2987724f691e569bDiego Perez g.clearRect(0, 0, 500, 500); 429b34676d5d341622e42608af2987724f691e569bDiego Perez g.drawString(SDK_NOT_SUPPORTED, 20, 20); 439b34676d5d341622e42608af2987724f691e569bDiego Perez g.dispose(); 449b34676d5d341622e42608af2987724f691e569bDiego Perez } 459b34676d5d341622e42608af2987724f691e569bDiego Perez 469b34676d5d341622e42608af2987724f691e569bDiego Perez return sImage; 479b34676d5d341622e42608af2987724f691e569bDiego Perez } 489b34676d5d341622e42608af2987724f691e569bDiego Perez 499b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 509b34676d5d341622e42608af2987724f691e569bDiego Perez public Result render(long timeout, boolean forceMeasure) { 519b34676d5d341622e42608af2987724f691e569bDiego Perez return NOT_SUPPORTED_RESULT; 529b34676d5d341622e42608af2987724f691e569bDiego Perez } 539b34676d5d341622e42608af2987724f691e569bDiego Perez 549b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 559b34676d5d341622e42608af2987724f691e569bDiego Perez public Result measure(long timeout) { 569b34676d5d341622e42608af2987724f691e569bDiego Perez return NOT_SUPPORTED_RESULT; 579b34676d5d341622e42608af2987724f691e569bDiego Perez } 589b34676d5d341622e42608af2987724f691e569bDiego Perez 599b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 609b34676d5d341622e42608af2987724f691e569bDiego Perez public Result getResult() { 619b34676d5d341622e42608af2987724f691e569bDiego Perez return NOT_SUPPORTED_RESULT; 629b34676d5d341622e42608af2987724f691e569bDiego Perez } 639b34676d5d341622e42608af2987724f691e569bDiego Perez } 649b34676d5d341622e42608af2987724f691e569bDiego Perez 659b34676d5d341622e42608af2987724f691e569bDiego Perez 669b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 679b34676d5d341622e42608af2987724f691e569bDiego Perez public RenderSession createSession(SessionParams params) { 689b34676d5d341622e42608af2987724f691e569bDiego Perez return new BridgeRenderSession(); 699b34676d5d341622e42608af2987724f691e569bDiego Perez } 709b34676d5d341622e42608af2987724f691e569bDiego Perez 719b34676d5d341622e42608af2987724f691e569bDiego Perez @Override 729b34676d5d341622e42608af2987724f691e569bDiego Perez public int getApiLevel() { 739b34676d5d341622e42608af2987724f691e569bDiego Perez return 0; 749b34676d5d341622e42608af2987724f691e569bDiego Perez } 759b34676d5d341622e42608af2987724f691e569bDiego Perez} 76