OSDN Git Service

e5b60eafec2d6c6a5f61e7d73010c65ba7130084
[coroid/inqubus.git] / vhook / main.c
1 \r
2 #include <SDL/SDL.h>\r
3 #include <SDL/SDL_ttf.h>\r
4 #include <stdio.h>\r
5 #include "main.h"\r
6 #include "mydef.h"\r
7 #include "nicodef.h"\r
8 #include "process.h"\r
9 /**\r
10  * \83\89\83C\83u\83\89\83\8a\8f\89\8aú\89»\r
11  */\r
12 int init(FILE* log){\r
13         fputs("[main/init]initializing libs...\n",log);\r
14         //SDL\r
15         if(SDL_Init(SDL_INIT_VIDEO)>=0){\r
16                 fputs("[main/init]initialized SDL.\n",log);\r
17         }else{\r
18                 fputs("[main/init]failed to initialize SDL.\n",log);\r
19             return FALSE;\r
20         }\r
21         //SDL_ttf\r
22         if(TTF_Init() >= 0){\r
23                 fputs("[main/init]initialized SDL_ttf.\n",log);\r
24         }else{\r
25                 fputs("[main/init]failed to initialize SDL_ttf.\n",log);\r
26             return FALSE;\r
27         }\r
28         fputs("[main/init]initialized libs.\n",log);\r
29         return TRUE;\r
30 }\r
31 /*\r
32  * \83f\81[\83^\82Ì\8f\89\8aú\89»\r
33  */\r
34 int initData(DATA* data,FILE* log,const SETTING* setting){\r
35         int i;\r
36         data->enable_user_comment = setting->enable_user_comment;\r
37         data->enable_owner_comment = setting->enable_owner_comment;\r
38         data->log = log;\r
39         data->fontsize_fix = setting->fontsize_fix;\r
40         data->show_video = setting->show_video;\r
41         data->opaque_comment = setting->opaque_comment;\r
42         data->shadow_kind = setting->shadow_kind;\r
43         data->process_first_called=FALSE;\r
44         data->video_length = setting->video_length;\r
45         fputs("[main/init]initializing context...\n",log);\r
46         //\83t\83H\83\93\83g\r
47         TTF_Font** font = data->font;\r
48         const char* font_path = setting->font_path;\r
49         const int font_index = setting->font_index;\r
50         for(i=0;i<CMD_FONT_MAX;i++){\r
51                 int fontsize = COMMENT_FONT_SIZE[i];\r
52                 if(setting->fontsize_fix){\r
53                         fontsize <<= 1;\r
54                 }\r
55                 font[i] = TTF_OpenFontIndex(font_path,fontsize,font_index);\r
56                 if(font[i] == NULL){\r
57                     fprintf(log,"[main/init]failed to load font:%s index:[%d].\n",font_path,font_index);\r
58                     //0\82Å\82à\8e\8e\82µ\82Ä\82Ý\82é\81B\r
59                     fputs("[main/init]retrying to open font at index:0...",log);\r
60                     font[i] = TTF_OpenFontIndex(font_path,fontsize,0);\r
61                     if(font[i] == NULL){\r
62                             fputs("failed.\n",log);\r
63                             return FALSE;\r
64                     }else{\r
65                             fputs("success.\n",log);\r
66                     }\r
67                 }\r
68                 TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);\r
69         }\r
70         fputs("[main/init]initialized font.\n",log);\r
71         /*\r
72          * \83\86\81[\83U\83R\83\81\83\93\83g\r
73          */\r
74         if(data->enable_user_comment){\r
75                 fputs("[main/init]User Comment is enabled.\n",log);\r
76                 //\83R\83\81\83\93\83g\83f\81[\83^\r
77                 if(initChat(log,&data->chat,setting->data_user_path,&data->slot,data->video_length)){\r
78                         fputs("[main/init]initialized comment.\n",log);\r
79                 }else{\r
80                         fputs("[main/init]failed to initialize comment.",log);\r
81                         return FALSE;\r
82                 }\r
83                 //\83R\83\81\83\93\83g\83X\83\8d\83b\83g\r
84                 if(initChatSlot(log,&data->slot,setting->user_slot_max,&data->chat)){\r
85                         fputs("[main/init]initialized comment slot.\n",log);\r
86                 }else{\r
87                         fputs("[main/init]failed to initialize comment slot.",log);\r
88                         return FALSE;\r
89                 }\r
90         }\r
91         /*\r
92          * \83I\81[\83i\83R\83\81\83\93\83g\r
93          */\r
94         if(data->enable_owner_comment){\r
95                 fputs("[main/init]Owner Comment is enabled.\n",log);\r
96         }\r
97         \r
98         //\8fI\82í\82è\81B\r
99         fputs("[main/init]initialized context.\n",log);\r
100         return TRUE;\r
101 }\r
102 /*\r
103  * \89f\91\9c\82Ì\95Ï\8a·\r
104  */\r
105 int main_process(DATA* data,SDL_Surface* surf,const int now_vpos){\r
106         FILE* log = data->log;\r
107         if(!data->process_first_called){\r
108                 fprintf(log,"[main/process]screen size is %dx%d.\n",surf->w,surf->h);\r
109                 fflush(log);\r
110         }\r
111         /*\83t\83B\83\8b\83^\82ð\82©\82¯\82é*/\r
112         if(process(data,surf,now_vpos)){\r
113         }\r
114         fflush(log);\r
115         /*\95Ï\8a·\82µ\82½\89æ\91\9c\82ð\8c©\82¹\82é\81B*/\r
116         if(data->show_video){\r
117                 if(!data->process_first_called){\r
118                         data->screen = SDL_SetVideoMode(surf->w, surf->h, 24, SDL_HWSURFACE | SDL_DOUBLEBUF);\r
119                         if(data->screen == NULL){\r
120                                 fputs("[main/process]failed to initialize screen.\n",log);\r
121                                 fflush(log);\r
122                                 return FALSE;\r
123                         }\r
124                 }\r
125                 SDL_BlitSurface(surf,NULL,data->screen,NULL);\r
126                 SDL_Flip(data->screen);\r
127                 SDL_Event event;\r
128                 while(SDL_PollEvent(&event)){}\r
129         }\r
130         //\88ê\89ñ\96Ú\88È\8d~\82ÍTRUE\82É\82È\82é\81B\r
131         data->process_first_called=TRUE;\r
132         fflush(log);\r
133         return TRUE;\r
134 }\r
135 /*\r
136  * \83f\81[\83^\82Ì\83N\83\8d\81[\83Y\r
137  */\r
138 int closeData(DATA* data){\r
139         int i;\r
140         //\83\86\81[\83U\83R\83\81\83\93\83g\82ª\97L\8cø\82È\82ç\8aJ\95ú\r
141         if(data->enable_user_comment){\r
142                 closeChat(&data->chat);\r
143                 closeChatSlot(&data->slot);\r
144         }\r
145         //\83I\81[\83i\83R\83\81\83\93\83g\82ª\97L\8cø\82È\82ç\8aJ\95ú\r
146         if(data->enable_owner_comment){\r
147         }\r
148     //\83t\83H\83\93\83g\8aJ\95ú\r
149         for(i=0;i<CMD_FONT_MAX;i++){\r
150                 TTF_CloseFont(data->font[i]);\r
151         }\r
152         return TRUE;\r
153 }\r
154 \r
155 /*\r
156  * \83\89\83C\83u\83\89\83\8a\83V\83\83\83b\83g\83_\83E\83\93\r
157  */\r
158 int close(){\r
159     //SDL\82ð\83V\83\83\83b\83g\83_\83E\83\93\r
160     SDL_Quit();\r
161         //\93¯\82\82­TTF\82ð\83V\83\83\83b\83g\83_\83E\83\93\r
162     TTF_Quit();\r
163         return TRUE;\r
164 }\r