@@ -129,6 +129,49 @@ TEST_F(CpuTextureManagerTest, TextureDataAndHullPoints)
129
129
context.doneCurrent ();
130
130
}
131
131
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
+
132
175
TEST_F (CpuTextureManagerTest, TextureContainsPoint)
133
176
{
134
177
// Create OpenGL context
@@ -145,26 +188,34 @@ TEST_F(CpuTextureManagerTest, TextureContainsPoint)
145
188
146
189
// Test
147
190
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)
168
219
169
220
// Cleanup
170
221
context.doneCurrent ();
0 commit comments