-
Notifications
You must be signed in to change notification settings - Fork 0
/
mainwindow.cpp
118 lines (101 loc) · 2.94 KB
/
mainwindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColor>
#include <QPixmap>
#include <QIcon>
#include <QLabel>
const int INT_DRAW_TIME = 100;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, isStarted(false)
{
colorTable.Generate(MAX_INTERATION, Palette::ePalHeightMap);
ui->setupUi(this);
#if _DEV_VER101
updatePalette();
ui->gvJulia->setJuliaView(true);
connect(ui->gvMandel, SIGNAL(juliaPointChanged(Complex)), ui->gvJulia, SLOT(setJuliaPoint(Complex)));
connect(ui->gvMandel, SIGNAL(mandelPointChanged(Complex)), this, SLOT(onChangedMandelPt(Complex)));
#else
ui->gvMandel->setRender(&mandelbrot);
connect(&mandelbrot, SIGNAL(doneUpdate()), this, SLOT(onDoneUpdate()));
#endif//_DEV_VER101
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent * /*event*/)
{
if(!isStarted) {
isStarted = true;
initialColorCombo();
qDebug() << "First Paint";
return;
}
qDebug() << "Normal Paint";
}
void MainWindow::resizeEvent(QResizeEvent * event)
{
ui->cbPalette->setIconSize(QSize(ui->cbPalette->width(), 23));
}
void MainWindow::onChangedPalette(int newPalette)
{
Q_UNUSED(newPalette)
updatePalette();
}
void MainWindow::onChangedCount(int newCountOfColor)
{
Q_UNUSED(newCountOfColor)
updatePalette();
}
void MainWindow::updatePalette()
{
int cnt = ui->hsCount->value();
int idxPal = ui->cbPalette->currentIndex();
colorTable.Generate(cnt, (Palette)idxPal);
ui->gvMandel->updatePalette(colorTable.table());
#if _DEV_VER101
ui->gvJulia->updatePalette(colorTable.table());
#endif//_DEV_VER101
}
void MainWindow::initialColorCombo()
{
double pix_width = ui->cbPalette->width(); // Since the array size is 256, so the picture size need to go to a multiple of 256
double pix_height = 23;
double step = pix_width / 256.0;
for(int iPal = 0; iPal < eCntPalette; iPal++) {
ColorLut lut1(256, (Palette)iPal);
QPixmap pix(QSize(pix_width, pix_height));
QPainter painter(&pix);
for(int i = 0; i < 256; i++) {
QRgb col = lut1.at(i);
QRectF source(step * i, 0, step, pix_height);
painter.fillRect(source, col);
}
ui->cbPalette->addItem(QIcon(pix), ""/*NAMES_PALETTE[iPal]*/);
ui->cbPalette->setIconSize(QSize(pix_width, pix_height));
ui->cbPalette->setSizeAdjustPolicy(QComboBox::AdjustToContents);
}
}
#if _DEV_VER101
void MainWindow::onChangedMandelPt(Complex pt)
{
QString sMsg("%1, %2");
QString status = QString::number(pt.real(), 'g') + ", " + QString::number(pt.imag(), 'g');
ui->sBar->showMessage(status);
}
#else
void MainWindow::onDoneUpdate()
{
ui->gvMandel->UpdateMandel(colorTable.table());
qDebug()<<"Finished from Thread";
}
#endif//_DEV_VER101
void MainWindow::on_cmdReset_clicked()
{
ui->gvMandel->reset();
ui->gvJulia->reset();
}
//EOF