Skip to content

Commit

Permalink
Use more concepts.
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrien4193 committed Apr 26, 2024
1 parent 22eeac5 commit 55741ee
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/brayns/core/rendering/Device.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

#pragma once

#include <concepts>
#include <memory>

#include <ospray/ospray_cpp.h>
Expand Down Expand Up @@ -50,63 +51,63 @@ class Device
Framebuffer createFramebuffer(const FramebufferSettings &settings);
RenderTask render(const RenderSettings &settings);

template<typename CameraType>
template<std::derived_from<Camera> CameraType>
CameraType createCamera()
{
const auto &name = CameraType::name;
auto handle = ospNewCamera(name.c_str());
return CameraType(handle);
}

template<typename ImageOperationType>
template<std::derived_from<ImageOperation> ImageOperationType>
ImageOperationType createImageOperation()
{
const auto &name = ImageOperationType::name;
auto handle = ospNewImageOperation(name.c_str());
return ImageOperationType(handle);
}

template<typename GeometryType>
template<std::derived_from<Geometry> GeometryType>
GeometryType createGeometry()
{
const auto &name = GeometryType::name;
auto handle = ospNewGeometry(name.c_str());
return GeometryType(handle);
}

template<typename LightType>
template<std::derived_from<Light> LightType>
LightType createLight()
{
const auto &name = LightType::name;
auto handle = ospNewLight(name.c_str());
return LightType(handle);
}

template<typename MaterialType>
template<std::derived_from<Material> MaterialType>
MaterialType createMaterial()
{
const auto &name = MaterialType::name;
auto handle = ospNewMaterial(name.c_str());
return MaterialType(handle);
}

template<typename RendererType>
template<std::derived_from<Renderer> RendererType>
RendererType createRenderer()
{
const auto &name = RendererType::name;
auto handle = ospNewRenderer(name.c_str());
return RendererType(handle);
}

template<typename TransferFunctionType>
template<std::derived_from<TransferFunction> TransferFunctionType>
TransferFunctionType createTransferFunction()
{
const auto &name = TransferFunctionType::name;
auto handle = ospNewTransferFunction(name.c_str());
return TransferFunctionType(handle);
}

template<typename VolumeType>
template<std::derived_from<Volume> VolumeType>
VolumeType createVolume()
{
const auto &name = VolumeType::name;
Expand Down

0 comments on commit 55741ee

Please sign in to comment.