51 #pragma warning(disable:4251) 52 #pragma warning(disable:4224) 86 Point(
double x,
double y): x(x), y(y) {}
113 Color(
double r,
double g,
double b):
114 red(r < 0.0 ? 0.0 : (r > 1.0) ? 1.0 : r),
115 green(g < 0.0 ? 0.0 : (g > 1.0) ? 1.0 : g),
116 blue(b < 0.0 ? 0.0 : (b > 1.0) ? 1.0 : b) {};
227 static unsigned id_source;
316 virtual double get_left()
const;
325 virtual double get_bottom()
const;
332 virtual double get_width()
const;
339 virtual double get_height()
const;
352 virtual void set(
double x,
double y,
double width,
double height);
362 virtual void paint()
const = 0;
377 virtual void move_to(
double left,
double bottom);
391 virtual void mouse_pressed(
double x,
double y,
MouseButton button);
405 virtual void mouse_released(
double x,
double y,
MouseButton button);
417 virtual void mouse_moved(
double x,
double y);
435 virtual void mouse_dragged(
double x,
double y);
450 virtual void key_pressed(
int k,
double x,
double y);
464 virtual bool hit(
double x,
double y);
479 virtual Window *get_window()
const;
487 virtual void set_mouse_over(
bool flag);
510 extern const Color BLACK, RED, GREEN, BLUE, YELLOW, MAGENTA, CYAN, WHITE,
511 DARK_RED, DARK_GREEN, DARK_BLUE, LIGHT_RED, LIGHT_GREEN,
512 LIGHT_BLUE, GRAY, LIGHT_GRAY, DARK_GRAY;
566 void initialize(
const std::string& title,
int left,
int top,
int width,
int height,
567 double min_x,
double max_x,
double min_y,
double max_y);
593 Window(
const std::string& title,
int left,
int top,
int width,
int height,
594 double min_x,
double max_x,
double min_y,
double max_y);
605 Window(
const std::string& title,
int width,
int height);
622 Window(
const std::string& title,
double min_x,
double max_x,
double min_y,
double max_y);
639 virtual void clear();
647 virtual void set_title(
const std::string& str);
655 virtual void set_background_color(
const Color &color);
664 virtual void set_position(
int x,
int y);
673 virtual void set_size(
int width,
int height);
684 virtual void set_viewport(
double left,
double right,
685 double bottom,
double top);
694 virtual void set_visible(
bool visible);
723 virtual void repaint();
729 virtual void prepaint();
735 virtual void postpaint();
743 virtual void paint() = 0;
749 virtual void paint_all();
757 virtual int get_x()
const;
765 virtual int get_y()
const;
771 virtual int get_width()
const;
777 virtual int get_height()
const;
785 virtual void set_window_size(
int w,
int h);
795 virtual void resized(
int w,
int h);
803 virtual double get_min_x()
const;
811 virtual double get_max_x()
const;
819 virtual double get_min_y()
const;
827 virtual double get_max_y()
const;
835 virtual void draw_axes(
double x_inc,
double y_inc)
const;
850 virtual void mouse_pressed(
double x,
double y,
MouseButton button);
865 virtual void mouse_released(
double x,
double y,
MouseButton button);
879 virtual void mouse_moved(
double x,
double y);
894 virtual void mouse_dragged(
double x,
double y);
901 virtual void mouse_entered();
908 virtual void mouse_exited();
923 virtual void key_pressed(
int k,
double x,
double y);
950 virtual void start_timer(
int msec);
960 virtual void timer_expired();
990 name(name), code(code) {}
997 static void process_menu_events(
int option);
1024 virtual void add_menu_item(
const std::string& item,
MenuItemFunction func);
1036 virtual void replace_menu_item(
const std::string& old_name,
1037 const std::string& new_name,
1047 virtual void remove_menu_item(
const std::string& item);
1057 virtual void execute_handler(
int n);
1063 virtual void activate();
1096 ObjectWindow(
const std::string& title,
int left,
int top,
int width,
1097 int height,
double min_x,
double max_x,
1098 double min_y,
double max_y);
1106 ObjectWindow(
const std::string& title,
int width,
int height);
1121 ObjectWindow(
const std::string& title,
double min_x,
double max_x,
1122 double min_y,
double max_y);
1138 void prepaint()
override;
1144 void postpaint()
override;
1159 void mouse_pressed(
double x,
double y,
MouseButton button)
override;
1174 void mouse_released(
double x,
double y,
MouseButton button)
override;
1188 void mouse_moved(
double x,
double y)
override;
1203 void mouse_dragged(
double x,
double y)
override;
1217 void key_pressed(
int k,
double x,
double y)
override;
1243 template <
typename T,
typename... Args>
1244 inline T *
add(Args&&... args) {
1246 T *obj =
new T(args...);
1289 std::vector<GraphicalObject *>::iterator begin();
1297 std::vector<GraphicalObject *>::iterator end();
1327 void paint()
const override;
1334 void move_to(
double x,
double y)
override;
1354 template <
typename T,
typename... Args>
1355 inline T *
add(Args&&... args) {
1357 T *obj =
new T(args...);
1378 unsigned char red, green, blue;
1388 static unsigned short get_short(std::ifstream& fin);
1397 static unsigned long get_long(std::ifstream& fin);
1406 static bool power_of_2(
int n);
1421 bool read_BMP_file(
const char *fname);
1429 bool make_checkerboard();
1433 void set_texture(
unsigned int textureName);
1447 unsigned int texture_id;
1461 double width,
double height);
1491 OGLWindow(
const std::string& title,
int left,
int top,
int width,
int height);
1511 void prepaint()
override;
1517 void postpaint()
override;
1570 void update_segment_locations();
1586 double get_x()
const;
1592 double get_y()
const;
1598 double get_height()
const;
1611 void set_value(
int value);
1617 int get_value()
const;
1637 void resize(
double inc);
1646 void move_to(
double x,
double y);
1670 void paint()
const override;
1678 void set_value(
int value);
1684 int get_value()
const;
1705 void resize(
double inc);
1714 void mouse_dragged(
double x,
double y)
override;
1751 void paint()
const override;
1759 void set_value(
int value);
1765 int get_value()
const;
1785 void resize(
double inc);
1796 void mouse_dragged(
double x,
double y)
override;
1804 void set_leading_zero(
bool flag);
1812 void set_visible(
bool flag);
1836 void increment_helper(
int n);
1838 void decrement_helper(
int n);
1854 void paint()
const override;
1861 void set_value(
int value);
1867 int get_value()
const;
1887 void resize(
double inc);
1898 void mouse_dragged(
double x,
double y)
override;
1912 virtual void move_to(
double left,
double bottom)
override;
1920 void set_leading_zeros(
bool flag);
1928 void set_visible(
bool flag);
1976 void paint_without_leading_units()
const;
1992 void paint()
const override;
1999 void set_value(
int sec);
2005 int get_value()
const;
2025 void resize(
double inc);
2036 void mouse_dragged(
double x,
double y)
override;
2047 void move_to(
double x,
double y)
override;
2056 void set_leading_units(
bool flag);
2064 void set_visible(
bool flag);
2146 void draw_line(
double x0,
double y0,
double x1,
double y1);
2163 int pattern=0x00FF);
2274 void draw_text(
const std::string& text,
double x,
double y,
int font_size);
2290 void draw_text(
const std::string& text,
double x,
double y,
double scale);
2301 double text_width(
const std::string& text,
int font_size);
2317 void draw_function(
double (*f)(
double),
double begin_x,
double end_x,
2334 void set_color(
double r,
double g,
double b);
2353 template <
typename T,
typename... Args>
2354 inline void run(Args&&... args);
2365 template <
typename T,
typename... Args>
2411 int random(
int begin,
int end);
2486 double elapsed()
const;
2496 void pause(
int msec);
2513 bool equals(
double d1,
double d2,
double delta);
2555 void create_window(
const std::string& title,
int x,
int y,
int width,
int height);
CursorShape cursor
Definition: sgl.h:259
KeyModifier
Definition: sgl.h:209
void draw_dashed_line(double x0, double y0, double x1, double y1, int pattern=0x00FF)
Definition: sgl.hpp:2702
SevenSegmentDigit seconds_ones
Definition: sgl.h:1950
void set_random_seed(int seed=-1)
Definition: sgl.hpp:3017
void set_mouse_dragged_function(const std::function< void(double, double)> &f)
Definition: sgl.hpp:3189
MouseButton
Definition: sgl.h:134
bool visible
Definition: sgl.h:1961
void draw_line(double x0, double y0, double x1, double y1)
Definition: sgl.hpp:2695
double min_x
Definition: sgl.h:525
Color color
Definition: sgl.h:1536
SevenSegmentDigit minutes_ones
Definition: sgl.h:1944
double left
Definition: sgl.h:243
Color(double r, double g, double b)
Definition: sgl.h:113
bool visible
Definition: sgl.h:1834
std::string version()
Definition: sgl.hpp:200
bool leading_zeros
Definition: sgl.h:1830
double max_x
Definition: sgl.h:529
void fill_circle(double x, double y, double radius)
Definition: sgl.hpp:2760
void set_window_background(const Color &c)
Definition: sgl.hpp:3201
void draw_rectangle(double x, double y, double width, double height)
Definition: sgl.hpp:2717
clock_t start_time
Definition: sgl.h:2431
SevenSegmentDigit ones
Definition: sgl.h:1729
double x
Definition: sgl.h:1539
SevenSegmentDigit tens
Definition: sgl.h:1726
void set_paint_function(const std::function< void()> &f)
Definition: sgl.hpp:3164
SevenSegmentDigit minutes_tens
Definition: sgl.h:1941
void set_window_title(const std::string &str)
Definition: sgl.hpp:3207
void update_window()
Definition: sgl.hpp:3158
std::vector< GraphicalObject * > objects
Definition: sgl.h:1309
double y_hit_offset
Definition: sgl.h:239
std::function< void()> MenuItemFunction
Definition: sgl.h:968
Point(double x, double y)
Definition: sgl.h:86
bool leading_zero
Definition: sgl.h:1733
void draw_function(double(*f)(double), double begin_x, double end_x, double delta)
Definition: sgl.hpp:2881
double width
Definition: sgl.h:251
void set_line_width(double width)
Definition: sgl.hpp:2627
int random(int begin, int end)
Definition: sgl.hpp:3026
double x_hit_offset
Definition: sgl.h:235
clock_t end_time
Definition: sgl.h:2434
ObjectWindow * window
Definition: sgl.h:231
void set_mouse_moved_function(const std::function< void(double, double)> &f)
Definition: sgl.hpp:3183
T * make_window(Args &&... args)
Definition: sgl.hpp:2940
KeyModifier key_mods
Definition: sgl.h:545
void fill_rectangle(double x, double y, double width, double height)
Definition: sgl.hpp:2732
double height
Definition: sgl.h:1542
void set_mouse_released_function(const std::function< void(double, double, MouseButton)> &f)
Definition: sgl.hpp:3177
T * add(Args &&... args)
Definition: sgl.h:1355
SevenSegmentDigit led
Definition: sgl.h:1656
SevenSegmentDigit hours_ones
Definition: sgl.h:1938
void create_window(const std::string &title, int x, int y, int width, int height)
Definition: sgl.hpp:3145
void draw_circle(double x, double y, double radius)
Definition: sgl.hpp:2743
void set_color(const Color &color)
Definition: sgl.hpp:2619
T * add(Args &&... args)
Definition: sgl.h:1244
const unsigned id
Definition: sgl.h:268
double x
Definition: sgl.h:77
void set_key_pressed_function(const std::function< void(int, double, double)> &f)
Definition: sgl.hpp:3195
bool equals(double d1, double d2, double delta)
Definition: sgl.hpp:3046
void set_mouse_pressed_function(const std::function< void(double, double, MouseButton)> &f)
Definition: sgl.hpp:3170
bool visible
Definition: sgl.h:1737
int seconds
Definition: sgl.h:1953
double bottom
Definition: sgl.h:247
double y
Definition: sgl.h:80
void pause(int msec)
Definition: sgl.hpp:3004
SpecialKey
Definition: sgl.h:144
double height
Definition: sgl.h:255
SevenSegmentDigit seconds_tens
Definition: sgl.h:1947
std::vector< GraphicalObject * > object_list
Definition: sgl.h:1073
int get_screen_width()
Definition: sgl.hpp:2901
CursorShape
Definition: sgl.h:171
bool running
Definition: sgl.h:2437
double max_y
Definition: sgl.h:537
Point()
Definition: sgl.h:91
void draw_polygon(const std::vector< Point > &pts)
Definition: sgl.hpp:2779
int current_value
Definition: sgl.h:1533
double red
Definition: sgl.h:101
void fill_polygon(const std::vector< Point > &pts)
Definition: sgl.hpp:2806
bool intersect(const GraphicalObject &obj1, const GraphicalObject &obj2)
Definition: sgl.hpp:2639
void run(Args &&... args)
Definition: sgl.hpp:2924
double text_width(const std::string &text, int font_size)
void initialize_graphics(unsigned int mode)
Definition: sgl.hpp:148
double green
Definition: sgl.h:103
CursorShape normal_cursor
Definition: sgl.h:540
bool mouse_over
Definition: sgl.h:263
void draw_text(const std::string &text, double x, double y, int font_size)
Definition: sgl.hpp:2830
int get_screen_height()
Definition: sgl.hpp:2910
void run_window()
Definition: sgl.hpp:3152
double blue
Definition: sgl.h:105
double min_y
Definition: sgl.h:533
bool leading_units
Definition: sgl.h:1957
void draw_point(double x, double y)
Definition: sgl.hpp:2662
SevenSegmentDigit hours_tens
Definition: sgl.h:1935
std::vector< SevenSegmentDigit > digits
Definition: sgl.h:1823
void set_point_size(int point_size)
Definition: sgl.hpp:2686