File indexing completed on 2024-05-12 04:06:21
0001 /* 0002 SPDX-FileCopyrightText: 2010 Johannes Loehnert <loehnert.kde@gmx.de> 0003 SPDX-FileCopyrightText: 2010 Stefan Majewsky <majewsky@gmx.net> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef PALAPELISLICERS_GOLDBERG_GRID_H 0009 #define PALAPELISLICERS_GOLDBERG_GRID_H 0010 0011 #include <KLocalizedString> 0012 #include <Pala/SlicerMode> 0013 0014 #include "goldberg-engine.h" 0015 0016 class GoldbergMode : public Pala::SlicerMode 0017 { 0018 public: 0019 GoldbergMode(const QByteArray& key, const QString& name) : Pala::SlicerMode(key, name) {} 0020 ~GoldbergMode() override {} 0021 virtual void generateGrid(GoldbergEngine *e, int piece_count) const = 0; 0022 }; 0023 0024 class PresetMode : public GoldbergMode 0025 { 0026 public: 0027 PresetMode() : GoldbergMode("preset", i18nc("Puzzle grid type", "Predefined settings")) {} 0028 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0029 }; 0030 0031 class CairoMode : public GoldbergMode 0032 { 0033 public: 0034 CairoMode() : GoldbergMode("cairo", i18nc("Puzzle grid type", "Cairo (pentagonal) grid")) {} 0035 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0036 }; 0037 0038 class HexMode : public GoldbergMode 0039 { 0040 public: 0041 HexMode() : GoldbergMode("hex", i18nc("Puzzle grid type", "Hexagonal grid")) {} 0042 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0043 }; 0044 0045 class RectMode : public GoldbergMode 0046 { 0047 public: 0048 RectMode() : GoldbergMode("rect", i18nc("Puzzle grid type", "Rectangular grid")) {} 0049 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0050 }; 0051 0052 class RotrexMode : public GoldbergMode 0053 { 0054 public: 0055 RotrexMode() : GoldbergMode("rotrex", i18nc("Puzzle grid type", "Rotrex (rhombi-trihexagonal) grid")) {} 0056 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0057 }; 0058 0059 class IrregularMode : public GoldbergMode 0060 { 0061 public: 0062 IrregularMode() : GoldbergMode("irreg", i18nc("Puzzle grid type", "Irregular grid")) {} 0063 0064 /// Checks if qvoronoi executable is there. 0065 static bool checkForQVoronoi(); 0066 0067 void generateGrid(GoldbergEngine *e, int piece_count) const override; 0068 private: 0069 void generateVoronoiGrid(GoldbergEngine *e, QList<QPointF> cell_centers) const; 0070 }; 0071 0072 #endif // PALAPELISLICERS_GOLDBERG_GRID_H