Graphic Calculator: FIDocalcus
Проект трёх первокурсников (по инженерному практикуму в первом семестре) по созданию графического калькулятора на FLTK C++
Loading...
Searching...
No Matches
Function_box.h
Go to the documentation of this file.
1#pragma once
2
3// std libs
4#include <string>
5
6// Graphix_calc
7#include "Numbed_button.h"
8
9// Graph_lib
11#include "../Graph_lib/Window.h"
12
13namespace Graphix_calc {
14
15/// @brief Класс с вводом мат. функции, кнопками для графиков, вывод ошибок
17 public:
18 /// @brief Упрощенный конструктор
19 Function_box(unsigned long long int box_index,
20 void cb_graphix_draw(void*, void*),
21 void cb_graphix_hide(void*, void*),
22 void cb_rem_func(void*, void*), void cb_deriv_draw(void*, void*),
23 void cb_deriv_hide(void*, void*));
24
25 // (по сути у Function_box нету пользовательского конструктора :)
26
28
29 // methods
30
31 /// @brief Привязывает все элементы к окну
32 void attach(Graph_lib::Window&) override;
33
34 /// @brief Отвязывает все элементы от окна
36
37 /**
38 * @brief Двигает все элементы
39 * @param dx
40 * @param dy
41 */
42 void move(int dx, int dy) override;
43
44 // input validation
45
46 /// @brief Устанавливает флаг о том, что мат. функция в поле ввода валидна
47 inline void input_valid() { is_func_valid = true; }
48
49 /// @brief Устанавливает флаг о том, что мат. функция в поле ввода невалидна
50 inline void input_invalid() { is_func_valid = false; }
51
52 inline bool is_input_valid() const { return is_func_valid; };
53
54 // graphix
55
56 /// @brief Устанавливает флаг о том, что график мат. функции нарисован
57 inline void graphix_show() { is_graphix_visible = true; }
58
59 /// @brief Устанавливает флаг о том, что график мат. функции скрыт
60 inline void graphix_hide() { is_graphix_visible = false; }
61
62 inline bool is_graphix_hidden() const { return !is_graphix_visible; }
63
64 // deriv
65
66 /// @brief Устанавливает флаг, что график производной мат. функции нарисован
67 inline void deriv_show() { is_deriv_visible = true; }
68
69 /// @brief Устанавливает флаг о том, что график производной мат. функции скрыт
70 inline void deriv_hide() { is_deriv_visible = false; }
71
72 inline bool is_deriv_hidden() const { return !is_deriv_visible; }
73
74 // setters
75
76 /// @brief Устанавливает индекс всем кнопкам и полям
77 void set_index(unsigned long long);
78
79 /**
80 * @brief Устанавливает текст в поле вывода ошибок
81 * @param message: текст
82 */
83 inline void set_message(const std::string& message) { out_box->put(message); }
84
85 /**
86 * @brief Устанавливает текст в поле вывода для производной мат. функции
87 * @param deriv_str: текст
88 */
89 inline void set_deriv_message(const std::string& deriv_str) {
90 out_der_box->put(deriv_str);
91 }
92
93 // getters
94
95 /**
96 * @brief Возвращает значение введенной мат. функцию
97 * @return std::string
98 */
99 inline std::string get_string() const { return in_box->get_string(); }
100
101 /**
102 * @brief Возвращает значение индекс текущего Function_box'а
103 * @return unsigned long long
104 */
105 inline unsigned long long get_index() const {
106 // (так как мы не храним этот индекс в качестве поля, берём от элемента)
108 }
109
110 // ~methods
111
112 private:
113 // vars
114
115 // widgets
116
117 /// @brief Кнопка для рисования графика мат. функции
119 /// @brief Кнопка для скрытия графика мат. функции
121
122 /// @brief Кнопка для рисования графика производной мат. функции
124 /// @brief Кнопка для скрытия графика производной мат. функции
126 /// @brief Поле для вывода текущей производной мат. функции
128
129 /// @brief Поле для ввода мат. функции
131 /// @brief Поле для вывода ошибок по поводу введенной мат. функции
133
134 /// @brief Кнопка для удаления текущего Function_box'а
136
137 // flags
138
139 /// @brief Флаг, сообщающий о валидности введенной мат. функции
140 bool is_func_valid{false};
141
142 /// @brief Флаг, сообщающий о видимости графика введенной мат. функции
144
145 /// @brief Флаг, сообщающий о видимости графика производной мат. функции
146 bool is_deriv_visible{false};
147
148 // ~vars
149};
150
151} // namespace Graphix_calc
Абстрактный объект взаимодействия с пользователем
Definition Widgets.h:25
Definition Window.h:16
Класс с вводом мат. функции, кнопками для графиков, вывод ошибок
Definition Function_box.h:16
void input_valid()
Устанавливает флаг о том, что мат. функция в поле ввода валидна
Definition Function_box.h:47
std::string get_string() const
Возвращает значение введенной мат. функцию
Definition Function_box.h:99
void deriv_show()
Устанавливает флаг, что график производной мат. функции нарисован
Definition Function_box.h:67
Graph_lib::Out_box * out_box
Поле для вывода ошибок по поводу введенной мат. функции
Definition Function_box.h:132
bool is_deriv_hidden() const
Definition Function_box.h:72
bool is_deriv_visible
Флаг, сообщающий о видимости графика производной мат. функции
Definition Function_box.h:146
Numbed_button * draw_graphix_button
Кнопка для рисования графика мат. функции
Definition Function_box.h:118
~Function_box()
Definition Function_box.cpp:53
Numbed_button * draw_deriv_button
Кнопка для рисования графика производной мат. функции
Definition Function_box.h:123
unsigned long long get_index() const
Возвращает значение индекс текущего Function_box'а
Definition Function_box.h:105
void set_deriv_message(const std::string &deriv_str)
Устанавливает текст в поле вывода для производной мат. функции
Definition Function_box.h:89
Numbed_button * hide_graphix_button
Кнопка для скрытия графика мат. функции
Definition Function_box.h:120
void deriv_hide()
Устанавливает флаг о том, что график производной мат. функции скрыт
Definition Function_box.h:70
void detach(Graph_lib::Window &)
Отвязывает все элементы от окна
Definition Function_box.cpp:81
Graph_lib::Out_box * out_der_box
Поле для вывода текущей производной мат. функции
Definition Function_box.h:127
Numbed_button * hide_deriv_button
Кнопка для скрытия графика производной мат. функции
Definition Function_box.h:125
bool is_graphix_visible
Флаг, сообщающий о видимости графика введенной мат. функции
Definition Function_box.h:143
Graph_lib::In_box * in_box
Поле для ввода мат. функции
Definition Function_box.h:130
void graphix_show()
Устанавливает флаг о том, что график мат. функции нарисован
Definition Function_box.h:57
void graphix_hide()
Устанавливает флаг о том, что график мат. функции скрыт
Definition Function_box.h:60
void move(int dx, int dy) override
Двигает все элементы
Definition Function_box.cpp:95
Function_box(unsigned long long int box_index, void cb_graphix_draw(void *, void *), void cb_graphix_hide(void *, void *), void cb_rem_func(void *, void *), void cb_deriv_draw(void *, void *), void cb_deriv_hide(void *, void *))
Упрощенный конструктор
Definition Function_box.cpp:17
Numbed_button * rem_func_button
Кнопка для удаления текущего Function_box'а
Definition Function_box.h:135
void set_index(unsigned long long)
Устанавливает индекс всем кнопкам и полям
Definition Function_box.cpp:106
void set_message(const std::string &message)
Устанавливает текст в поле вывода ошибок
Definition Function_box.h:83
bool is_func_valid
Флаг, сообщающий о валидности введенной мат. функции
Definition Function_box.h:140
void input_invalid()
Устанавливает флаг о том, что мат. функция в поле ввода невалидна
Definition Function_box.h:50
bool is_graphix_hidden() const
Definition Function_box.h:62
void attach(Graph_lib::Window &) override
Привязывает все элементы к окну
Definition Function_box.cpp:67
bool is_input_valid() const
Definition Function_box.h:52
Кнопка, которая имеет номер
Definition Numbed_button.h:9
unsigned long long get_number() const
Definition Numbed_button.h:26
Definition Axis.cpp:17
Definition Widgets.h:88
std::string get_string()
Definition Widgets.cpp:31
Definition Widgets.h:104
void put(const std::string &)
Definition Widgets.cpp:45