summaryrefslogtreecommitdiff
path: root/includes/rect.c
blob: 89b554baabecddcf694bc2604595055f47f44b3c (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
40
41
42
43
#include <stdlib.h>
#include <stdio.h>
#include "rect.h"

#define TYPE Rect

DEFINE_OBJECT_STRUCTURE(TYPE) {
    int left, top, width, height;
};

CONSTRUCTOR_IMPLEMENT(TYPE);

void METHOD(TYPE, init, int l, int t, int w, int h) {
    self->left = l;
    self->top = t;
    self->width = w;
    self->height = h;
}

int METHOD(TYPE, toString, char* buffer) {
    return sprintf(buffer, NAMEOF(TYPE) " { left = %i, top = %i, width = %i, height = %i }", self->left, self->top, self->width, self->height);
}

GETTER_IMPLEMENT(TYPE, int, left);
SETTER_IMPLEMENT(TYPE, int, left);

GETTER_IMPLEMENT(TYPE, int, top);
SETTER_IMPLEMENT(TYPE, int, top);

GETTER_IMPLEMENT(TYPE, int, width);
SETTER_IMPLEMENT(TYPE, int, width);

GETTER_IMPLEMENT(TYPE, int, height);
SETTER_IMPLEMENT(TYPE, int, height);

GETTER(TYPE, int, right) {
    return self->left + self->width;
}
GETTER(TYPE, int, bottom) {
    return self->top + self->height;
}

#undef TYPE