1 /* main */
2 
3 #include "configure.h"
4 
5 #include "XFireworks.h"
6 #include "arguments.h"
7 
8 #ifndef VERSION
9 #define VERSION "XFireworks-unknown-version"
10 #endif
11 
12 #ifndef XFIREWORKS_CONF_DIRECTRY
13 #define XFIREWORKS_CONF_DIRECTRY "/usr/X11R6/etc"
14 #endif
15 
16 #ifndef DEFAULT_DISPLAY
17 #define DEFAULT_DISPLAY NULL
18 #endif
19 
20 #ifndef DEFAULT_DIRECT_DRAW
21 #define DEFAULT_DIRECT_DRAW 1
22 #endif
23 
24 #ifndef DEFAULT_BACKGROUND_COLOR
25 #define DEFAULT_BACKGROUND_COLOR "black"
26 #endif
27 
28 #ifndef DEFAULT_FILENAME
29 #define DEFAULT_FILENAME "xfireworks.conf"
30 #endif
31 
32 #ifndef DEFAULT_STUDYING_FLAG
33 #define DEFAULT_STUDYING_FLAG 0
34 #endif
35 
36 #ifndef DEFAULT_CACHE_FLAG
37 #define DEFAULT_CACHE_FLAG 1
38 #endif
39 
40 #ifndef DEFAULT_CACHE_SIZE
41 #define DEFAULT_CACHE_SIZE 10
42 #endif
43 
44 #ifndef DEFAULT_HASH_NUMBER
45 #define DEFAULT_HASH_NUMBER 64
46 #endif
47 
48 #ifndef DEFAULT_PIECES_MAX_NUMBER
49 #define DEFAULT_PIECES_MAX_NUMBER 100
50 #endif
51 
52 #ifndef DEFAULT_FINE
53 #define DEFAULT_FINE 100
54 #endif
55 
56 #ifndef DEFAULT_WAIT
57 #define DEFAULT_WAIT 0
58 #endif
59 
60 #ifndef DEFAULT_GRADATION
61 #define DEFAULT_GRADATION 16
62 #endif
63 
64 #ifndef DEFAULT_PROBABILITY_MAGNIFICATION
65 #define DEFAULT_PROBABILITY_MAGNIFICATION 100
66 #endif
67 
68 #ifndef DEFAULT_SIZE_MAGNIFICATION
69 #define DEFAULT_SIZE_MAGNIFICATION 100
70 #endif
71 
72 #ifndef DEFAULT_AIR_MAGNIFICATION
73 #define DEFAULT_AIR_MAGNIFICATION 100
74 #endif
75 
76 #ifndef DEFAULT_GRAVITY_MAGNIFICATION
77 #define DEFAULT_GRAVITY_MAGNIFICATION 100
78 #endif
79 
80 #ifndef DEFAULT_TRANSMISSION_MAGNIFICATION
81 #define DEFAULT_TRANSMISSION_MAGNIFICATION 100
82 #endif
83 
84 #ifndef DEFAULT_AFTER_IMAGE_MAGNIFICATION
85 #define DEFAULT_AFTER_IMAGE_MAGNIFICATION 100
86 #endif
87 
88 #ifndef DEFAULT_COLOR_LENGTH_MAGNIFICATION
89 #define DEFAULT_COLOR_LENGTH_MAGNIFICATION 100
90 #endif
91 
92 #ifndef DEFAULT_NEXT_POWER_MAGNIFICATION
93 #define DEFAULT_NEXT_POWER_MAGNIFICATION 100
94 #endif
95 
96 #ifndef DEFAULT_NEXT_NUMBER_MAGNIFICATION
97 #define DEFAULT_NEXT_NUMBER_MAGNIFICATION 100
98 #endif
99 
100 static char * display_name     = DEFAULT_DISPLAY;
101 static int direct_draw         = DEFAULT_DIRECT_DRAW;
102 static char * background_color = DEFAULT_BACKGROUND_COLOR;
103 static char * filename         = DEFAULT_FILENAME;
104 
105 static int studying_flag       = DEFAULT_STUDYING_FLAG;
106 static int cache_flag          = DEFAULT_CACHE_FLAG;
107 static int cache_size          = DEFAULT_CACHE_SIZE;
108 static int hash_number         = DEFAULT_HASH_NUMBER;
109 static int pieces_max_number   = DEFAULT_PIECES_MAX_NUMBER;
110 static int fine                = DEFAULT_FINE;
111 static int wait_time           = DEFAULT_WAIT;
112 static int gradation           = DEFAULT_GRADATION;
113 
114 static int probability_magnification  = DEFAULT_PROBABILITY_MAGNIFICATION;
115 static int size_magnification         = DEFAULT_SIZE_MAGNIFICATION;
116 static int air_magnification          = DEFAULT_AIR_MAGNIFICATION;
117 static int gravity_magnification      = DEFAULT_GRAVITY_MAGNIFICATION;
118 static int transmission_magnification = DEFAULT_TRANSMISSION_MAGNIFICATION;
119 static int after_image_magnification  = DEFAULT_AFTER_IMAGE_MAGNIFICATION;
120 static int color_length_magnification = DEFAULT_COLOR_LENGTH_MAGNIFICATION;
121 static int next_power_magnification   = DEFAULT_NEXT_POWER_MAGNIFICATION;
122 static int next_number_magnification  = DEFAULT_NEXT_NUMBER_MAGNIFICATION;
123 
help()124 void help()
125 {
126   printf("%s\n\n", VERSION);
127   printf("XFireworks Copyright (c) 2000 Sakai Hiroaki.\n");
128   printf("All Rights Reserved.\n\n");
129   printf("Usage:\n");
130   printf("        xfireworks [options]\n\n");
131   printf("Options:\n");
132   printf("        -h, -help\n");
133   printf("        -display [displayname]\n");
134   printf("        -bg, -background, -background-color [backgroundcolor]\n");
135   printf("        -f, -file [filename]\n");
136   printf("        -wait [micro seconds]\n");
137   printf("        -fine [number]\n");
138   printf("        -gradation [number]\n");
139   printf("        -direct-draw, -no-direct-draw\n");
140   printf("        -probability, -probability-magnification [number]\n");
141   printf("        -size, -size-magnification [number]\n");
142   printf("        -air, -air-magnification [number]\n");
143   printf("        -gravity, -gravity-magnification [number]\n");
144   printf("        -transmission, -transmission-magnification [number]\n");
145   printf("        -after-image, -after-image-magnification [number]\n");
146   printf("        -color-length, -color-length-magnification [number]\n");
147   printf("        -next-power, -next-power-magnification [number]\n");
148   printf("        -next-number, -next-number-magnification [number]\n");
149   printf("\n");
150   exit (0);
151 }
152 
153 Argument arguments[] = {
154   {"-h",                ARGUMENTS_FUNCTION, (void *)(&help)},
155   {"-help",             ARGUMENTS_FUNCTION, (void *)(&help)},
156   {"-display",          ARGUMENTS_STRING,   (void *)(&display_name)},
157   {"-bg",               ARGUMENTS_STRING,   (void *)(&background_color)},
158   {"-background",       ARGUMENTS_STRING,   (void *)(&background_color)},
159   {"-background-color", ARGUMENTS_STRING,   (void *)(&background_color)},
160   {"-f",                ARGUMENTS_STRING,   (void *)(&filename)},
161   {"-file",             ARGUMENTS_STRING,   (void *)(&filename)},
162   {"-wait",             ARGUMENTS_INTEGER,  (void *)(&wait_time)},
163   {"-fine",             ARGUMENTS_INTEGER,  (void *)(&fine)},
164   {"-gradation",        ARGUMENTS_INTEGER,  (void *)(&gradation)},
165   {"-direct-draw",      ARGUMENTS_FLAG_ON,  (void *)(&direct_draw)},
166   {"-no-direct-draw",   ARGUMENTS_FLAG_OFF, (void *)(&direct_draw)},
167 
168   {"-probability",
169    ARGUMENTS_INTEGER, (void *)(&probability_magnification)},
170   {"-probability-magnification",
171    ARGUMENTS_INTEGER, (void *)(&probability_magnification)},
172 
173   {"-size",               ARGUMENTS_INTEGER, (void *)(&size_magnification)},
174   {"-size-magnification", ARGUMENTS_INTEGER, (void *)(&size_magnification)},
175 
176   {"-air",                ARGUMENTS_INTEGER, (void *)(&air_magnification)},
177   {"-air-magnification",  ARGUMENTS_INTEGER, (void *)(&air_magnification)},
178 
179   {"-gravity",
180    ARGUMENTS_INTEGER, (void *)(&gravity_magnification)},
181   {"-gravity-magnification",
182    ARGUMENTS_INTEGER, (void *)(&gravity_magnification)},
183 
184   {"-transmission", ARGUMENTS_INTEGER, (void *)(&transmission_magnification)},
185   {"-transmission-magnification",
186    ARGUMENTS_INTEGER, (void *)(&transmission_magnification)},
187 
188   {"-after-image", ARGUMENTS_INTEGER, (void *)(&after_image_magnification)},
189   {"-after-image-magnification",
190    ARGUMENTS_INTEGER, (void *)(&after_image_magnification)},
191 
192   {"-color-length", ARGUMENTS_INTEGER, (void *)(&color_length_magnification)},
193   {"-color-length-magnification",
194    ARGUMENTS_INTEGER, (void *)(&color_length_magnification)},
195 
196   {"-next-power", ARGUMENTS_INTEGER, (void *)(&next_power_magnification)},
197   {"-next-power-magnification",
198    ARGUMENTS_INTEGER, (void *)(&next_power_magnification)},
199 
200   {"-next-number", ARGUMENTS_INTEGER, (void *)(&next_number_magnification)},
201   {"-next-number-magnification",
202    ARGUMENTS_INTEGER, (void *)(&next_number_magnification)},
203 
204   /* �������鲼�ϥ��塼�˥��Ѥα������ץ����Ǥ� */
205 
206   {"-pieces-max-number",ARGUMENTS_INTEGER,  (void *)(&pieces_max_number)},
207 
208   /* �ؽ���ǽ�����Ѥ��������ˤϡ��ʲ���ͭ���ˤ��ޤ���                      */
209   /* �ؽ���ǽ�ȥ���å����ʻ�ѤǤ��ޤ�����ʻ�Ѥ��Ƥ⤢�ޤ��̣�Ϥ���ޤ���*/
210   /* �ؽ���ǽ�����Ѥ���ȡ��������� instance ��ꥹ�Ȥ���Ƭ�˻��ä�          */
211   /* ����褦�ˤʤ�ޤ�������Ϥ���ǹ�®��                                  */
212   /* �ؽ���ǽ��̵�����ȡ��������Ȥ��Ƴ�Ǽ����Τǡ���������Ȥ��ˡ�        */
213   /* ������Ǽ����Ƥ��ʤ��ä��Ф����ˡ������˸������Ǥ��ڤ뤳�Ȥ��Ǥ���褦��*/
214   /* �ʤ�ޤ�������Ϥ���ǹ�®��                                            */
215   {"-studying",         ARGUMENTS_FLAG_ON,  (void *)(&studying_flag)},
216   {"-no-studying",      ARGUMENTS_FLAG_OFF, (void *)(&studying_flag)},
217 
218   /* �ʲ���ͭ���ˤ���ȡ�����å������Ѥ���褦�ˤʤ�ޤ��� */
219 
220   {"-cache",            ARGUMENTS_FLAG_ON,  (void *)(&cache_flag)},
221   {"-no-cache",         ARGUMENTS_FLAG_OFF, (void *)(&cache_flag)},
222 
223   /* ����å���Υ���������ꤷ�ޤ��� */
224   {"-cache-size",       ARGUMENTS_INTEGER,  (void *)(&cache_size)},
225 
226   /* �ϥå���Υ���������ꤷ�ޤ��� */
227   {"-hash-number",      ARGUMENTS_INTEGER,  (void *)(&hash_number)},
228 
229   {NULL,                ARGUMENTS_NONE,     NULL}
230 };
231 
main(int argc,char * argv[])232 int main(int argc, char * argv[])
233 {
234   XFireworks xfireworks;
235 
236   Arguments_Read(&argc, argv, arguments);
237 
238   if (cache_size < 1) cache_size = 1;
239   if (hash_number < 1) hash_number = 1;
240   if (fine < 1) fine = 1;
241   if (gradation < 1) gradation = 1;
242   if (pieces_max_number < 1) pieces_max_number = 1;
243   if (wait_time < 0) wait_time = 0;
244 
245   if (probability_magnification  < 0) probability_magnification  = 0;
246   if (size_magnification         < 0) size_magnification         = 0;
247   if (air_magnification          < 0) air_magnification          = 0;
248   if (gravity_magnification      < 0) gravity_magnification      = 0;
249   if (transmission_magnification < 0) transmission_magnification = 0;
250   if (after_image_magnification  < 0) after_image_magnification  = 0;
251   if (color_length_magnification < 0) color_length_magnification = 0;
252   if (next_power_magnification   < 0) next_power_magnification   = 0;
253   if (next_number_magnification  < 0) next_number_magnification  = 0;
254 
255   xfireworks = XFireworks_Create(display_name,
256 				 direct_draw,
257 				 background_color,
258 				 XFIREWORKS_CONF_DIRECTRY,
259 				 filename,
260 				 studying_flag,
261 				 cache_flag,
262 				 cache_size,
263 				 hash_number,
264 				 fine,
265 				 gradation,
266 				 probability_magnification,
267 				 size_magnification,
268 				 air_magnification,
269 				 gravity_magnification,
270 				 transmission_magnification,
271 				 after_image_magnification,
272 				 color_length_magnification,
273 				 next_power_magnification,
274 				 next_number_magnification);
275   XFireworks_Start(xfireworks, pieces_max_number, wait_time);
276   XFireworks_Destroy(xfireworks);
277 
278   exit (0);
279 }
280 
281 /* End of Program */
282