Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QtGui>
- #include "renderarea.h"
- #include "packager.h"
- RenderArea::RenderArea(QWidget *parent)
- : QWidget(parent)
- {
- setBackgroundRole(QPalette::Base);
- setAutoFillBackground(true);
- packager.init("d:\\2dsp\\config\\data.txt");
- packager.SetAlgorithm(&nextFit);
- packager.UseAlgorithm();
- }
- QSize RenderArea::minimumSizeHint() const
- {
- return QSize(STRIPW / 4, STRIPH / 4);
- }
- QSize RenderArea::sizeHint() const
- {
- return QSize(STRIPW, STRIPH);
- }
- void RenderArea::paintEvent(QPaintEvent * /* event */)
- {
- QPainter painter(this);
- painter.setPen(QPen(QBrush(Qt::lightGray, Qt::SolidPattern), 3.0, Qt::DotLine));
- painter.save();
- painter.drawRect(10, 0, STRIPW, STRIPH - 10);
- painter.restore();
- painter.setPen(QPen(Qt::black));
- int sumSpace = 0;
- int minY = STRIPH;
- for (int i = 0; i < packager.getSize(); i++) {
- if (packager.rectangles[i].y() < minY) minY = packager.rectangles[i].y();
- sumSpace += packager.rectangles[i].height() * packager.rectangles[i].width();
- painter.setBrush(QBrush(QColor(255, 200, 100).lighter(120 - 8 * i),
- Qt::SolidPattern));
- painter.save();
- painter.drawRect(packager.rectangles[i].translated(QPoint(10,-10)));
- painter.restore();
- }
- qDebug("optimal = %d, obtained = %d", sumSpace / STRIPW, STRIPH - minY);
- }
- void RenderArea::setAlg(int number)
- {
- switch (number) {
- case 1: packager.SetAlgorithm(&nextFit); break;
- case 2: packager.SetAlgorithm(&firstFit); break;
- case 3: packager.SetAlgorithm(&bestFit); break;
- case 4: packager.SetAlgorithm(&knapsack); break;
- case 5: packager.SetAlgorithm(&splitFit); break;
- case 6: packager.SetAlgorithm(&join); break;
- case 7: packager.SetAlgorithm(&floorCeil); break;
- case 8: packager.SetAlgorithm(&sleator); break;
- case 9: packager.SetAlgorithm(&burke); break;
- case 10: packager.SetAlgorithm(&nextFitLevel); break;
- case 11: packager.SetAlgorithm(&firstFitLevel); break;
- case 12: packager.SetAlgorithm(&bestFitLevel); break;
- case 13: packager.SetAlgorithm(&biLevel); break;
- case 14: packager.SetAlgorithm(&nextFitShelf); break;
- case 15: packager.SetAlgorithm(&firstFitShelf); break;
- case 16: packager.SetAlgorithm(&bestFitShelf); break;
- case 17: packager.SetAlgorithm(&harmonicShelf); break;
- case 18: packager.SetAlgorithm(&azar); break;
- case 19: packager.SetAlgorithm(&compression); break;
- case 20: packager.SetAlgorithm(&comprPartFit); break;
- case 21: packager.SetAlgorithm(&comprFullFit); break;
- case 22: packager.SetAlgorithm(&comprCombo); break;
- case 23: packager.SetAlgorithm(&onlineFit); break;
- default: break;
- }
- packager.UseAlgorithm();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement