summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2020-09-11 23:46:13 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2020-09-11 23:46:13 +0300
commitd36cabcc327d586a13d30c53c579927a4837e4a3 (patch)
treef25ce540ecad8a9a046c35bf29aae68ceac930b2
parent25417c357d46f3ba65d7ac1ef460d52ccea41a9b (diff)
Integer range utilities
-rw-r--r--src/ui/util.c13
-rw-r--r--src/ui/util.h12
2 files changed, 24 insertions, 1 deletions
diff --git a/src/ui/util.c b/src/ui/util.c
index 9aa634bc..0af33138 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -62,6 +62,19 @@ int keyMods_Sym(int kmods) {
62 return kmods; 62 return kmods;
63} 63}
64 64
65iRangei intersect_Rangei(iRangei a, iRangei b) {
66 if (a.end < b.start || a.start > b.end) {
67 return (iRangei){ 0, 0 };
68 }
69 return (iRangei){ iMax(a.start, b.start), iMin(a.end, b.end) };
70}
71
72iRangei union_Rangei(iRangei a, iRangei b) {
73 if (isEmpty_Rangei(a)) return b;
74 if (isEmpty_Rangei(b)) return a;
75 return (iRangei){ iMin(a.start, b.start), iMax(a.end, b.end) };
76}
77
65/*-----------------------------------------------------------------------------------------------*/ 78/*-----------------------------------------------------------------------------------------------*/
66 79
67void init_Click(iClick *d, iAnyObject *widget, int button) { 80void init_Click(iClick *d, iAnyObject *widget, int button) {
diff --git a/src/ui/util.h b/src/ui/util.h
index ae3742b5..468f2057 100644
--- a/src/ui/util.h
+++ b/src/ui/util.h
@@ -48,7 +48,17 @@ iLocalDef iBool isResize_UserEvent(const SDL_Event *d) {
48# define KMOD_SECONDARY KMOD_GUI 48# define KMOD_SECONDARY KMOD_GUI
49#endif 49#endif
50 50
51int keyMods_Sym (int kmods); /* shift, alt, control, or gui */ 51int keyMods_Sym (int kmods); /* shift, alt, control, or gui */
52
53iRangei intersect_Rangei (iRangei a, iRangei b);
54iRangei union_Rangei (iRangei a, iRangei b);
55
56iLocalDef iBool equal_Rangei(iRangei a, iRangei b) {
57 return a.start == b.start && a.end == b.end;
58}
59iLocalDef iBool isEmpty_Rangei(iRangei d) {
60 return size_Range(&d) == 0;
61}
52 62
53/*-----------------------------------------------------------------------------------------------*/ 63/*-----------------------------------------------------------------------------------------------*/
54 64