3 #include <SDL/SDL_ttf.h>
13 fputs("[main/init]initializing libs...\n",log);
15 if(SDL_Init(SDL_INIT_VIDEO)>=0){
16 fputs("[main/init]initialized SDL.\n",log);
18 fputs("[main/init]failed to initialize SDL.\n",log);
23 fputs("[main/init]initialized SDL_ttf.\n",log);
25 fputs("[main/init]failed to initialize SDL_ttf.\n",log);
28 fputs("[main/init]initialized libs.\n",log);
34 int initData(DATA* data,FILE* log,const SETTING* setting){
36 data->user_comment.common = data;
37 data->owner_comment.common = data;
38 data->user_comment.enable = setting->enable_user_comment;
39 data->owner_comment.enable = setting->enable_owner_comment;
40 data->user_comment.opaque_comment = setting->opaque_comment;
41 data->owner_comment.opaque_comment = 1; // オーナコメントは常に不透明
43 data->fontsize_fix = setting->fontsize_fix;
44 data->show_video = setting->show_video;
45 data->shadow_kind = setting->shadow_kind;
46 data->process_first_called=FALSE;
47 data->video_length = setting->video_length;
48 fputs("[main/init]initializing context...\n",log);
50 TTF_Font** font = data->font;
51 const char* font_path = setting->font_path;
52 const int font_index = setting->font_index;
53 for(i=0;i<CMD_FONT_MAX;i++){
54 int fontsize = COMMENT_FONT_SIZE[i];
55 if(setting->fontsize_fix){
58 font[i] = TTF_OpenFontIndex(font_path,fontsize,font_index);
60 fprintf(log,"[main/init]failed to load font:%s index:[%d].\n",font_path,font_index);
62 fputs("[main/init]retrying to open font at index:0...",log);
63 font[i] = TTF_OpenFontIndex(font_path,fontsize,0);
65 fputs("failed.\n",log);
68 fputs("success.\n",log);
71 TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);
73 fputs("[main/init]initialized font.\n",log);
77 if(data->user_comment.enable){
78 fputs("[main/init]User Comment is enabled.\n",log);
80 if(initChat(log,&data->user_comment.chat,setting->data_user_path,&data->user_comment.slot,data->video_length)){
81 fputs("[main/init]initialized comment.\n",log);
83 fputs("[main/init]failed to initialize comment.",log);
87 if(initChatSlot(log,&data->user_comment.slot,setting->user_slot_max,&data->user_comment.chat)){
88 fputs("[main/init]initialized comment slot.\n",log);
90 fputs("[main/init]failed to initialize comment slot.",log);
97 if(data->owner_comment.enable){
98 fputs("[main/init]Owner Comment is enabled.\n",log);
100 if(initChat(log,&data->owner_comment.chat,setting->data_owner_path,&data->owner_comment.slot,data->video_length)){
101 fputs("[main/init]initialized comment.\n",log);
103 fputs("[main/init]failed to initialize comment.",log);
107 // TODO とりあえず最大数は1024にしておくが...
108 if(initChatSlot(log,&data->owner_comment.slot,1024,&data->owner_comment.chat)){
109 fputs("[main/init]initialized comment slot.\n",log);
111 fputs("[main/init]failed to initialize comment slot.",log);
117 fputs("[main/init]initialized context.\n",log);
123 int main_process(DATA* data,SDL_Surface* surf,const int now_vpos){
124 FILE* log = data->log;
125 if(!data->process_first_called){
126 fprintf(log,"[main/process]screen size is %dx%d.\n",surf->w,surf->h);
130 if(process(data,surf,now_vpos)){
134 if(data->show_video){
135 if(!data->process_first_called){
136 data->screen = SDL_SetVideoMode(surf->w, surf->h, 24, SDL_HWSURFACE | SDL_DOUBLEBUF);
137 if(data->screen == NULL){
138 fputs("[main/process]failed to initialize screen.\n",log);
143 SDL_BlitSurface(surf,NULL,data->screen,NULL);
144 SDL_Flip(data->screen);
146 while(SDL_PollEvent(&event)){}
149 data->process_first_called=TRUE;
156 int closeData(DATA* data){
159 if(data->user_comment.enable){
160 closeChat(&data->user_comment.chat);
161 closeChatSlot(&data->user_comment.slot);
164 if(data->owner_comment.enable){
165 closeChat(&data->owner_comment.chat);
166 closeChatSlot(&data->owner_comment.slot);
169 for(i=0;i<CMD_FONT_MAX;i++){
170 TTF_CloseFont(data->font[i]);