DPI scaling for the dots

This commit is contained in:
Martijn Braam 2022-07-04 17:40:17 +02:00 committed by Caleb Connolly
parent e5f4c50b18
commit b6625648c9
No known key found for this signature in database
GPG key ID: 0583312B195F64B6
3 changed files with 15 additions and 30 deletions

View file

@ -10,6 +10,6 @@ struct col {
};
};
void animate_frame(int frame, int w, int y_off);
void animate_frame(int frame, int w, int h, long dpi);
#endif
#endif

View file

@ -6,47 +6,32 @@
struct col color = {.r = 255, .g = 255, .b = 255, .a = 255};
// FIXME: calculate constants based on display size/resolution
#define PI 3.1415926535897932384626433832795
#define n_circles 5
#define amplitude 40
#define rad 12
#define speed 3
void circles_wave(int frame, int w, int y_off) {
void circles_wave(int frame, int w, int y_off, long dpi) {
unsigned int t_col = tfb_make_color(color.r, color.g, color.b);
int f = frame * speed;
int rad = (int)(dpi * 4 / 96.0);
int dist = rad * 4;
int amplitude = rad * 2;
int left = (w / 2) - (dist * n_circles / 2.0);
for (unsigned int i = 0; i < n_circles; i++)
{
int c_dist = w * 0.05;
int x = i * c_dist + w / 2 - c_dist * n_circles / 2.f;
double s = sin(f / 60.0 * PI + i * 0.2 * n_circles);
int y = y_off + s * amplitude;
int x = left + (i * dist);
double offset = sin(f / 60.0 * PI + i);
int y = y_off + offset * amplitude;
tfb_fill_rect(x - rad- 1, y_off - amplitude - rad, rad* 2 + 2, 400 +rad* 2, tfb_black);
tfb_fill_circle(x, y, rad, t_col);
}
}
void circles_wave_1x1(int frame, int w, int y_off) {
unsigned int t_col = tfb_make_color(color.r, color.g, color.b);
int f = -frame * speed;
int which = (f / 120) % n_circles;
for (unsigned int i = 0; i < n_circles; i++)
{
int c_dist = w * 0.05;
int x = i * c_dist + w / 2 - c_dist * n_circles / 2.f;
double s = sin((f - 90) / 60.0 * PI);
int y = y_off + (i == which ? s * amplitude : amplitude); // * (i == which);
tfb_fill_rect(x - rad- 1, y_off - amplitude - rad, rad * 2 + 2, 400 + rad * 2, tfb_black);
tfb_fill_circle(x, y, rad, t_col);
}
}
void animate_frame(int frame, int w, int y_off)
void animate_frame(int frame, int w, int h, long dpi)
{
circles_wave(frame, w, y_off - 200);
//circles_wave_1x1(frame, w, y_off + 100);
circles_wave(frame, w, h * 0.75, dpi);
}

View file

@ -340,7 +340,7 @@ int main(int argc, char **argv)
int tty_mode = 0;
while (!terminate)
{
animate_frame(frame++, w, h * 0.8);
animate_frame(frame++, w, h, dpi);
tfb_flush_fb();
ioctl(tty, KDGETMODE, &tty_mode);
// Login started and has reset the TTY back to text mode