GCC Code Coverage Report


Directory: ./
File: submodules/raylib/src/external/glfw/src/null_window.c
Date: 2023-09-29 04:53:15
Exec Total Coverage
Lines: 0 344 0.0%
Branches: 0 201 0.0%

Line Branch Exec Source
1 //========================================================================
2 // GLFW 3.4 - www.glfw.org
3 //------------------------------------------------------------------------
4 // Copyright (c) 2016 Google Inc.
5 // Copyright (c) 2016-2019 Camilla Löwy <elmindreda@glfw.org>
6 //
7 // This software is provided 'as-is', without any express or implied
8 // warranty. In no event will the authors be held liable for any damages
9 // arising from the use of this software.
10 //
11 // Permission is granted to anyone to use this software for any purpose,
12 // including commercial applications, and to alter it and redistribute it
13 // freely, subject to the following restrictions:
14 //
15 // 1. The origin of this software must not be misrepresented; you must not
16 // claim that you wrote the original software. If you use this software
17 // in a product, an acknowledgment in the product documentation would
18 // be appreciated but is not required.
19 //
20 // 2. Altered source versions must be plainly marked as such, and must not
21 // be misrepresented as being the original software.
22 //
23 // 3. This notice may not be removed or altered from any source
24 // distribution.
25 //
26 //========================================================================
27 // It is fine to use C99 in this file because it will not be built with VS
28 //========================================================================
29
30 #include "internal.h"
31
32 #include <stdlib.h>
33
34 static void applySizeLimits(_GLFWwindow* window, int* width, int* height)
35 {
36 if (window->numer != GLFW_DONT_CARE && window->denom != GLFW_DONT_CARE)
37 {
38 const float ratio = (float) window->numer / (float) window->denom;
39 *height = (int) (*width / ratio);
40 }
41
42 if (window->minwidth != GLFW_DONT_CARE)
43 *width = _glfw_max(*width, window->minwidth);
44 else if (window->maxwidth != GLFW_DONT_CARE)
45 *width = _glfw_min(*width, window->maxwidth);
46
47 if (window->minheight != GLFW_DONT_CARE)
48 *height = _glfw_min(*height, window->minheight);
49 else if (window->maxheight != GLFW_DONT_CARE)
50 *height = _glfw_max(*height, window->maxheight);
51 }
52
53 static void fitToMonitor(_GLFWwindow* window)
54 {
55 GLFWvidmode mode;
56 _glfwGetVideoModeNull(window->monitor, &mode);
57 _glfwGetMonitorPosNull(window->monitor,
58 &window->null.xpos,
59 &window->null.ypos);
60 window->null.width = mode.width;
61 window->null.height = mode.height;
62 }
63
64 static void acquireMonitor(_GLFWwindow* window)
65 {
66 _glfwInputMonitorWindow(window->monitor, window);
67 }
68
69 static void releaseMonitor(_GLFWwindow* window)
70 {
71 if (window->monitor->window != window)
72 return;
73
74 _glfwInputMonitorWindow(window->monitor, NULL);
75 }
76
77 static int createNativeWindow(_GLFWwindow* window,
78 const _GLFWwndconfig* wndconfig,
79 const _GLFWfbconfig* fbconfig)
80 {
81 if (window->monitor)
82 fitToMonitor(window);
83 else
84 {
85 if (wndconfig->xpos == GLFW_ANY_POSITION && wndconfig->ypos == GLFW_ANY_POSITION)
86 {
87 window->null.xpos = 17;
88 window->null.ypos = 17;
89 }
90 else
91 {
92 window->null.xpos = wndconfig->xpos;
93 window->null.ypos = wndconfig->ypos;
94 }
95
96 window->null.width = wndconfig->width;
97 window->null.height = wndconfig->height;
98 }
99
100 window->null.visible = wndconfig->visible;
101 window->null.decorated = wndconfig->decorated;
102 window->null.maximized = wndconfig->maximized;
103 window->null.floating = wndconfig->floating;
104 window->null.transparent = fbconfig->transparent;
105 window->null.opacity = 1.f;
106
107 return GLFW_TRUE;
108 }
109
110
111 //////////////////////////////////////////////////////////////////////////
112 ////// GLFW platform API //////
113 //////////////////////////////////////////////////////////////////////////
114
115 GLFWbool _glfwCreateWindowNull(_GLFWwindow* window,
116 const _GLFWwndconfig* wndconfig,
117 const _GLFWctxconfig* ctxconfig,
118 const _GLFWfbconfig* fbconfig)
119 {
120 if (!createNativeWindow(window, wndconfig, fbconfig))
121 return GLFW_FALSE;
122
123 if (ctxconfig->client != GLFW_NO_API)
124 {
125 if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API ||
126 ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
127 {
128 if (!_glfwInitOSMesa())
129 return GLFW_FALSE;
130 if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
131 return GLFW_FALSE;
132 }
133 else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
134 {
135 if (!_glfwInitEGL())
136 return GLFW_FALSE;
137 if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
138 return GLFW_FALSE;
139 }
140
141 if (!_glfwRefreshContextAttribs(window, ctxconfig))
142 return GLFW_FALSE;
143 }
144
145 if (wndconfig->mousePassthrough)
146 _glfwSetWindowMousePassthroughNull(window, GLFW_TRUE);
147
148 if (window->monitor)
149 {
150 _glfwShowWindowNull(window);
151 _glfwFocusWindowNull(window);
152 acquireMonitor(window);
153
154 if (wndconfig->centerCursor)
155 _glfwCenterCursorInContentArea(window);
156 }
157 else
158 {
159 if (wndconfig->visible)
160 {
161 _glfwShowWindowNull(window);
162 if (wndconfig->focused)
163 _glfwFocusWindowNull(window);
164 }
165 }
166
167 return GLFW_TRUE;
168 }
169
170 void _glfwDestroyWindowNull(_GLFWwindow* window)
171 {
172 if (window->monitor)
173 releaseMonitor(window);
174
175 if (_glfw.null.focusedWindow == window)
176 _glfw.null.focusedWindow = NULL;
177
178 if (window->context.destroy)
179 window->context.destroy(window);
180 }
181
182 void _glfwSetWindowTitleNull(_GLFWwindow* window, const char* title)
183 {
184 }
185
186 void _glfwSetWindowIconNull(_GLFWwindow* window, int count, const GLFWimage* images)
187 {
188 }
189
190 void _glfwSetWindowMonitorNull(_GLFWwindow* window,
191 _GLFWmonitor* monitor,
192 int xpos, int ypos,
193 int width, int height,
194 int refreshRate)
195 {
196 if (window->monitor == monitor)
197 {
198 if (!monitor)
199 {
200 _glfwSetWindowPosNull(window, xpos, ypos);
201 _glfwSetWindowSizeNull(window, width, height);
202 }
203
204 return;
205 }
206
207 if (window->monitor)
208 releaseMonitor(window);
209
210 _glfwInputWindowMonitor(window, monitor);
211
212 if (window->monitor)
213 {
214 window->null.visible = GLFW_TRUE;
215 acquireMonitor(window);
216 fitToMonitor(window);
217 }
218 else
219 {
220 _glfwSetWindowPosNull(window, xpos, ypos);
221 _glfwSetWindowSizeNull(window, width, height);
222 }
223 }
224
225 void _glfwGetWindowPosNull(_GLFWwindow* window, int* xpos, int* ypos)
226 {
227 if (xpos)
228 *xpos = window->null.xpos;
229 if (ypos)
230 *ypos = window->null.ypos;
231 }
232
233 void _glfwSetWindowPosNull(_GLFWwindow* window, int xpos, int ypos)
234 {
235 if (window->monitor)
236 return;
237
238 if (window->null.xpos != xpos || window->null.ypos != ypos)
239 {
240 window->null.xpos = xpos;
241 window->null.ypos = ypos;
242 _glfwInputWindowPos(window, xpos, ypos);
243 }
244 }
245
246 void _glfwGetWindowSizeNull(_GLFWwindow* window, int* width, int* height)
247 {
248 if (width)
249 *width = window->null.width;
250 if (height)
251 *height = window->null.height;
252 }
253
254 void _glfwSetWindowSizeNull(_GLFWwindow* window, int width, int height)
255 {
256 if (window->monitor)
257 return;
258
259 if (window->null.width != width || window->null.height != height)
260 {
261 window->null.width = width;
262 window->null.height = height;
263 _glfwInputWindowSize(window, width, height);
264 _glfwInputFramebufferSize(window, width, height);
265 }
266 }
267
268 void _glfwSetWindowSizeLimitsNull(_GLFWwindow* window,
269 int minwidth, int minheight,
270 int maxwidth, int maxheight)
271 {
272 int width = window->null.width;
273 int height = window->null.height;
274 applySizeLimits(window, &width, &height);
275 _glfwSetWindowSizeNull(window, width, height);
276 }
277
278 void _glfwSetWindowAspectRatioNull(_GLFWwindow* window, int n, int d)
279 {
280 int width = window->null.width;
281 int height = window->null.height;
282 applySizeLimits(window, &width, &height);
283 _glfwSetWindowSizeNull(window, width, height);
284 }
285
286 void _glfwGetFramebufferSizeNull(_GLFWwindow* window, int* width, int* height)
287 {
288 if (width)
289 *width = window->null.width;
290 if (height)
291 *height = window->null.height;
292 }
293
294 void _glfwGetWindowFrameSizeNull(_GLFWwindow* window,
295 int* left, int* top,
296 int* right, int* bottom)
297 {
298 if (window->null.decorated && !window->monitor)
299 {
300 if (left)
301 *left = 1;
302 if (top)
303 *top = 10;
304 if (right)
305 *right = 1;
306 if (bottom)
307 *bottom = 1;
308 }
309 else
310 {
311 if (left)
312 *left = 0;
313 if (top)
314 *top = 0;
315 if (right)
316 *right = 0;
317 if (bottom)
318 *bottom = 0;
319 }
320 }
321
322 void _glfwGetWindowContentScaleNull(_GLFWwindow* window, float* xscale, float* yscale)
323 {
324 if (xscale)
325 *xscale = 1.f;
326 if (yscale)
327 *yscale = 1.f;
328 }
329
330 void _glfwIconifyWindowNull(_GLFWwindow* window)
331 {
332 if (_glfw.null.focusedWindow == window)
333 {
334 _glfw.null.focusedWindow = NULL;
335 _glfwInputWindowFocus(window, GLFW_FALSE);
336 }
337
338 if (!window->null.iconified)
339 {
340 window->null.iconified = GLFW_TRUE;
341 _glfwInputWindowIconify(window, GLFW_TRUE);
342
343 if (window->monitor)
344 releaseMonitor(window);
345 }
346 }
347
348 void _glfwRestoreWindowNull(_GLFWwindow* window)
349 {
350 if (window->null.iconified)
351 {
352 window->null.iconified = GLFW_FALSE;
353 _glfwInputWindowIconify(window, GLFW_FALSE);
354
355 if (window->monitor)
356 acquireMonitor(window);
357 }
358 else if (window->null.maximized)
359 {
360 window->null.maximized = GLFW_FALSE;
361 _glfwInputWindowMaximize(window, GLFW_FALSE);
362 }
363 }
364
365 void _glfwMaximizeWindowNull(_GLFWwindow* window)
366 {
367 if (!window->null.maximized)
368 {
369 window->null.maximized = GLFW_TRUE;
370 _glfwInputWindowMaximize(window, GLFW_TRUE);
371 }
372 }
373
374 GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window)
375 {
376 return window->null.maximized;
377 }
378
379 GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window)
380 {
381 return _glfw.null.xcursor >= window->null.xpos &&
382 _glfw.null.ycursor >= window->null.ypos &&
383 _glfw.null.xcursor <= window->null.xpos + window->null.width - 1 &&
384 _glfw.null.ycursor <= window->null.ypos + window->null.height - 1;
385 }
386
387 GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window)
388 {
389 return window->null.transparent;
390 }
391
392 void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled)
393 {
394 window->null.resizable = enabled;
395 }
396
397 void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled)
398 {
399 window->null.decorated = enabled;
400 }
401
402 void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled)
403 {
404 window->null.floating = enabled;
405 }
406
407 void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled)
408 {
409 }
410
411 float _glfwGetWindowOpacityNull(_GLFWwindow* window)
412 {
413 return window->null.opacity;
414 }
415
416 void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity)
417 {
418 window->null.opacity = opacity;
419 }
420
421 void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled)
422 {
423 }
424
425 GLFWbool _glfwRawMouseMotionSupportedNull(void)
426 {
427 return GLFW_TRUE;
428 }
429
430 void _glfwShowWindowNull(_GLFWwindow* window)
431 {
432 window->null.visible = GLFW_TRUE;
433 }
434
435 void _glfwRequestWindowAttentionNull(_GLFWwindow* window)
436 {
437 }
438
439 void _glfwHideWindowNull(_GLFWwindow* window)
440 {
441 if (_glfw.null.focusedWindow == window)
442 {
443 _glfw.null.focusedWindow = NULL;
444 _glfwInputWindowFocus(window, GLFW_FALSE);
445 }
446
447 window->null.visible = GLFW_FALSE;
448 }
449
450 void _glfwFocusWindowNull(_GLFWwindow* window)
451 {
452 _GLFWwindow* previous;
453
454 if (_glfw.null.focusedWindow == window)
455 return;
456
457 if (!window->null.visible)
458 return;
459
460 previous = _glfw.null.focusedWindow;
461 _glfw.null.focusedWindow = window;
462
463 if (previous)
464 {
465 _glfwInputWindowFocus(previous, GLFW_FALSE);
466 if (previous->monitor && previous->autoIconify)
467 _glfwIconifyWindowNull(previous);
468 }
469
470 _glfwInputWindowFocus(window, GLFW_TRUE);
471 }
472
473 GLFWbool _glfwWindowFocusedNull(_GLFWwindow* window)
474 {
475 return _glfw.null.focusedWindow == window;
476 }
477
478 GLFWbool _glfwWindowIconifiedNull(_GLFWwindow* window)
479 {
480 return window->null.iconified;
481 }
482
483 GLFWbool _glfwWindowVisibleNull(_GLFWwindow* window)
484 {
485 return window->null.visible;
486 }
487
488 void _glfwPollEventsNull(void)
489 {
490 }
491
492 void _glfwWaitEventsNull(void)
493 {
494 }
495
496 void _glfwWaitEventsTimeoutNull(double timeout)
497 {
498 }
499
500 void _glfwPostEmptyEventNull(void)
501 {
502 }
503
504 void _glfwGetCursorPosNull(_GLFWwindow* window, double* xpos, double* ypos)
505 {
506 if (xpos)
507 *xpos = _glfw.null.xcursor - window->null.xpos;
508 if (ypos)
509 *ypos = _glfw.null.ycursor - window->null.ypos;
510 }
511
512 void _glfwSetCursorPosNull(_GLFWwindow* window, double x, double y)
513 {
514 _glfw.null.xcursor = window->null.xpos + (int) x;
515 _glfw.null.ycursor = window->null.ypos + (int) y;
516 }
517
518 void _glfwSetCursorModeNull(_GLFWwindow* window, int mode)
519 {
520 }
521
522 GLFWbool _glfwCreateCursorNull(_GLFWcursor* cursor,
523 const GLFWimage* image,
524 int xhot, int yhot)
525 {
526 return GLFW_TRUE;
527 }
528
529 GLFWbool _glfwCreateStandardCursorNull(_GLFWcursor* cursor, int shape)
530 {
531 return GLFW_TRUE;
532 }
533
534 void _glfwDestroyCursorNull(_GLFWcursor* cursor)
535 {
536 }
537
538 void _glfwSetCursorNull(_GLFWwindow* window, _GLFWcursor* cursor)
539 {
540 }
541
542 void _glfwSetClipboardStringNull(const char* string)
543 {
544 char* copy = _glfw_strdup(string);
545 _glfw_free(_glfw.null.clipboardString);
546 _glfw.null.clipboardString = copy;
547 }
548
549 const char* _glfwGetClipboardStringNull(void)
550 {
551 return _glfw.null.clipboardString;
552 }
553
554 EGLenum _glfwGetEGLPlatformNull(EGLint** attribs)
555 {
556 return 0;
557 }
558
559 EGLNativeDisplayType _glfwGetEGLNativeDisplayNull(void)
560 {
561 return 0;
562 }
563
564 EGLNativeWindowType _glfwGetEGLNativeWindowNull(_GLFWwindow* window)
565 {
566 return 0;
567 }
568
569 const char* _glfwGetScancodeNameNull(int scancode)
570 {
571 if (scancode < GLFW_KEY_SPACE || scancode > GLFW_KEY_LAST)
572 {
573 _glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode);
574 return NULL;
575 }
576
577 switch (scancode)
578 {
579 case GLFW_KEY_APOSTROPHE:
580 return "'";
581 case GLFW_KEY_COMMA:
582 return ",";
583 case GLFW_KEY_MINUS:
584 case GLFW_KEY_KP_SUBTRACT:
585 return "-";
586 case GLFW_KEY_PERIOD:
587 case GLFW_KEY_KP_DECIMAL:
588 return ".";
589 case GLFW_KEY_SLASH:
590 case GLFW_KEY_KP_DIVIDE:
591 return "/";
592 case GLFW_KEY_SEMICOLON:
593 return ";";
594 case GLFW_KEY_EQUAL:
595 case GLFW_KEY_KP_EQUAL:
596 return "=";
597 case GLFW_KEY_LEFT_BRACKET:
598 return "[";
599 case GLFW_KEY_RIGHT_BRACKET:
600 return "]";
601 case GLFW_KEY_KP_MULTIPLY:
602 return "*";
603 case GLFW_KEY_KP_ADD:
604 return "+";
605 case GLFW_KEY_BACKSLASH:
606 case GLFW_KEY_WORLD_1:
607 case GLFW_KEY_WORLD_2:
608 return "\\";
609 case GLFW_KEY_0:
610 case GLFW_KEY_KP_0:
611 return "0";
612 case GLFW_KEY_1:
613 case GLFW_KEY_KP_1:
614 return "1";
615 case GLFW_KEY_2:
616 case GLFW_KEY_KP_2:
617 return "2";
618 case GLFW_KEY_3:
619 case GLFW_KEY_KP_3:
620 return "3";
621 case GLFW_KEY_4:
622 case GLFW_KEY_KP_4:
623 return "4";
624 case GLFW_KEY_5:
625 case GLFW_KEY_KP_5:
626 return "5";
627 case GLFW_KEY_6:
628 case GLFW_KEY_KP_6:
629 return "6";
630 case GLFW_KEY_7:
631 case GLFW_KEY_KP_7:
632 return "7";
633 case GLFW_KEY_8:
634 case GLFW_KEY_KP_8:
635 return "8";
636 case GLFW_KEY_9:
637 case GLFW_KEY_KP_9:
638 return "9";
639 case GLFW_KEY_A:
640 return "a";
641 case GLFW_KEY_B:
642 return "b";
643 case GLFW_KEY_C:
644 return "c";
645 case GLFW_KEY_D:
646 return "d";
647 case GLFW_KEY_E:
648 return "e";
649 case GLFW_KEY_F:
650 return "f";
651 case GLFW_KEY_G:
652 return "g";
653 case GLFW_KEY_H:
654 return "h";
655 case GLFW_KEY_I:
656 return "i";
657 case GLFW_KEY_J:
658 return "j";
659 case GLFW_KEY_K:
660 return "k";
661 case GLFW_KEY_L:
662 return "l";
663 case GLFW_KEY_M:
664 return "m";
665 case GLFW_KEY_N:
666 return "n";
667 case GLFW_KEY_O:
668 return "o";
669 case GLFW_KEY_P:
670 return "p";
671 case GLFW_KEY_Q:
672 return "q";
673 case GLFW_KEY_R:
674 return "r";
675 case GLFW_KEY_S:
676 return "s";
677 case GLFW_KEY_T:
678 return "t";
679 case GLFW_KEY_U:
680 return "u";
681 case GLFW_KEY_V:
682 return "v";
683 case GLFW_KEY_W:
684 return "w";
685 case GLFW_KEY_X:
686 return "x";
687 case GLFW_KEY_Y:
688 return "y";
689 case GLFW_KEY_Z:
690 return "z";
691 }
692
693 return NULL;
694 }
695
696 int _glfwGetKeyScancodeNull(int key)
697 {
698 return key;
699 }
700
701 void _glfwGetRequiredInstanceExtensionsNull(char** extensions)
702 {
703 }
704
705 GLFWbool _glfwGetPhysicalDevicePresentationSupportNull(VkInstance instance,
706 VkPhysicalDevice device,
707 uint32_t queuefamily)
708 {
709 return GLFW_FALSE;
710 }
711
712 VkResult _glfwCreateWindowSurfaceNull(VkInstance instance,
713 _GLFWwindow* window,
714 const VkAllocationCallbacks* allocator,
715 VkSurfaceKHR* surface)
716 {
717 // This seems like the most appropriate error to return here
718 return VK_ERROR_EXTENSION_NOT_PRESENT;
719 }
720
721