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){
35 for(int i = 0; i < N_COMMENT_TYPE; i++) {
36 COMMDATA* const commdata = &data->comment[i];
37 const SETTING_COMMENT* const commset = &setting->comment[i];
39 commdata->common = data;
40 commdata->enable = commset->enable;
41 commdata->opaque_comment = setting->opaque_comment;
44 data->comment[COMMENT_OWNER].opaque_comment = OPAQUE_TRUE;
45 // オプショナルユーザコメントは半透明時常にアルファ値0.5
46 if(data->comment[COMMENT_USER_OPT].opaque_comment == OPAQUE_FALSE) {
47 data->comment[COMMENT_USER_OPT].opaque_comment = OPAQUE_HALF;
51 data->fontsize_fix = setting->fontsize_fix;
52 data->show_video = setting->show_video;
53 data->shadow_kind = setting->shadow_kind;
54 data->process_first_called=FALSE;
55 data->video_length = setting->video_length;
56 data->aspect_mode = setting->aspect_mode;
57 fputs("[main/init]initializing context...\n",log);
59 TTF_Font** font = data->font;
60 const char* font_path = setting->font_path;
61 const int font_index = setting->font_index;
62 for(int i=0;i<CMD_FONT_MAX;i++){
63 int fontsize = COMMENT_FONT_SIZE[i];
64 if(setting->fontsize_fix){
67 font[i] = TTF_OpenFontIndex(font_path,fontsize,font_index);
69 fprintf(log,"[main/init]failed to load font:%s index:[%d].\n",font_path,font_index);
71 fputs("[main/init]retrying to open font at index:0...",log);
72 font[i] = TTF_OpenFontIndex(font_path,fontsize,0);
74 fputs("failed.\n",log);
77 fputs("success.\n",log);
80 TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);
82 fputs("[main/init]initialized font.\n",log);
84 for (int i = 0; i < N_COMMENT_TYPE; i++) {
85 COMMDATA* const commdata = &data->comment[i];
86 if (commdata->enable) {
87 fprintf(log, "[main/init]Comment[%d] is enabled.\n", i);
88 const SETTING_COMMENT* const commset = &setting->comment[i];
90 if (initChat(log, &commdata->chat, commset->path, &commdata->slot, data->video_length)) {
91 fputs("[main/init]initialized comment.\n", log);
93 fputs("[main/init]failed to initialize comment.", log);
97 if (initChatSlot(log, &commdata->slot, setting->user_slot_max, &commdata->chat)) {
98 fputs("[main/init]initialized comment slot.\n", log);
100 fputs("[main/init]failed to initialize comment slot.", log);
107 fputs("[main/init]initialized context.\n",log);
113 int main_process(DATA* data,SDL_Surface* surf,const int now_vpos){
114 FILE* log = data->log;
115 if(!data->process_first_called){
116 fprintf(log,"[main/process]screen size is %dx%d.\n",surf->w,surf->h);
120 if(process(data,surf,now_vpos)){
124 if(data->show_video){
125 if(!data->process_first_called){
126 data->screen = SDL_SetVideoMode(surf->w, surf->h, 24, SDL_HWSURFACE | SDL_DOUBLEBUF);
127 if(data->screen == NULL){
128 fputs("[main/process]failed to initialize screen.\n",log);
133 SDL_BlitSurface(surf,NULL,data->screen,NULL);
134 SDL_Flip(data->screen);
136 while(SDL_PollEvent(&event)){}
139 data->process_first_called=TRUE;
146 int closeData(DATA* data){
148 for (int i = 0; i < N_COMMENT_TYPE; i++) {
149 COMMDATA* const comment = &data->comment[i];
150 if (comment->enable) {
151 closeChat(&comment->chat);
152 closeChatSlot(&comment->slot);
157 for(int i=0;i<CMD_FONT_MAX;i++){
158 TTF_CloseFont(data->font[i]);