rodecomp/Source/Render/DeviceContext/DCBitmap.h
ragnarok-clanker 54b45180a2 Decompile 5 functions in Source/Contents/MapInfoMgr.cpp, Source/Render/BitmapDrawing.cpp, ...
Batch #16532 by eAthena: 0 byte-identical, 5 confirmed by peer review.

- fn_01846 CDCBitmap::Draw: logic confirmed by peer review
- fn_17238 UIWindowMgr::DrawWindows: logic confirmed by peer review
- fn_06493 CMapInfoMgr::DrawMapName: logic confirmed by peer review
- fn_17148 DrawBitmapResource: logic confirmed by peer review
- fn_01854 BitmapTextureCache::Update: logic confirmed by peer review

Peer-reviewed-by: Yommy, alisonrag, br4yan
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-11-10 23:12:56 +00:00

61 lines
2.8 KiB
C++

#ifndef RAGNAROK_SOURCE_RENDER_DEVICECONTEXT_DCBITMAP_H
#define RAGNAROK_SOURCE_RENDER_DEVICECONTEXT_DCBITMAP_H
#include "Render/Textures/BitmapPixels.h"
#include "Render/Textures/BitmapTextureCache.h"
#include "Render/DeviceContext/DeviceContext.h"
class CDCBitmap : public CDC {
public:
__declspec(noinline) CDCBitmap(int width, int height);
~CDCBitmap() override;
void Grow(std::uint32_t width, std::uint32_t height) override;
bool GetDC(HDC* output) override;
void ReleaseDC(HDC dc) override;
void Copy(int x, int y, int width, int height, const std::uint32_t* source, bool transparent) override;
void ScaleCopy(int x, int y, int sourceWidth, int sourceHeight, int width, int height, const std::uint32_t* source, int option) override;
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
) override;
void CopyFrom(int x, int y, int sourceX, int sourceY, int width, int height, const CDCBitmap& source) override;
void BlendFrom(std::uint32_t x, std::uint32_t y, int width, int height, const CDCBitmap& source) override;
void DrawRleSprite(
int x, int y, const CSprRes& sprite, const ActionFrame& frame, const std::uint32_t* palette
) override;
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
) override;
void Fill(const RECT* rectangle, std::uint32_t color) override;
void Draw(int x, int y, int width, int height, std::uint32_t color) override;
void DrawScaledSprite(
int x, int y, int width, int height, const CSprRes* sprite, const ActionFrame* frame, int offsetX, int offsetY, float scale,
const std::uint32_t* palette
) override;
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
) override;
void Brighten(int x, int y, int width, int height, int amount) override;
void Dim(int x, int y, int width, int height, int percent) override;
void UploadTexture(CTexture*& texture);
HGDIOBJ Create(int width, int height);
void ApplyPixelFilter(int filter, unsigned int* red, unsigned int* green, unsigned int* blue);
void SetAlpha(unsigned char maxLuminance);
// INLINED
void SetAlpha(bool alpha) {
this->m_cache.m_alpha = alpha;
}
protected:
/* 0004 */ BitmapPixels m_bitmap;
/* 0020 */ BitmapTextureCache m_cache;
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(CDCBitmap) == 44);
#endif
CDCBitmap* CreateBitmapDC(int width, int height, bool fill);
#endif