1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef RENDER_SERVICE_BASE_DRAWING_RS_SURFACE_FRAME_H
17 #define RENDER_SERVICE_BASE_DRAWING_RS_SURFACE_FRAME_H
18 
19 #include <memory>
20 
21 #include "common/rs_rect.h"
22 #include "draw/canvas.h"
23 #include "draw/surface.h"
24 
25 namespace OHOS {
26 namespace Rosen {
27 class RenderContext;
28 class RSSurfaceFrame {
29 public:
30     RSSurfaceFrame() = default;
31     virtual ~RSSurfaceFrame() = default;
32 
SetDamageRegion(int32_t left,int32_t top,int32_t width,int32_t height)33     virtual void SetDamageRegion(int32_t left, int32_t top, int32_t width, int32_t height) {};
SetDamageRegion(const std::vector<RectI> & rects)34     virtual void SetDamageRegion(const std::vector<RectI> &rects) {};
35     virtual int32_t GetBufferAge() const = 0;
36     virtual Drawing::Canvas* GetCanvas() = 0;
37     virtual std::shared_ptr<Drawing::Surface> GetSurface() = 0;
38     virtual void SetRenderContext(RenderContext* context) = 0;
39 protected:
40     std::shared_ptr<Drawing::Surface> surface_ = nullptr;
41 private:
42 };
43 
44 } // namespace Rosen
45 } // namespace OHOS
46 
47 #endif // RENDER_SERVICE_BASE_DRAWING_RS_SURFACE_FRAME_H
48