Add 7 segment component.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
e8bab86ed4
commit
8d3605c44c
3 changed files with 175 additions and 2 deletions
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
gcc -o pialarm src/main.c \
|
gcc -o pialarm src/* \
|
||||||
-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O2 \
|
-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O2 \
|
||||||
-I. -Iraylib-5.5/src -Iraylib-5.5/src/external -I/usr/local/include -Iclay-0.13 \
|
-I. -Iraylib-5.5/src -Iraylib-5.5/src/external -I/usr/local/include -Iclay-0.13 -Iinclude \
|
||||||
-L. -Lraylib-5.5/src -Lraylib-5.5/src -L/usr/local/lib \
|
-L. -Lraylib-5.5/src -Lraylib-5.5/src -L/usr/local/lib \
|
||||||
-lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -latomic -flax-vector-conversions \
|
-lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -latomic -flax-vector-conversions \
|
||||||
-D_DEFAULT_SOURCE -DPLATFORM_DESKTOP -DPLATFORM_DESKTOP_GLFW
|
-D_DEFAULT_SOURCE -DPLATFORM_DESKTOP -DPLATFORM_DESKTOP_GLFW
|
||||||
|
|
|
||||||
1
include/7segment.h
Normal file
1
include/7segment.h
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
void Render7Segment(int width, int height, int number);
|
||||||
172
src/7segment.c
Normal file
172
src/7segment.c
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "clay.h"
|
||||||
|
|
||||||
|
// TODO: Optimize this, not good code.
|
||||||
|
bool shouldBeOn(int number, int segment) {
|
||||||
|
switch (segment) {
|
||||||
|
case 0: // 2, 3, 4, 5, 6, 8, 9
|
||||||
|
return number == 2 || number == 3 || number == 4 || number == 5 || number == 6 || number == 8 || number == 9;
|
||||||
|
case 1: // 0, 4, 5, 6, 8, 9
|
||||||
|
return number == 0 || number == 4 || number == 5 || number == 6 || number == 8 || number == 9;
|
||||||
|
case 2: // 0, 2, 3, 5, 6, 7, 8, 9
|
||||||
|
return number == 0 || number == 2 || number == 3 || number == 5 || number == 6 || number == 7 || number == 7 || number == 8 || number == 9;
|
||||||
|
case 3: // 0, 1, 2, 3, 4, 7, 8, 9
|
||||||
|
return number != 5 && number != 6;
|
||||||
|
case 4: // 0, 1, 3, 4, 5, 6, 7, 8, 9
|
||||||
|
return number != 2;
|
||||||
|
case 5: // 0, 2, 3, 5, 6, 8
|
||||||
|
return number == 0 || number == 2 || number == 3 || number == 5 || number == 6 || number == 8;
|
||||||
|
case 6: // 0, 2, 6, 8
|
||||||
|
return number == 0 || number == 2 || number == 6 || number == 8;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dimensions for the expected aspect ratio:
|
||||||
|
// width: 105
|
||||||
|
// height 205
|
||||||
|
void Render7Segment(int width, int height, int number) {
|
||||||
|
Clay_Color offColor = {225, 225, 225, 255};
|
||||||
|
Clay_Color onColor = {0, 0, 0, 255};
|
||||||
|
float radius = width * 0.07143;
|
||||||
|
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = width,
|
||||||
|
.height = height,
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_TOP_TO_BOTTOM,
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.064),
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_LEFT_TO_RIGHT,
|
||||||
|
},
|
||||||
|
}) {
|
||||||
|
ExpandContainer();
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 2) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.905),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}) {}
|
||||||
|
ExpandContainer();
|
||||||
|
}
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.404),
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_LEFT_TO_RIGHT,
|
||||||
|
},
|
||||||
|
}) {
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 1) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.143),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}) {}
|
||||||
|
ExpandContainer();
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 3) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.143),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}) {}
|
||||||
|
}
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.064),
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_LEFT_TO_RIGHT,
|
||||||
|
},
|
||||||
|
}) {
|
||||||
|
ExpandContainer();
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 0) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.905),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}) {}
|
||||||
|
ExpandContainer();
|
||||||
|
}
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.404),
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_LEFT_TO_RIGHT,
|
||||||
|
},
|
||||||
|
}) {
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 6) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.143),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}) {}
|
||||||
|
ExpandContainer();
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 4) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.143),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}) {}
|
||||||
|
}
|
||||||
|
CLAY({
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.064),
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
.layoutDirection = CLAY_LEFT_TO_RIGHT,
|
||||||
|
},
|
||||||
|
}) {
|
||||||
|
ExpandContainer();
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = shouldBeOn(number, 5) ? onColor : offColor,
|
||||||
|
.cornerRadius = CLAY_CORNER_RADIUS(radius),
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.905),
|
||||||
|
.height = CLAY_SIZING_GROW(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}) {}
|
||||||
|
ExpandContainer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue