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