ugly_example.cpp

Trying to not make it so ugly.
 avatar
unknown
c_cpp
a year ago
2.4 kB
8
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