60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
// Licensed under the MIT License.
|
||
|
|
||
|
#ifndef IK4AIMAGECONVERTER_H
|
||
|
#define IK4AIMAGECONVERTER_H
|
||
|
|
||
|
// System headers
|
||
|
//
|
||
|
#include <memory>
|
||
|
#include <vector>
|
||
|
|
||
|
// Library headers
|
||
|
//
|
||
|
#include <k4a/k4a.hpp>
|
||
|
|
||
|
// Project headers
|
||
|
//
|
||
|
#include "k4aviewerimage.h"
|
||
|
|
||
|
namespace k4aviewer
|
||
|
{
|
||
|
enum class ImageConversionResult
|
||
|
{
|
||
|
Success,
|
||
|
OpenGLError,
|
||
|
InvalidBufferSizeError,
|
||
|
InvalidImageDataError,
|
||
|
NoDataError
|
||
|
};
|
||
|
|
||
|
inline ImageConversionResult GLEnumToImageConversionResult(GLenum error)
|
||
|
{
|
||
|
return error == GL_NO_ERROR ? ImageConversionResult::Success : ImageConversionResult::OpenGLError;
|
||
|
}
|
||
|
|
||
|
template<k4a_image_format_t ImageFormat> class IK4AImageConverter
|
||
|
{
|
||
|
public:
|
||
|
// Gets the dimensions in pixels of images that this converter expects to receive and produce
|
||
|
//
|
||
|
virtual ImageDimensions GetImageDimensions() const = 0;
|
||
|
|
||
|
// Converts srcImage into a BGRA32-formatted image and stores the result in bgraImage.
|
||
|
// bgraImage must already be allocated and must be an image with the same dimensions that
|
||
|
// GetImageDimensions() returns.
|
||
|
//
|
||
|
virtual ImageConversionResult ConvertImage(const k4a::image &srcImage, k4a::image *bgraImage) = 0;
|
||
|
|
||
|
virtual ~IK4AImageConverter() = default;
|
||
|
|
||
|
IK4AImageConverter() = default;
|
||
|
IK4AImageConverter(const IK4AImageConverter &) = delete;
|
||
|
IK4AImageConverter(const IK4AImageConverter &&) = delete;
|
||
|
IK4AImageConverter &operator=(const IK4AImageConverter &) = delete;
|
||
|
IK4AImageConverter &operator=(const IK4AImageConverter &&) = delete;
|
||
|
};
|
||
|
} // namespace k4aviewer
|
||
|
|
||
|
#endif
|