OSDN Git Service

オプショナルコメントの引数定義を追加
authoryukihane <yukihane.feather@gmail.com>
Wed, 21 Sep 2011 10:54:56 +0000 (19:54 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 21 Sep 2011 17:28:01 +0000 (02:28 +0900)
vhook/framehook.c
vhook/framehook.h
vhook/main.h

index f6da2b2..b1b5ca1 100644 (file)
@@ -121,21 +121,29 @@ int init_setting(FILE*log,const toolbox *tbox,SETTING* setting,int argc, char *a
     setting->aspect_mode = 0;
        int i;
        char* arg;
-       for(i=0;i<argc;i++) {
+    for (i = 0; i < argc; i++) {
         arg = argv[i];
-        if (!setting->comment[0].path && strncmp(FRAMEHOOK_OPT_DATA_USER, arg, FRAMEHOOK_OPT_DATA_USER_LEN) == 0) {
-            char* data = arg + FRAMEHOOK_OPT_DATA_USER_LEN;
-            setting->comment[0].path = data;
-            setting->comment[0].enable = TRUE;
-            fprintf(log, "[framehook/init]User Comment data path:%s\n", setting->comment[0].path);
-            fflush(log);
-        } else if (!setting->comment[1].path && strncmp(FRAMEHOOK_OPT_DATA_OWNER, arg, FRAMEHOOK_OPT_DATA_OWNER_LEN) == 0) {
-            char* data = arg + FRAMEHOOK_OPT_DATA_OWNER_LEN;
-            setting->comment[1].path = data;
-            setting->comment[1].enable = TRUE;
-            fprintf(log, "[framehook/init]Owner Comment data path:%s\n", setting->comment[1].path);
-            fflush(log);
-               }else if(!setting->font_path && strncmp(FRAMEHOOK_OPT_FONT,arg,FRAMEHOOK_OPT_FONT_LEN) == 0){
+        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);
index c6e1dfc..031d2cf 100644 (file)
@@ -3,11 +3,13 @@
 
 /*Framehookに渡されるオプション用の定義*/
 
-#define FRAMEHOOK_OPT_DATA_USER                "--data-user:"
-#define FRAMEHOOK_OPT_DATA_USER_LEN    strlen(FRAMEHOOK_OPT_DATA_USER)
-
-#define FRAMEHOOK_OPT_DATA_OWNER               "--data-owner:"
-#define FRAMEHOOK_OPT_DATA_OWNER_LEN   strlen(FRAMEHOOK_OPT_DATA_OWNER)
+/**
+ * コメント付与に関するパラメータ.
+ * 要素数はmain.hのN_COMMENT_TYPEと関連があるので注意.
+ */
+const char* const FRAMEHOOK_OPT_DATA[] = {
+    "--data-user:", "--data-owner:", "--data-optional:", "--data-owner-opt:"
+};
 
 #define FRAMEHOOK_OPT_FONT             "--font:"
 #define FRAMEHOOK_OPT_FONT_LEN strlen(FRAMEHOOK_OPT_FONT)
index e1de37c..d74b705 100644 (file)
@@ -7,11 +7,11 @@
 #include "chat/chat.h"
 #include "chat/chat_slot.h"
 
-//typedef enum {
-//    USER, OWNER, USER_OPT, OWNER_OPT
-//} COMMENT_TYPE;
-
-#define N_COMMENT_TYPE 2
+/**
+ * コメント中間ファイル数. つまりオーバレイするコメントの種類数.
+ * 並びはframehook.hで定義している情報に依存することに注意.
+ */
+#define N_COMMENT_TYPE 4
 
 struct COMMDATA {
     int enable;
@@ -49,7 +49,6 @@ typedef struct {
 } SETTING_COMMENT;
 
 typedef struct SETTING{
-    // CommentType数分。
     SETTING_COMMENT comment[N_COMMENT_TYPE];
        const char* font_path;
        int video_length;