Warning, file /graphics/krita/sdk/tests/empty_nodes_test.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __EMPTY_NODES_TEST_H
0008 #define __EMPTY_NODES_TEST_H
0009 
0010 #include "kis_types.h"
0011 
0012 #include "KoColorSpace.h"
0013 #include "KoColor.h"
0014 
0015 #include "kis_image.h"
0016 #include "kis_painter.h"
0017 #include "kis_paint_layer.h"
0018 #include "kis_clone_layer.h"
0019 #include "kis_group_layer.h"
0020 #include "kis_transparency_mask.h"
0021 #include "kis_selection_mask.h"
0022 #include "kis_random_source.h"
0023 #include "kis_undo_stores.h"
0024 
0025 namespace TestUtil
0026 {
0027 
0028 class EmptyNodesTest
0029 {
0030 protected:
0031     void initPaintDevice(KisNodeSP node, int seed) {
0032         Q_ASSERT(node->paintDevice());
0033         KisRandomSource source(seed);
0034         QColor color(source.generate(10,255), source.generate(10,255), source.generate(10, 255));
0035         QRect rc(source.generate(128,255),
0036                  source.generate(128,255),
0037                  source.generate(128,255),
0038                  source.generate(128,255));
0039 
0040         KisPaintDeviceSP dev = node->paintDevice()->createCompositionSourceDevice();
0041         dev->fill(rc, KoColor(color, dev->colorSpace()));
0042 
0043         KisPainter gc(node->paintDevice());
0044         gc.bitBlt(rc.topLeft(), dev, rc);
0045     }
0046 
0047 
0048     void initBase() {
0049         m_image = new KisImage(new KisSurrogateUndoStore(), 512, 512, KoColorSpaceRegistry::instance()->rgb8(), "test");
0050         m_layer1 = new KisPaintLayer(m_image, "layer1", OPACITY_OPAQUE_U8);
0051         m_layer2 = new KisGroupLayer(m_image, "layer2", OPACITY_OPAQUE_U8);
0052         m_layer3 = new KisCloneLayer(m_layer1, m_image, "layer3", OPACITY_OPAQUE_U8);
0053         m_layer4 = new KisGroupLayer(m_image, "layer4", OPACITY_OPAQUE_U8);
0054         m_mask1 = new KisTransparencyMask(m_image, "mask1");
0055         m_sel1 = new KisSelectionMask(m_image, "sel1");
0056         m_sel2 = new KisSelectionMask(m_image, "sel2");
0057         m_sel3 = new KisSelectionMask(m_image, "sel3");
0058     }
0059 
0060     void cleanupBase() {
0061         m_layer1 = 0;
0062         m_layer2 = 0;
0063         m_layer3 = 0;
0064         m_layer4 = 0;
0065         m_mask1 = 0;
0066         m_sel1 = 0;
0067         m_sel2 = 0;
0068         m_sel3 = 0;
0069         m_image = 0;
0070     }
0071 
0072     /**
0073      * root
0074      *   sel1
0075      *   layer1
0076      *   layer2
0077      *   sel2
0078      *   layer3
0079      *     mask1
0080      *     sel3
0081      *   layer4
0082      */
0083 
0084     void constructImage() {
0085         m_image->addNode(m_layer1);
0086         m_image->addNode(m_layer2);
0087         m_image->addNode(m_layer3);
0088         m_image->addNode(m_layer4);
0089         m_image->addNode(m_mask1, m_layer3);
0090         m_mask1->initSelection(m_layer3);
0091         initPaintDevice(m_layer1, 10);
0092         initPaintDevice(m_mask1, 500);
0093         m_image->initialRefreshGraph();
0094     }
0095 
0096     void addSelectionMasks() {
0097         m_image->addNode(m_sel1, m_image->root(), (int)0);
0098         m_image->addNode(m_sel2, m_image->root(), (int)2);
0099         m_image->addNode(m_sel3, m_layer3);
0100         m_sel1->initSelection(m_layer3);
0101         m_sel2->initSelection(m_layer3);
0102         m_sel3->initSelection(m_layer3);
0103         initPaintDevice(m_sel1, 100);
0104         initPaintDevice(m_sel2, 200);
0105         const quint8 defPixel(quint8(750));
0106         m_sel3->paintDevice()->setDefaultPixel(KoColor(&defPixel, m_sel3->paintDevice()->colorSpace()));
0107     }
0108 
0109 protected:
0110     KisImageSP m_image;
0111     KisLayerSP m_layer1;
0112     KisLayerSP m_layer2;
0113     KisLayerSP m_layer3;
0114     KisLayerSP m_layer4;
0115     KisMaskSP m_mask1;
0116     KisMaskSP m_sel1;
0117     KisMaskSP m_sel2;
0118     KisMaskSP m_sel3;
0119 };
0120 
0121 }
0122 
0123 #endif /* __EMPTY_NODES_TEST_H */