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