@@ -129,6 +129,49 @@ TEST_F(CpuTextureManagerTest, TextureDataAndHullPoints)
129129 context.doneCurrent ();
130130}
131131
132+ TEST_F (CpuTextureManagerTest, GetPointColor)
133+ {
134+ // Create OpenGL context
135+ QOpenGLContext context;
136+ QOffscreenSurface surface;
137+ createContextAndSurface (&context, &surface);
138+
139+ // Paint
140+ QNanoPainter painter;
141+ ImagePainter imgPainter (&painter, " image.png" );
142+
143+ // Read texture data
144+ Texture texture (imgPainter.fbo ()->texture (), imgPainter.fbo ()->size ());
145+
146+ // Test
147+ CpuTextureManager manager;
148+ ASSERT_EQ (manager.getPointColor (texture, 0 , 0 , {}), qRgba (0 , 0 , 0 , 0 ));
149+ ASSERT_EQ (manager.getPointColor (texture, 1 , 0 , {}), qRgba (0 , 0 , 0 , 0 ));
150+ ASSERT_EQ (manager.getPointColor (texture, 2 , 0 , {}), qRgba (0 , 0 , 0 , 0 ));
151+ ASSERT_EQ (manager.getPointColor (texture, 3 , 0 , {}), qRgba (0 , 0 , 0 , 0 ));
152+
153+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 0 , 1 }, {}));
154+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 1 }, {}));
155+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1.4 , 1.25 }, {}));
156+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 2 , 1 }, {}));
157+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 1 }, {}));
158+
159+ ASSERT_EQ (manager.getPointColor (texture, 0 , 1 , {}), qRgba (0 , 0 , 0 , 0 ));
160+ ASSERT_EQ (manager.getPointColor (texture, 1 , 1 , {}), qRgb (0 , 0 , 255 ));
161+ ASSERT_EQ (manager.getPointColor (texture, 2 , 1 , {}), qRgb (255 , 0 , 255 ));
162+ ASSERT_EQ (manager.getPointColor (texture, 3 , 1 , {}), qRgb (255 , 128 , 128 ));
163+
164+ std::unordered_map<ShaderManager::Effect, double > effects = { { ShaderManager::Effect::Color, 50 } };
165+ ASSERT_EQ (manager.getPointColor (texture, 1 , 1 , effects), qRgb (255 , 0 , 128 ));
166+ ASSERT_EQ (manager.getPointColor (texture, 2 , 1 , effects), qRgb (255 , 128 , 0 ));
167+ ASSERT_EQ (manager.getPointColor (texture, 3 , 1 , effects), qRgb (192 , 255 , 128 ));
168+
169+ // TODO: Test point transform (graphic effects that change shape)
170+
171+ // Cleanup
172+ context.doneCurrent ();
173+ }
174+
132175TEST_F (CpuTextureManagerTest, TextureContainsPoint)
133176{
134177 // Create OpenGL context
@@ -145,26 +188,34 @@ TEST_F(CpuTextureManagerTest, TextureContainsPoint)
145188
146189 // Test
147190 CpuTextureManager manager;
148- ASSERT_FALSE (manager.textureContainsPoint (texture, { 0 , 0 }));
149- ASSERT_FALSE (manager.textureContainsPoint (texture, { 1 , 0 }));
150- ASSERT_FALSE (manager.textureContainsPoint (texture, { 2 , 0 }));
151- ASSERT_FALSE (manager.textureContainsPoint (texture, { 3 , 0 }));
152-
153- ASSERT_FALSE (manager.textureContainsPoint (texture, { 0 , 1 }));
154- ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 1 }));
155- ASSERT_TRUE (manager.textureContainsPoint (texture, { 1.4 , 1.25 }));
156- ASSERT_TRUE (manager.textureContainsPoint (texture, { 2 , 1 }));
157- ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 1 }));
158-
159- ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 2 }));
160- ASSERT_FALSE (manager.textureContainsPoint (texture, { 2 , 2 }));
161- ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 2 }));
162- ASSERT_TRUE (manager.textureContainsPoint (texture, { 3.5 , 2.1 }));
163-
164- ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 3 }));
165- ASSERT_TRUE (manager.textureContainsPoint (texture, { 2 , 3 }));
166- ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 3 }));
167- ASSERT_TRUE (manager.textureContainsPoint (texture, { 3.3 , 3.5 }));
191+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 0 , 0 }, {}));
192+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 1 , 0 }, {}));
193+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 2 , 0 }, {}));
194+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 3 , 0 }, {}));
195+
196+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 0 , 1 }, {}));
197+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 1 }, {}));
198+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1.4 , 1.25 }, {}));
199+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 2 , 1 }, {}));
200+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 1 }, {}));
201+
202+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 2 }, {}));
203+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 2 , 2 }, {}));
204+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 2 }, {}));
205+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3.5 , 2.1 }, {}));
206+
207+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 1 , 3 }, {}));
208+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 2 , 3 }, {}));
209+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3 , 3 }, {}));
210+ ASSERT_TRUE (manager.textureContainsPoint (texture, { 3.3 , 3.5 }, {}));
211+
212+ std::unordered_map<ShaderManager::Effect, double > effects = { { ShaderManager::Effect::Ghost, 100 } };
213+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 1 , 3 }, effects));
214+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 2 , 3 }, effects));
215+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 3 , 3 }, effects));
216+ ASSERT_FALSE (manager.textureContainsPoint (texture, { 3.3 , 3.5 }, effects));
217+
218+ // TODO: Test point transform (graphic effects that change shape)
168219
169220 // Cleanup
170221 context.doneCurrent ();
0 commit comments