File indexing completed on 2024-04-28 04:05:20
0001 /* 0002 SPDX-FileCopyrightText: 2015 Jakob Gruber <jakob.gruber@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef RENDERER_H 0008 #define RENDERER_H 0009 0010 #include <QFont> 0011 #include <QList> 0012 #include <QPixmap> 0013 #include <QString> 0014 #include <QSvgRenderer> 0015 #include <QSharedPointer> 0016 0017 class Renderer 0018 { 0019 public: 0020 enum Resource { 0021 Transparent = 0, 0022 Background, 0023 CellFrame, 0024 Box, 0025 Cross, 0026 Highlight, 0027 Streak1, 0028 Streak2, 0029 Divider, 0030 OverviewBox, 0031 OverviewCross 0032 }; 0033 0034 enum FontSize { 0035 Tiny, 0036 Small, 0037 Regular, 0038 Large, 0039 Huge, 0040 FontSizeLength 0041 }; 0042 0043 static Renderer *instance(); 0044 0045 /* returns the pixmap representing the given resource at the 0046 current tilesize */ 0047 QPixmap getPixmap(Renderer::Resource res) const; 0048 0049 int getTilesize() const; 0050 int getOverviewTilesize() const; 0051 0052 const QFont &getFont(enum FontSize size) const; 0053 0054 /* returns the width of streak areas in pixels */ 0055 int getYOffset() const; 0056 int getXOffset() const; 0057 0058 /* returns the width of streak areas in tiles */ 0059 int getStreakGridCount() const; 0060 0061 /* 0 < board_width, board_height */ 0062 void setSize(const QSize &size, int board_width, int board_height, 0063 const QStringList &streaks); 0064 0065 private: 0066 Renderer(); 0067 0068 QPixmap getCachedPixmap(Renderer::Resource resource, int h, int w) const; 0069 void loadResources(); 0070 0071 /* calculates the largest tile size such that the entire game area fits 0072 into the provided window size */ 0073 int gridSize(const QSize &size, int board_width, int board_height) const; 0074 0075 /* Returns true if the given streaks fit into the current area specified 0076 by m_streak_count and m_tilesize. */ 0077 bool streaksFit(const QStringList &streaks) const; 0078 0079 void setFontSize(); 0080 0081 private: 0082 0083 int m_tilesize; 0084 int m_overview_tilesize; 0085 int m_streak_grid_count; 0086 0087 QFont m_fonts[FontSizeLength]; 0088 0089 QSharedPointer<QSvgRenderer> m_renderer; 0090 0091 QList<QString> m_names; 0092 }; 0093 0094 #endif // RENDERER_H