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 data->aspect_mode = setting->aspect_mode;
49 fputs("[main/init]initializing context...\n",log);
51 TTF_Font** font = data->font;
52 const char* font_path = setting->font_path;
53 const int font_index = setting->font_index;
54 for(i=0;i<CMD_FONT_MAX;i++){
55 int fontsize = COMMENT_FONT_SIZE[i];
56 if(setting->fontsize_fix){
59 font[i] = TTF_OpenFontIndex(font_path,fontsize,font_index);
61 fprintf(log,"[main/init]failed to load font:%s index:[%d].\n",font_path,font_index);
63 fputs("[main/init]retrying to open font at index:0...",log);
64 font[i] = TTF_OpenFontIndex(font_path,fontsize,0);
66 fputs("failed.\n",log);
69 fputs("success.\n",log);
72 TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);
74 fputs("[main/init]initialized font.\n",log);
78 if(data->user_comment.enable){
79 fputs("[main/init]User Comment is enabled.\n",log);
81 if(initChat(log,&data->user_comment.chat,setting->data_user_path,&data->user_comment.slot,data->video_length)){
82 fputs("[main/init]initialized comment.\n",log);
84 fputs("[main/init]failed to initialize comment.",log);
88 if(initChatSlot(log,&data->user_comment.slot,setting->user_slot_max,&data->user_comment.chat)){
89 fputs("[main/init]initialized comment slot.\n",log);
91 fputs("[main/init]failed to initialize comment slot.",log);
98 if(data->owner_comment.enable){
99 fputs("[main/init]Owner Comment is enabled.\n",log);
101 if(initChat(log,&data->owner_comment.chat,setting->data_owner_path,&data->owner_comment.slot,data->video_length)){
102 fputs("[main/init]initialized comment.\n",log);
104 fputs("[main/init]failed to initialize comment.",log);
108 // TODO とりあえず最大数は1024にしておくが...
109 if(initChatSlot(log,&data->owner_comment.slot,1024,&data->owner_comment.chat)){
110 fputs("[main/init]initialized comment slot.\n",log);
112 fputs("[main/init]failed to initialize comment slot.",log);
118 fputs("[main/init]initialized context.\n",log);
124 int main_process(DATA* data,SDL_Surface* surf,const int now_vpos){
125 FILE* log = data->log;
126 if(!data->process_first_called){
127 fprintf(log,"[main/process]screen size is %dx%d.\n",surf->w,surf->h);
131 if(process(data,surf,now_vpos)){
135 if(data->show_video){
136 if(!data->process_first_called){
137 data->screen = SDL_SetVideoMode(surf->w, surf->h, 24, SDL_HWSURFACE | SDL_DOUBLEBUF);
138 if(data->screen == NULL){
139 fputs("[main/process]failed to initialize screen.\n",log);
144 SDL_BlitSurface(surf,NULL,data->screen,NULL);
145 SDL_Flip(data->screen);
147 while(SDL_PollEvent(&event)){}
150 data->process_first_called=TRUE;
157 int closeData(DATA* data){
160 if(data->user_comment.enable){
161 closeChat(&data->user_comment.chat);
162 closeChatSlot(&data->user_comment.slot);
165 if(data->owner_comment.enable){
166 closeChat(&data->owner_comment.chat);
167 closeChatSlot(&data->owner_comment.slot);
170 for(i=0;i<CMD_FONT_MAX;i++){
171 TTF_CloseFont(data->font[i]);