summaryrefslogtreecommitdiff
path: root/src/ui/paint.h
blob: 5b29b1766f04a61fe5be60b5826f321bda8b4517 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once

#include <the_Foundation/rect.h>
#include "color.h"
#include "text.h"
#include "window.h"

iDeclareType(Paint)

struct Impl_Paint {
    iWindow *dst;
    SDL_Texture *oldTarget;
};

void    init_Paint          (iPaint *);

void    beginTarget_Paint   (iPaint *, SDL_Texture *target);
void    endTarget_Paint     (iPaint *);

void    setClip_Paint       (iPaint *, iRect rect);
void    unsetClip_Paint     (iPaint *);

void    drawRect_Paint          (const iPaint *, iRect rect, int color);
void    drawRectThickness_Paint (const iPaint *, iRect rect, int thickness, int color);
void    fillRect_Paint          (const iPaint *, iRect rect, int color);

void    drawLines_Paint (const iPaint *, const iInt2 *points, size_t count, int color);

iLocalDef void drawLine_Paint(const iPaint *d, iInt2 a, iInt2 b, int color) {
    drawLines_Paint(d, (iInt2[]){ a, b }, 2, color);
}
iLocalDef void drawHLine_Paint(const iPaint *d, iInt2 pos, int len, int color) {
    drawLine_Paint(d, pos, addX_I2(pos, len), color);
}
iLocalDef void drawVLine_Paint(const iPaint *d, iInt2 pos, int len, int color) {
    drawLine_Paint(d, pos, addY_I2(pos, len), color);
}

iInt2   size_SDLTexture     (SDL_Texture *);