OSDN Git Service

オプショナルユーザコメントの半透明化処理
authoryukihane <yukihane.feather@gmail.com>
Wed, 21 Sep 2011 16:32:18 +0000 (01:32 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 21 Sep 2011 17:28:46 +0000 (02:28 +0900)
vhook/comment/com_surface.c
vhook/framehook.c
vhook/main.c
vhook/main.h

index 4a9a582..30a8fd6 100644 (file)
@@ -60,11 +60,13 @@ SDL_Surface* makeCommentSurface(COMMDATA* data,const CHAT_ITEM* item,int video_w
        /*
         * アルファ値の設定
         */
-        if(!data->opaque_comment){
+        if(data->opaque_comment == OPAQUE_FALSE){
                float alpha_t = (((float)(item->no)/(item->chat->max_no)) * 0.4) + 0.6;
                fprintf(data->common->log,"[comsurface/make]comment %04d set alpha:%5.2f%%.\n",item->no,alpha_t*100);
                setAlpha(ret,alpha_t);
-        }
+     } else if (data->opaque_comment == OPAQUE_HALF) {
+        setAlpha(ret,0.5);
+     }
 
        /*
         * スケール設定
index 2c1a9b2..4a580f1 100644 (file)
@@ -116,7 +116,7 @@ int init_setting(FILE*log,const toolbox *tbox,SETTING* setting,int argc, char *a
        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;
@@ -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);
index 489fa14..aade4df 100644 (file)
@@ -41,7 +41,11 @@ int initData(DATA* data,FILE* log,const SETTING* setting){
         commdata->opaque_comment = setting->opaque_comment;
     }
     // オーナコメントは常に不透明
-    data->comment[OWNER].opaque_comment = TRUE;
+    data->comment[COMMENT_OWNER].opaque_comment = OPAQUE_TRUE;
+    // オプショナルユーザコメントは半透明時常にアルファ値0.5
+    if(data->comment[COMMENT_USER_OPT].opaque_comment == OPAQUE_FALSE) {
+        data->comment[COMMENT_USER_OPT].opaque_comment = OPAQUE_HALF;
+    }
 
        data->log = log;
        data->fontsize_fix = setting->fontsize_fix;
index 0744594..fb9c401 100644 (file)
  * コメントの種類. 並びはframehook.hで定義している情報と関連があることに注意.
  */
 typedef enum {
-    USER_OPT, OWNER_OPT, USER, OWNER
+    COMMENT_USER_OPT, COMMENT_OWNER_OPT, COMMENT_USER, COMMENT_OWNER
 } COMMENT_TYPE;
 
+typedef enum {
+    OPAQUE_FALSE, OPAQUE_TRUE, OPAQUE_HALF
+} OPAQUE;
+
 struct COMMDATA {
     int enable;
     CHAT chat;
     CHAT_SLOT slot;
-    int opaque_comment;
+    OPAQUE opaque_comment;
     DATA* common;
 };
 
@@ -64,7 +68,7 @@ typedef struct SETTING{
        /*TRUE OR FALSE*/
        int show_video;
        int fontsize_fix;
-       int opaque_comment;
+       OPAQUE opaque_comment;
     /**
      * アスペクト比の指定. コメントのフォントサイズや速度に影響する.
      * 0 - 4:3