OSDN Git Service

オプショナルユーザコメントの半透明化処理
[coroid/inqubus.git] / vhook / framehook.c
index a9ab1cd..4a580f1 100644 (file)
@@ -108,37 +108,41 @@ int init_setting(FILE*log,const toolbox *tbox,SETTING* setting,int argc, char *a
        /*以降オプション*/
        
        //コメントを見せるか否か?
-       setting->enable_user_comment = FALSE;
-       setting->enable_owner_comment = FALSE;
-       setting->data_user_path = NULL;
-       setting->data_owner_path = NULL;
+    memset(setting->comment, 0x00, sizeof(setting->comment));
        //一般的な設定
        setting->font_path = NULL;
        setting->font_index = 0;
        setting->user_slot_max = 30;
-       setting->owner_slot_max = 30;
        setting->shadow_kind = 1;//デフォルトはニコニコ動画風
        setting->show_video = FALSE;
        setting->fontsize_fix=FALSE;
-       setting->opaque_comment=FALSE;
+       setting->opaque_comment=OPAQUE_FALSE;
     setting->aspect_mode = 0;
        int i;
        char* arg;
-       for(i=0;i<argc;i++){
-               arg = argv[i];
-               if(!setting->data_user_path && strncmp(FRAMEHOOK_OPT_DATA_USER,arg,FRAMEHOOK_OPT_DATA_USER_LEN) == 0){
-                       char* data_user = arg+FRAMEHOOK_OPT_DATA_USER_LEN;
-                       setting->data_user_path = data_user;
-                       setting->enable_user_comment = TRUE;
-                       fprintf(log,"[framehook/init]User Comment data path:%s\n",setting->data_user_path);
-                       fflush(log);
-               }else if(!setting->data_owner_path && strncmp(FRAMEHOOK_OPT_DATA_OWNER,arg,FRAMEHOOK_OPT_DATA_OWNER_LEN) == 0){
-                       char* data_owner = arg+FRAMEHOOK_OPT_DATA_OWNER_LEN;
-                       setting->data_owner_path = data_owner;
-                       setting->enable_owner_comment = TRUE;
-                       fprintf(log,"[framehook/init]Owner Comment data path:%s\n",setting->data_owner_path);
-                       fflush(log);
-               }else if(!setting->font_path && strncmp(FRAMEHOOK_OPT_FONT,arg,FRAMEHOOK_OPT_FONT_LEN) == 0){
+    for (i = 0; i < argc; i++) {
+        arg = argv[i];
+        int hit_comment = FALSE;
+        for (int j = 0; j < N_COMMENT_TYPE; j++) {
+            const char* const prefix = FRAMEHOOK_OPT_DATA[j];
+            const int prefix_len = strlen(prefix);
+            SETTING_COMMENT* const comset = &setting->comment[j];
+            if (!comset->path && !strncmp(prefix, arg, prefix_len)) {
+                const char* data = arg + prefix_len;
+                comset->path = data;
+                comset->enable = TRUE;
+                fprintf(log, "[framehook/init]Comment data[%d] path:%s\n",
+                        j, comset->path);
+                fflush(log);
+                hit_comment = TRUE;
+                break;
+            }
+        }
+        if (hit_comment) {
+            continue;
+        }
+
+               if(!setting->font_path && strncmp(FRAMEHOOK_OPT_FONT,arg,FRAMEHOOK_OPT_FONT_LEN) == 0){
                        char* font = arg+FRAMEHOOK_OPT_FONT_LEN;
                        setting->font_path = font;
                        fprintf(log,"[framehook/init]Font path:%s\n",setting->font_path);
@@ -155,10 +159,6 @@ int init_setting(FILE*log,const toolbox *tbox,SETTING* setting,int argc, char *a
                        setting->user_slot_max = MAX(0,atoi(arg+FRAMEHOOK_OPT_SHOW_USER_LEN));
                        fprintf(log,"[framehook/init]User Comments on screen:%d\n",setting->user_slot_max);
                        fflush(log);
-               }else if(strncmp(FRAMEHOOK_OPT_SHOW_OWNER,arg,FRAMEHOOK_OPT_SHOW_OWNER_LEN) == 0){
-                       setting->owner_slot_max = MAX(0,atoi(arg+FRAMEHOOK_OPT_SHOW_OWNER_LEN));
-                       fprintf(log,"[framehook/init]Owner Comments on screen:%d\n",setting->owner_slot_max);
-                       fflush(log);
                }else if(!setting->show_video && strcmp(arg,"--enable-show-video") == 0){
                        fputs("[framehook/init]show video while converting.\n",log);
                        fflush(log);
@@ -170,7 +170,7 @@ int init_setting(FILE*log,const toolbox *tbox,SETTING* setting,int argc, char *a
                }else if(!setting->opaque_comment && strcmp(arg,"--enable-opaque-comment") == 0){
                        fputs("[framehook/init]enable opaque comment.\n",log);
                        fflush(log);
-                       setting->opaque_comment=TRUE;
+                       setting->opaque_comment=OPAQUE_TRUE;
         } else if (strncmp(FRAMEHOOK_OPT_ASPECT_MODE, arg, FRAMEHOOK_OPT_ASPECT_MODE_LEN) == 0) {
             setting->aspect_mode = MAX(0, atoi(arg + FRAMEHOOK_OPT_ASPECT_MODE_LEN));
             fprintf(log, "[framehook/init]aspect mode:%d\n", setting->aspect_mode);