GCC Code Coverage Report


Directory: src/gate/
File: src/gate/graphics/cxx_gl_apis.cpp
Date: 2025-09-22 22:57:09
Exec Total Coverage
Lines: 0 210 0.0%
Functions: 0 60 0.0%
Branches: 0 72 0.0%

Line Branch Exec Source
1 #include "gate/graphics/gl_apis.hpp"
2 #include "gate/exceptions.hpp"
3
4 namespace gate
5 {
6 namespace graph
7 {
8
9 ✗ GlApi::GlApi()
10 {
11 ✗ result_t result = gate_gl_api_init();
12 ✗ GATEXX_CHECK_EXCEPTION(result);
13 ✗ }
14
15 ✗ GlApi::~GlApi() noexcept
16 {
17 ✗ }
18
19 ✗ void GlApi::setColor(real32_t r, real32_t g, real32_t b)
20 {
21 ✗ gate_gl_api_color3(r, g, b);
22 ✗ }
23 ✗ void GlApi::setColor(real32_t r, real32_t g, real32_t b, real32_t a)
24 {
25 ✗ gate_gl_api_color4(r, g, b, a);
26 ✗ }
27 ✗ void GlApi::setColorByte(uint8_t r, uint8_t g, uint8_t b)
28 {
29 ✗ gate_gl_api_color3b(r, g, b);
30 ✗ }
31 ✗ void GlApi::setColorByte(uint8_t r, uint8_t g, uint8_t b, uint8_t a)
32 {
33 ✗ gate_gl_api_color4b(r, g, b, a);
34 ✗ }
35 ✗ void GlApi::setVertexPointer(size_t coord_count, real32_t const* ptr_coords)
36 {
37 ✗ gate_gl_api_vertexpointer(coord_count, ptr_coords);
38 ✗ }
39 ✗ void GlApi::setTexCoordPointer(size_t coord_count, real32_t const* ptr_coords)
40 {
41 ✗ gate_gl_api_texcoordpointer(coord_count, ptr_coords);
42 ✗ }
43 ✗ void GlApi::setShadeModel(ShadeModelEnum model)
44 {
45 ✗ gate_gl_api_shademodel((gate_gl_api_shademodel_t)(int)model);
46 ✗ }
47 ✗ void GlApi::setBlendFunc(BlendEnum srcFunc, BlendEnum dstFunc)
48 {
49 ✗ gate_gl_api_blendfunc((gate_gl_api_blend_t)(int)srcFunc, (gate_gl_api_blend_t)(int)dstFunc);
50 ✗ }
51 ✗ void GlApi::setClearColor(real32_t r, real32_t g, real32_t b, real32_t a)
52 {
53 ✗ gate_gl_api_clearcolor(r, g, b, a);
54 ✗ }
55 ✗ void GlApi::setClearDepth(real32_t depth)
56 {
57 ✗ gate_gl_api_cleardepth(depth);
58 ✗ }
59 ✗ void GlApi::enableCapability(CapabilityEnum capability)
60 {
61 ✗ gate_gl_api_enable((gate_gl_api_capability_t)(int)capability);
62 ✗ }
63 ✗ void GlApi::disableCapability(CapabilityEnum capability)
64 {
65 ✗ gate_gl_api_disable((gate_gl_api_capability_t)(int)capability);
66 ✗ }
67 ✗ void GlApi::setDepthFunc(DepthEnum depthFunction)
68 {
69 ✗ gate_gl_api_depthfunc((gate_gl_api_depth_t)(int)depthFunction);
70 ✗ }
71 ✗ void GlApi::setDepthMask(bool_t enabled)
72 {
73 ✗ gate_gl_api_depthmask(enabled);
74 ✗ }
75
76 ✗ void GlApi::setHint(HintEnum hintType, HintModeEnum hintMode)
77 {
78 ✗ gate_gl_api_hint((gate_gl_api_hint_t)(int)hintType, (gate_gl_api_hintmode_t)(int)hintMode);
79 ✗ }
80 ✗ void GlApi::setViewport(int32_t x, int32_t y, int32_t width, int32_t height)
81 {
82 ✗ gate_gl_api_viewport(x, y, width, height);
83 ✗ }
84 ✗ void GlApi::setMatrixMode(MatrixModeEnum matrixMode)
85 {
86 ✗ gate_gl_api_matrixmode((gate_gl_api_matrixmode_t)(int)matrixMode);
87 ✗ }
88 ✗ void GlApi::loadIdentity()
89 {
90 ✗ gate_gl_api_loadidentity();
91 ✗ }
92 ✗ void GlApi::mulMatrix(real32_t const matrix[16])
93 {
94 ✗ gate_gl_api_multmatrix(matrix);
95 ✗ }
96 ✗ void GlApi::translate(real32_t x, real32_t y, real32_t z)
97 {
98 ✗ gate_gl_api_translate(x, y, z);
99 ✗ }
100 ✗ void GlApi::rotate(real32_t angle, real32_t x, real32_t y, real32_t z)
101 {
102 ✗ gate_gl_api_rotate(angle, x, y, z);
103 ✗ }
104
105 ✗ void GlApi::flush()
106 {
107 ✗ gate_gl_api_flush();
108 ✗ }
109 ✗ void GlApi::finish()
110 {
111 ✗ gate_gl_api_finish();
112 ✗ }
113 ✗ void GlApi::clear(unsigned clearBits)
114 {
115 ✗ gate_gl_api_clear(clearBits);
116 ✗ }
117 ✗ void GlApi::setPerspective(real32_t fovy, real32_t aspect, real32_t znear, real32_t zfar)
118 {
119 ✗ gate_gl_api_perspective(fovy, aspect, znear, zfar);
120 ✗ }
121 ✗ void GlApi::lookAt(real32_t eyeX, real32_t eyeY, real32_t eyeZ, real32_t lookX, real32_t lookY, real32_t lookZ, real32_t upX, real32_t upY, real32_t upZ)
122 {
123 ✗ gate_gl_api_lookat(eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
124 ✗ }
125 ✗ void GlApi::enableClientState(ClientStateEnum state)
126 {
127 ✗ gate_gl_api_enableclientstate((gate_gl_api_clientstate_t)(int)state);
128 ✗ }
129 ✗ void GlApi::disableClientState(ClientStateEnum state)
130 {
131 ✗ gate_gl_api_disableclientstate((gate_gl_api_clientstate_t)(int)state);
132 ✗ }
133 ✗ void GlApi::drawArrays(DrawModeEnum drawMode, int index, size_t vertex_count)
134 {
135 ✗ gate_gl_api_drawarrays((gate_gl_api_drawmode_t)(int)drawMode, index, vertex_count);
136 ✗ }
137 ✗ void* GlApi::createTexture(PixelFormatEnum pixelFormat, uint32_t width, uint32_t height, void const* data)
138 {
139 ✗ return gate_gl_api_createtexture((gate_gl_api_pixelformat_t)(int)pixelFormat, width, height, data);
140 }
141 ✗ void GlApi::deleteTexture(void* textureId)
142 {
143 ✗ gate_gl_api_deletetexture(textureId);
144 ✗ }
145 ✗ void GlApi::bindTexture(void* textureId)
146 {
147 ✗ gate_gl_api_bindtexture(textureId);
148 ✗ }
149 ✗ void GlApi::setCullFace(CullFaceEnum cullface)
150 {
151 ✗ gate_gl_api_cullface((gate_gl_api_cullface_t)cullface);
152 ✗ }
153
154
155
156
157
158 ✗ GlSurfaceEventSink::GlSurfaceEventSink()
159 ✗ : surface_ptr(NULL)
160 {
161 ✗ }
162
163 ✗ GlSurfaceEventSink::~GlSurfaceEventSink() noexcept
164 {
165 ✗ }
166
167 ✗ GlSurface& GlSurfaceEventSink::getSurface()
168 {
169 ✗ if (!this->surface_ptr)
170 {
171 ✗ GATEXX_RAISE_ERROR(results::NullPointer);
172 }
173 ✗ return *this->surface_ptr;
174 }
175 ✗ void GlSurfaceEventSink::connectSurface(GlSurface& surface)
176 {
177 ✗ this->surface_ptr = &surface;
178 ✗ }
179
180
181
182 enumint_t const GlSurface::Flag_SoftwareRendering = GATE_GL_SURFACE_FLAG_SOFTWARE_RENDERING;
183
184
185 ✗ GlSurface::GlSurface()
186 {
187 ✗ result_t result = gate_gl_surface_init(&this->impl);
188 ✗ GATEXX_CHECK_ERROR(result);
189 ✗ }
190 ✗ GlSurface::~GlSurface() noexcept
191 {
192 ✗ gate_gl_surface_uninit(&this->impl);
193 ✗ }
194
195 ✗ void GlSurface::openScreen(uint32_t width, uint32_t height, enumint_t flags)
196 {
197 ✗ result_t result = gate_gl_surface_open(&this->impl, gate_gl_surface_type_screen, width, height, flags);
198 ✗ GATEXX_CHECK_ERROR(result);
199 ✗ }
200 ✗ void GlSurface::openImage(uint32_t width, uint32_t height, enumint_t flags)
201 {
202 ✗ result_t result = gate_gl_surface_open(&this->impl, gate_gl_surface_type_image, width, height, flags);
203 ✗ GATEXX_CHECK_ERROR(result);
204 ✗ }
205
206 ✗ void GlSurface::close()
207 {
208 ✗ result_t result = gate_gl_surface_close(&this->impl);
209 ✗ GATEXX_CHECK_ERROR(result);
210 ✗ }
211
212 ✗ void GlSurface::getSize(uint32_t& width, uint32_t& height)
213 {
214 ✗ result_t result = gate_gl_surface_get_size(&this->impl, &width, &height);
215 ✗ GATEXX_CHECK_ERROR(result);
216 ✗ }
217 ✗ void GlSurface::resize(uint32_t width, uint32_t height)
218 {
219 ✗ result_t result = gate_gl_surface_resize(&this->impl, width, height);
220 ✗ GATEXX_CHECK_EXCEPTION(result);
221 ✗ }
222
223 ✗ RasterImage GlSurface::printImage()
224 {
225 ✗ gate_rasterimage_t rasterimage = GATE_INIT_EMPTY;
226 ✗ result_t result = gate_gl_surface_print_image(&this->impl, &rasterimage);
227 ✗ GATEXX_CHECK_ERROR(result);
228 ✗ RasterImage image(&rasterimage);
229 ✗ gate_rasterimage_release(&rasterimage);
230 ✗ return image;
231 }
232
233
234 ✗ static void surface_events_on_render(gate_gl_surface_t* surface, void* user_param)
235 {
236 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
237 try
238 {
239 ✗ sink->onRender(sink->getSurface());
240 }
241 ✗ catch (...) {}
242 ✗ }
243 ✗ static void surface_events_on_exit(gate_gl_surface_t* surface, void* user_param)
244 {
245 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
246 try
247 {
248 ✗ sink->onExit(sink->getSurface());
249 }
250 ✗ catch (...) {}
251 ✗ }
252 ✗ static void surface_events_on_resize(gate_gl_surface_t* surface, gate_uint32_t width, gate_uint32_t height, void* user_param)
253 {
254 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
255 try
256 {
257 ✗ sink->onResize(sink->getSurface(), width, height);
258 }
259 ✗ catch (...) {}
260 ✗ }
261 ✗ static void surface_events_on_key_down(gate_gl_surface_t* surface, gate_input_keycode_t keyboard_key,
262 gate_input_keystates_t keyboard_states, void* user_param)
263 {
264 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
265 try
266 {
267 ✗ sink->onKeyDown(sink->getSurface(), Keyboard::KeyEnum(keyboard_key), keyboard_states);
268 }
269 ✗ catch (...) {}
270 ✗ }
271 ✗ static void surface_events_on_key_up(gate_gl_surface_t* surface, gate_input_keycode_t keyboard_key,
272 gate_input_keystates_t keyboard_states, void* user_param)
273 {
274 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
275 try
276 {
277 ✗ sink->onKeyUp(sink->getSurface(), Keyboard::KeyEnum(keyboard_key), keyboard_states);
278 }
279 ✗ catch (...) {}
280 ✗ }
281 ✗ static void surface_events_on_pointer_down(gate_gl_surface_t* surface, gate_uint32_t pointer_type, gate_real32_t x, gate_real32_t y, void* user_param)
282 {
283 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
284 try
285 {
286 ✗ sink->onPointerDown(sink->getSurface(), pointer_type, x, y);
287 }
288 ✗ catch (...) {}
289 ✗ }
290 ✗ static void surface_events_on_pointer_move(gate_gl_surface_t* surface, gate_uint32_t pointer_type, gate_real32_t x, gate_real32_t y, void* user_param)
291 {
292 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
293 try
294 {
295 ✗ sink->onPointerMove(sink->getSurface(), pointer_type, x, y);
296 }
297 ✗ catch (...) {}
298 ✗ }
299 ✗ static void surface_events_on_pointer_up(gate_gl_surface_t* surface, gate_uint32_t pointer_type, gate_real32_t x, gate_real32_t y, void* user_param)
300 {
301 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
302 try
303 {
304 ✗ sink->onPointerUp(sink->getSurface(), pointer_type, x, y);
305 }
306 ✗ catch (...) {}
307 ✗ }
308 ✗ static void surface_events_on_scroll(gate_gl_surface_t* surface, gate_int32_t x_direction, gate_int32_t y_direction, void* user_param)
309 {
310 ✗ GlSurfaceEventSink* sink = static_cast<GlSurfaceEventSink*>(user_param);
311 try
312 {
313 ✗ sink->onScroll(sink->getSurface(), x_direction, y_direction);
314 }
315 ✗ catch (...) {}
316 ✗ }
317
318 static gate_gl_surface_events_t cpp_dispatcher =
319 {
320 &surface_events_on_render,
321 &surface_events_on_exit,
322 &surface_events_on_resize,
323
324 &surface_events_on_key_down,
325 &surface_events_on_key_up,
326 &surface_events_on_pointer_down,
327 &surface_events_on_pointer_move,
328 &surface_events_on_pointer_up,
329 &surface_events_on_scroll
330 };
331
332 ✗ void GlSurface::runEventLoop(GlSurfaceEventSink& eventHandler)
333 {
334 ✗ eventHandler.connectSurface(*this);
335 ✗ result_t result = gate_gl_surface_run_event_loop(&this->impl, &cpp_dispatcher, static_cast<void*>(&eventHandler));
336 ✗ GATEXX_CHECK_ERROR(result);
337 ✗ }
338 ✗ void GlSurface::exitEventLoop()
339 {
340 ✗ result_t result = gate_gl_surface_exit_event_loop(&this->impl);
341 ✗ GATEXX_CHECK_ERROR(result);
342 ✗ }
343 ✗ void GlSurface::swapBuffers()
344 {
345 ✗ result_t result = gate_gl_surface_swap_buffers(&this->impl);
346 ✗ GATEXX_CHECK_ERROR(result);
347 ✗ }
348
349 ✗ GlApi& GlSurface::getGlApi()
350 {
351 ✗ return this->api;
352 }
353
354 } // end of namespace graph
355 } // end of namespace gate
356