spacebox/src/Box.hpp

62 lines
1.5 KiB
C++

#ifndef Box_h_
#define Box_h_
#include <iostream>
#include <SDL.h>
#define GLM_ENABLE_EXPERIMENTAL
#include "glm/common.hpp"
#include "glm/vec2.hpp"
struct Box
{
SDL_FRect rect = {0, 0, 0, 0};
Box(glm::vec2 = {0, 0}, glm::vec2 = {0, 0});
float get_x() const;
float get_y() const;
float get_w() const;
float get_h() const;
void set_x(float);
void set_y(float);
void set_w(float);
void set_h(float);
glm::vec2 get_size() const;
void set_size(const glm::vec2&);
float get_top() const;
float get_right() const;
float get_bottom() const;
float get_left() const;
void set_top(float);
void set_right(float);
void set_bottom(float);
void set_left(float);
glm::vec2 get_nw() const;
glm::vec2 get_north() const;
glm::vec2 get_ne() const;
glm::vec2 get_east() const;
glm::vec2 get_south() const;
glm::vec2 get_west() const;
glm::vec2 get_center() const;
void set_nw(const glm::vec2&);
void set_north(const glm::vec2&);
void set_ne(const glm::vec2&);
void set_east(const glm::vec2&);
void set_south(const glm::vec2&);
void set_west(const glm::vec2&);
void set_center(const glm::vec2&);
SDL_FRect* get_rect();
void zero();
void move(const glm::vec2&);
std::string get_class_name() { return "Box"; }
std::ostream& to_string (std::ostream&) const;
};
std::ostream& operator<<(std::ostream&, const Box&);
#include "extension.hpp"
#endif