File indexing completed on 2024-04-28 04:32:07
0001 /* 0002 * Copyright (C) 2010-2015 by Stephen Allewell 0003 * steve.allewell@gmail.com 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 */ 0010 0011 #ifndef Renderer_H 0012 #define Renderer_H 0013 0014 #include <QFont> 0015 #include <QPolygon> 0016 #include <QRect> 0017 0018 #include "configuration.h" 0019 0020 class QPainter; 0021 0022 class Backstitch; 0023 class Document; 0024 class Knot; 0025 class Pattern; 0026 class RendererData; 0027 class Stitch; 0028 class StitchQueue; 0029 0030 class Renderer 0031 { 0032 public: 0033 Renderer(); 0034 Renderer(const Renderer &); 0035 ~Renderer(); 0036 0037 void setCellGrouping(int, int); 0038 void setGridLineWidths(double, double); 0039 void setGridLineColors(QColor, QColor); 0040 0041 void setRenderStitchesAs(Configuration::EnumRenderer_RenderStitchesAs::type); 0042 void setRenderBackstitchesAs(Configuration::EnumRenderer_RenderBackstitchesAs::type); 0043 void setRenderKnotsAs(Configuration::EnumRenderer_RenderKnotsAs::type); 0044 0045 void render(QPainter *, Pattern *, QRect updateCells, bool renderGrid, bool renderStitches, bool renderBackstitches, bool renderKnots, int colorHighlight); 0046 0047 Renderer &operator=(const Renderer &); 0048 0049 private: 0050 typedef void (Renderer::*renderStitchCallPointer)(StitchQueue *); 0051 typedef void (Renderer::*renderBackstitchCallPointer)(Backstitch *); 0052 typedef void (Renderer::*renderKnotCallPointer)(Knot *); 0053 0054 static const renderStitchCallPointer renderStitchCallPointers[]; 0055 static const renderBackstitchCallPointer renderBackstitchCallPointers[]; 0056 static const renderKnotCallPointer renderKnotCallPointers[]; 0057 0058 void renderStitchesAsStitches(StitchQueue *); 0059 void renderStitchesAsBlackWhiteSymbols(StitchQueue *); 0060 void renderStitchesAsColorSymbols(StitchQueue *); 0061 void renderStitchesAsColorBlocks(StitchQueue *); 0062 void renderStitchesAsColorBlocksSymbols(StitchQueue *); 0063 void renderStitchHints(Stitch *); 0064 0065 void renderBackstitchesAsColorLines(Backstitch *); 0066 void renderBackstitchesAsBlackWhiteSymbols(Backstitch *); 0067 0068 void renderKnotsAsColorBlocks(Knot *); 0069 void renderKnotsAsColorBlocksSymbols(Knot *); 0070 void renderKnotsAsColorSymbols(Knot *); 0071 void renderKnotsAsBlackWhiteSymbols(Knot *); 0072 0073 QSharedDataPointer<RendererData> d; 0074 }; 0075 0076 #endif // Renderer_H