110dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck/*
210dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * Copyright (C) 2016 The Android Open Source Project
310dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck *
410dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * Licensed under the Apache License, Version 2.0 (the "License");
510dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * you may not use this file except in compliance with the License.
610dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * You may obtain a copy of the License at
710dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck *
810dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck *      http://www.apache.org/licenses/LICENSE-2.0
910dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck *
1010dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * Unless required by applicable law or agreed to in writing, software
1110dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * distributed under the License is distributed on an "AS IS" BASIS,
1210dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1310dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * See the License for the specific language governing permissions and
1410dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck * limitations under the License.
1510dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck */
1610dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
1710dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck#pragma once
1810dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
1910dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck#include "renderthread/RenderThread.h"
2010dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
2110dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck#include <SkBitmap.h>
2210dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck#include <gui/Surface.h>
2310dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
2410dd0585c11dcedb5a271d54e645594f1d215d5cJohn Recknamespace android {
2510dd0585c11dcedb5a271d54e645594f1d215d5cJohn Recknamespace uirenderer {
2610dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
27e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck// Keep in sync with PixelCopy.java codes
28e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reckenum class CopyResult {
29e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    Success = 0,
30e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    UnknownError = 1,
31e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    Timeout = 2,
32e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    SourceEmpty = 3,
33e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    SourceInvalid = 4,
34e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    DestinationInvalid = 5,
35e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck};
36e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck
3710dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reckclass Readback {
3810dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reckpublic:
39e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1John Reck    static CopyResult copySurfaceInto(renderthread::RenderThread& renderThread,
4010dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck            Surface& surface, SkBitmap* bitmap);
4110dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck};
4210dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck
4310dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck} // namespace uirenderer
4410dd0585c11dcedb5a271d54e645594f1d215d5cJohn Reck} // namespace android
45