]> git.gir.st - solVItaire.git/blob - schemes.h
sol prototype complete, bunch of small stuff
[solVItaire.git] / schemes.h
1 #ifndef __SCHEMES_H__
2 #define __SCHEMES_H__
3
4 #include "sol.h"
5
6 struct scheme {
7 int width; /* column alignment */
8 int height; /* height of a card */ //TODO: obsoletes NULL termination
9 int overlap; /* no of lines to draw when cards overlapp */
10 char** card[_NUM_CARDS_internal];
11 char** facedown;
12 char** placeholder;
13 char* init_seq; /* for setting up charset */
14 char* reset_seq;
15 };
16
17 #define ULCARD(s, r) (char*[]) \
18 {"╭───╮",\
19 "│"s" "r"│",\
20 "│ "s" │",\
21 "╰───╯"}
22 #define RULCARD(s, r) \
23 ULCARD("\033[91m" s "\033[0m", r)
24 #define BULCARD(s, r) \
25 ULCARD("\033[37m" s "\033[0m", r)
26 #define USCARD(c) (char*[]){c}
27
28 const struct scheme unicode_large_mono = {
29 .width = 5,
30 .height = 4,
31 .overlap = 2,
32 .card = {
33 [NO_CARD] = (char*[]){" "," "," "," "},
34 [CLU_A] = ULCARD("♣","A"), [DIA_A] = ULCARD("♦","A"),
35 [HEA_A] = ULCARD("♥","A"), [SPA_A] = ULCARD("♠","A"),
36 [CLU_2] = ULCARD("♣","2"), [DIA_2] = ULCARD("♦","2"),
37 [HEA_2] = ULCARD("♥","2"), [SPA_2] = ULCARD("♠","2"),
38 [CLU_3] = ULCARD("♣","3"), [DIA_3] = ULCARD("♦","3"),
39 [HEA_3] = ULCARD("♥","3"), [SPA_3] = ULCARD("♠","3"),
40 [CLU_4] = ULCARD("♣","4"), [DIA_4] = ULCARD("♦","4"),
41 [HEA_4] = ULCARD("♥","4"), [SPA_4] = ULCARD("♠","4"),
42 [CLU_5] = ULCARD("♣","5"), [DIA_5] = ULCARD("♦","5"),
43 [HEA_5] = ULCARD("♥","5"), [SPA_5] = ULCARD("♠","5"),
44 [CLU_6] = ULCARD("♣","6"), [DIA_6] = ULCARD("♦","6"),
45 [HEA_6] = ULCARD("♥","6"), [SPA_6] = ULCARD("♠","6"),
46 [CLU_7] = ULCARD("♣","7"), [DIA_7] = ULCARD("♦","7"),
47 [HEA_7] = ULCARD("♥","7"), [SPA_7] = ULCARD("♠","7"),
48 [CLU_8] = ULCARD("♣","8"), [DIA_8] = ULCARD("♦","8"),
49 [HEA_8] = ULCARD("♥","8"), [SPA_8] = ULCARD("♠","8"),
50 [CLU_9] = ULCARD("♣","9"), [DIA_9] = ULCARD("♦","9"),
51 [HEA_9] = ULCARD("♥","9"), [SPA_9] = ULCARD("♠","9"),
52 [CLU_X] = ULCARD("♣","X"), [DIA_X] = ULCARD("♦","X"),
53 [HEA_X] = ULCARD("♥","X"), [SPA_X] = ULCARD("♠","X"),
54 [CLU_J] = ULCARD("♣","J"), [DIA_J] = ULCARD("♦","J"),
55 [HEA_J] = ULCARD("♥","J"), [SPA_J] = ULCARD("♠","J"),
56 [CLU_Q] = ULCARD("♣","Q"), [DIA_Q] = ULCARD("♦","Q"),
57 [HEA_Q] = ULCARD("♥","Q"), [SPA_Q] = ULCARD("♠","Q"),
58 [CLU_K] = ULCARD("♣","K"), [DIA_K] = ULCARD("♦","K"),
59 [HEA_K] = ULCARD("♥","K"), [SPA_K] = ULCARD("♠","K"),
60 },
61 .facedown = (char*[]){
62 "╭───╮",
63 "│▚▚▚│",
64 "│▚▚▚│",
65 "╰───╯"
66 },
67 .placeholder = (char*[]){
68 "╭╌╌╌╮",
69 "╎ ╎",
70 "╎ ╎",
71 "╰╌╌╌╯"
72 },
73 .init_seq = NULL,
74 .reset_seq = NULL,
75 };
76 const struct scheme unicode_large_color = {
77 .width = 5,
78 .height = 4,
79 .overlap = 2,
80 .card = {
81 [NO_CARD] = (char*[]){" "," "," "," "},
82 [CLU_A] = BULCARD("♣","A"), [DIA_A] = RULCARD("♦","A"),
83 [HEA_A] = RULCARD("♥","A"), [SPA_A] = BULCARD("♠","A"),
84 [CLU_2] = BULCARD("♣","2"), [DIA_2] = RULCARD("♦","2"),
85 [HEA_2] = RULCARD("♥","2"), [SPA_2] = BULCARD("♠","2"),
86 [CLU_3] = BULCARD("♣","3"), [DIA_3] = RULCARD("♦","3"),
87 [HEA_3] = RULCARD("♥","3"), [SPA_3] = BULCARD("♠","3"),
88 [CLU_4] = BULCARD("♣","4"), [DIA_4] = RULCARD("♦","4"),
89 [HEA_4] = RULCARD("♥","4"), [SPA_4] = BULCARD("♠","4"),
90 [CLU_5] = BULCARD("♣","5"), [DIA_5] = RULCARD("♦","5"),
91 [HEA_5] = RULCARD("♥","5"), [SPA_5] = BULCARD("♠","5"),
92 [CLU_6] = BULCARD("♣","6"), [DIA_6] = RULCARD("♦","6"),
93 [HEA_6] = RULCARD("♥","6"), [SPA_6] = BULCARD("♠","6"),
94 [CLU_7] = BULCARD("♣","7"), [DIA_7] = RULCARD("♦","7"),
95 [HEA_7] = RULCARD("♥","7"), [SPA_7] = BULCARD("♠","7"),
96 [CLU_8] = BULCARD("♣","8"), [DIA_8] = RULCARD("♦","8"),
97 [HEA_8] = RULCARD("♥","8"), [SPA_8] = BULCARD("♠","8"),
98 [CLU_9] = BULCARD("♣","9"), [DIA_9] = RULCARD("♦","9"),
99 [HEA_9] = RULCARD("♥","9"), [SPA_9] = BULCARD("♠","9"),
100 [CLU_X] = BULCARD("♣","X"), [DIA_X] = RULCARD("♦","X"),
101 [HEA_X] = RULCARD("♥","X"), [SPA_X] = BULCARD("♠","X"),
102 [CLU_J] = BULCARD("♣","J"), [DIA_J] = RULCARD("♦","J"),
103 [HEA_J] = RULCARD("♥","J"), [SPA_J] = BULCARD("♠","J"),
104 [CLU_Q] = BULCARD("♣","Q"), [DIA_Q] = RULCARD("♦","Q"),
105 [HEA_Q] = RULCARD("♥","Q"), [SPA_Q] = BULCARD("♠","Q"),
106 [CLU_K] = BULCARD("♣","K"), [DIA_K] = RULCARD("♦","K"),
107 [HEA_K] = RULCARD("♥","K"), [SPA_K] = BULCARD("♠","K"),
108 },
109 .facedown = (char*[]){
110 "╭───╮",
111 "│\033[94m▚▚▚\033[0m│",
112 "│\033[94m▚▚▚\033[0m│",
113 "╰───╯"
114 },
115 .placeholder = (char*[]){
116 "╭╌╌╌╮",
117 "╎ ╎",
118 "╎ ╎",
119 "╰╌╌╌╯"
120 },
121 .init_seq = NULL,
122 .reset_seq = NULL,
123 };
124 const struct scheme unicode_small_mono = {
125 .width = 2,
126 .height = 1,
127 .overlap = 1,
128 .card = {
129 [NO_CARD] = (char*[]){" "},
130 [CLU_A] = USCARD("🃑 "), [DIA_A] = USCARD("🃁 "),
131 [HEA_A] = USCARD("🂱 "), [SPA_A] = USCARD("🂡 "),
132 [CLU_2] = USCARD("🃒 "), [DIA_2] = USCARD("🃂 "),
133 [HEA_2] = USCARD("🂲 "), [SPA_2] = USCARD("🂢 "),
134 [CLU_3] = USCARD("🃓 "), [DIA_3] = USCARD("🃃 "),
135 [HEA_3] = USCARD("🂳 "), [SPA_3] = USCARD("🂣 "),
136 [CLU_4] = USCARD("🃔 "), [DIA_4] = USCARD("🃄 "),
137 [HEA_4] = USCARD("🂴 "), [SPA_4] = USCARD("🂤 "),
138 [CLU_5] = USCARD("🃕 "), [DIA_5] = USCARD("🃅 "),
139 [HEA_5] = USCARD("🂵 "), [SPA_5] = USCARD("🂥 "),
140 [CLU_6] = USCARD("🃖 "), [DIA_6] = USCARD("🃆 "),
141 [HEA_6] = USCARD("🂶 "), [SPA_6] = USCARD("🂦 "),
142 [CLU_7] = USCARD("🃗 "), [DIA_7] = USCARD("🃇 "),
143 [HEA_7] = USCARD("🂷 "), [SPA_7] = USCARD("🂧 "),
144 [CLU_8] = USCARD("🃘 "), [DIA_8] = USCARD("🃈 "),
145 [HEA_8] = USCARD("🂸 "), [SPA_8] = USCARD("🂨 "),
146 [CLU_9] = USCARD("🃙 "), [DIA_9] = USCARD("🃉 "),
147 [HEA_9] = USCARD("🂹 "), [SPA_9] = USCARD("🂩 "),
148 [CLU_X] = USCARD("🃚 "), [DIA_X] = USCARD("🃊 "),
149 [HEA_X] = USCARD("🂺 "), [SPA_X] = USCARD("🂪 "),
150 [CLU_J] = USCARD("🃛 "), [DIA_J] = USCARD("🃋 "),
151 [HEA_J] = USCARD("🂻 "), [SPA_J] = USCARD("🂫 "),
152 [CLU_Q] = USCARD("🃝 "), [DIA_Q] = USCARD("🃍 "),
153 [HEA_Q] = USCARD("🂽 "), [SPA_Q] = USCARD("🂭 "),
154 [CLU_K] = USCARD("🃞 "), [DIA_K] = USCARD("🃎 "),
155 [HEA_K] = USCARD("🂾 "), [SPA_K] = USCARD("🂮 "),
156 },
157 .facedown = (char*[]){"🂠 "},
158 .placeholder = (char*[]){"❲❳"},
159 .init_seq = NULL,
160 .reset_seq = NULL,
161 };
162
163 const struct scheme vt220_small = { //TODO: this is a placeholder
164 .width = 2,
165 .height = 1,
166 .overlap = 1,
167 .card = {
168 [NO_CARD] = (char*[]){" "},
169 [CLU_A] = USCARD("CA"), [DIA_A] = USCARD("DA"),
170 [HEA_A] = USCARD("HA"), [SPA_A] = USCARD("SA"),
171 [CLU_2] = USCARD("C2"), [DIA_2] = USCARD("D2"),
172 [HEA_2] = USCARD("H2"), [SPA_2] = USCARD("S2"),
173 [CLU_3] = USCARD("C3"), [DIA_3] = USCARD("D3"),
174 [HEA_3] = USCARD("H3"), [SPA_3] = USCARD("S3"),
175 [CLU_4] = USCARD("C4"), [DIA_4] = USCARD("D4"),
176 [HEA_4] = USCARD("H4"), [SPA_4] = USCARD("S4"),
177 [CLU_5] = USCARD("C5"), [DIA_5] = USCARD("D5"),
178 [HEA_5] = USCARD("H5"), [SPA_5] = USCARD("S5"),
179 [CLU_6] = USCARD("C6"), [DIA_6] = USCARD("D6"),
180 [HEA_6] = USCARD("H6"), [SPA_6] = USCARD("S6"),
181 [CLU_7] = USCARD("C7"), [DIA_7] = USCARD("D7"),
182 [HEA_7] = USCARD("H7"), [SPA_7] = USCARD("S7"),
183 [CLU_8] = USCARD("C8"), [DIA_8] = USCARD("D8"),
184 [HEA_8] = USCARD("H8"), [SPA_8] = USCARD("S8"),
185 [CLU_9] = USCARD("C9"), [DIA_9] = USCARD("D9"),
186 [HEA_9] = USCARD("H9"), [SPA_9] = USCARD("S9"),
187 [CLU_X] = USCARD("CX"), [DIA_X] = USCARD("DX"),
188 [HEA_X] = USCARD("HX"), [SPA_X] = USCARD("SX"),
189 [CLU_J] = USCARD("CJ"), [DIA_J] = USCARD("DJ"),
190 [HEA_J] = USCARD("HJ"), [SPA_J] = USCARD("SJ"),
191 [CLU_Q] = USCARD("CQ"), [DIA_Q] = USCARD("DQ"),
192 [HEA_Q] = USCARD("HQ"), [SPA_Q] = USCARD("SQ"),
193 [CLU_K] = USCARD("CK"), [DIA_K] = USCARD("DK"),
194 [HEA_K] = USCARD("HK"), [SPA_K] = USCARD("SK"),
195 },
196 .facedown = (char*[]){"##"},
197 .placeholder = (char*[]){"()"},
198 .init_seq = NULL,
199 .reset_seq = NULL,
200 };
201 #endif
Imprint / Impressum