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