C
Qt Quick Ultralite traveo_t2g_effects Example
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "cygfx.h"
#include <platforminterface/log.h>
namespace CyGfx {
CYGFX_SM_FORMAT convertFormat(Qul::PixelFormat format)
{
CYGFX_SM_FORMAT result = CYGFX_SM_FORMAT_A8R8G8B8;
switch (format) {
case Qul::PixelFormat_ARGB32:
case Qul::PixelFormat_ARGB32_Premultiplied:
result = CYGFX_SM_FORMAT_A8R8G8B8;
break;
case Qul::PixelFormat_RGB32:
result = CYGFX_SM_FORMAT_X8R8G8B8;
break;
case Qul::PixelFormat_RGB888:
result = CYGFX_SM_FORMAT_R8G8B8;
break;
case Qul::PixelFormat_RGB16:
result = CYGFX_SM_FORMAT_R5G6B5;
break;
case Qul::PixelFormat_Alpha8:
result = CYGFX_SM_FORMAT_A8;
break;
default:
Qul::PlatformInterface::log("[%s] Unsupported Format! (%d)\n\r", __PRETTY_FUNCTION__, format);
}
return result;
}
void loadSurface(CSurface<1> *surface, const Qul::PlatformInterface::Texture &texture)
{
CYGFX_ERROR ret = CYGFX_OK;
if (texture.format() >= Qul::PixelFormat_Custom) {
UTIL_SUCCESS(ret, surface->SurfLoadBitmap(texture.data(), false));
} else {
UTIL_SUCCESS(ret,
CyGfx_SmAssignBuffer(*surface,
texture.width(),
texture.height(),
convertFormat(texture.format()),
const_cast<unsigned char *>(texture.data()),
0));
UTIL_SUCCESS(ret, CyGfx_SmSetAttribute(*surface, CYGFX_SM_ATTR_STRIDE, texture.bytesPerLine()));
UTIL_SUCCESS(ret, CyGfx_SmSetAttribute(*surface, CYGFX_SM_ATTR_BITPERPIXEL, texture.bitsPerPixel()));
}
}
} // namespace CyGfx