#pragma once struct DrawSpanArgs { uint32_t *destorg; const uint32_t *source; int32_t destpitch; int32_t xfrac; int32_t yfrac; int32_t xstep; int32_t ystep; int32_t x1; int32_t x2; int32_t y; int32_t xbits; int32_t ybits; uint32_t light; uint32_t srcalpha; uint32_t destalpha; uint16_t light_alpha; uint16_t light_red; uint16_t light_green; uint16_t light_blue; uint16_t fade_alpha; uint16_t fade_red; uint16_t fade_green; uint16_t fade_blue; uint16_t desaturate; uint32_t flags; enum Flags { simple_shade = 1, nearest_filter = 2 }; }; class LLVMDrawers { public: virtual ~LLVMDrawers() { } static void Create(); static void Destroy(); static LLVMDrawers *Instance(); void(*DrawSpan)(const DrawSpanArgs *) = nullptr; void(*DrawSpanMasked)(const DrawSpanArgs *) = nullptr; void(*DrawSpanTranslucent)(const DrawSpanArgs *) = nullptr; void(*DrawSpanMaskedTranslucent)(const DrawSpanArgs *) = nullptr; void(*DrawSpanAddClamp)(const DrawSpanArgs *) = nullptr; void(*DrawSpanMaskedAddClamp)(const DrawSpanArgs *) = nullptr; private: static LLVMDrawers *Singleton; };