1d15459197f71f8cc940e2b057b399117df282f2cDiego Perez/*
2d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Copyright (C) 2016 The Android Open Source Project
3d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
4d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Licensed under the Apache License, Version 2.0 (the "License");
5d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * you may not use this file except in compliance with the License.
6d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * You may obtain a copy of the License at
7d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
8d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *      http://www.apache.org/licenses/LICENSE-2.0
9d15459197f71f8cc940e2b057b399117df282f2cDiego Perez *
10d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * Unless required by applicable law or agreed to in writing, software
11d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * distributed under the License is distributed on an "AS IS" BASIS,
12d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * See the License for the specific language governing permissions and
14d15459197f71f8cc940e2b057b399117df282f2cDiego Perez * limitations under the License.
15d15459197f71f8cc940e2b057b399117df282f2cDiego Perez */
16d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
17d15459197f71f8cc940e2b057b399117df282f2cDiego Perezpackage com.android.layoutlib.bridge.intensive;
18d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
19d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.RenderSession;
20d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.Result;
21d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport com.android.ide.common.rendering.api.ViewInfo;
22d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
23d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport android.annotation.NonNull;
24d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport android.annotation.Nullable;
25d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
268a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perezimport java.awt.image.BufferedImage;
27d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.ArrayList;
28d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.Collections;
29d15459197f71f8cc940e2b057b399117df282f2cDiego Perezimport java.util.List;
30d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
31d15459197f71f8cc940e2b057b399117df282f2cDiego Perezclass RenderResult {
32d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final List<ViewInfo> mRootViews;
33d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final List<ViewInfo> mSystemViews;
34d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private final Result mRenderResult;
358a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez    private BufferedImage mImage;
36d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
37d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    private RenderResult(@Nullable Result result, @Nullable List<ViewInfo> systemViewInfoList,
388a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez            @Nullable List<ViewInfo> rootViewInfoList, @Nullable BufferedImage image) {
39d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mSystemViews = systemViewInfoList == null ? Collections.emptyList() : systemViewInfoList;
40d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mRootViews = rootViewInfoList == null ? Collections.emptyList() : rootViewInfoList;
41d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        mRenderResult = result;
428a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez        mImage = image;
43d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
44d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
45d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
46d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    static RenderResult getFromSession(@NonNull RenderSession session) {
47d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return new RenderResult(session.getResult(),
48d15459197f71f8cc940e2b057b399117df282f2cDiego Perez                new ArrayList<>(session.getSystemRootViews()),
498a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez                new ArrayList<>(session.getRootViews()),
508a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez                session.getImage());
51d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
52d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
53d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @Nullable
54d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    Result getResult() {
55d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mRenderResult;
56d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
57d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
58d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
59d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    public List<ViewInfo> getRootViews() {
60d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mRootViews;
61d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
62d15459197f71f8cc940e2b057b399117df282f2cDiego Perez
63d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    @NonNull
64d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    public List<ViewInfo> getSystemViews() {
65d15459197f71f8cc940e2b057b399117df282f2cDiego Perez        return mSystemViews;
66d15459197f71f8cc940e2b057b399117df282f2cDiego Perez    }
678a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez
688a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez    @Nullable
698a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez    public BufferedImage getImage() {
708a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez        return mImage;
718a7546e1fcb0f4161e6068d326253b5bfd390c4cDiego Perez    }
72d15459197f71f8cc940e2b057b399117df282f2cDiego Perez}
73