1 /*
2  * Copyright (c) 2021-2023 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 WEBGL_RENDERBUFFER_H
17 #define WEBGL_RENDERBUFFER_H
18 
19 #include "napi/n_exporter.h"
20 #include "webgl_object.h"
21 
22 namespace OHOS {
23 namespace Rosen {
24 class WebGLRenderbuffer final : public NExporter, public WebGLObject {
25 public:
26     inline static const std::string className = "WebGLRenderbuffer";
27     inline static const int objectType = WEBGL_OBJECT_RENDER_BUFFER;
28     inline static const int DEFAULT_RENDER_BUFFER = 0;
29 
30     bool Export(napi_env env, napi_value exports) override;
31 
32     std::string GetClassName() override;
33 
34     static napi_value Constructor(napi_env env, napi_callback_info info);
CreateObjectInstance(napi_env env,WebGLRenderbuffer ** instance)35     static NVal CreateObjectInstance(napi_env env, WebGLRenderbuffer** instance)
36     {
37         return WebGLObject::CreateObjectInstance<WebGLRenderbuffer>(env, instance);
38     }
39 
SetRenderbuffer(uint32_t renderbuffer)40     void SetRenderbuffer(uint32_t renderbuffer)
41     {
42         renderbuffer_ = renderbuffer;
43     }
44 
GetRenderbuffer()45     uint32_t GetRenderbuffer() const
46     {
47         return renderbuffer_;
48     }
49 
WebGLRenderbuffer()50     explicit WebGLRenderbuffer() : renderbuffer_(0) {};
51 
WebGLRenderbuffer(napi_env env,napi_value exports)52     WebGLRenderbuffer(napi_env env, napi_value exports) : NExporter(env, exports), renderbuffer_(0) {};
53 
~WebGLRenderbuffer()54     ~WebGLRenderbuffer() {};
55 
GetTarget()56     GLenum GetTarget() const
57     {
58         return target_;
59     }
SetTarget(GLenum target)60     void SetTarget(GLenum target)
61     {
62         target_ = target;
63     }
64 
SetInternalFormat(GLenum internalFormat)65     void SetInternalFormat(GLenum internalFormat)
66     {
67         internalFormat_ = internalFormat;
68     }
GetInternalFormat()69     GLenum GetInternalFormat() const
70     {
71         return internalFormat_;
72     }
73 
SetSize(GLsizei width,GLsizei height)74     void SetSize(GLsizei width, GLsizei height)
75     {
76         width_ = width;
77         height_ = height;
78     }
GetWidth()79     GLsizei GetWidth() const
80     {
81         return width_;
82     }
GetHeight()83     GLsizei GetHeight() const
84     {
85         return height_;
86     }
87 private:
88     uint32_t renderbuffer_;
89     GLenum target_ { 0 };
90     GLenum internalFormat_ { GL_RGBA4 };
91     GLsizei width_ { 0 };
92     GLsizei height_ { 0 };
93 };
94 } // namespace Rosen
95 } // namespace OHOS
96 #endif // WEBGL_RENDERBUFFER_H
97