aboutsummaryrefslogtreecommitdiff
path: root/src/logo/logo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logo/logo.c')
-rw-r--r--src/logo/logo.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/logo/logo.c b/src/logo/logo.c
new file mode 100644
index 0000000..749b999
--- /dev/null
+++ b/src/logo/logo.c
@@ -0,0 +1,73 @@
+#include "logo.h"
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+
+#define MAX_LOGOS 2
+
+const char **logo(int index) {
+
+ static const char *logo0[] = {
+" _____________",
+" / \\",
+" | ☆ ☆ ☆ |",
+" | ☆ ☭ ☆ |",
+" | ☆ ☆ ☆ |",
+" \\_____________/",
+" Рабочие мира, объединяйтесь!",
+ NULL
+ };
+
+
+ static const char *logo1[] = {
+" ╔═══════════════════╗",
+" ║ ║",
+" ║ ☭ C C C P ☭ ║",
+" ║ ║",
+" ╚═══════════════════╝",
+" Власть — Советам!",
+ NULL
+ };
+
+ if (index < 0 || index >= MAX_LOGOS) return NULL;
+
+ switch (index) {
+ case 0:
+ return logo0;
+ case 1:
+ return logo1;
+ default:
+ return NULL;
+ }
+}
+
+int get_line_length(const char **line) {
+ size_t length = 0;
+ size_t max_length = 0;
+
+ if (line == NULL) return -1;
+ for (int i = 0; line[i] != NULL; i++) {
+ length = strlen(line[i]);
+
+ if (length > max_length) {
+ max_length = length;
+ }
+ }
+ return max_length;
+}
+
+void print_logo(void) {
+ int length = 0;
+
+ for (int i = 0; i < MAX_LOGOS; i++) {
+ const char **lines = logo(i);
+ if (lines == NULL) continue;
+
+ length = get_line_length(lines);
+
+ for (int j = 0; lines[j] != NULL ; j++) {
+ printf("%s\n", lines[j]);
+ }
+ printf("%d\n", length);
+ }
+}