mirror of
https://github.com/koloideal/SortLab.git
synced 2026-08-08 10:01:16 +03:00
step
This commit is contained in:
@@ -7,41 +7,34 @@ enum class ThemeType {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ColorPalette {
|
struct ColorPalette {
|
||||||
// Основные цвета фона
|
|
||||||
sf::Color windowBackground;
|
sf::Color windowBackground;
|
||||||
sf::Color panelBackground;
|
sf::Color panelBackground;
|
||||||
sf::Color bottomPanelBackground;
|
sf::Color bottomPanelBackground;
|
||||||
sf::Color overlayBackground;
|
sf::Color overlayBackground;
|
||||||
|
|
||||||
// Цвета текста
|
|
||||||
sf::Color textPrimary;
|
sf::Color textPrimary;
|
||||||
sf::Color textSecondary;
|
sf::Color textSecondary;
|
||||||
sf::Color textTertiary;
|
sf::Color textTertiary;
|
||||||
sf::Color textAccent;
|
sf::Color textAccent;
|
||||||
|
|
||||||
// Цвета для состояний элементов массива
|
|
||||||
sf::Color stateNormalLow; // Нижняя часть градиента для обычных элементов
|
sf::Color stateNormalLow; // Нижняя часть градиента для обычных элементов
|
||||||
sf::Color stateNormalHigh; // Верхняя часть градиента для обычных элементов
|
sf::Color stateNormalHigh; // Верхняя часть градиента для обычных элементов
|
||||||
sf::Color stateCompare; // Цвет для сравниваемых элементов
|
sf::Color stateCompare; // Цвет для сравниваемых элементов
|
||||||
sf::Color stateSwap; // Цвет для переставляемых элементов
|
sf::Color stateSwap; // Цвет для переставляемых элементов
|
||||||
sf::Color stateSorted; // Цвет для отсортированных элементов
|
sf::Color stateSorted; // Цвет для отсортированных элементов
|
||||||
|
|
||||||
// Цвета UI элементов
|
|
||||||
sf::Color separator;
|
sf::Color separator;
|
||||||
sf::Color histogramLow; // Нижняя часть градиента гистограммы
|
sf::Color histogramLow; // Нижняя часть градиента гистограммы
|
||||||
sf::Color histogramHigh; // Верхняя часть градиента гистограммы
|
sf::Color histogramHigh; // Верхняя часть градиента гистограммы
|
||||||
|
|
||||||
// Цвета для ProgressMap
|
|
||||||
sf::Color progressMapNormal;
|
sf::Color progressMapNormal;
|
||||||
|
|
||||||
// Цвета для оверлеев
|
|
||||||
sf::Color overlayTitle;
|
sf::Color overlayTitle;
|
||||||
sf::Color overlaySubtitle;
|
sf::Color overlaySubtitle;
|
||||||
sf::Color overlaySection;
|
sf::Color overlaySection;
|
||||||
sf::Color overlayBody;
|
sf::Color overlayBody;
|
||||||
sf::Color overlayFooter;
|
sf::Color overlayFooter;
|
||||||
|
|
||||||
// Цвета для истории
|
|
||||||
sf::Color historyTableHeader;
|
sf::Color historyTableHeader;
|
||||||
sf::Color historyRowEven;
|
sf::Color historyRowEven;
|
||||||
sf::Color historyRowOdd;
|
sf::Color historyRowOdd;
|
||||||
@@ -50,7 +43,6 @@ struct ColorPalette {
|
|||||||
sf::Color historySpeedFastest;
|
sf::Color historySpeedFastest;
|
||||||
sf::Color historySpeedSlow;
|
sf::Color historySpeedSlow;
|
||||||
|
|
||||||
// Цвета статусов
|
|
||||||
sf::Color statusFinished;
|
sf::Color statusFinished;
|
||||||
sf::Color statusPlaying;
|
sf::Color statusPlaying;
|
||||||
sf::Color statusPaused;
|
sf::Color statusPaused;
|
||||||
|
|||||||
@@ -12,13 +12,11 @@ Theme::Theme() : currentTheme_(ThemeType::DARK) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Theme::initDarkTheme() {
|
void Theme::initDarkTheme() {
|
||||||
// Основные цвета фона
|
|
||||||
darkPalette_.windowBackground = sf::Color(10, 12, 20);
|
darkPalette_.windowBackground = sf::Color(10, 12, 20);
|
||||||
darkPalette_.panelBackground = sf::Color(0, 0, 0, 180);
|
darkPalette_.panelBackground = sf::Color(0, 0, 0, 180);
|
||||||
darkPalette_.bottomPanelBackground = sf::Color(12, 15, 25);
|
darkPalette_.bottomPanelBackground = sf::Color(12, 15, 25);
|
||||||
darkPalette_.overlayBackground = sf::Color(8, 10, 18, 230);
|
darkPalette_.overlayBackground = sf::Color(8, 10, 18, 230);
|
||||||
|
|
||||||
// Цвета текста
|
|
||||||
darkPalette_.textPrimary = sf::Color::White;
|
darkPalette_.textPrimary = sf::Color::White;
|
||||||
darkPalette_.textSecondary = sf::Color(220, 220, 220);
|
darkPalette_.textSecondary = sf::Color(220, 220, 220);
|
||||||
darkPalette_.textTertiary = sf::Color(160, 160, 160);
|
darkPalette_.textTertiary = sf::Color(160, 160, 160);
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ void UI::draw(sf::RenderWindow& window) {
|
|||||||
|
|
||||||
const ColorPalette& palette = Theme::getInstance().getPalette();
|
const ColorPalette& palette = Theme::getInstance().getPalette();
|
||||||
|
|
||||||
// Обновляем цвета текста и фона при каждой отрисовке (на случай смены темы)
|
|
||||||
algorithmText_.setFillColor(palette.textPrimary);
|
algorithmText_.setFillColor(palette.textPrimary);
|
||||||
timeComplexityText_.setFillColor(palette.textTertiary);
|
timeComplexityText_.setFillColor(palette.textTertiary);
|
||||||
spaceComplexityText_.setFillColor(palette.textTertiary);
|
spaceComplexityText_.setFillColor(palette.textTertiary);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void HeapSorter::step(Array& array) {
|
|||||||
}
|
}
|
||||||
heapifyIndex_ = buildIndex_;
|
heapifyIndex_ = buildIndex_;
|
||||||
phase_ = Phase::HEAPIFY_DOWN;
|
phase_ = Phase::HEAPIFY_DOWN;
|
||||||
needSwap_ = false; // Используем как флаг, что мы в контексте BUILD
|
needSwap_ = false;
|
||||||
}
|
}
|
||||||
else if (phase_ == Phase::HEAPIFY_DOWN || phase_ == Phase::EXTRACT_HEAPIFY) {
|
else if (phase_ == Phase::HEAPIFY_DOWN || phase_ == Phase::EXTRACT_HEAPIFY) {
|
||||||
leftChild_ = 2 * heapifyIndex_ + 1;
|
leftChild_ = 2 * heapifyIndex_ + 1;
|
||||||
@@ -63,9 +63,7 @@ void HeapSorter::step(Array& array) {
|
|||||||
array.incrementSwaps();
|
array.incrementSwaps();
|
||||||
|
|
||||||
heapifyIndex_ = largest_;
|
heapifyIndex_ = largest_;
|
||||||
// Остаемся в текущей фазе, чтобы продолжить просеивание вниз
|
|
||||||
} else {
|
} else {
|
||||||
// Элемент на своем месте, просеивание закончено
|
|
||||||
if (phase_ == Phase::HEAPIFY_DOWN) {
|
if (phase_ == Phase::HEAPIFY_DOWN) {
|
||||||
buildIndex_--;
|
buildIndex_--;
|
||||||
phase_ = Phase::BUILDING_HEAP;
|
phase_ = Phase::BUILDING_HEAP;
|
||||||
|
|||||||
Reference in New Issue
Block a user