Skip to content
Snippets Groups Projects
Commit e2f17afd authored by Yann Boucher's avatar Yann Boucher
Browse files

Support de la couleur pour les preview

parent f537df3e
No related branches found
No related tags found
No related merge requests found
Pipeline #79372 failed
...@@ -16,6 +16,7 @@ Widget de la bibliothèque de structures. ...@@ -16,6 +16,7 @@ Widget de la bibliothèque de structures.
#include <QFileSystemWatcher> #include <QFileSystemWatcher>
#include "structure.hpp" #include "structure.hpp"
#include "alphabet.hpp"
namespace Ui { namespace Ui {
class StructureLibraryView; class StructureLibraryView;
...@@ -32,6 +33,10 @@ public: ...@@ -32,6 +33,10 @@ public:
explicit StructureLibraryView(QWidget *parent = nullptr); explicit StructureLibraryView(QWidget *parent = nullptr);
~StructureLibraryView(); ~StructureLibraryView();
//! \brief Spécifie l'alphabet à utiliser pour les couleurs de la preview
void set_alphabet(const Alphabet& alph)
{ m_alph = alph; }
signals: signals:
//! \brief Signal émis lorsqu'une structure de la bibliothèque est copiée. //! \brief Signal émis lorsqu'une structure de la bibliothèque est copiée.
//! \param s La structure copiée. //! \param s La structure copiée.
...@@ -47,7 +52,7 @@ private: ...@@ -47,7 +52,7 @@ private:
QTreeWidgetItem *add_directory_contents(const QDir& dir); QTreeWidgetItem *add_directory_contents(const QDir& dir);
bool try_load_structure(const QString& filename, Structure& s); bool try_load_structure(const QString& filename, Structure& s);
void update_preview(const Structure& s); void update_preview(const Structure& s);
QImage create_preview_image(const Structure &s, QColor background); QImage create_preview_image(const Structure &s, bool transparent);
void create_drag(QTreeWidgetItem* item, int column); void create_drag(QTreeWidgetItem* item, int column);
private slots: private slots:
...@@ -58,6 +63,7 @@ private: ...@@ -58,6 +63,7 @@ private:
Ui::StructureLibraryView *ui; Ui::StructureLibraryView *ui;
QFileSystemWatcher m_watcher; QFileSystemWatcher m_watcher;
unsigned m_cell_pixel_size; unsigned m_cell_pixel_size;
Alphabet m_alph;
}; };
#endif // STRUCTURELIBRARYVIEW_HPP #endif // STRUCTURELIBRARYVIEW_HPP
...@@ -501,6 +501,7 @@ void MainWindow::load_from_image() ...@@ -501,6 +501,7 @@ void MainWindow::load_from_image()
void MainWindow::ui_update_alphabet(const Alphabet &alpha) void MainWindow::ui_update_alphabet(const Alphabet &alpha)
{ {
simulation.setAlphabet(alpha); simulation.setAlphabet(alpha);
ui->struct_library->set_alphabet(alpha);
ui->grid_view->set_alphabet(alpha); ui->grid_view->set_alphabet(alpha);
ui->nbrStateComboBox->clear(); ui->nbrStateComboBox->clear();
for (unsigned i = 0; i < alpha.taille(); ++i) for (unsigned i = 0; i < alpha.taille(); ++i)
......
...@@ -117,19 +117,26 @@ void StructureLibraryView::update_preview(const Structure &s) ...@@ -117,19 +117,26 @@ void StructureLibraryView::update_preview(const Structure &s)
QPixmap pix; QPixmap pix;
/** to check wether load ok */ /** to check wether load ok */
if(pix.convertFromImage(create_preview_image(s, Qt::white))){ if(pix.convertFromImage(create_preview_image(s, false))){
/** scale pixmap to fit in label'size and keep ratio of pixmap */ /** scale pixmap to fit in label'size and keep ratio of pixmap */
pix = pix.scaled(ui->preview->size() - 2*QSize(ui->preview->lineWidth(), ui->preview->lineWidth()),Qt::KeepAspectRatio); pix = pix.scaled(ui->preview->size() - 2*QSize(ui->preview->lineWidth(), ui->preview->lineWidth()),Qt::KeepAspectRatio);
ui->preview->setPixmap(pix); ui->preview->setPixmap(pix);
} }
} }
QImage StructureLibraryView::create_preview_image(const Structure &s, QColor background) QImage StructureLibraryView::create_preview_image(const Structure &s, bool transparent)
{ {
stateColor bg = m_alph.getState(0).getColor();
QImage img(s.width(), s.height(), QImage::Format_ARGB32); QImage img(s.width(), s.height(), QImage::Format_ARGB32);
img.fill(background); if (transparent)
img.fill(Qt::transparent);
else
img.fill(Qt::white);
for (const auto& cell : s) for (const auto& cell : s)
img.setPixelColor(cell.first.x, cell.first.y, QColor(Qt::black)); {
stateColor s_c = m_alph.getState(cell.second % m_alph.taille()).getColor();
img.setPixelColor(cell.first.x, cell.first.y, QColor(s_c.getRed(), s_c.getGreen(), s_c.getBlue()));
}
return img; return img;
} }
...@@ -193,7 +200,7 @@ void StructureLibraryView::create_drag(QTreeWidgetItem *item, int column) ...@@ -193,7 +200,7 @@ void StructureLibraryView::create_drag(QTreeWidgetItem *item, int column)
QString filename = QFileInfo(item->data(0, Qt::UserRole).toString()).absoluteFilePath(); QString filename = QFileInfo(item->data(0, Qt::UserRole).toString()).absoluteFilePath();
QPixmap pix; QPixmap pix;
QImage img = create_preview_image(s, Qt::transparent); QImage img = create_preview_image(s, true);
pix.convertFromImage(img); pix.convertFromImage(img);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment