ugly_example.cpp
Trying to not make it so ugly.unknown
c_cpp
a year ago
2.4 kB
12
Indexable
static void
DrawImage(window_buffer WindowBuffer, image Image, u32 ImageStartX, u32 ImageStartY, u32 WindowBufferStartX, u32 WindowBufferStartY)
{
if(WindowBufferStartX > WindowBuffer.W) return;
if(WindowBufferStartY > WindowBuffer.H) return;
if(ImageStartX > Image.W) return;
if(ImageStartY > Image.H) return;
u32 RemainedWidth = WindowBuffer.W - WindowBufferStartX;
u32 RemainedHeight = WindowBuffer.H - WindowBufferStartY;
if(Image.W > RemainedWidth)
{
Image.W = RemainedWidth;
}
if(Image.H > RemainedHeight)
{
Image.H = RemainedHeight;
}
u32* DestPixels = (u32*)WindowBuffer.Memory + WindowBufferStartY * WindowBuffer.W + WindowBufferStartX;
Image.Memory += Image.Pitch * ImageStartY + ImageStartX;
Image.W -= ImageStartX;
Image.H -= ImageStartY;
for(u32 Row = 0; Row < Image.H; ++Row)
{
for(u32 Col = 0; Col < Image.W; ++Col)
{
DestPixels[Row * WindowBuffer.W + Col] = Image.Memory[Row * Image.Pitch + Col];
}
}
}
// --------- Basic Usage Code, inside my main loop ------//
{
static u32 ImageStartX = 0;
static u32 ImageStartY = 0;
static u32 BufferStartX = 0;
static u32 BufferStartY = 0;
if((Keyboard.A.IsDown))
{
if(BufferStartX == 0)
{
ImageStartX += 10;
}
else
{
BufferStartX -= 10;
}
}
if((Keyboard.D.IsDown))
{
if(ImageStartX > 0)
{
ImageStartX -= 10;
}
else
{
BufferStartX += 10;
}
}
if((Keyboard.W.IsDown))
{
if(BufferStartY == 0)
{
ImageStartY += 10;
}
else
{
BufferStartY -= 10;
}
}
if((Keyboard.S.IsDown))
{
if(ImageStartY > 0)
{
ImageStartY -= 10;
}
else
{
BufferStartY += 10;
}
}
FillBackground(WindowBuffer, COLOR_WHITE);
DrawImage(WindowBuffer, Image, ImageStartX ,ImageStartY, BufferStartX, BufferStartY);
}Editor is loading...
Leave a Comment