removed SDL_Rect and SDL_Point

This commit is contained in:
BADIM-PC\Vadim 2018-02-01 19:34:42 +03:00
parent b18b8b0b51
commit a525df2eba
17 changed files with 272 additions and 254 deletions

View File

@ -968,7 +968,7 @@ static void processKeydown(Code* code, SDL_Keycode keycode)
static void processGestures(Code* code) static void processGestures(Code* code)
{ {
SDL_Point point = {0, 0}; tic_point point = {0, 0};
if(getGesturePos(&point)) if(getGesturePos(&point))
{ {
@ -1276,7 +1276,7 @@ static void textGoToTick(Code* code)
static void drawOutlineBar(Code* code, s32 x, s32 y) static void drawOutlineBar(Code* code, s32 x, s32 y)
{ {
SDL_Rect rect = {x, y, TIC80_WIDTH - x, TIC80_HEIGHT - y}; tic_rect rect = {x, y, TIC80_WIDTH - x, TIC80_HEIGHT - y};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -1429,7 +1429,7 @@ static void drawCodeToolbar(Code* code)
for(s32 i = 0; i < Count; i++) for(s32 i = 0; i < Count; i++)
{ {
SDL_Rect rect = {TIC80_WIDTH + (i - Count) * Size, 0, Size, Size}; tic_rect rect = {TIC80_WIDTH + (i - Count) * Size, 0, Size, Size};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))

View File

@ -47,14 +47,14 @@ struct Code
s32 delay; s32 delay;
} cursor; } cursor;
SDL_Rect rect; tic_rect rect;
struct struct
{ {
s32 x; s32 x;
s32 y; s32 y;
SDL_Point start; tic_point start;
bool active; bool active;
bool gesture; bool gesture;

View File

@ -2493,7 +2493,7 @@ static void setScroll(Console* console, s32 val)
static void processGesture(Console* console) static void processGesture(Console* console)
{ {
SDL_Point point = {0, 0}; tic_point point = {0, 0};
if(getGesturePos(&point)) if(getGesturePos(&point))
{ {

View File

@ -28,7 +28,7 @@ static void drawButton(Dialog* dlg, const char* label, s32 x, s32 y, u8 color, u
enum {BtnWidth = 20, BtnHeight = 9}; enum {BtnWidth = 20, BtnHeight = 9};
SDL_Rect rect = {x, y, BtnWidth, BtnHeight}; tic_rect rect = {x, y, BtnWidth, BtnHeight};
bool down = false; bool down = false;
bool over = false; bool over = false;
@ -121,12 +121,12 @@ static void drawDialog(Dialog* dlg)
tic_mem* tic = dlg->tic; tic_mem* tic = dlg->tic;
SDL_Rect rect = {(TIC80_WIDTH - Width)/2, (TIC80_HEIGHT - Height)/2, Width, Height}; tic_rect rect = {(TIC80_WIDTH - Width)/2, (TIC80_HEIGHT - Height)/2, Width, Height};
rect.x -= dlg->pos.x; rect.x -= dlg->pos.x;
rect.y -= dlg->pos.y; rect.y -= dlg->pos.y;
SDL_Rect header = {rect.x, rect.y-(TOOLBAR_SIZE-1), rect.w, TOOLBAR_SIZE}; tic_rect header = {rect.x, rect.y-(TOOLBAR_SIZE-1), rect.w, TOOLBAR_SIZE};
if(checkMousePos(&header)) if(checkMousePos(&header))
{ {
@ -151,7 +151,7 @@ static void drawDialog(Dialog* dlg)
dlg->pos.x = dlg->drag.start.x - getMouseX(); dlg->pos.x = dlg->drag.start.x - getMouseX();
dlg->pos.y = dlg->drag.start.y - getMouseY(); dlg->pos.y = dlg->drag.start.y - getMouseY();
SDL_Rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT}; tic_rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT};
if(!checkMouseDown(&rect, tic_mouse_left)) if(!checkMouseDown(&rect, tic_mouse_left))
dlg->drag.active = false; dlg->drag.active = false;
} }

View File

@ -39,11 +39,11 @@ struct Dialog
u32 focus; u32 focus;
SDL_Point pos; tic_point pos;
struct struct
{ {
SDL_Point start; tic_point start;
bool active; bool active;
} drag; } drag;

View File

@ -47,14 +47,14 @@ static void normalizeMap(s32* x, s32* y)
while(*y >= MAX_SCROLL_Y) *y -= MAX_SCROLL_Y; while(*y >= MAX_SCROLL_Y) *y -= MAX_SCROLL_Y;
} }
static SDL_Point getTileOffset(Map* map) static tic_point getTileOffset(Map* map)
{ {
return (SDL_Point){(map->sheet.rect.w - 1)*TIC_SPRITESIZE / 2, (map->sheet.rect.h - 1)*TIC_SPRITESIZE / 2}; return (tic_point){(map->sheet.rect.w - 1)*TIC_SPRITESIZE / 2, (map->sheet.rect.h - 1)*TIC_SPRITESIZE / 2};
} }
static void getMouseMap(Map* map, s32* x, s32* y) static void getMouseMap(Map* map, s32* x, s32* y)
{ {
SDL_Point offset = getTileOffset(map); tic_point offset = getTileOffset(map);
s32 mx = getMouseX() + map->scroll.x - offset.x; s32 mx = getMouseX() + map->scroll.x - offset.x;
s32 my = getMouseY() + map->scroll.y - offset.y; s32 my = getMouseY() + map->scroll.y - offset.y;
@ -83,7 +83,7 @@ static s32 drawWorldButton(Map* map, s32 x, s32 y)
x -= Size; x -= Size;
SDL_Rect rect = {x, y, Size, ICON_SIZE}; tic_rect rect = {x, y, Size, ICON_SIZE};
bool over = false; bool over = false;
@ -121,7 +121,7 @@ static s32 drawGridButton(Map* map, s32 x, s32 y)
x -= ICON_SIZE; x -= ICON_SIZE;
SDL_Rect rect = {x, y, ICON_SIZE, ICON_SIZE}; tic_rect rect = {x, y, ICON_SIZE, ICON_SIZE};
bool over = false; bool over = false;
@ -170,7 +170,7 @@ static s32 drawSheetButton(Map* map, s32 x, s32 y)
x -= ICON_SIZE; x -= ICON_SIZE;
SDL_Rect rect = {x, y, ICON_SIZE, ICON_SIZE}; tic_rect rect = {x, y, ICON_SIZE, ICON_SIZE};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -195,7 +195,7 @@ static s32 drawToolButton(Map* map, s32 x, s32 y, const u8* Icon, s32 width, con
{ {
x -= width; x -= width;
SDL_Rect rect = {x, y, width, ICON_SIZE}; tic_rect rect = {x, y, width, ICON_SIZE};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -293,7 +293,7 @@ static void drawTileIndex(Map* map, s32 x, s32 y)
if(map->sheet.show) if(map->sheet.show)
{ {
SDL_Rect rect = {TIC80_WIDTH - TIC_SPRITESHEET_SIZE - 1, TOOLBAR_SIZE, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE}; tic_rect rect = {TIC80_WIDTH - TIC_SPRITESHEET_SIZE - 1, TOOLBAR_SIZE, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -308,7 +308,7 @@ static void drawTileIndex(Map* map, s32 x, s32 y)
} }
else else
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -346,7 +346,7 @@ static void drawSheet(Map* map, s32 x, s32 y)
{ {
if(!map->sheet.show)return; if(!map->sheet.show)return;
SDL_Rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE}; tic_rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE};
map->tic->api.rect_border(map->tic, rect.x - 1, rect.y - 1, rect.w + 2, rect.h + 2, (tic_color_white)); map->tic->api.rect_border(map->tic, rect.x - 1, rect.y - 1, rect.w + 2, rect.h + 2, (tic_color_white));
} }
@ -355,7 +355,7 @@ static void drawSheetOvr(Map* map, s32 x, s32 y)
{ {
if(!map->sheet.show)return; if(!map->sheet.show)return;
SDL_Rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE}; tic_rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -376,14 +376,14 @@ static void drawSheetOvr(Map* map, s32 x, s32 y)
s32 rr = SDL_max(mx, map->sheet.start.x); s32 rr = SDL_max(mx, map->sheet.start.x);
s32 rb = SDL_max(my, map->sheet.start.y); s32 rb = SDL_max(my, map->sheet.start.y);
map->sheet.rect = (SDL_Rect){rl, rt, rr-rl+1, rb-rt+1}; map->sheet.rect = (tic_rect){rl, rt, rr-rl+1, rb-rt+1};
map->mode = MAP_DRAW_MODE; map->mode = MAP_DRAW_MODE;
} }
else else
{ {
map->sheet.drag = true; map->sheet.drag = true;
map->sheet.start = (SDL_Point){mx, my}; map->sheet.start = (tic_point){mx, my};
} }
} }
else else
@ -447,7 +447,7 @@ static void drawTileCursor(Map* map)
if(map->scroll.active) if(map->scroll.active)
return; return;
SDL_Point offset = getTileOffset(map); tic_point offset = getTileOffset(map);
s32 mx = getMouseX() + map->scroll.x - offset.x; s32 mx = getMouseX() + map->scroll.x - offset.x;
s32 my = getMouseY() + map->scroll.y - offset.y; s32 my = getMouseY() + map->scroll.y - offset.y;
@ -478,7 +478,7 @@ static void drawTileCursor(Map* map)
static void processMouseDrawMode(Map* map) static void processMouseDrawMode(Map* map)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
setCursor(SDL_SYSTEM_CURSOR_HAND); setCursor(SDL_SYSTEM_CURSOR_HAND);
@ -500,7 +500,7 @@ static void processMouseDrawMode(Map* map)
else else
{ {
map->canvas.draw = true; map->canvas.draw = true;
map->canvas.start = (SDL_Point){tx, ty}; map->canvas.start = (tic_point){tx, ty};
} }
} }
else else
@ -514,13 +514,13 @@ static void processMouseDrawMode(Map* map)
getMouseMap(map, &tx, &ty); getMouseMap(map, &tx, &ty);
s32 index = map->tic->api.map_get(map->tic, map->src, tx, ty); s32 index = map->tic->api.map_get(map->tic, map->src, tx, ty);
map->sheet.rect = (SDL_Rect){index % SHEET_COLS, index / SHEET_COLS, 1, 1}; map->sheet.rect = (tic_rect){index % SHEET_COLS, index / SHEET_COLS, 1, 1};
} }
} }
static void processScrolling(Map* map, bool pressed) static void processScrolling(Map* map, bool pressed)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
if(map->scroll.active) if(map->scroll.active)
{ {
@ -549,7 +549,7 @@ static void processScrolling(Map* map, bool pressed)
static void processMouseDragMode(Map* map) static void processMouseDragMode(Map* map)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
processScrolling(map, checkMouseDown(&rect, tic_mouse_left) || processScrolling(map, checkMouseDown(&rect, tic_mouse_left) ||
checkMouseDown(&rect, tic_mouse_right)); checkMouseDown(&rect, tic_mouse_right));
@ -557,7 +557,7 @@ static void processMouseDragMode(Map* map)
static void resetSelection(Map* map) static void resetSelection(Map* map)
{ {
map->select.rect = (SDL_Rect){0,0,0,0}; map->select.rect = (tic_rect){0,0,0,0};
} }
static void drawSelectionRect(Map* map, s32 x, s32 y, s32 w, s32 h) static void drawSelectionRect(Map* map, s32 x, s32 y, s32 w, s32 h)
@ -582,7 +582,7 @@ static void drawPasteData(Map* map)
s32 mx = getMouseX() + map->scroll.x - (w - 1)*TIC_SPRITESIZE / 2; s32 mx = getMouseX() + map->scroll.x - (w - 1)*TIC_SPRITESIZE / 2;
s32 my = getMouseY() + map->scroll.y - (h - 1)*TIC_SPRITESIZE / 2; s32 my = getMouseY() + map->scroll.y - (h - 1)*TIC_SPRITESIZE / 2;
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
if(checkMouseClick(&rect, tic_mouse_left)) if(checkMouseClick(&rect, tic_mouse_left))
{ {
@ -626,7 +626,7 @@ static void normalizeMapRect(s32* x, s32* y)
static void processMouseSelectMode(Map* map) static void processMouseSelectMode(Map* map)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -651,13 +651,13 @@ static void processMouseSelectMode(Map* map)
s32 rr = SDL_max(mx, map->select.start.x); s32 rr = SDL_max(mx, map->select.start.x);
s32 rb = SDL_max(my, map->select.start.y); s32 rb = SDL_max(my, map->select.start.y);
map->select.rect = (SDL_Rect){rl, rt, rr - rl + 1, rb - rt + 1}; map->select.rect = (tic_rect){rl, rt, rr - rl + 1, rb - rt + 1};
} }
else else
{ {
map->select.drag = true; map->select.drag = true;
map->select.start = (SDL_Point){mx, my}; map->select.start = (tic_point){mx, my};
map->select.rect = (SDL_Rect){map->select.start.x, map->select.start.y, 1, 1}; map->select.rect = (tic_rect){map->select.start.x, map->select.start.y, 1, 1};
} }
} }
else if(map->select.drag) else if(map->select.drag)
@ -673,8 +673,8 @@ static void processMouseSelectMode(Map* map)
typedef struct typedef struct
{ {
SDL_Point* data; tic_point* data;
SDL_Point* head; tic_point* head;
} FillStack; } FillStack;
static bool push(FillStack* stack, s32 x, s32 y) static bool push(FillStack* stack, s32 x, s32 y)
@ -732,7 +732,7 @@ static void fillMap(Map* map, s32 x, s32 y, u8 tile)
static FillStack stack = {NULL, NULL}; static FillStack stack = {NULL, NULL};
if(!stack.data) if(!stack.data)
stack.data = (SDL_Point*)SDL_malloc(FILL_STACK_SIZE * sizeof(SDL_Point)); stack.data = (tic_point*)SDL_malloc(FILL_STACK_SIZE * sizeof(tic_point));
stack.head = NULL; stack.head = NULL;
@ -790,7 +790,7 @@ static void fillMap(Map* map, s32 x, s32 y, u8 tile)
static void processMouseFillMode(Map* map) static void processMouseFillMode(Map* map)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
setCursor(SDL_SYSTEM_CURSOR_HAND); setCursor(SDL_SYSTEM_CURSOR_HAND);
@ -808,7 +808,7 @@ static void processMouseFillMode(Map* map)
static void drawSelection(Map* map) static void drawSelection(Map* map)
{ {
SDL_Rect* sel = &map->select.rect; tic_rect* sel = &map->select.rect;
if(sel->w > 0 && sel->h > 0) if(sel->w > 0 && sel->h > 0)
{ {
@ -859,7 +859,7 @@ static void drawGrid(Map* map)
static void drawMapOvr(Map* map) static void drawMapOvr(Map* map)
{ {
SDL_Rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT}; tic_rect rect = {MAP_X, MAP_Y, MAP_WIDTH, MAP_HEIGHT};
s32 scrollX = map->scroll.x % TIC_SPRITESIZE; s32 scrollX = map->scroll.x % TIC_SPRITESIZE;
s32 scrollY = map->scroll.y % TIC_SPRITESIZE; s32 scrollY = map->scroll.y % TIC_SPRITESIZE;
@ -933,7 +933,7 @@ static void redo(Map* map)
static void copySelectionToClipboard(Map* map) static void copySelectionToClipboard(Map* map)
{ {
SDL_Rect* sel = &map->select.rect; tic_rect* sel = &map->select.rect;
if(sel->w > 0 && sel->h > 0) if(sel->w > 0 && sel->h > 0)
{ {
@ -971,7 +971,7 @@ static void copyToClipboard(Map* map)
static void deleteSelection(Map* map) static void deleteSelection(Map* map)
{ {
SDL_Rect* sel = &map->select.rect; tic_rect* sel = &map->select.rect;
if(sel->w > 0 && sel->h > 0) if(sel->w > 0 && sel->h > 0)
{ {
@ -1079,7 +1079,7 @@ static void processKeyup(Map* map, SDL_Keycode keycode)
static void processGesture(Map* map) static void processGesture(Map* map)
{ {
SDL_Point point = {0, 0}; tic_point point = {0, 0};
if(getGesturePos(&point)) if(getGesturePos(&point))
{ {

View File

@ -46,14 +46,14 @@ struct Map
{ {
bool grid; bool grid;
bool draw; bool draw;
SDL_Point start; tic_point start;
} canvas; } canvas;
struct struct
{ {
bool show; bool show;
SDL_Rect rect; tic_rect rect;
SDL_Point start; tic_point start;
bool drag; bool drag;
} sheet; } sheet;
@ -62,7 +62,7 @@ struct Map
s32 x; s32 x;
s32 y; s32 y;
SDL_Point start; tic_point start;
bool active; bool active;
bool gesture; bool gesture;
@ -71,8 +71,8 @@ struct Map
struct struct
{ {
SDL_Rect rect; tic_rect rect;
SDL_Point start; tic_point start;
bool drag; bool drag;
} select; } select;

View File

@ -63,9 +63,9 @@ static void exitToTIC(Menu* menu)
static void(*const MenuHandlers[])(Menu*) = {resumeGame, resetGame, gamepadConfig, NULL, exitToTIC}; static void(*const MenuHandlers[])(Menu*) = {resumeGame, resetGame, gamepadConfig, NULL, exitToTIC};
static SDL_Rect getRect(Menu* menu) static tic_rect getRect(Menu* menu)
{ {
SDL_Rect rect = {(TIC80_WIDTH - DIALOG_WIDTH)/2, (TIC80_HEIGHT - DIALOG_HEIGHT)/2, DIALOG_WIDTH, DIALOG_HEIGHT}; tic_rect rect = {(TIC80_WIDTH - DIALOG_WIDTH)/2, (TIC80_HEIGHT - DIALOG_HEIGHT)/2, DIALOG_WIDTH, DIALOG_HEIGHT};
rect.x -= menu->pos.x; rect.x -= menu->pos.x;
rect.y -= menu->pos.y; rect.y -= menu->pos.y;
@ -74,11 +74,11 @@ static SDL_Rect getRect(Menu* menu)
} }
static void drawDialog(Menu* menu) static void drawDialog(Menu* menu)
{ {
SDL_Rect rect = getRect(menu); tic_rect rect = getRect(menu);
tic_mem* tic = menu->tic; tic_mem* tic = menu->tic;
SDL_Rect header = {rect.x, rect.y-(TOOLBAR_SIZE-1), rect.w, TOOLBAR_SIZE}; tic_rect header = {rect.x, rect.y-(TOOLBAR_SIZE-1), rect.w, TOOLBAR_SIZE};
if(checkMousePos(&header)) if(checkMousePos(&header))
{ {
@ -103,7 +103,7 @@ static void drawDialog(Menu* menu)
menu->pos.x = menu->drag.start.x - getMouseX(); menu->pos.x = menu->drag.start.x - getMouseX();
menu->pos.y = menu->drag.start.y - getMouseY(); menu->pos.y = menu->drag.start.y - getMouseY();
SDL_Rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT}; tic_rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT};
if(!checkMouseDown(&rect, tic_mouse_left)) if(!checkMouseDown(&rect, tic_mouse_left))
menu->drag.active = false; menu->drag.active = false;
} }
@ -133,7 +133,7 @@ static void drawTabDisabled(Menu* menu, s32 x, s32 y, s32 id)
enum{Width = 15, Height = 7}; enum{Width = 15, Height = 7};
tic_mem* tic = menu->tic; tic_mem* tic = menu->tic;
SDL_Rect rect = {x, y, Width, Height}; tic_rect rect = {x, y, Width, Height};
bool over = false; bool over = false;
if(menu->gamepad.tab != id && checkMousePos(&rect)) if(menu->gamepad.tab != id && checkMousePos(&rect))
@ -189,7 +189,7 @@ static void drawPlayerButtons(Menu* menu, s32 x, s32 y)
for(s32 i = 0; i < Buttons; i++) for(s32 i = 0; i < Buttons; i++)
{ {
SDL_Rect rect = {x + i / Rows * (Width+2), y + (i%Rows)*(Height+1), Width, TIC_SPRITESIZE}; tic_rect rect = {x + i / Rows * (Width+2), y + (i%Rows)*(Height+1), Width, TIC_SPRITESIZE};
bool over = false; bool over = false;
s32 index = i+menu->gamepad.tab * Buttons; s32 index = i+menu->gamepad.tab * Buttons;
@ -246,11 +246,11 @@ static void drawGamepadMenu(Menu* menu)
tic_mem* tic = menu->tic; tic_mem* tic = menu->tic;
SDL_Rect dlgRect = getRect(menu); tic_rect dlgRect = getRect(menu);
static const char Label[] = "BACK"; static const char Label[] = "BACK";
SDL_Rect rect = {dlgRect.x + 25, dlgRect.y + 49, (sizeof(Label)-1)*TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; tic_rect rect = {dlgRect.x + 25, dlgRect.y + 49, (sizeof(Label)-1)*TIC_FONT_WIDTH, TIC_FONT_HEIGHT};
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -311,14 +311,14 @@ static void drawMainMenu(Menu* menu)
drawDialog(menu); drawDialog(menu);
SDL_Rect rect = getRect(menu); tic_rect rect = getRect(menu);
{ {
for(s32 i = 0; i < COUNT_OF(Rows); i++) for(s32 i = 0; i < COUNT_OF(Rows); i++)
{ {
if(!*Rows[i])continue; if(!*Rows[i])continue;
SDL_Rect label = {rect.x + 22, rect.y + (TIC_FONT_HEIGHT+1)*i + 16, 86, TIC_FONT_HEIGHT+1}; tic_rect label = {rect.x + 22, rect.y + (TIC_FONT_HEIGHT+1)*i + 16, 86, TIC_FONT_HEIGHT+1};
bool over = false; bool over = false;
bool down = false; bool down = false;

View File

@ -46,11 +46,11 @@ struct Menu
s32 selected; s32 selected;
} gamepad; } gamepad;
SDL_Point pos; tic_point pos;
struct struct
{ {
SDL_Point start; tic_point start;
bool active; bool active;
} drag; } drag;

View File

@ -91,7 +91,7 @@ static void drawEditbox(Music* music, s32 x, s32 y, s32 value, void(*set)(Music*
}; };
{ {
SDL_Rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT }; tic_rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT };
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -113,7 +113,7 @@ static void drawEditbox(Music* music, s32 x, s32 y, s32 value, void(*set)(Music*
{ {
x += TIC_FONT_WIDTH; x += TIC_FONT_WIDTH;
SDL_Rect rect = { x-1, y-1, TIC_FONT_WIDTH*2+1, TIC_FONT_HEIGHT+1 }; tic_rect rect = { x-1, y-1, TIC_FONT_WIDTH*2+1, TIC_FONT_HEIGHT+1 };
if (checkMousePos(&rect)) if (checkMousePos(&rect))
{ {
@ -145,7 +145,7 @@ static void drawEditbox(Music* music, s32 x, s32 y, s32 value, void(*set)(Music*
{ {
x += 2*TIC_FONT_WIDTH; x += 2*TIC_FONT_WIDTH;
SDL_Rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT }; tic_rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT };
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -197,7 +197,7 @@ static void drawSwitch(Music* music, s32 x, s32 y, const char* label, s32 value,
{ {
x += (s32)strlen(label)*TIC_FONT_WIDTH; x += (s32)strlen(label)*TIC_FONT_WIDTH;
SDL_Rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT }; tic_rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT };
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -227,7 +227,7 @@ static void drawSwitch(Music* music, s32 x, s32 y, const char* label, s32 value,
{ {
x += (value > 99 ? 3 : 2)*TIC_FONT_WIDTH; x += (value > 99 ? 3 : 2)*TIC_FONT_WIDTH;
SDL_Rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT }; tic_rect rect = { x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT };
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -546,8 +546,8 @@ static void stopTrack(Music* music)
static void resetSelection(Music* music) static void resetSelection(Music* music)
{ {
music->tracker.select.start = (SDL_Point){-1, -1}; music->tracker.select.start = (tic_point){-1, -1};
music->tracker.select.rect = (SDL_Rect){0, 0, 0, 0}; music->tracker.select.rect = (tic_rect){0, 0, 0, 0};
} }
static void deleteSelection(Music* music) static void deleteSelection(Music* music)
@ -556,7 +556,7 @@ static void deleteSelection(Music* music)
if(pattern) if(pattern)
{ {
SDL_Rect rect = music->tracker.select.rect; tic_rect rect = music->tracker.select.rect;
if(rect.h <= 0) if(rect.h <= 0)
{ {
@ -580,7 +580,7 @@ static void copyToClipboard(Music* music, bool cut)
if(pattern) if(pattern)
{ {
SDL_Rect rect = music->tracker.select.rect; tic_rect rect = music->tracker.select.rect;
if(rect.h <= 0) if(rect.h <= 0)
{ {
@ -731,8 +731,8 @@ static void updateSelection(Music* music)
s32 rr = SDL_max(music->tracker.col, music->tracker.select.start.x); s32 rr = SDL_max(music->tracker.col, music->tracker.select.start.x);
s32 rb = SDL_max(music->tracker.row, music->tracker.select.start.y); s32 rb = SDL_max(music->tracker.row, music->tracker.select.start.y);
SDL_Rect* rect = &music->tracker.select.rect; tic_rect* rect = &music->tracker.select.rect;
*rect = (SDL_Rect){rl, rt, rr - rl + 1, rb - rt + 1}; *rect = (tic_rect){rl, rt, rr - rl + 1, rb - rt + 1};
if(rect->x % CHANNEL_COLS + rect->w > CHANNEL_COLS) if(rect->x % CHANNEL_COLS + rect->w > CHANNEL_COLS)
resetSelection(music); resetSelection(music);
@ -996,7 +996,7 @@ static void selectAll(Music* music)
s32 col = music->tracker.col - music->tracker.col % CHANNEL_COLS; s32 col = music->tracker.col - music->tracker.col % CHANNEL_COLS;
music->tracker.select.start = (SDL_Point){col, 0}; music->tracker.select.start = (tic_point){col, 0};
music->tracker.col = col + CHANNEL_COLS-1; music->tracker.col = col + CHANNEL_COLS-1;
music->tracker.row = MUSIC_PATTERN_ROWS-1; music->tracker.row = MUSIC_PATTERN_ROWS-1;
@ -1134,7 +1134,7 @@ static void drawTrackerFrames(Music* music, s32 x, s32 y)
}; };
{ {
SDL_Rect rect = { x - Border, y - Border, Width, MUSIC_FRAMES * TIC_FONT_HEIGHT + Border }; tic_rect rect = { x - Border, y - Border, Width, MUSIC_FRAMES * TIC_FONT_HEIGHT + Border };
if (checkMousePos(&rect)) if (checkMousePos(&rect))
{ {
@ -1216,7 +1216,7 @@ static void drawTrackerChannel(Music* music, s32 x, s32 y, s32 channel)
Width = TIC_FONT_WIDTH * 8 + Border, Width = TIC_FONT_WIDTH * 8 + Border,
}; };
SDL_Rect rect = {x - Border, y - Border, Width, Rows*TIC_FONT_HEIGHT + Border}; tic_rect rect = {x - Border, y - Border, Width, Rows*TIC_FONT_HEIGHT + Border};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -1237,7 +1237,7 @@ static void drawTrackerChannel(Music* music, s32 x, s32 y, s32 channel)
else else
{ {
resetSelection(music); resetSelection(music);
music->tracker.select.start = (SDL_Point){col, row}; music->tracker.select.start = (tic_point){col, row};
music->tracker.select.drag = true; music->tracker.select.drag = true;
} }
@ -1246,7 +1246,7 @@ static void drawTrackerChannel(Music* music, s32 x, s32 y, s32 channel)
if(music->tracker.select.drag) if(music->tracker.select.drag)
{ {
SDL_Rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT}; tic_rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT};
if(!checkMouseDown(&rect, tic_mouse_left)) if(!checkMouseDown(&rect, tic_mouse_left))
{ {
music->tracker.select.drag = false; music->tracker.select.drag = false;
@ -1274,7 +1274,7 @@ static void drawTrackerChannel(Music* music, s32 x, s32 y, s32 channel)
// draw selection // draw selection
if (selectedChannel) if (selectedChannel)
{ {
SDL_Rect rect = music->tracker.select.rect; tic_rect rect = music->tracker.select.rect;
if (rect.h > 1 && i >= rect.y && i < rect.y + rect.h) if (rect.h > 1 && i >= rect.y && i < rect.y + rect.h)
{ {
s32 sx = x - 1; s32 sx = x - 1;
@ -1346,7 +1346,7 @@ static void drawTumbler(Music* music, s32 x, s32 y, s32 index)
enum{On=36, Off = 52, Size=5, Chroma=14}; enum{On=36, Off = 52, Size=5, Chroma=14};
SDL_Rect rect = {x, y, Size, Size}; tic_rect rect = {x, y, Size, Size};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -1438,7 +1438,7 @@ static void drawPlayButtons(Music* music)
for (s32 i = 0; i < Count; i++) for (s32 i = 0; i < Count; i++)
{ {
SDL_Rect rect = { Offset + Width * i, 0, Width, Height }; tic_rect rect = { Offset + Width * i, 0, Width, Height };
bool over = false; bool over = false;
@ -1490,7 +1490,7 @@ static void drawModeTabs(Music* music)
for (s32 i = 0; i < Count; i++) for (s32 i = 0; i < Count; i++)
{ {
SDL_Rect rect = { TIC80_WIDTH - Width * (Count - i), 0, Width, Height }; tic_rect rect = { TIC80_WIDTH - Width * (Count - i), 0, Width, Height };
static const s32 Tabs[] = { MUSIC_PIANO_TAB, MUSIC_TRACKER_TAB }; static const s32 Tabs[] = { MUSIC_PIANO_TAB, MUSIC_TRACKER_TAB };
@ -1544,7 +1544,7 @@ static void scrollNotes(Music* music, s32 delta)
if(pattern) if(pattern)
{ {
SDL_Rect rect = music->tracker.select.rect; tic_rect rect = music->tracker.select.rect;
if(rect.h <= 0) if(rect.h <= 0)
{ {

View File

@ -54,8 +54,8 @@ struct Music
struct struct
{ {
SDL_Point start; tic_point start;
SDL_Rect rect; tic_rect rect;
bool drag; bool drag;
} select; } select;

View File

@ -68,7 +68,7 @@ static void drawSwitch(Sfx* sfx, s32 x, s32 y, const char* label, s32 value, voi
{ {
x += (s32)strlen(label)*TIC_FONT_WIDTH; x += (s32)strlen(label)*TIC_FONT_WIDTH;
SDL_Rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; tic_rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -90,7 +90,7 @@ static void drawSwitch(Sfx* sfx, s32 x, s32 y, const char* label, s32 value, voi
{ {
x += 2*TIC_FONT_WIDTH; x += 2*TIC_FONT_WIDTH;
SDL_Rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; tic_rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -207,7 +207,7 @@ static void drawWaveButtons(Sfx* sfx, s32 x, s32 y)
for(s32 i = 0; i < Count; i++) for(s32 i = 0; i < Count; i++)
{ {
SDL_Rect rect = {x, y + (Count - i - 1)*(Height+Gap), Width, Height}; tic_rect rect = {x, y + (Count - i - 1)*(Height+Gap), Width, Height};
bool over = false; bool over = false;
@ -238,7 +238,7 @@ static void drawWaveButtons(Sfx* sfx, s32 x, s32 y)
{ {
enum{Size = 5}; enum{Size = 5};
SDL_Rect iconRect = {x+Width+HGap, y + (Count - i - 1)*(Height+Gap), Size, Size}; tic_rect iconRect = {x+Width+HGap, y + (Count - i - 1)*(Height+Gap), Size, Size};
bool over = false; bool over = false;
if(checkMousePos(&iconRect)) if(checkMousePos(&iconRect))
@ -295,7 +295,7 @@ static void drawCanvasTabs(Sfx* sfx, s32 x, s32 y)
{ {
s32 size = sfx->tic->api.text(sfx->tic, Labels[i], 0, -TIC_FONT_HEIGHT, (tic_color_black)); s32 size = sfx->tic->api.text(sfx->tic, Labels[i], 0, -TIC_FONT_HEIGHT, (tic_color_black));
SDL_Rect rect = {x - size, sy, size, TIC_FONT_HEIGHT}; tic_rect rect = {x - size, sy, size, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -318,7 +318,7 @@ static void drawCanvasTabs(Sfx* sfx, s32 x, s32 y)
{ {
static const char Label[] = "x16"; static const char Label[] = "x16";
enum{Width = (sizeof Label - 1) * TIC_FONT_WIDTH}; enum{Width = (sizeof Label - 1) * TIC_FONT_WIDTH};
SDL_Rect rect = {(x - Width)/2, y + Height * 6, Width, TIC_FONT_HEIGHT}; tic_rect rect = {(x - Width)/2, y + Height * 6, Width, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -335,7 +335,7 @@ static void drawCanvasTabs(Sfx* sfx, s32 x, s32 y)
{ {
static const char Label[] = "DOWN"; static const char Label[] = "DOWN";
enum{Width = (sizeof Label - 1) * TIC_FONT_WIDTH}; enum{Width = (sizeof Label - 1) * TIC_FONT_WIDTH};
SDL_Rect rect = {(x - Width)/2, y + Height * 6, Width, TIC_FONT_HEIGHT}; tic_rect rect = {(x - Width)/2, y + Height * 6, Width, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -370,7 +370,7 @@ static void drawCanvas(Sfx* sfx, s32 x, s32 y)
sfx->tic->api.rect(sfx->tic, x + tickIndex * CANVAS_SIZE, y, CANVAS_SIZE + 1, CANVAS_HEIGHT + 1, (tic_color_white)); sfx->tic->api.rect(sfx->tic, x + tickIndex * CANVAS_SIZE, y, CANVAS_SIZE + 1, CANVAS_HEIGHT + 1, (tic_color_white));
} }
SDL_Rect rect = {x, y, CANVAS_WIDTH, CANVAS_HEIGHT}; tic_rect rect = {x, y, CANVAS_WIDTH, CANVAS_HEIGHT};
tic_sample* effect = getEffect(sfx); tic_sample* effect = getEffect(sfx);
@ -451,16 +451,16 @@ static void drawPiano(Sfx* sfx, s32 x, s32 y)
static const s32 ButtonIndixes[] = {0, 2, 4, 5, 7, 9, 11, 1, 3, -1, 6, 8, 10}; static const s32 ButtonIndixes[] = {0, 2, 4, 5, 7, 9, 11, 1, 3, -1, 6, 8, 10};
SDL_Rect buttons[COUNT_OF(ButtonIndixes)]; tic_rect buttons[COUNT_OF(ButtonIndixes)];
for(s32 i = 0; i < COUNT_OF(buttons); i++) for(s32 i = 0; i < COUNT_OF(buttons); i++)
{ {
buttons[i] = i < PIANO_WHITE_BUTTONS buttons[i] = i < PIANO_WHITE_BUTTONS
? (SDL_Rect){x + (PIANO_BUTTON_WIDTH+1)*i, y, PIANO_BUTTON_WIDTH + 1, PIANO_BUTTON_HEIGHT} ? (tic_rect){x + (PIANO_BUTTON_WIDTH+1)*i, y, PIANO_BUTTON_WIDTH + 1, PIANO_BUTTON_HEIGHT}
: (SDL_Rect){x + (7 + 3) * (i - PIANO_WHITE_BUTTONS) + 6, y, 7, 8}; : (tic_rect){x + (7 + 3) * (i - PIANO_WHITE_BUTTONS) + 6, y, 7, 8};
} }
SDL_Rect rect = {x, y, PIANO_WIDTH, PIANO_HEIGHT}; tic_rect rect = {x, y, PIANO_WIDTH, PIANO_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -470,7 +470,7 @@ static void drawPiano(Sfx* sfx, s32 x, s32 y)
for(s32 i = COUNT_OF(buttons) - 1; i >= 0; i--) for(s32 i = COUNT_OF(buttons) - 1; i >= 0; i--)
{ {
SDL_Rect* rect = buttons + i; tic_rect* rect = buttons + i;
if(checkMousePos(rect)) if(checkMousePos(rect))
if(ButtonIndixes[i] >= 0) if(ButtonIndixes[i] >= 0)
@ -484,7 +484,7 @@ static void drawPiano(Sfx* sfx, s32 x, s32 y)
{ {
for(s32 i = COUNT_OF(buttons) - 1; i >= 0; i--) for(s32 i = COUNT_OF(buttons) - 1; i >= 0; i--)
{ {
SDL_Rect* rect = buttons + i; tic_rect* rect = buttons + i;
s32 index = ButtonIndixes[i]; s32 index = ButtonIndixes[i];
if(index >= 0) if(index >= 0)
@ -502,7 +502,7 @@ static void drawPiano(Sfx* sfx, s32 x, s32 y)
for(s32 i = 0; i < COUNT_OF(buttons); i++) for(s32 i = 0; i < COUNT_OF(buttons); i++)
{ {
SDL_Rect* rect = buttons + i; tic_rect* rect = buttons + i;
bool white = i < PIANO_WHITE_BUTTONS; bool white = i < PIANO_WHITE_BUTTONS;
s32 index = ButtonIndixes[i]; s32 index = ButtonIndixes[i];
@ -525,7 +525,7 @@ static void drawOctavePanel(Sfx* sfx, s32 x, s32 y)
for(s32 i = 0; i < OCTAVES; i++) for(s32 i = 0; i < OCTAVES; i++)
{ {
SDL_Rect rect = {x + i * (TIC_FONT_WIDTH + Gap), y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; tic_rect rect = {x + i * (TIC_FONT_WIDTH + Gap), y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -761,7 +761,7 @@ static void drawModeTabs(Sfx* sfx)
for (s32 i = 0; i < Count; i++) for (s32 i = 0; i < Count; i++)
{ {
SDL_Rect rect = { TIC80_WIDTH - Width * (Count - i), 0, Width, Height }; tic_rect rect = { TIC80_WIDTH - Width * (Count - i), 0, Width, Height };
bool over = false; bool over = false;
@ -794,7 +794,7 @@ static void drawSfxToolbar(Sfx* sfx)
s32 x = TIC80_WIDTH - Width - TIC_SPRITESIZE*3; s32 x = TIC80_WIDTH - Width - TIC_SPRITESIZE*3;
s32 y = 1; s32 y = 1;
SDL_Rect rect = {x, y, Width, TIC_FONT_HEIGHT}; tic_rect rect = {x, y, Width, TIC_FONT_HEIGHT};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -871,7 +871,7 @@ static void drawWaveformBar(Sfx* sfx, s32 x, s32 y)
for(s32 i = 0; i < ENVELOPES_COUNT; i++) for(s32 i = 0; i < ENVELOPES_COUNT; i++)
{ {
SDL_Rect rect = {x + (i%Cols)*(Width+Gap), y + (i/Cols)*(Height+Gap), Width, Height}; tic_rect rect = {x + (i%Cols)*(Width+Gap), y + (i/Cols)*(Height+Gap), Width, Height};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -911,7 +911,7 @@ static void drawWaveformCanvas(Sfx* sfx, s32 x, s32 y)
{ {
enum {Rows = CANVAS_ROWS, Width = ENVELOPE_VALUES * CANVAS_SIZE, Height = CANVAS_HEIGHT}; enum {Rows = CANVAS_ROWS, Width = ENVELOPE_VALUES * CANVAS_SIZE, Height = CANVAS_HEIGHT};
SDL_Rect rect = {x, y, Width, Height}; tic_rect rect = {x, y, Width, Height};
sfx->tic->api.rect(sfx->tic, rect.x, rect.y, rect.w, rect.h, (tic_color_dark_red)); sfx->tic->api.rect(sfx->tic, rect.x, rect.y, rect.w, rect.h, (tic_color_dark_red));

View File

@ -33,7 +33,7 @@
static void clearCanvasSelection(Sprite* sprite) static void clearCanvasSelection(Sprite* sprite)
{ {
SDL_memset(&sprite->select.rect, 0, sizeof(SDL_Rect)); SDL_memset(&sprite->select.rect, 0, sizeof(tic_rect));
} }
static u8 getSheetPixel(Sprite* sprite, s32 x, s32 y) static u8 getSheetPixel(Sprite* sprite, s32 x, s32 y)
@ -70,12 +70,12 @@ static void drawSelection(Sprite* sprite, s32 x, s32 y, s32 w, s32 h)
for(s32 i = (y+h-1); i >= y; i--) { sprite->tic->api.pixel(sprite->tic, x, i, index++ % Step ? color : 0);} for(s32 i = (y+h-1); i >= y; i--) { sprite->tic->api.pixel(sprite->tic, x, i, index++ % Step ? color : 0);}
} }
static SDL_Rect getSpriteRect(Sprite* sprite) static tic_rect getSpriteRect(Sprite* sprite)
{ {
s32 x = getIndexPosX(sprite); s32 x = getIndexPosX(sprite);
s32 y = getIndexPosY(sprite); s32 y = getIndexPosY(sprite);
return (SDL_Rect){x, y, sprite->size, sprite->size}; return (tic_rect){x, y, sprite->size, sprite->size};
} }
static void drawCursorBorder(Sprite* sprite, s32 x, s32 y, s32 w, s32 h) static void drawCursorBorder(Sprite* sprite, s32 x, s32 y, s32 w, s32 h)
@ -86,7 +86,7 @@ static void drawCursorBorder(Sprite* sprite, s32 x, s32 y, s32 w, s32 h)
static void processPickerCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 sx, s32 sy) static void processPickerCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 sx, s32 sy)
{ {
SDL_Rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE}; tic_rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE};
const s32 Size = CANVAS_SIZE / sprite->size; const s32 Size = CANVAS_SIZE / sprite->size;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -111,7 +111,7 @@ static void processPickerCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 sx, s32 s
static void processDrawCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 sx, s32 sy) static void processDrawCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 sx, s32 sy)
{ {
SDL_Rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE}; tic_rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE};
const s32 Size = CANVAS_SIZE / sprite->size; const s32 Size = CANVAS_SIZE / sprite->size;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -167,7 +167,7 @@ static void pasteSelection(Sprite* sprite)
for(s32 sx = l; sx < r; sx++) for(s32 sx = l; sx < r; sx++)
setSheetPixel(sprite, sx, sy, sprite->select.back[i++]); setSheetPixel(sprite, sx, sy, sprite->select.back[i++]);
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
l += rect->x; l += rect->x;
t += rect->y; t += rect->y;
@ -183,7 +183,7 @@ static void pasteSelection(Sprite* sprite)
static void copySelection(Sprite* sprite) static void copySelection(Sprite* sprite)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -192,7 +192,7 @@ static void copySelection(Sprite* sprite)
sprite->select.back[i++] = getSheetPixel(sprite, sx, sy); sprite->select.back[i++] = getSheetPixel(sprite, sx, sy);
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
SDL_memset(sprite->select.front, 0, CANVAS_SIZE * CANVAS_SIZE); SDL_memset(sprite->select.front, 0, CANVAS_SIZE * CANVAS_SIZE);
for(s32 j = rect->y, index = 0; j < (rect->y + rect->h); j++) for(s32 j = rect->y, index = 0; j < (rect->y + rect->h); j++)
@ -207,7 +207,7 @@ static void copySelection(Sprite* sprite)
static void processSelectCanvasMouse(Sprite* sprite, s32 x, s32 y) static void processSelectCanvasMouse(Sprite* sprite, s32 x, s32 y)
{ {
SDL_Rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE}; tic_rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE};
const s32 Size = CANVAS_SIZE / sprite->size; const s32 Size = CANVAS_SIZE / sprite->size;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -234,13 +234,13 @@ static void processSelectCanvasMouse(Sprite* sprite, s32 x, s32 y)
s32 rr = SDL_max(x, sprite->select.start.x); s32 rr = SDL_max(x, sprite->select.start.x);
s32 rb = SDL_max(y, sprite->select.start.y); s32 rb = SDL_max(y, sprite->select.start.y);
sprite->select.rect = (SDL_Rect){rl, rt, rr - rl + 1, rb - rt + 1}; sprite->select.rect = (tic_rect){rl, rt, rr - rl + 1, rb - rt + 1};
} }
else else
{ {
sprite->select.drag = true; sprite->select.drag = true;
sprite->select.start = (SDL_Point){mx / Size, my / Size}; sprite->select.start = (tic_point){mx / Size, my / Size};
sprite->select.rect = (SDL_Rect){sprite->select.start.x, sprite->select.start.y, 1, 1}; sprite->select.rect = (tic_rect){sprite->select.start.x, sprite->select.start.y, 1, 1};
} }
} }
else if(sprite->select.drag) else if(sprite->select.drag)
@ -274,7 +274,7 @@ static void replaceColor(Sprite* sprite, s32 l, s32 t, s32 r, s32 b, s32 x, s32
static void processFillCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 l, s32 t) static void processFillCanvasMouse(Sprite* sprite, s32 x, s32 y, s32 l, s32 t)
{ {
SDL_Rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE}; tic_rect rect = {x, y, CANVAS_SIZE, CANVAS_SIZE};
const s32 Size = CANVAS_SIZE / sprite->size; const s32 Size = CANVAS_SIZE / sprite->size;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -323,7 +323,7 @@ static void drawBrushSlider(Sprite* sprite, s32 x, s32 y)
{ {
enum {Count = 4, Size = 5}; enum {Count = 4, Size = 5};
SDL_Rect rect = {x, y, Size, (Size+1)*Count}; tic_rect rect = {x, y, Size, (Size+1)*Count};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -386,7 +386,7 @@ static void drawCanvas(Sprite* sprite, s32 x, s32 y)
static void drawCanvasOvr(Sprite* sprite, s32 x, s32 y) static void drawCanvasOvr(Sprite* sprite, s32 x, s32 y)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -414,7 +414,7 @@ static void drawCanvasOvr(Sprite* sprite, s32 x, s32 y)
} }
} }
SDL_Rect canvasRect = {x, y, CANVAS_SIZE, CANVAS_SIZE}; tic_rect canvasRect = {x, y, CANVAS_SIZE, CANVAS_SIZE};
if(checkMouseDown(&canvasRect, SDL_BUTTON_MIDDLE)) if(checkMouseDown(&canvasRect, SDL_BUTTON_MIDDLE))
{ {
s32 mx = getMouseX() - x; s32 mx = getMouseX() - x;
@ -425,35 +425,35 @@ static void drawCanvasOvr(Sprite* sprite, s32 x, s32 y)
static void upCanvas(Sprite* sprite) static void upCanvas(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
if(rect->y > 0) rect->y--; if(rect->y > 0) rect->y--;
pasteSelection(sprite); pasteSelection(sprite);
} }
static void downCanvas(Sprite* sprite) static void downCanvas(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
if(rect->y + rect->h < sprite->size) rect->y++; if(rect->y + rect->h < sprite->size) rect->y++;
pasteSelection(sprite); pasteSelection(sprite);
} }
static void leftCanvas(Sprite* sprite) static void leftCanvas(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
if(rect->x > 0) rect->x--; if(rect->x > 0) rect->x--;
pasteSelection(sprite); pasteSelection(sprite);
} }
static void rightCanvas(Sprite* sprite) static void rightCanvas(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
if(rect->x + rect->w < sprite->size) rect->x++; if(rect->x + rect->w < sprite->size) rect->x++;
pasteSelection(sprite); pasteSelection(sprite);
} }
static void rotateSelectRect(Sprite* sprite) static void rotateSelectRect(Sprite* sprite)
{ {
SDL_Rect rect = sprite->select.rect; tic_rect rect = sprite->select.rect;
s32 selection_center_x = rect.x + rect.w/2; s32 selection_center_x = rect.x + rect.w/2;
s32 selection_center_y = rect.y + rect.h/2; s32 selection_center_y = rect.y + rect.h/2;
@ -488,7 +488,7 @@ static void rotateCanvas(Sprite* sprite)
if(buffer) if(buffer)
{ {
{ {
SDL_Rect rect = sprite->select.rect; tic_rect rect = sprite->select.rect;
const s32 Size = rect.h * rect.w; const s32 Size = rect.h * rect.w;
s32 diff = 0; s32 diff = 0;
@ -513,7 +513,7 @@ static void rotateCanvas(Sprite* sprite)
static void deleteCanvas(Sprite* sprite) static void deleteCanvas(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
s32 left = getIndexPosX(sprite) + rect->x; s32 left = getIndexPosX(sprite) + rect->x;
s32 top = getIndexPosY(sprite) + rect->y; s32 top = getIndexPosY(sprite) + rect->y;
@ -531,7 +531,7 @@ static void deleteCanvas(Sprite* sprite)
static void flipCanvasHorz(Sprite* sprite) static void flipCanvasHorz(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
s32 sprite_x = getIndexPosX(sprite); s32 sprite_x = getIndexPosX(sprite);
s32 sprite_y = getIndexPosY(sprite); s32 sprite_y = getIndexPosY(sprite);
@ -553,7 +553,7 @@ static void flipCanvasHorz(Sprite* sprite)
static void flipCanvasVert(Sprite* sprite) static void flipCanvasVert(Sprite* sprite)
{ {
SDL_Rect* rect = &sprite->select.rect; tic_rect* rect = &sprite->select.rect;
s32 sprite_x = getIndexPosX(sprite); s32 sprite_x = getIndexPosX(sprite);
s32 sprite_y = getIndexPosY(sprite); s32 sprite_y = getIndexPosY(sprite);
@ -619,7 +619,7 @@ static void drawMoveButtons(Sprite* sprite)
0b00000000, 0b00000000,
}; };
static const SDL_Rect Rects[] = static const tic_rect Rects[] =
{ {
{x + (CANVAS_SIZE - TIC_SPRITESIZE)/2, y - TIC_SPRITESIZE, TIC_SPRITESIZE, TIC_SPRITESIZE/2}, {x + (CANVAS_SIZE - TIC_SPRITESIZE)/2, y - TIC_SPRITESIZE, TIC_SPRITESIZE, TIC_SPRITESIZE/2},
{x + (CANVAS_SIZE - TIC_SPRITESIZE)/2, y + CANVAS_SIZE + TIC_SPRITESIZE/2, TIC_SPRITESIZE, TIC_SPRITESIZE/2}, {x + (CANVAS_SIZE - TIC_SPRITESIZE)/2, y + CANVAS_SIZE + TIC_SPRITESIZE/2, TIC_SPRITESIZE, TIC_SPRITESIZE/2},
@ -668,7 +668,7 @@ static void drawRGBSlider(Sprite* sprite, s32 x, s32 y, u8* value)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x, y-2, Size, 5}; tic_rect rect = {x, y-2, Size, 5};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -710,7 +710,7 @@ static void drawRGBSlider(Sprite* sprite, s32 x, s32 y, u8* value)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x - 4, y - 1, 2, 3}; tic_rect rect = {x - 4, y - 1, 2, 3};
bool down = false; bool down = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -748,7 +748,7 @@ static void drawRGBSlider(Sprite* sprite, s32 x, s32 y, u8* value)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x + Size + 2, y - 1, 2, 3}; tic_rect rect = {x + Size + 2, y - 1, 2, 3};
bool down = false; bool down = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -796,7 +796,7 @@ static void drawRGBTools(Sprite* sprite, s32 x, s32 y)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x, y, Size, Size}; tic_rect rect = {x, y, Size, Size};
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -840,7 +840,7 @@ static void drawRGBTools(Sprite* sprite, s32 x, s32 y)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x + 8, y, Size, Size}; tic_rect rect = {x + 8, y, Size, Size};
bool over = false; bool over = false;
bool down = false; bool down = false;
@ -898,7 +898,7 @@ static void drawRGBSlidersOvr(Sprite* sprite, s32 x, s32 y)
static void drawPalette(Sprite* sprite, s32 x, s32 y) static void drawPalette(Sprite* sprite, s32 x, s32 y)
{ {
SDL_Rect rect = {x, y, PALETTE_WIDTH-1, PALETTE_HEIGHT-1}; tic_rect rect = {x, y, PALETTE_WIDTH-1, PALETTE_HEIGHT-1};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -946,7 +946,7 @@ static void drawPalette(Sprite* sprite, s32 x, s32 y)
0b11111111, 0b11111111,
}; };
SDL_Rect rect = {x + PALETTE_WIDTH + 3, y + (PALETTE_HEIGHT-8)/2-1, 8, 8}; tic_rect rect = {x + PALETTE_WIDTH + 3, y + (PALETTE_HEIGHT-8)/2-1, 8, 8};
bool down = false; bool down = false;
bool over = false; bool over = false;
@ -1040,7 +1040,7 @@ static void updateSpriteSize(Sprite* sprite, s32 size)
static void drawSheet(Sprite* sprite, s32 x, s32 y) static void drawSheet(Sprite* sprite, s32 x, s32 y)
{ {
SDL_Rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE}; tic_rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE};
sprite->tic->api.rect_border(sprite->tic, rect.x - 1, rect.y - 1, rect.w + 2, rect.h + 2, (tic_color_white)); sprite->tic->api.rect_border(sprite->tic, rect.x - 1, rect.y - 1, rect.w + 2, rect.h + 2, (tic_color_white));
sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, (tic_color_black)); sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, (tic_color_black));
@ -1059,7 +1059,7 @@ static void drawSheet(Sprite* sprite, s32 x, s32 y)
static void drawSheetOvr(Sprite* sprite, s32 x, s32 y) static void drawSheetOvr(Sprite* sprite, s32 x, s32 y)
{ {
SDL_Rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE}; tic_rect rect = {x, y, TIC_SPRITESHEET_SIZE, TIC_SPRITESHEET_SIZE};
for(s32 j = 0, index = (sprite->index - sprite->index % TIC_BANK_SPRITES); j < rect.h; j += TIC_SPRITESIZE) for(s32 j = 0, index = (sprite->index - sprite->index % TIC_BANK_SPRITES); j < rect.h; j += TIC_SPRITESIZE)
for(s32 i = 0; i < rect.w; i += TIC_SPRITESIZE, index++) for(s32 i = 0; i < rect.w; i += TIC_SPRITESIZE, index++)
@ -1074,7 +1074,7 @@ static void drawSheetOvr(Sprite* sprite, s32 x, s32 y)
static void flipSpriteHorz(Sprite* sprite) static void flipSpriteHorz(Sprite* sprite)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w/2; s32 r = rect.x + rect.w/2;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -1091,7 +1091,7 @@ static void flipSpriteHorz(Sprite* sprite)
static void flipSpriteVert(Sprite* sprite) static void flipSpriteVert(Sprite* sprite)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h/2; s32 b = rect.y + rect.h/2;
@ -1114,7 +1114,7 @@ static void rotateSprite(Sprite* sprite)
if(buffer) if(buffer)
{ {
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -1135,7 +1135,7 @@ static void rotateSprite(Sprite* sprite)
static void deleteSprite(Sprite* sprite) static void deleteSprite(Sprite* sprite)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -1200,7 +1200,7 @@ static void drawSpriteTools(Sprite* sprite, s32 x, s32 y)
bool pushed = false; bool pushed = false;
bool over = false; bool over = false;
SDL_Rect rect = {x + i * Gap, y, TIC_SPRITESIZE, TIC_SPRITESIZE}; tic_rect rect = {x + i * Gap, y, TIC_SPRITESIZE, TIC_SPRITESIZE};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -1283,7 +1283,7 @@ static void drawTools(Sprite* sprite, s32 x, s32 y)
for(s32 i = 0; i < COUNT_OF(Icons)/BITS_IN_BYTE; i++) for(s32 i = 0; i < COUNT_OF(Icons)/BITS_IN_BYTE; i++)
{ {
SDL_Rect rect = {x + i * Gap, y, TIC_SPRITESIZE, TIC_SPRITESIZE}; tic_rect rect = {x + i * Gap, y, TIC_SPRITESIZE, TIC_SPRITESIZE};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -1341,7 +1341,7 @@ static void copyToClipboard(Sprite* sprite)
if(buffer) if(buffer)
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -1373,7 +1373,7 @@ static void copyFromClipboard(Sprite* sprite)
{ {
if(fromClipboard(buffer, size, true, false)) if(fromClipboard(buffer, size, true, false))
{ {
SDL_Rect rect = getSpriteRect(sprite); tic_rect rect = getSpriteRect(sprite);
s32 r = rect.x + rect.w; s32 r = rect.x + rect.w;
s32 b = rect.y + rect.h; s32 b = rect.y + rect.h;
@ -1510,7 +1510,7 @@ static void drawSpriteToolbar(Sprite* sprite)
// draw sprite size control // draw sprite size control
{ {
SDL_Rect rect = {TIC80_WIDTH - 58, 1, 23, 5}; tic_rect rect = {TIC80_WIDTH - 58, 1, 23, 5};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {
@ -1547,7 +1547,7 @@ static void drawSpriteToolbar(Sprite* sprite)
{ {
static const char Label[] = "BG"; static const char Label[] = "BG";
SDL_Rect rect = {TIC80_WIDTH - 2 * TIC_FONT_WIDTH - 2, 0, 2 * TIC_FONT_WIDTH + 1, TIC_SPRITESIZE-1}; tic_rect rect = {TIC80_WIDTH - 2 * TIC_FONT_WIDTH - 2, 0, 2 * TIC_FONT_WIDTH + 1, TIC_SPRITESIZE-1};
sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, bg ? (tic_color_black) : (tic_color_gray)); sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, bg ? (tic_color_black) : (tic_color_gray));
sprite->tic->api.fixed_text(sprite->tic, Label, rect.x+1, rect.y+1, (tic_color_white)); sprite->tic->api.fixed_text(sprite->tic, Label, rect.x+1, rect.y+1, (tic_color_white));
@ -1567,7 +1567,7 @@ static void drawSpriteToolbar(Sprite* sprite)
{ {
static const char Label[] = "FG"; static const char Label[] = "FG";
SDL_Rect rect = {TIC80_WIDTH - 4 * TIC_FONT_WIDTH - 4, 0, 2 * TIC_FONT_WIDTH + 1, TIC_SPRITESIZE-1}; tic_rect rect = {TIC80_WIDTH - 4 * TIC_FONT_WIDTH - 4, 0, 2 * TIC_FONT_WIDTH + 1, TIC_SPRITESIZE-1};
sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, bg ? (tic_color_gray) : (tic_color_black)); sprite->tic->api.rect(sprite->tic, rect.x, rect.y, rect.w, rect.h, bg ? (tic_color_gray) : (tic_color_black));
sprite->tic->api.fixed_text(sprite->tic, Label, rect.x+1, rect.y+1, (tic_color_white)); sprite->tic->api.fixed_text(sprite->tic, Label, rect.x+1, rect.y+1, (tic_color_white));

View File

@ -44,8 +44,8 @@ struct Sprite
struct struct
{ {
SDL_Rect rect; tic_rect rect;
SDL_Point start; tic_point start;
bool drag; bool drag;
u8* back; u8* back;
u8* front; u8* front;

View File

@ -70,8 +70,8 @@ typedef struct
bool down; bool down;
bool click; bool click;
SDL_Point start; tic_point start;
SDL_Point end; tic_point end;
} MouseState; } MouseState;
@ -115,7 +115,7 @@ static struct
struct struct
{ {
// SDL_Point cursor; // tic_point cursor;
// u32 button; // u32 button;
MouseState state[3]; MouseState state[3];
@ -127,7 +127,7 @@ static struct
struct struct
{ {
SDL_Point pos; tic_point pos;
bool active; bool active;
} gesture; } gesture;
@ -151,11 +151,11 @@ static struct
// struct // struct
// { // {
// s32 size; // s32 size;
// SDL_Point axis; // tic_point axis;
// SDL_Point a; // tic_point a;
// SDL_Point b; // tic_point b;
// SDL_Point x; // tic_point x;
// SDL_Point y; // tic_point y;
// } part; // } part;
// } gamepad; // } gamepad;
@ -574,7 +574,7 @@ static void drawExtrabar(tic_mem* tic)
for(s32 i = 0; i < sizeof Icons / BITS_IN_BYTE; i++) for(s32 i = 0; i < sizeof Icons / BITS_IN_BYTE; i++)
{ {
SDL_Rect rect = {x + i*Size, y, Size, Size}; tic_rect rect = {x + i*Size, y, Size, Size};
u8 bgcolor = (tic_color_white); u8 bgcolor = (tic_color_white);
u8 color = (tic_color_light_blue); u8 color = (tic_color_light_blue);
@ -613,7 +613,7 @@ static void drawBankIcon(s32 x, s32 y)
{ {
tic_mem* tic = studioImpl.studio.tic; tic_mem* tic = studioImpl.studio.tic;
SDL_Rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; tic_rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT};
static const u8 Icon[] = static const u8 Icon[] =
{ {
@ -657,7 +657,7 @@ static void drawBankIcon(s32 x, s32 y)
for(s32 i = 0; i < TIC_EDITOR_BANKS; i++) for(s32 i = 0; i < TIC_EDITOR_BANKS; i++)
{ {
SDL_Rect rect = {x + 2 + (i+1)*Size, 0, Size, Size}; tic_rect rect = {x + 2 + (i+1)*Size, 0, Size, Size};
bool over = false; bool over = false;
if(checkMousePos(&rect)) if(checkMousePos(&rect))
@ -693,7 +693,7 @@ static void drawBankIcon(s32 x, s32 y)
0b00000000, 0b00000000,
}; };
SDL_Rect rect = {x + 4 + (TIC_EDITOR_BANKS+1)*Size, 0, Size, Size}; tic_rect rect = {x + 4 + (TIC_EDITOR_BANKS+1)*Size, 0, Size, Size};
bool over = false; bool over = false;
@ -796,7 +796,7 @@ void drawToolbar(tic_mem* tic, u8 color, bool bg)
for(s32 i = 0; i < COUNT_OF(Modes); i++) for(s32 i = 0; i < COUNT_OF(Modes); i++)
{ {
SDL_Rect rect = {i * Size, 0, Size, Size}; tic_rect rect = {i * Size, 0, Size, Size};
bool over = false; bool over = false;
@ -1111,34 +1111,42 @@ s32 getMouseY()
return tic->ram.input.mouse.y; return tic->ram.input.mouse.y;
} }
bool checkMousePos(const SDL_Rect* rect) static inline bool pointInRect(const tic_point* pt, const tic_rect* rect)
{ {
SDL_Point pos = {getMouseX(), getMouseY()}; return (pt->x >= rect->x)
return SDL_PointInRect(&pos, rect); && (pt->x < (rect->x + rect->w))
&& (pt->y >= rect->y)
&& (pt->y < (rect->y + rect->h));
} }
bool checkMouseClick(const SDL_Rect* rect, s32 button) bool checkMousePos(const tic_rect* rect)
{
tic_point pos = {getMouseX(), getMouseY()};
return pointInRect(&pos, rect);
}
bool checkMouseClick(const tic_rect* rect, s32 button)
{ {
MouseState* state = &studioImpl.mouse.state[button]; MouseState* state = &studioImpl.mouse.state[button];
bool value = state->click bool value = state->click
&& SDL_PointInRect(&state->start, rect) && pointInRect(&state->start, rect)
&& SDL_PointInRect(&state->end, rect); && pointInRect(&state->end, rect);
if(value) state->click = false; if(value) state->click = false;
return value; return value;
} }
bool checkMouseDown(const SDL_Rect* rect, s32 button) bool checkMouseDown(const tic_rect* rect, s32 button)
{ {
MouseState* state = &studioImpl.mouse.state[button]; MouseState* state = &studioImpl.mouse.state[button];
return state->down && SDL_PointInRect(&state->start, rect); return state->down && pointInRect(&state->start, rect);
} }
bool getGesturePos(SDL_Point* pos) bool getGesturePos(tic_point* pos)
{ {
if(studioImpl.gesture.active) if(studioImpl.gesture.active)
{ {
@ -1245,7 +1253,7 @@ bool studioCartChanged()
// static void updateGamepadParts(); // static void updateGamepadParts();
// static void calcTextureRect(SDL_Rect* rect) // static void calcTextureRect(tic_rect* rect)
// { // {
// SDL_GetWindowSize(studioImpl.window, &rect->w, &rect->h); // SDL_GetWindowSize(studioImpl.window, &rect->w, &rect->h);
@ -1293,7 +1301,7 @@ static void processGamepadMapping()
// #if !defined(__EMSCRIPTEN__) && !defined(__MACOSX__) // #if !defined(__EMSCRIPTEN__) && !defined(__MACOSX__)
// static bool checkTouch(const SDL_Rect* rect, s32* x, s32* y) // static bool checkTouch(const tic_rect* rect, s32* x, s32* y)
// { // {
// s32 devices = SDL_GetNumTouchDevices(); // s32 devices = SDL_GetNumTouchDevices();
// s32 width = 0, height = 0; // s32 width = 0, height = 0;
@ -1327,8 +1335,8 @@ static void processGamepadMapping()
// if (finger && finger->pressure > 0.0f) // if (finger && finger->pressure > 0.0f)
// { // {
// SDL_Point point = { (s32)(finger->x * width), (s32)(finger->y * height) }; // tic_point point = { (s32)(finger->x * width), (s32)(finger->y * height) };
// if (SDL_PointInRect(&point, rect)) // if (pointInRect(&point, rect))
// { // {
// *x = point.x; // *x = point.x;
// *y = point.y; // *y = point.y;
@ -1350,7 +1358,7 @@ static void processGamepadMapping()
// s32 x = 0, y = 0; // s32 x = 0, y = 0;
// { // {
// SDL_Rect axis = {studioImpl.gamepad.part.axis.x, studioImpl.gamepad.part.axis.y, size*3, size*3}; // tic_rect axis = {studioImpl.gamepad.part.axis.x, studioImpl.gamepad.part.axis.y, size*3, size*3};
// if(checkTouch(&axis, &x, &y)) // if(checkTouch(&axis, &x, &y))
// { // {
@ -1381,22 +1389,22 @@ static void processGamepadMapping()
// } // }
// { // {
// SDL_Rect a = {studioImpl.gamepad.part.a.x, studioImpl.gamepad.part.a.y, size, size}; // tic_rect a = {studioImpl.gamepad.part.a.x, studioImpl.gamepad.part.a.y, size, size};
// if(checkTouch(&a, &x, &y)) studioImpl.gamepad.touch.first.a = true; // if(checkTouch(&a, &x, &y)) studioImpl.gamepad.touch.first.a = true;
// } // }
// { // {
// SDL_Rect b = {studioImpl.gamepad.part.b.x, studioImpl.gamepad.part.b.y, size, size}; // tic_rect b = {studioImpl.gamepad.part.b.x, studioImpl.gamepad.part.b.y, size, size};
// if(checkTouch(&b, &x, &y)) studioImpl.gamepad.touch.first.b = true; // if(checkTouch(&b, &x, &y)) studioImpl.gamepad.touch.first.b = true;
// } // }
// { // {
// SDL_Rect xb = {studioImpl.gamepad.part.x.x, studioImpl.gamepad.part.x.y, size, size}; // tic_rect xb = {studioImpl.gamepad.part.x.x, studioImpl.gamepad.part.x.y, size, size};
// if(checkTouch(&xb, &x, &y)) studioImpl.gamepad.touch.first.x = true; // if(checkTouch(&xb, &x, &y)) studioImpl.gamepad.touch.first.x = true;
// } // }
// { // {
// SDL_Rect yb = {studioImpl.gamepad.part.y.x, studioImpl.gamepad.part.y.y, size, size}; // tic_rect yb = {studioImpl.gamepad.part.y.x, studioImpl.gamepad.part.y.y, size, size};
// if(checkTouch(&yb, &x, &y)) studioImpl.gamepad.touch.first.y = true; // if(checkTouch(&yb, &x, &y)) studioImpl.gamepad.touch.first.y = true;
// } // }
// } // }
@ -1587,7 +1595,7 @@ static void processGesture()
if(fingers == Fingers) if(fingers == Fingers)
{ {
SDL_Point point = {0, 0}; tic_point point = {0, 0};
for(s32 f = 0; f < fingers; f++) for(s32 f = 0; f < fingers; f++)
{ {
@ -1611,7 +1619,7 @@ static void processGesture()
// studioImpl.mouse.button = SDL_GetMouseState(&studioImpl.mouse.cursor.x, &studioImpl.mouse.cursor.y); // studioImpl.mouse.button = SDL_GetMouseState(&studioImpl.mouse.cursor.x, &studioImpl.mouse.cursor.y);
// { // {
// SDL_Rect rect = {0, 0, 0, 0}; // tic_rect rect = {0, 0, 0, 0};
// calcTextureRect(&rect); // calcTextureRect(&rect);
// if(rect.w) studioImpl.mouse.cursor.x = (studioImpl.mouse.cursor.x - rect.x) * TIC80_WIDTH / rect.w; // if(rect.w) studioImpl.mouse.cursor.x = (studioImpl.mouse.cursor.x - rect.x) * TIC80_WIDTH / rect.w;
@ -1675,7 +1683,7 @@ static void saveProject()
else showPopupMessage("SAVE ERROR :("); else showPopupMessage("SAVE ERROR :(");
} }
static void screen2buffer(u32* buffer, const u32* pixels, SDL_Rect rect) static void screen2buffer(u32* buffer, const u32* pixels, tic_rect rect)
{ {
pixels += rect.y * TIC80_FULLWIDTH; pixels += rect.y * TIC80_FULLWIDTH;
@ -1701,7 +1709,7 @@ static void setCoverImage()
// if(buffer) // if(buffer)
// { // {
// SDL_Rect rect = {OFFSET_LEFT, OFFSET_TOP, TIC80_WIDTH, TIC80_HEIGHT}; // tic_rect rect = {OFFSET_LEFT, OFFSET_TOP, TIC80_WIDTH, TIC80_HEIGHT};
// screen2buffer(buffer, tic->screen, rect); // screen2buffer(buffer, tic->screen, rect);
@ -1778,7 +1786,7 @@ static void takeScreenshot()
} }
} }
static inline bool wasKeyPressed(s32 key) static inline bool isKeyWasDownOnce(s32 key)
{ {
tic_mem* tic = studioImpl.studio.tic; tic_mem* tic = studioImpl.studio.tic;
@ -1836,13 +1844,13 @@ static void processShortcuts()
if(alt) if(alt)
{ {
if(wasKeyPressed(tic_key_grave)) setStudioMode(TIC_CONSOLE_MODE); if(isKeyWasDownOnce(tic_key_grave)) setStudioMode(TIC_CONSOLE_MODE);
else if(wasKeyPressed(tic_key_1)) setStudioMode(TIC_CODE_MODE); else if(isKeyWasDownOnce(tic_key_1)) setStudioMode(TIC_CODE_MODE);
else if(wasKeyPressed(tic_key_2)) setStudioMode(TIC_SPRITE_MODE); else if(isKeyWasDownOnce(tic_key_2)) setStudioMode(TIC_SPRITE_MODE);
else if(wasKeyPressed(tic_key_3)) setStudioMode(TIC_MAP_MODE); else if(isKeyWasDownOnce(tic_key_3)) setStudioMode(TIC_MAP_MODE);
else if(wasKeyPressed(tic_key_4)) setStudioMode(TIC_SFX_MODE); else if(isKeyWasDownOnce(tic_key_4)) setStudioMode(TIC_SFX_MODE);
else if(wasKeyPressed(tic_key_5)) setStudioMode(TIC_MUSIC_MODE); else if(isKeyWasDownOnce(tic_key_5)) setStudioMode(TIC_MUSIC_MODE);
else if(wasKeyPressed(tic_key_return)) goFullscreen(); else if(isKeyWasDownOnce(tic_key_return)) goFullscreen();
// switch(event->keysym.sym) // switch(event->keysym.sym)
// { // {
@ -1857,12 +1865,12 @@ static void processShortcuts()
} }
else if(ctrl) else if(ctrl)
{ {
if(wasKeyPressed(tic_key_pageup)) changeStudioMode(-1); if(isKeyWasDownOnce(tic_key_pageup)) changeStudioMode(-1);
else if(wasKeyPressed(tic_key_pagedown)) changeStudioMode(1); else if(isKeyWasDownOnce(tic_key_pagedown)) changeStudioMode(1);
else if(wasKeyPressed(tic_key_q)) exitStudio(); else if(isKeyWasDownOnce(tic_key_q)) exitStudio();
else if(wasKeyPressed(tic_key_r)) runProject(); else if(isKeyWasDownOnce(tic_key_r)) runProject();
else if(wasKeyPressed(tic_key_return)) runProject(); else if(isKeyWasDownOnce(tic_key_return)) runProject();
else if(wasKeyPressed(tic_key_s)) saveProject(); else if(isKeyWasDownOnce(tic_key_s)) saveProject();
// switch(event->keysym.sym) // switch(event->keysym.sym)
@ -1873,18 +1881,18 @@ static void processShortcuts()
} }
else else
{ {
if(wasKeyPressed(tic_key_f1)) setStudioMode(TIC_CODE_MODE); if(isKeyWasDownOnce(tic_key_f1)) setStudioMode(TIC_CODE_MODE);
else if(wasKeyPressed(tic_key_f2)) setStudioMode(TIC_SPRITE_MODE); else if(isKeyWasDownOnce(tic_key_f2)) setStudioMode(TIC_SPRITE_MODE);
else if(wasKeyPressed(tic_key_f3)) setStudioMode(TIC_MAP_MODE); else if(isKeyWasDownOnce(tic_key_f3)) setStudioMode(TIC_MAP_MODE);
else if(wasKeyPressed(tic_key_f4)) setStudioMode(TIC_SFX_MODE); else if(isKeyWasDownOnce(tic_key_f4)) setStudioMode(TIC_SFX_MODE);
else if(wasKeyPressed(tic_key_f5)) setStudioMode(TIC_MUSIC_MODE); else if(isKeyWasDownOnce(tic_key_f5)) setStudioMode(TIC_MUSIC_MODE);
else if(wasKeyPressed(tic_key_f7)) setCoverImage(); else if(isKeyWasDownOnce(tic_key_f7)) setCoverImage();
else if(wasKeyPressed(tic_key_f8)) takeScreenshot(); else if(isKeyWasDownOnce(tic_key_f8)) takeScreenshot();
#if !defined(__EMSCRIPTEN__) #if !defined(__EMSCRIPTEN__)
else if(wasKeyPressed(tic_key_f9)) startVideoRecord(); else if(isKeyWasDownOnce(tic_key_f9)) startVideoRecord();
#endif #endif
else if(wasKeyPressed(tic_key_f11)) goFullscreen(); else if(isKeyWasDownOnce(tic_key_f11)) goFullscreen();
else if(wasKeyPressed(tic_key_escape)) else if(isKeyWasDownOnce(tic_key_escape))
{ {
Code* code = studioImpl.editor[studioImpl.bank.index.code].code; Code* code = studioImpl.editor[studioImpl.bank.index.code].code;
@ -2253,7 +2261,7 @@ static void recordFrame(u32* pixels)
{ {
if(studioImpl.video.frame < studioImpl.video.frames) if(studioImpl.video.frame < studioImpl.video.frames)
{ {
SDL_Rect rect = {0, 0, TIC80_FULLWIDTH, TIC80_FULLHEIGHT}; tic_rect rect = {0, 0, TIC80_FULLWIDTH, TIC80_FULLHEIGHT};
screen2buffer(studioImpl.video.buffer + (TIC80_FULLWIDTH*TIC80_FULLHEIGHT) * studioImpl.video.frame, pixels, rect); screen2buffer(studioImpl.video.buffer + (TIC80_FULLWIDTH*TIC80_FULLHEIGHT) * studioImpl.video.frame, pixels, rect);
if(studioImpl.video.frame % TIC_FRAMERATE < TIC_FRAMERATE / 2) if(studioImpl.video.frame % TIC_FRAMERATE < TIC_FRAMERATE / 2)
@ -2275,7 +2283,7 @@ static void recordFrame(u32* pixels)
// static void blitTexture() // static void blitTexture()
// { // {
// tic_mem* tic = studioImpl.studio.tic; // tic_mem* tic = studioImpl.studio.tic;
// SDL_Rect rect = {0, 0, 0, 0}; // tic_rect rect = {0, 0, 0, 0};
// calcTextureRect(&rect); // calcTextureRect(&rect);
// void* pixels = NULL; // void* pixels = NULL;
@ -2320,8 +2328,8 @@ static void recordFrame(u32* pixels)
// { // {
// enum {Header = OFFSET_TOP}; // enum {Header = OFFSET_TOP};
// SDL_Rect srcRect = {0, 0, TIC80_FULLWIDTH, Header}; // tic_rect srcRect = {0, 0, TIC80_FULLWIDTH, Header};
// SDL_Rect dstRect = {0}; // tic_rect dstRect = {0};
// SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h); // SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h);
// dstRect.h = rect.y; // dstRect.h = rect.y;
// SDL_RenderCopy(studioImpl.renderer, studioImpl.texture, &srcRect, &dstRect); // SDL_RenderCopy(studioImpl.renderer, studioImpl.texture, &srcRect, &dstRect);
@ -2329,8 +2337,8 @@ static void recordFrame(u32* pixels)
// { // {
// enum {Header = OFFSET_TOP}; // enum {Header = OFFSET_TOP};
// SDL_Rect srcRect = {0, TIC80_FULLHEIGHT - Header, TIC80_FULLWIDTH, Header}; // tic_rect srcRect = {0, TIC80_FULLHEIGHT - Header, TIC80_FULLWIDTH, Header};
// SDL_Rect dstRect = {0}; // tic_rect dstRect = {0};
// SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h); // SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h);
// dstRect.y = rect.y + rect.h; // dstRect.y = rect.y + rect.h;
// dstRect.h = rect.y; // dstRect.h = rect.y;
@ -2340,8 +2348,8 @@ static void recordFrame(u32* pixels)
// { // {
// enum {Header = OFFSET_TOP}; // enum {Header = OFFSET_TOP};
// enum {Left = OFFSET_LEFT}; // enum {Left = OFFSET_LEFT};
// SDL_Rect srcRect = {0, Header, Left, TIC80_HEIGHT}; // tic_rect srcRect = {0, Header, Left, TIC80_HEIGHT};
// SDL_Rect dstRect = {0}; // tic_rect dstRect = {0};
// SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h); // SDL_GetWindowSize(studioImpl.window, &dstRect.w, &dstRect.h);
// dstRect.y = rect.y; // dstRect.y = rect.y;
// dstRect.h = rect.h; // dstRect.h = rect.h;
@ -2352,7 +2360,7 @@ static void recordFrame(u32* pixels)
// enum {Top = OFFSET_TOP}; // enum {Top = OFFSET_TOP};
// enum {Left = OFFSET_LEFT}; // enum {Left = OFFSET_LEFT};
// SDL_Rect srcRect = {Left, Top, TIC80_WIDTH, TIC80_HEIGHT}; // tic_rect srcRect = {Left, Top, TIC80_WIDTH, TIC80_HEIGHT};
// SDL_RenderCopy(studioImpl.renderer, studioImpl.texture, &srcRect, &rect); // SDL_RenderCopy(studioImpl.renderer, studioImpl.texture, &srcRect, &rect);
// } // }
@ -2393,12 +2401,12 @@ static void blitCursor(const u8* in)
// SDL_UnlockTexture(studioImpl.mouse.texture); // SDL_UnlockTexture(studioImpl.mouse.texture);
// } // }
// SDL_Rect rect = {0, 0, 0, 0}; // tic_rect rect = {0, 0, 0, 0};
// calcTextureRect(&rect); // calcTextureRect(&rect);
// s32 scale = rect.w / TIC80_WIDTH; // s32 scale = rect.w / TIC80_WIDTH;
// SDL_Rect src = {0, 0, TIC_SPRITESIZE, TIC_SPRITESIZE}; // tic_rect src = {0, 0, TIC_SPRITESIZE, TIC_SPRITESIZE};
// SDL_Rect dst = {0, 0, TIC_SPRITESIZE * scale, TIC_SPRITESIZE * scale}; // tic_rect dst = {0, 0, TIC_SPRITESIZE * scale, TIC_SPRITESIZE * scale};
// SDL_GetMouseState(&dst.x, &dst.y); // SDL_GetMouseState(&dst.x, &dst.y);
@ -2557,7 +2565,7 @@ static void renderStudio()
// { // {
// s32 tileSize = TIC_SPRITESIZE; // s32 tileSize = TIC_SPRITESIZE;
// s32 offset = 0; // s32 offset = 0;
// SDL_Rect rect; // tic_rect rect;
// const s32 JoySize = 3; // const s32 JoySize = 3;
// SDL_GetWindowSize(studioImpl.window, &rect.w, &rect.h); // SDL_GetWindowSize(studioImpl.window, &rect.w, &rect.h);
@ -2574,11 +2582,11 @@ static void renderStudio()
// } // }
// studioImpl.gamepad.part.size = tileSize; // studioImpl.gamepad.part.size = tileSize;
// studioImpl.gamepad.part.axis = (SDL_Point){0, offset}; // studioImpl.gamepad.part.axis = (tic_point){0, offset};
// studioImpl.gamepad.part.a = (SDL_Point){rect.w - 2*tileSize, 2*tileSize + offset}; // studioImpl.gamepad.part.a = (tic_point){rect.w - 2*tileSize, 2*tileSize + offset};
// studioImpl.gamepad.part.b = (SDL_Point){rect.w - 1*tileSize, 1*tileSize + offset}; // studioImpl.gamepad.part.b = (tic_point){rect.w - 1*tileSize, 1*tileSize + offset};
// studioImpl.gamepad.part.x = (SDL_Point){rect.w - 3*tileSize, 1*tileSize + offset}; // studioImpl.gamepad.part.x = (tic_point){rect.w - 3*tileSize, 1*tileSize + offset};
// studioImpl.gamepad.part.y = (SDL_Point){rect.w - 2*tileSize, 0*tileSize + offset}; // studioImpl.gamepad.part.y = (tic_point){rect.w - 2*tileSize, 0*tileSize + offset};
// } // }
// static void renderGamepad() // static void renderGamepad()
@ -2586,7 +2594,7 @@ static void renderStudio()
// if(studioImpl.gamepad.show || studioImpl.gamepad.alpha); else return; // if(studioImpl.gamepad.show || studioImpl.gamepad.alpha); else return;
// const s32 tileSize = studioImpl.gamepad.part.size; // const s32 tileSize = studioImpl.gamepad.part.size;
// const SDL_Point axis = studioImpl.gamepad.part.axis; // const tic_point axis = studioImpl.gamepad.part.axis;
// typedef struct { bool press; s32 x; s32 y;} Tile; // typedef struct { bool press; s32 x; s32 y;} Tile;
// const Tile Tiles[] = // const Tile Tiles[] =
// { // {
@ -2606,8 +2614,8 @@ static void renderStudio()
// for(s32 i = 0; i < COUNT_OF(Tiles); i++) // for(s32 i = 0; i < COUNT_OF(Tiles); i++)
// { // {
// const Tile* tile = Tiles + i; // const Tile* tile = Tiles + i;
// SDL_Rect src = {(tile->press ? ButtonsCount + i : i) * TIC_SPRITESIZE, 0, TIC_SPRITESIZE, TIC_SPRITESIZE}; // tic_rect src = {(tile->press ? ButtonsCount + i : i) * TIC_SPRITESIZE, 0, TIC_SPRITESIZE, TIC_SPRITESIZE};
// SDL_Rect dest = {tile->x, tile->y, tileSize, tileSize}; // tic_rect dest = {tile->x, tile->y, tileSize, tileSize};
// SDL_RenderCopy(studioImpl.renderer, studioImpl.gamepad.texture, &src, &dest); // SDL_RenderCopy(studioImpl.renderer, studioImpl.gamepad.texture, &src, &dest);
// } // }

View File

@ -122,16 +122,26 @@ typedef enum
TIC_SURF_MODE, TIC_SURF_MODE,
} EditorMode; } EditorMode;
typedef struct
{
s32 x, y;
} tic_point;
typedef struct
{
s32 x, y, w, h;
} tic_rect;
// SDL_Event* pollEvent(); // SDL_Event* pollEvent();
void setCursor(SDL_SystemCursor id); void setCursor(SDL_SystemCursor id);
s32 getMouseX(); s32 getMouseX();
s32 getMouseY(); s32 getMouseY();
bool checkMousePos(const SDL_Rect* rect); bool checkMousePos(const tic_rect* rect);
bool checkMouseClick(const SDL_Rect* rect, s32 button); bool checkMouseClick(const tic_rect* rect, s32 button);
bool checkMouseDown(const SDL_Rect* rect, s32 button); bool checkMouseDown(const tic_rect* rect, s32 button);
bool getGesturePos(SDL_Point* pos); bool getGesturePos(tic_point* pos);
// const u8* getKeyboard(); // const u8* getKeyboard();

View File

@ -38,7 +38,7 @@ static void drawGrid(World* world)
world->tic->api.rect_border(world->tic, 0, 0, TIC80_WIDTH, TIC80_HEIGHT, color); world->tic->api.rect_border(world->tic, 0, 0, TIC80_WIDTH, TIC80_HEIGHT, color);
SDL_Rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT}; tic_rect rect = {0, 0, TIC80_WIDTH, TIC80_HEIGHT};
if(checkMousePos(&rect)) if(checkMousePos(&rect))
{ {