aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/file_transmission_progress.c
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2025-04-07 13:14:23 +0200
committerMarvin W <git@larma.de>2025-04-07 14:11:04 +0200
commitdb1830c54ecc70f7933febab02c2ad7ee44d0bd1 (patch)
treeb9cbb067eca6da7daa135c6262351a5115b3a50d /main/src/ui/conversation_content_view/file_transmission_progress.c
parent97e7d4c18c03425e2a5620aa122999bb3d607c1b (diff)
Improve UI for sfs image progress indicator
Diffstat (limited to 'main/src/ui/conversation_content_view/file_transmission_progress.c')
-rw-r--r--main/src/ui/conversation_content_view/file_transmission_progress.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/main/src/ui/conversation_content_view/file_transmission_progress.c b/main/src/ui/conversation_content_view/file_transmission_progress.c
new file mode 100644
index 00000000..65357a35
--- /dev/null
+++ b/main/src/ui/conversation_content_view/file_transmission_progress.c
@@ -0,0 +1,16 @@
+#include <gsk/gsk.h>
+
+GskPath *dino_ui_file_transmission_progress_create_progress_arc(GskPath *circle_path, gfloat percentage) {
+ GskPathMeasure *measure = gsk_path_measure_new(circle_path);
+ gfloat length = gsk_path_measure_get_length(measure);
+ GskPathPoint start_point, end_point;
+ g_return_val_if_fail(gsk_path_measure_get_point(measure, length * 0.75, &start_point), NULL);
+ percentage += 0.75f;
+ if (percentage > 1) percentage -= 1.0f;
+ g_return_val_if_fail(gsk_path_measure_get_point(measure, length * percentage, &end_point), NULL);
+ GskPathBuilder *builder = gsk_path_builder_new();
+ gsk_path_builder_add_segment(builder, circle_path, &start_point, &end_point);
+ GskPath *arc_path = gsk_path_builder_free_to_path(builder);
+ gsk_path_measure_unref(measure);
+ return arc_path;
+} \ No newline at end of file