From cfdba551859bf3d5506979e5cf9a0c1ed6cd75b8 Mon Sep 17 00:00:00 2001 From: Thomas Tissot Date: Mon, 8 Jun 2020 10:53:59 +0200 Subject: Moved ImGuiImplDiligent_Internal into separate compilation unit --- Imgui/interface/ImGuiDiligentRenderer.hpp | 89 +++++++++++++++++++++++++++++++ Imgui/interface/ImGuiImplDiligent.hpp | 24 ++++----- 2 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 Imgui/interface/ImGuiDiligentRenderer.hpp (limited to 'Imgui/interface') diff --git a/Imgui/interface/ImGuiDiligentRenderer.hpp b/Imgui/interface/ImGuiDiligentRenderer.hpp new file mode 100644 index 0000000..5d19478 --- /dev/null +++ b/Imgui/interface/ImGuiDiligentRenderer.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 2019-2020 Diligent Graphics LLC + * Copyright 2015-2019 Egor Yusov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * In no event and under no legal theory, whether in tort (including negligence), + * contract, or otherwise, unless required by applicable law (such as deliberate + * and grossly negligent acts) or agreed to in writing, shall any Contributor be + * liable for any damages, including any direct, indirect, special, incidental, + * or consequential damages of any character arising as a result of this License or + * out of the use or inability to use the software (including but not limited to damages + * for loss of goodwill, work stoppage, computer failure or malfunction, or any and + * all other commercial damages or losses), even if such Contributor has been advised + * of the possibility of such damages. + */ + +#pragma once + +#include +#include "../../../DiligentCore/Primitives/interface/BasicTypes.h" +#include "../../../DiligentCore/Common/interface/BasicMath.hpp" +#include "../../../DiligentCore/Common/interface/RefCntAutoPtr.hpp" +#include "../../../DiligentCore/Graphics/GraphicsEngine/interface/GraphicsTypes.h" +#include "imgui.h" + +struct ImDrawData; + +namespace Diligent +{ + +struct IRenderDevice; +struct IDeviceContext; +struct IBuffer; +struct IPipelineState; +struct ITextureView; +struct IShaderResourceBinding; +enum TEXTURE_FORMAT : Uint16; +enum SURFACE_TRANSFORM : Uint32; + +class ImGuiDiligentRenderer +{ +public: + ImGuiDiligentRenderer(IRenderDevice* pDevice, + TEXTURE_FORMAT BackBufferFmt, + TEXTURE_FORMAT DepthBufferFmt, + Uint32 InitialVertexBufferSize, + Uint32 InitialIndexBufferSize); + ~ImGuiDiligentRenderer(); + void NewFrame(Uint32 RenderSurfaceWidth, + Uint32 RenderSurfaceHeight, + SURFACE_TRANSFORM SurfacePreTransform); + void EndFrame(); + void RenderDrawData(IDeviceContext* pCtx, ImDrawData* pDrawData); + void InvalidateDeviceObjects(); + void CreateDeviceObjects(); + void CreateFontsTexture(); + +private: + inline float4 TransformClipRect(const ImVec2& DisplaySize, const float4& rect) const; + +private: + RefCntAutoPtr m_pDevice; + RefCntAutoPtr m_pVB; + RefCntAutoPtr m_pIB; + RefCntAutoPtr m_pVertexConstantBuffer; + RefCntAutoPtr m_pPSO; + RefCntAutoPtr m_pFontSRV; + RefCntAutoPtr m_pSRB; + const TEXTURE_FORMAT m_BackBufferFmt; + const TEXTURE_FORMAT m_DepthBufferFmt; + Uint32 m_VertexBufferSize = 0; + Uint32 m_IndexBufferSize = 0; + Uint32 m_RenderSurfaceWidth = 0; + Uint32 m_RenderSurfaceHeight = 0; + SURFACE_TRANSFORM m_SurfacePreTransform = SURFACE_TRANSFORM_IDENTITY; +}; + +} // namespace Diligent diff --git a/Imgui/interface/ImGuiImplDiligent.hpp b/Imgui/interface/ImGuiImplDiligent.hpp index 5c9b62f..12078b0 100644 --- a/Imgui/interface/ImGuiImplDiligent.hpp +++ b/Imgui/interface/ImGuiImplDiligent.hpp @@ -1,27 +1,27 @@ /* * Copyright 2019-2020 Diligent Graphics LLC * Copyright 2015-2019 Egor Yusov - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * - * In no event and under no legal theory, whether in tort (including negligence), - * contract, or otherwise, unless required by applicable law (such as deliberate + * In no event and under no legal theory, whether in tort (including negligence), + * contract, or otherwise, unless required by applicable law (such as deliberate * and grossly negligent acts) or agreed to in writing, shall any Contributor be - * liable for any damages, including any direct, indirect, special, incidental, - * or consequential damages of any character arising as a result of this License or - * out of the use or inability to use the software (including but not limited to damages - * for loss of goodwill, work stoppage, computer failure or malfunction, or any and - * all other commercial damages or losses), even if such Contributor has been advised + * liable for any damages, including any direct, indirect, special, incidental, + * or consequential damages of any character arising as a result of this License or + * out of the use or inability to use the software (including but not limited to damages + * for loss of goodwill, work stoppage, computer failure or malfunction, or any and + * all other commercial damages or losses), even if such Contributor has been advised * of the possibility of such damages. */ @@ -38,7 +38,7 @@ struct IDeviceContext; enum TEXTURE_FORMAT : Uint16; enum SURFACE_TRANSFORM : Uint32; -class ImGuiImplDiligent_Internal; +class ImGuiDiligentRenderer; class ImGuiImplDiligent { @@ -83,7 +83,7 @@ public: void UpdateFontsTexture(); private: - std::unique_ptr m_pImpl; + std::unique_ptr m_pRenderer; }; } // namespace Diligent -- cgit v1.2.3