rodecomp/Source/Render/DeviceContext/DeviceContext.h
ragnarok-clanker a47d20f8be Reconstruct readable C++ and organize cohesive source subsystems
Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.

Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
2026-10-25 07:42:41 +00:00

51 lines
2.5 KiB
C++

#ifndef RAGNAROK_SOURCE_RENDER_DEVICECONTEXT_DEVICECONTEXT_H
#define RAGNAROK_SOURCE_RENDER_DEVICECONTEXT_DEVICECONTEXT_H
#include "Render/Textures/SpritePixels.h"
#include <windows.h>
class CSurface;
class CDCBitmap;
class CRenderSystemBase;
class SpriteAtlas;
class CDC {
public:
virtual ~CDC();
virtual void Grow(std::uint32_t width, std::uint32_t height) = 0;
virtual bool GetDC(HDC* output) = 0;
virtual void ReleaseDC(HDC dc) = 0;
virtual void Copy(int x, int y, int width, int height, const std::uint32_t* source, bool transparent) = 0;
virtual void ScaleCopy(int x, int y, int sourceWidth, int sourceHeight, int width, int height, const std::uint32_t* source, int option) = 0;
virtual void CopyRegion(
int x, int y, int sourceLeft, int sourceTop, int sourceRight, int sourceBottom, const std::uint32_t* source, int sourceWidth, int sourceHeight,
bool transparent, bool alpha
) = 0;
virtual void CopyFrom(int x, int y, int sourceX, int sourceY, int width, int height, const CDCBitmap& source) = 0;
virtual void BlendFrom(std::uint32_t x, std::uint32_t y, int width, int height, const CDCBitmap& source) = 0;
virtual void DrawRleSprite(
int x, int y, std::span<const SpriteFrameCell> cells, const SpriteRleImage* const* const* images, const std::uint32_t* palette, int cellCount
) = 0;
virtual void DrawSurface(
int x, int y, CSurface* source, int sourceX, int sourceY, int sourceWidth, int sourceHeight, bool mirrored, int scaleX, int scaleY, int filter, int format
) = 0;
virtual void Fill(const RECT* rectangle, std::uint32_t color) = 0;
virtual void Draw(CRenderSystemBase& system, int x, int y, int width, int height, std::uint32_t color) = 0;
virtual void DrawScaledSprite(
int x, int y, int width, int height, std::span<const SpriteFrameCell> cells, const SpriteRleImage* const* const* images, int cellCount, int offsetX,
int offsetY, float scale, const std::uint32_t* palette, SpriteAtlas& atlas, CRenderSystemBase& system, int serviceType, std::uint32_t reuseDelay
) = 0;
virtual void DrawScaledSurface(
int x, int y, int width, int height, CSurface* source, int sourceWidth, int sourceHeight, float scaleX, float scaleY, std::uint32_t color, bool mirrored,
int offsetX, int offsetY, int sourceX, int sourceY, int format
) = 0;
virtual void Brighten(int x, int y, int width, int height, int amount) = 0;
virtual void Dim(int x, int y, int width, int height, int percent) = 0;
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(CDC) == 4);
#endif
#endif