1
0

FractalZoomWidget.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "FractalZoomWidget.h"
  2. SliceGrid::SliceGrid(FractalZoomWidget& owner, int level) :
  3. owner{ owner },
  4. level{ level },
  5. dpp{ owner.getDpp(level) }
  6. {
  7. }
  8. std::pair<GridIndex, GridIndex> SliceGrid::getCellIndices(mnd::Real x, mnd::Real y)
  9. {
  10. return { GridIndex(mnd::floor(x / dpp / FractalZoomWidget::chunkSize)), GridIndex(mnd::floor(y / dpp / MandelView::chunkSize)) };
  11. }
  12. std::pair<mnd::Real, mnd::Real> SliceGrid::getPositions(GridIndex x, GridIndex y)
  13. {
  14. return { mnd::Real(x) * dpp * FractalZoomWidget::chunkSize, mnd::Real(y) * dpp * MandelView::chunkSize };
  15. }
  16. GridElement* SliceGrid::getCell(GridIndex i, GridIndex j)
  17. {
  18. auto cIt = cells.find({i, j});
  19. if (cIt != cells.end()) {
  20. return cIt->second.get();
  21. }
  22. else {
  23. return nullptr;
  24. }
  25. }
  26. void TexGrid::setCell(GridIndex i, GridIndex j, std::unique_ptr<GridElement> tex)
  27. {
  28. cells[{i, j}] = std::move(tex);
  29. }
  30. void TexGrid::clearCells(void)
  31. {
  32. cells.clear();
  33. }
  34. void TexGrid::clearUncleanCells(void)
  35. {
  36. for (auto it = cells.begin(); it != cells.end();) {
  37. if (it->second->img->getRecalcPriority() > 1)
  38. cells.erase(it++);
  39. else ++it;
  40. }
  41. }
  42. FractalZoomWidget::FractalZoomWidget(QWidget* parent) :
  43. EscapeTimeVisualWidget{ parent }
  44. {
  45. }