File indexing completed on 2024-04-28 04:32:02
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 #include "LibraryListWidgetItem.h" 0012 0013 #include <QPainter> 0014 0015 #include "LibraryPattern.h" 0016 #include "Pattern.h" 0017 #include "Renderer.h" 0018 #include "StitchData.h" 0019 0020 #include "configuration.h" 0021 0022 LibraryListWidgetItem::LibraryListWidgetItem(QListWidget *listWidget, LibraryPattern *libraryPattern) 0023 : QListWidgetItem(listWidget) 0024 { 0025 setLibraryPattern(libraryPattern); 0026 } 0027 0028 void LibraryListWidgetItem::setLibraryPattern(LibraryPattern *libraryPattern) 0029 { 0030 static Renderer *renderer = nullptr; 0031 0032 if (renderer == nullptr) { 0033 renderer = new Renderer(); 0034 renderer->setRenderStitchesAs(Configuration::EnumRenderer_RenderStitchesAs::Stitches); 0035 renderer->setRenderBackstitchesAs(Configuration::EnumRenderer_RenderBackstitchesAs::ColorLines); 0036 renderer->setRenderKnotsAs(Configuration::EnumRenderer_RenderKnotsAs::ColorBlocks); 0037 } 0038 0039 m_libraryPattern = libraryPattern; 0040 0041 StitchData &stitches = libraryPattern->pattern()->stitches(); 0042 int cellSize = 256 / std::max(stitches.width(), stitches.height()); 0043 QPixmap pixmap(stitches.width() * cellSize, stitches.height() * cellSize); 0044 pixmap.fill(Qt::white); 0045 0046 QPainter painter(&pixmap); 0047 painter.setRenderHint(QPainter::Antialiasing, true); 0048 painter.setWindow(0, 0, stitches.width(), stitches.height()); 0049 0050 renderer->render(&painter, libraryPattern->pattern(), pixmap.rect(), true, true, true, true, -1); 0051 0052 setIcon(QIcon(pixmap)); 0053 } 0054 0055 LibraryPattern *LibraryListWidgetItem::libraryPattern() 0056 { 0057 return m_libraryPattern; 0058 }