devilutionX/Source/engine/render/common_impl.h
qndel 9ba64ad08b
TRN rewrite + bugfix (#4056)
* working new TRN system
* apply TRNs to all unique missiles
2022-02-20 14:28:51 +01:00

31 lines
726 B
C++

/**
* @file common_impl.h
*
* Common code for implementing various renderers.
*/
#pragma once
#include <cstddef>
#include <cstdint>
#include "engine.h"
#include "lighting.h"
namespace devilution {
struct ClipX {
std::int_fast16_t left;
std::int_fast16_t right;
std::int_fast16_t width;
};
inline ClipX CalculateClipX(std::int_fast16_t x, std::size_t w, const Surface &out)
{
ClipX clip;
clip.left = static_cast<std::int_fast16_t>(x < 0 ? -x : 0);
clip.right = static_cast<std::int_fast16_t>(static_cast<std::int_fast16_t>(x + w) > out.w() ? x + w - out.w() : 0);
clip.width = static_cast<std::int_fast16_t>(w - clip.left - clip.right);
return clip;
}
} // namespace devilution