[ttssh2-commit] [10303] カラーテーマファイルのマニュアル追記、読み書きを修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 10月 10日 (月) 13:48:24 JST


Revision: 10303
          https://osdn.net/projects/ttssh2/scm/svn/commits/10303
Author:   zmatsuo
Date:     2022-10-10 13:48:24 +0900 (Mon, 10 Oct 2022)
Log Message:
-----------
カラーテーマファイルのマニュアル追記、読み書きを修正

- カラーテーマ iniファイルフォーマットを変更
  - 従来のフォーマットも読み込み可能だが近々未対応とする
  - #RRGGBB 形式が使用できるようにした
    - saveしたiniの R,G,B 形式の後ろに #RRGGBB が出力される
- マニュアル追記
- Unicode化(途中)

Modified Paths:
--------------
    trunk/doc/en/html/menu/setup-additional-visual-theme.html
    trunk/doc/en/html/setup/theme.html
    trunk/doc/ja/html/menu/setup-additional-visual-theme.html
    trunk/doc/ja/html/setup/theme.html
    trunk/installer/release/theme/color/README.md
    trunk/teraterm/teraterm/theme.h
    trunk/teraterm/teraterm/themedlg.cpp
    trunk/teraterm/teraterm/themefile.cpp
    trunk/teraterm/teraterm/vtdisp.c
    trunk/teraterm/teraterm/vtdisp.h

-------------- next part --------------
Modified: trunk/doc/en/html/menu/setup-additional-visual-theme.html
===================================================================
--- trunk/doc/en/html/menu/setup-additional-visual-theme.html	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/doc/en/html/menu/setup-additional-visual-theme.html	2022-10-10 04:48:24 UTC (rev 10303)
@@ -29,6 +29,14 @@
 
     <hr>
 
+    <h2>TODO</h2>
+    <ul>
+      <li>BGSPIPath(\x89摜\x82\xF0\x93ǂݍ\x9E\x82ނ̂ɗp\x82\xA2\x82\xE9\x81ASusie Plugin \x82\xAA\x8Ai\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B)\x82\xCC
+        \x90ݒ\xE8GUI\x82\xF0\x8D\xEC\x82\xE9
+    </ul>
+
+    <hr>
+
     <h2 id="preview">preview/file tab</h2>
 
     preview<br>
@@ -63,7 +71,7 @@
     \x8Fォ\x82珇\x82ɔw\x8Ci\x89摜\x82\xAA\x8D\x87\x90\xAC\x82\xB3\x82\xEA\x82Ă\xA2\x82\xAD\x81B
 
     <dl>
-      <dt>base Color</dt>
+      <dt>Base Color</dt>
       <dd>
         \x94w\x8Ci\x89摜\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2\x8Fꍇ\x82͂\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B\x94w\x8Ci\x89摜\x82\xAA\x95`\x89悳\x82\xEA\x82Ȃ\xA2\x95\x94\x95\xAA\x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x82\xE0\x82\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B
       </dd>

Modified: trunk/doc/en/html/setup/theme.html
===================================================================
--- trunk/doc/en/html/setup/theme.html	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/doc/en/html/setup/theme.html	2022-10-10 04:48:24 UTC (rev 10303)
@@ -3,178 +3,233 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
-<title>Theme file</TITLE>
+<title>Theme \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B</TITLE>
 <meta http-equiv="Content-Style-Type" content="text/css">
 <link rel="stylesheet" href="../style.css" type="text/css">
 </head>
 <body>
 
+  <h1>Theme\x83t\x83@\x83C\x83\x8B</h1>
 
-  <h1>Theme \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B</h1>
+  <ul>
+    <li><a href="#themefile">Theme\x83t\x83@\x83C\x83\x8B\x82ɂ‚\xA2\x82\xC4</a></li>
+    <li><a href="#BGTheme">BG(\x94w\x8Ci) Theme</a></li>
+    <li><a href="#ColorTheme">Color Theme</a></li>
+  </ul>
 
-  TODO
+  <h2>TODO</h2>
   <ul>
-    <li>BGSPIPath(\x89摜\x82\xF0\x93ǂݍ\x9E\x82ނ̂ɗp\x82\xA2\x82\xE9\x81ASusie Plugin \x82\xAA\x8Ai\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B)\x82̐ݒ\xE8GUI\x82\xF0\x8D\xEC\x82\xE9
     <li>\x8Ed\x97l\x82\xF0\x82\xBF\x82\xE1\x82\xF1\x82ƌ\x88\x82߂\xE9
     <li>\x8Ed\x97l\x82ɍ\x87\x82킹\x82\xC4<a href="https://ttssh2.osdn.jp/tmp/color/">color picker(\x89\xBC)</a>\x82\xF0\x8FC\x90\xB3
   </ul>
 
-  <h2>theme\x83t\x83@\x83C\x83\x8B\x82̎\xED\x97\xDE</h2>
+  <h2 id="themefile">theme\x83t\x83@\x83C\x83\x8B\x82ɂ‚\xA2\x82\xC4</h2>
 
   \x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82ɂ͂\xA2\x82\xAD\x82‚\xA9\x82̎\xED\x97ނ\xAA\x82\xA0\x82\xE9\x81B
 
   <dl>
-    <dt>BG + \x83J\x83\x89\x81[</dt>
+    <dt>BG(\x94w\x8Ci)\x83e\x81[\x83}</dt>
     <dd>
-      [BG]\x82\xC6[Color Theme]\x82\xCC2\x83Z\x83N\x83V\x83\x87\x83\x93\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肾\x82\xAF\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9
+      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82\xAA\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
+      \x82\xB1\x82̃Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肪\x93\xFC\x82\xE9
     </dd>
-    <dt>BG \x82̂\xDD</dt>
+    <dt>\x83J\x83\x89\x81[\x83e\x81[\x83}</dt>
     <dd>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82݂̂̃t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肾\x82\xAF\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9
-    </dd>
-    <dt>\x83J\x83\x89\x81[\x82̂\xDD</dt>
+      [Color Theme]\x83Z\x83N\x83V\x83\x87\x83\x93\x82\xAA\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
+      \x82\xB1\x82̃Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͕\xB6\x8E\x9A\x82̐F\x82̐ݒ肪\x93\xFC\x82\xE9
+    <dt>\x8B\x8C\x83J\x83\x89\x81[\x83e\x81[\x83} (\x94p\x8E~\x97\\x92\xE8)</dt>
     <dd>
-      [Color Theme]\x82݂̂̃t\x83@\x83C\x83\x8B<br>
+      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɕ\xB6\x8E\x9A\x82̐F\x82̐ݒ肪\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9<br>
+      Tera Term 4 \x82ŃT\x83|\x81[\x83g\x82\xB5\x82Ă\xA2\x82\xBD\x83J\x83\x89\x81[\x83e\x81[\x83}<br>
+      \x93ǂݍ\x9E\x82݂͂ł\xAB\x82邪\x94p\x8E~\x97\\x92\xE8
     </dd>
-    <dt>BG + \x8B\x8C\x83J\x83\x89\x81[ (\x94p\x8E~\x82\xB5\x82\xBD\x82\xA2)</dt>
-    <dd>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82݂̂̃t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82ƕ\xB6\x8E\x9A\x82̐F\x8F\xEE\x95񂪓\xFC\x82\xC1\x82Ă\xA2\x82\xE9<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82̐F\x8F\xEE\x95\xF1\x82͔p\x8E~\x82\xB5\x82\xBD\x82\xA2<br>
-    </dd>
   </dl>
 
-  <h3>BG theme</h3>
+  BG(\x94w\x8Ci)\x83e\x81[\x83}\x82ƃJ\x83\x89\x81[\x83e\x81[\x83}\x82\xF0\x95ʂ̃t\x83@\x83C\x83\x8B\x82ɕۑ\xB6\x82\xB5\x82Ă\xA8\x82\xAD\x82\xB1\x82Ƃ\xE0\x81A
+  1\x82‚̃t\x83@\x83C\x83\x8B\x82ɗ\xBC\x95\xFB\x82\xF0\x95ۑ\xB6\x82\xB7\x82邱\x82Ƃ\xE0\x82ł\xAB\x82\xE9\x81B
 
-  ini\x83t\x83@\x83C\x83\x8B\x82\xCC[BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x95\x94\x95\xAA
+  \x83t\x83H\x81[\x83}\x83b\x83g\x82\xCDWindows\x82\xCCini\x83t\x83@\x83C\x83\x8B\x81B
 
+  <h2 id="BGTheme">BG(\x94w\x8Ci)\x83e\x81[\x83}</h2>
+
+  \x83Z\x83N\x83V\x83\x87\x83\x93\x96\xBC\x82\xCD"[BG]"
+
   <dl>
-    <dt>BGPictureTone</dt>
+    <dt>BGDestColor</dt>
     <dd>
-      \x94w\x8Ci\x89摜(Dest)\x82Ƀf\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
-      BGSrc1Alpha = 255 - BGPictureTone<br>
-      0=\x83f\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82\xAA100%<br>
-      255=\x94w\x8Ci\x89摜(Dest)\x82\xAA100%
+      \x94w\x8Ci\x89摜\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2\x8Fꍇ\x82͂\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B<br>
+      \x94w\x8Ci\x89摜\x82\xAA\x95`\x89悳\x82\xEA\x82Ȃ\xA2\x95\x94\x95\xAA\x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x82\xE0\x82\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B
     </dd>
-    <dt>BGFadeColor</dt>
+
+    <dt>BGDestFile</dt>
     <dd>
-      Src2\x82̐F<br>
-      BGFadeColor = BGSrc2Color
+      \x94w\x8Ci\x89摜
+      \x83t\x83@\x83C\x83\x8B\x96\xBC\x82Ƀ\x8F\x83C\x83\x8B\x83h\x83J\x81[\x83h\x82\xAA\x8Ew\x92肳\x82ꂽ\x8Fꍇ\x81A\x88\xEA\x92v\x82\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82\xA9\x82烉\x83\x93\x83_\x83\x80\x82Ɉ\xEA\x82‘I\x82т܂\xB7\x81B<br>
+      \x91\x8A\x91΃p\x83X\x82𗘗p\x82\xB7\x82\xE9\x8Fꍇ\x82́A\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x82̑\x8A\x91΃p\x83X\x82\xF0\x8Ew\x92肵\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B<br>
+      \x93ǂݍ\x9E\x82߂\xE9\x83t\x83@\x83C\x83\x8B\x82̎\xED\x97ނ́ABGSPIPath \x82Ɋi\x94[\x82\xB3\x82ꂽ\x83v\x83\x89\x83O\x83C\x83\x93\x82ɂ\xE6\x82\xE8\x82܂\xB7\x81B<br>
+      \x83r\x83b\x83g\x83}\x83b\x83v\x82̓v\x83\x89\x83O\x83C\x83\x93\x82\xAA\x96\xB3\x82\xAD\x82Ă\xE0\x93ǂݍ\x9E\x82߂܂\xB7\x81B
     </dd>
-    <dt>BGFadeTone</dt>
-    <dd>Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82ɒP\x90F(Src2)\x82\xF0\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
-      BGSrc2Alpha = 255 - BGFadeTone<br>
-      0=\x92P\x90F(Src2)\x82\xAA100%<br>
-      255=Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82\xAA100%
+
+    <dt>BGDestPattern</dt>
+    <dd>\x94w\x8Ci\x89摜\x95`\x89\xE6\x95\xFB\x96@
+      <dl>
+          <dt>stretch</dt>
+          <dt>tile</dt>
+          <dt>center</dt>
+          <dt>fit_width</dt>
+          <dt>fit_height</dt>
+          <dt>autofit</dt>
+          <dt>autofill</dt>
+          <dd>
+            FitWidth\x81AFitHeight \x82͉摜\x82̃A\x83X\x83y\x83N\x83g\x94\xE4\x82\xF0\x88ێ\x9D\x82\xB5\x82\xBD\x82܂܁A\x89摜\x82\xF0\x8Ag\x91\xE5\x8Fk\x8F\xAC\x82\xB5\x82܂\xB7\x81B<br>
+            AutoFit \x82́A\x83E\x83B\x83\x93\x83h\x83E\x82Ɖ摜\x82̊ԂɌ\x84\x8AԂ\xAA\x82ł\xAB\x82Ȃ\xA2\x82悤\x82ɁAFitWidth \x82\xC6 FitHeight \x82\xF0\x90؂\xE8\x91ւ\xA6\x82܂\xB7\x81B
+          </dd>
+      </dl>
     </dd>
 
-    <dt>BGReverseTextTone</t>
+    <dt>BGSrc1Alpha</dt>
     <dd>
-      0 - 255<br>
-      The transparency value of the reverse text.
+      Windows\x82̕ǎ\x86\x89摜\x82\xF0\x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x81B<br>
+      \x94w\x8Ci\x89摜(Dest)\x82Ƀf\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x82\xF0\x8Ew\x92肷\x82\xE9\x81B<br>
+      0\x82̂Ƃ\xAB\x95ǎ\x86\x82̓u\x83\x8C\x83\x93\x83h\x82\xB3\x82\xEA\x82Ȃ\xA2\x81B<br>
     </dd>
 
-    <dt>BGPictureFile</dt>
-    <dd>file name<br>
-      You can specify the image file name merging with the wall paper.<br>
-        Tera Term will randomly select one of files when the wild card is specified.<br>
-        Please specify the relative path from the theme file when you want to use the relative path.<br>
-        The kind of file that Tera Term can load is depend the plugin stored in BGSPIPath.<br>
-        Tera Term can load the bitmap file when there is not plugin.<br>
+
+    <dt>BGSrc2Color</dt>
+    <dd>
+      \x94w\x8Ci\x89摜\x91S\x91̂\xF0\x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x90F
     </dd>
 
-    <dt>BGPicturePattern</dt>
-    <dd>Stretch<br>
-        Tile<br>
-        Center<br>
-        FitWidth<br>
-        FitHeight<br>
-        AutoFit<br>
-      You can specify the painting method of the image file.<br>
-        Both FitWidth and FitHeight can expand or reduce  the image while the aspect ratio of the image preserves.<br>
-        AutoFit can exchange FitWidth for FitHeight not to generate the space between the window and the image.
+    <dt>BGSrc2Alpha</dt>
+    <dd>
+      \x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x92l<br>
+      Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82ɒP\x90F(Src2)\x82\xF0\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
     </dd>
 
-    <dt>BGPictureBaseColor</dt>
-    <dd>R, G, B<br>
-      This color can paint between the image file and the window.
+    <dt>BGReverseTextTone</dt>
+    <dd>
+      0 - 255<br>
+      \x94\xBD\x93]\x83e\x83L\x83X\x83g\x82̓\xA7\x96\xBE\x93x
     </dd>
+  </dl>
 
-    <dt>BGPictureTone</dt>
-    <dd>0 - 255<br>
-      The transparency value of the image file.</dd>
+  <h3 id="ColorTheme">color theme</h3>
 
-    <dt>BGFadeTone</dt>
-    <dd>0 - 255<br>
-    <td>This option can enable the whole background to fade.</dd>
+  <h4>section</h4>
 
-    <dt>BGFadeColor</dt>
-    <dd>R, G, B<br>
-       This option can configure the fade color.</dd>
+  "Color Theme"
+
+  <h4>name</h4>
+
+  <dl>
+    <dt>name</dt>
+    <dd>\x83e\x81[\x83}\x96\xBC\x81A\x92l\x82͕\xB6\x8E\x9A\x97\xF1</dd>
   </dl>
 
+  <h4>attribute color</h4>
+
   <dl>
-    <dt>VTFore, Red ...</dt>
-    <dd>R, G, B<br>
-      This option can configure the text color.</dd>
+    <dt>VTColor</dt>
+    <dd>\x92ʏ핶\x8E\x9A\x90F, SGR 0</dd>
+
+    <dt>BoldColor</dt>
+    <dd>SGR 1</dd>
+
+    <dt>VTUnderlineColor</dt>
+    <dd>SGR 4</dd>
+
+    <dt>BlinkColor</dt>
+    <dd>SGR 5</dd>
+
+    <dt>ReverseColor</dt>
+    <dd>SGR 7</dd>
+
+    <dt>URLColor</dt>
+    <dd>
+      URL\x95\xB6\x8E\x9A\x97\xF1<br>
+      Tera Term\x82\xAAURL\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8C\x9F\x8Fo\x82\xB5\x82\xBD\x82Ƃ\xAB\x82ɕt\x89\xC1\x82\xB3\x82\xEA\x82镶\x8E\x9A\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g
+    </dd>
+
+    <dt>\x92l (0 or 1), (0 or 1), (fore red), (fore green), (fore blue), (back red), (back green), (back blue)</dt>
+    <dt>\x92l (0 or 1), (0 or 1), (fore), (back)</dt>
+    <dd>
+      <dl>
+        <dt>(0 or 1)</dt>
+        <dd>
+          1=default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9<br>
+          0=\x95ύX\x82\xB5\x82Ȃ\xA2<br>
+          (VTColor\x82ł͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2)
+        </dd>
+        <dt>(0 or 1)</dt>
+        <dd>
+          1=\x95\xB6\x8E\x9A\x91\xAE\x90\xAB(Bold attribute\x93\x99)\x82̓Ǝ\xA9\x90F\x82\xF0\x97L\x8C\xF8<br>
+          0=\x96\xB3\x8C\xF8\x82ɂ\xB7\x82\xE9<br>
+          (VTColor\x82ł͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2)
+        </dd>
+
+        <dt>(fore red), (fore green), (fore blue)</dt>
+        <dd>\x95\xB6\x8E\x9A\x82̐F\x81A\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
+
+        <dt>(back red), (back green), (back blue)</dt>
+        <dd>\x94w\x8Ci\x82̐F\x81A\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
+
+        <dt>(fore), (back)</dt>
+        <dd>
+          #RRBBGG \x82̌`\x8E\xAE\x82ŁA\x8Ae\x81X00 \x82\xA9\x82\xE7 FF \x82܂\xC5
+        </dd>
+      </dl>
+    </dd>
   </dl>
-</table>
 
+  <h4>ANSI color</h4>
 
-<h2>Extension of theme file</h2>
+  256\x90F/16\x90F ANSI color\x82̍ŏ\x89\x82\xCC16\x90F\x81B<br>
+  8\x90F\x8E\x9E\x82́ADark color\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2
 
-<p>
-A user can configure the extension of the theme file based on the theme\Advanced.sample file.<br>
-For example, an image file(sample.jpg) can be drawn in the Tera Term background.
-Please specify the .ini file at the BGThemeFile entry of the teraterm.ini file.
-</p>
+  <dl>
+    <dt>ANSIColor=(0 or 1)</dt>
+    <dd>
+      1=default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9<br>
+      0=\x95ύX\x82\xB5\x82Ȃ\xA2
+    </dd>
+  </dl>
 
-<pre>
-[BG]
-; Advanced Setting
-; Image source setting
-; Type      : Color / Picture / Wallpaper
-: Pattern   : Stretch / Tile / Center / FitWidth / FitHeight / AutoFit
-; AntiAlias : On / Off
-; Color     : R,G,B (0-255)
-; Alpha     : 0-255
-; File      : wildcard => random select
-; Dest = (Src1  * Src1Alpha + Dest * (255 - Src1Alpha)) / 255
-; Dest = (Src2  * Src2Alpha + Dest * (255 - Src2Alpha)) / 255
-BGReverseTextAlpha = 192
-;
-BGDestType      = Picture
-BGDestFile      = sample.jpg
-BGDestPattern   = AutoFit
-BGDestAntiAlias = On
-BGDestColor     = 0,0,0
-;
-BGSrc1Type      = Color
-BGSrc1File      = 
-BGSrc1Pattern   = 
-BGSrc1AntiAlias = 
-BGSrc1Color     = 32,32,32
-BGSrc1Alpha     = 64
-;
-BGSrc2Type      = Color
-BGSrc2File      = 
-BGSrc2Pattern   = 
-BGSrc2AntiAlias = 
-BGSrc2Color     = 32,32,32
-BGSrc2Alpha     = 64
-</pre>
+  <dl>
+    <dt>Fore</dt>
+    <dd>256 ANSI color 15\x94\xD4<br>
+      \x92ʏ핶\x8E\x9A\x90F(Tera Term\x82ł\xCDVTColor\x82\xAA\x8Eg\x97p\x82\xB3\x82\xEA\x82\xE9)
+    </dd>
 
-<h2>color theme</h2>
+    <dt>Back</dt>
+    <dd>256 ANSI color 0\x94\xD4<br>
+      \x92ʏ\xED\x94w\x8Ci\x90F(Tera Term\x82ł\xCDVTColor\x82\xAA\x8Eg\x97p\x82\xB3\x82\xEA\x82\xE9)
+    </dd>
 
-  TBD<br>
+    <dt>Red</dt>
+    <dt>Green</dt>
+    <dt>Yellow</dt>
+    <dt>Blue</dt>
+    <dt>Magenta</dt>
+    <dt>Cyan</dt>
+    <dt>DarkFore</dt>
+    <dt>DarkBack</dt>
+    <dt>DarkRed</dt>
+    <dt>DarkGreen</dt>
+    <dt>DarkYellow</dt>
+    <dt>DarkBlue</dt>
+    <dt>DarkMagenta</dt>
+    <dt>DarkCyan</dt>
+    <dd>\x8Ae\x95\xB6\x8E\x9A\x90F</dd>
 
-  TODO
-  <ul>
-    <li>\x8Ed\x97l\x8F\x91\x82\xAD
-    <li>release/theme/color/readme.md \x82Ƀ\x8A\x83\x93\x83N\x92\xA3\x82\xE9
-  </ul>
+    <dt>\x92l (red), (green), (blue)</dt>
+    <dd>\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
 
+    <dt>\x92l (color)</dt>
+    <dd>
+      #RRBBGG \x82̌`\x8E\xAE\x82ŁA\x8Ae\x81X00 \x82\xA9\x82\xE7 FF \x82܂\xC5
+    </dd>
+
+  </dl>
+
 </body>
 </html>

Modified: trunk/doc/ja/html/menu/setup-additional-visual-theme.html
===================================================================
--- trunk/doc/ja/html/menu/setup-additional-visual-theme.html	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/doc/ja/html/menu/setup-additional-visual-theme.html	2022-10-10 04:48:24 UTC (rev 10303)
@@ -29,6 +29,14 @@
 
     <hr>
 
+    <h2>TODO</h2>
+    <ul>
+      <li>BGSPIPath(\x89摜\x82\xF0\x93ǂݍ\x9E\x82ނ̂ɗp\x82\xA2\x82\xE9\x81ASusie Plugin \x82\xAA\x8Ai\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B)\x82\xCC
+        \x90ݒ\xE8GUI\x82\xF0\x8D\xEC\x82\xE9
+    </ul>
+
+    <hr>
+
     <h2 id="preview">preview/file tab</h2>
 
     preview<br>
@@ -63,7 +71,7 @@
     \x8Fォ\x82珇\x82ɔw\x8Ci\x89摜\x82\xAA\x8D\x87\x90\xAC\x82\xB3\x82\xEA\x82Ă\xA2\x82\xAD\x81B
 
     <dl>
-      <dt>base Color</dt>
+      <dt>Base Color</dt>
       <dd>
         \x94w\x8Ci\x89摜\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2\x8Fꍇ\x82͂\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B\x94w\x8Ci\x89摜\x82\xAA\x95`\x89悳\x82\xEA\x82Ȃ\xA2\x95\x94\x95\xAA\x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x82\xE0\x82\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B
       </dd>

Modified: trunk/doc/ja/html/setup/theme.html
===================================================================
--- trunk/doc/ja/html/setup/theme.html	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/doc/ja/html/setup/theme.html	2022-10-10 04:48:24 UTC (rev 10303)
@@ -9,172 +9,227 @@
 </head>
 <body>
 
+  <h1>Theme\x83t\x83@\x83C\x83\x8B</h1>
 
-  <h1>Theme \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B</h1>
+  <ul>
+    <li><a href="#themefile">Theme\x83t\x83@\x83C\x83\x8B\x82ɂ‚\xA2\x82\xC4</a></li>
+    <li><a href="#BGTheme">BG(\x94w\x8Ci) Theme</a></li>
+    <li><a href="#ColorTheme">Color Theme</a></li>
+  </ul>
 
-  TODO
+  <h2>TODO</h2>
   <ul>
-    <li>BGSPIPath(\x89摜\x82\xF0\x93ǂݍ\x9E\x82ނ̂ɗp\x82\xA2\x82\xE9\x81ASusie Plugin \x82\xAA\x8Ai\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B)\x82̐ݒ\xE8GUI\x82\xF0\x8D\xEC\x82\xE9
     <li>\x8Ed\x97l\x82\xF0\x82\xBF\x82\xE1\x82\xF1\x82ƌ\x88\x82߂\xE9
     <li>\x8Ed\x97l\x82ɍ\x87\x82킹\x82\xC4<a href="https://ttssh2.osdn.jp/tmp/color/">color picker(\x89\xBC)</a>\x82\xF0\x8FC\x90\xB3
   </ul>
 
-  <h2>theme\x83t\x83@\x83C\x83\x8B\x82̎\xED\x97\xDE</h2>
+  <h2 id="themefile">theme\x83t\x83@\x83C\x83\x8B\x82ɂ‚\xA2\x82\xC4</h2>
 
   \x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82ɂ͂\xA2\x82\xAD\x82‚\xA9\x82̎\xED\x97ނ\xAA\x82\xA0\x82\xE9\x81B
 
   <dl>
-    <dt>BG + \x83J\x83\x89\x81[</dt>
+    <dt>BG(\x94w\x8Ci)\x83e\x81[\x83}</dt>
     <dd>
-      [BG]\x82\xC6[Color Theme]\x82\xCC2\x83Z\x83N\x83V\x83\x87\x83\x93\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肾\x82\xAF\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9
+      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82\xAA\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
+      \x82\xB1\x82̃Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肪\x93\xFC\x82\xE9
     </dd>
-    <dt>BG \x82̂\xDD</dt>
+    <dt>\x83J\x83\x89\x81[\x83e\x81[\x83}</dt>
     <dd>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82݂̂̃t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82̐ݒ肾\x82\xAF\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9
-    </dd>
-    <dt>\x83J\x83\x89\x81[\x82̂\xDD</dt>
+      [Color Theme]\x83Z\x83N\x83V\x83\x87\x83\x93\x82\xAA\x93\xFC\x82\xC1\x82\xBD\x83t\x83@\x83C\x83\x8B<br>
+      \x82\xB1\x82̃Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͕\xB6\x8E\x9A\x82̐F\x82̐ݒ肪\x93\xFC\x82\xE9
+    <dt>\x8B\x8C\x83J\x83\x89\x81[\x83e\x81[\x83} (\x94p\x8E~\x97\\x92\xE8)</dt>
     <dd>
-      [Color Theme]\x82݂̂̃t\x83@\x83C\x83\x8B<br>
+      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɕ\xB6\x8E\x9A\x82̐F\x82̐ݒ肪\x93\xFC\x82\xC1\x82Ă\xA2\x82\xE9<br>
+      Tera Term 4 \x82ŃT\x83|\x81[\x83g\x82\xB5\x82Ă\xA2\x82\xBD\x83J\x83\x89\x81[\x83e\x81[\x83}<br>
+      \x93ǂݍ\x9E\x82݂͂ł\xAB\x82邪\x94p\x8E~\x97\\x92\xE8
     </dd>
-    <dt>BG + \x8B\x8C\x83J\x83\x89\x81[ (\x94p\x8E~\x82\xB5\x82\xBD\x82\xA2)</dt>
-    <dd>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82݂̂̃t\x83@\x83C\x83\x8B<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82ɂ͔w\x8Ci\x89摜\x82ƕ\xB6\x8E\x9A\x82̐F\x8F\xEE\x95񂪓\xFC\x82\xC1\x82Ă\xA2\x82\xE9<br>
-      [BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x82̐F\x8F\xEE\x95\xF1\x82͔p\x8E~\x82\xB5\x82\xBD\x82\xA2<br>
-    </dd>
   </dl>
 
-  <h3>BG theme</h3>
+  BG(\x94w\x8Ci)\x83e\x81[\x83}\x82ƃJ\x83\x89\x81[\x83e\x81[\x83}\x82\xF0\x95ʂ̃t\x83@\x83C\x83\x8B\x82ɕۑ\xB6\x82\xB5\x82Ă\xA8\x82\xAD\x82\xB1\x82Ƃ\xE0\x81A
+  1\x82‚̃t\x83@\x83C\x83\x8B\x82ɗ\xBC\x95\xFB\x82\xF0\x95ۑ\xB6\x82\xB7\x82邱\x82Ƃ\xE0\x82ł\xAB\x82\xE9\x81B
 
-  ini\x83t\x83@\x83C\x83\x8B\x82\xCC[BG]\x83Z\x83N\x83V\x83\x87\x83\x93\x95\x94\x95\xAA
+  \x83t\x83H\x81[\x83}\x83b\x83g\x82\xCDWindows\x82\xCCini\x83t\x83@\x83C\x83\x8B\x81B
 
+  <h2 id="BGTheme">BG(\x94w\x8Ci)\x83e\x81[\x83}</h2>
+
+  \x83Z\x83N\x83V\x83\x87\x83\x93\x96\xBC\x82\xCD"[BG]"
+
   <dl>
-    <dt>BGPictureTone</dt>
+    <dt>BGDestColor</dt>
     <dd>
-      \x94w\x8Ci\x89摜(Dest)\x82Ƀf\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
-      BGSrc1Alpha = 255 - BGPictureTone<br>
-      0=\x83f\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82\xAA100%<br>
-      255=\x94w\x8Ci\x89摜(Dest)\x82\xAA100%
+      \x94w\x8Ci\x89摜\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2\x8Fꍇ\x82͂\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B<br>
+      \x94w\x8Ci\x89摜\x82\xAA\x95`\x89悳\x82\xEA\x82Ȃ\xA2\x95\x94\x95\xAA\x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x82\xE0\x82\xB1\x82̐F\x82œh\x82\xE8\x82‚Ԃ\xB3\x82\xEA\x82\xE9\x81B
     </dd>
-    <dt>BGFadeColor</dt>
+
+    <dt>BGDestFile</dt>
     <dd>
-      Src2\x82̐F<br>
-      BGFadeColor = BGSrc2Color
+      \x94w\x8Ci\x89摜
+      \x83t\x83@\x83C\x83\x8B\x96\xBC\x82Ƀ\x8F\x83C\x83\x8B\x83h\x83J\x81[\x83h\x82\xAA\x8Ew\x92肳\x82ꂽ\x8Fꍇ\x81A\x88\xEA\x92v\x82\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82\xA9\x82烉\x83\x93\x83_\x83\x80\x82Ɉ\xEA\x82‘I\x82т܂\xB7\x81B<br>
+      \x91\x8A\x91΃p\x83X\x82𗘗p\x82\xB7\x82\xE9\x8Fꍇ\x82́A\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x82̑\x8A\x91΃p\x83X\x82\xF0\x8Ew\x92肵\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B<br>
+      \x93ǂݍ\x9E\x82߂\xE9\x83t\x83@\x83C\x83\x8B\x82̎\xED\x97ނ́ABGSPIPath \x82Ɋi\x94[\x82\xB3\x82ꂽ\x83v\x83\x89\x83O\x83C\x83\x93\x82ɂ\xE6\x82\xE8\x82܂\xB7\x81B<br>
+      \x83r\x83b\x83g\x83}\x83b\x83v\x82̓v\x83\x89\x83O\x83C\x83\x93\x82\xAA\x96\xB3\x82\xAD\x82Ă\xE0\x93ǂݍ\x9E\x82߂܂\xB7\x81B
     </dd>
-    <dt>BGFadeTone</dt>
-    <dd>Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82ɒP\x90F(Src2)\x82\xF0\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
-      BGSrc2Alpha = 255 - BGFadeTone<br>
-      0=\x92P\x90F(Src2)\x82\xAA100%<br>
-      255=Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82\xAA100%
+
+    <dt>BGDestPattern</dt>
+    <dd>\x94w\x8Ci\x89摜\x95`\x89\xE6\x95\xFB\x96@
+      <dl>
+          <dt>stretch</dt>
+          <dt>tile</dt>
+          <dt>center</dt>
+          <dt>fit_width</dt>
+          <dt>fit_height</dt>
+          <dt>autofit</dt>
+          <dt>autofill</dt>
+          <dd>
+            FitWidth\x81AFitHeight \x82͉摜\x82̃A\x83X\x83y\x83N\x83g\x94\xE4\x82\xF0\x88ێ\x9D\x82\xB5\x82\xBD\x82܂܁A\x89摜\x82\xF0\x8Ag\x91\xE5\x8Fk\x8F\xAC\x82\xB5\x82܂\xB7\x81B<br>
+            AutoFit \x82́A\x83E\x83B\x83\x93\x83h\x83E\x82Ɖ摜\x82̊ԂɌ\x84\x8AԂ\xAA\x82ł\xAB\x82Ȃ\xA2\x82悤\x82ɁAFitWidth \x82\xC6 FitHeight \x82\xF0\x90؂\xE8\x91ւ\xA6\x82܂\xB7\x81B
+          </dd>
+      </dl>
     </dd>
 
-    <dt>BGReverseTextTone</dt>
+    <dt>BGSrc1Alpha</dt>
     <dd>
-      0 - 255<br>
-      \x94\xBD\x93]\x83e\x83L\x83X\x83g\x82̓\xA7\x96\xBE\x93x
+      Windows\x82̕ǎ\x86\x89摜\x82\xF0\x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x81B<br>
+      \x94w\x8Ci\x89摜(Dest)\x82Ƀf\x83X\x83N\x83g\x83b\x83v\x89摜(Src1)\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x82\xF0\x8Ew\x92肷\x82\xE9\x81B<br>
+      0\x82̂Ƃ\xAB\x95ǎ\x86\x82̓u\x83\x8C\x83\x93\x83h\x82\xB3\x82\xEA\x82Ȃ\xA2\x81B<br>
     </dd>
 
-    <dt>BGPictureFile</dt>
+
+    <dt>BGSrc2Color</dt>
     <dd>
-      \x83t\x83@\x83C\x83\x8B\x96\xBC<br>
-      \x95ǎ\x86\x82ƍ\x87\x90\xAC\x82\xB7\x82\xE9\x89摜\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B<br>
-        \x83t\x83@\x83C\x83\x8B\x96\xBC\x82Ƀ\x8F\x83C\x83\x8B\x83h\x83J\x81[\x83h\x82\xAA\x8Ew\x92肳\x82ꂽ\x8Fꍇ\x81A\x88\xEA\x92v\x82\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82\xA9\x82烉\x83\x93\x83_\x83\x80\x82Ɉ\xEA\x82‘I\x82т܂\xB7\x81B<br>
-        \x91\x8A\x91΃p\x83X\x82𗘗p\x82\xB7\x82\xE9\x8Fꍇ\x82́A\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x82̑\x8A\x91΃p\x83X\x82\xF0\x8Ew\x92肵\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B<br>
-        \x93ǂݍ\x9E\x82߂\xE9\x83t\x83@\x83C\x83\x8B\x82̎\xED\x97ނ́ABGSPIPath \x82Ɋi\x94[\x82\xB3\x82ꂽ\x83v\x83\x89\x83O\x83C\x83\x93\x82ɂ\xE6\x82\xE8\x82܂\xB7\x81B<br>
-        \x83r\x83b\x83g\x83}\x83b\x83v\x82̓v\x83\x89\x83O\x83C\x83\x93\x82\xAA\x96\xB3\x82\xAD\x82Ă\xE0\x93ǂݍ\x9E\x82߂܂\xB7\x81B
+      \x94w\x8Ci\x89摜\x91S\x91̂\xF0\x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82\xE9\x90F
     </dd>
 
-    <dt>BGPicturePattern</dt>
-    <dd>Stretch<br>
-        Tile<br>
-        Center<br>
-        FitWidth<br>
-        FitHeight<br>
-        AutoFit<br>
-      \x89摜\x83t\x83@\x83C\x83\x8B\x82̕`\x89\xE6\x95\xFB\x96@\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B<br>
-      FitWidth\x81AFitHeight \x82͉摜\x82̃A\x83X\x83y\x83N\x83g\x94\xE4\x82\xF0\x88ێ\x9D\x82\xB5\x82\xBD\x82܂܁A\x89摜\x82\xF0\x8Ag\x91\xE5\x8Fk\x8F\xAC\x82\xB5\x82܂\xB7\x81B<br>
-      AutoFit \x82́A\x83E\x83B\x83\x93\x83h\x83E\x82Ɖ摜\x82̊ԂɌ\x84\x8AԂ\xAA\x82ł\xAB\x82Ȃ\xA2\x82悤\x82ɁAFitWidth \x82\xC6 FitHeight \x82\xF0\x90؂\xE8\x91ւ\xA6\x82܂\xB7\x81B
+    <dt>BGSrc2Alpha</dt>
+    <dd>
+      \x83A\x83\x8B\x83t\x83@\x83u\x83\x8C\x83\x93\x83h\x92l<br>
+      Dest\x82\xC6Src1\x82̍\x87\x90\xAC\x89摜\x82ɒP\x90F(Src2)\x82\xF0\x82ǂꂮ\x82炢\x83u\x83\x8C\x83\x93\x83h\x82\xB7\x82邩<br>
     </dd>
 
-    <dt>BGPictureBaseColor</dt>
-    <dd>R, G, B<br>
-      \x89摜\x82ƃE\x83B\x83\x93\x83h\x83E\x82̊ԂɌ\x84\x8AԂ\xAA\x82ł\xAB\x82\xBD\x8Fꍇ\x81A\x82\xB1\x82̐F\x82œh\x82\xE7\x82\xEA\x82܂\xB7\x81B
+    <dt>BGReverseTextTone</dt>
+    <dd>
+      0 - 255<br>
+      \x94\xBD\x93]\x83e\x83L\x83X\x83g\x82̓\xA7\x96\xBE\x93x
     </dd>
+  </dl>
 
-    <dt>BGPictureTone</dt>
-    <dd>0 - 255<br>
-      \x89摜\x83t\x83@\x83C\x83\x8B\x82̓\xA7\x96\xBE\x93x
+  <h3 id="ColorTheme">color theme</h3>
+
+  <h4>section</h4>
+
+  "Color Theme"
+
+  <h4>name</h4>
+
+  <dl>
+    <dt>name</dt>
+    <dd>\x83e\x81[\x83}\x96\xBC\x81A\x92l\x82͕\xB6\x8E\x9A\x97\xF1</dd>
+  </dl>
+
+  <h4>attribute color</h4>
+
+  <dl>
+    <dt>VTColor</dt>
+    <dd>\x92ʏ핶\x8E\x9A\x90F, SGR 0</dd>
+
+    <dt>BoldColor</dt>
+    <dd>SGR 1</dd>
+
+    <dt>VTUnderlineColor</dt>
+    <dd>SGR 4</dd>
+
+    <dt>BlinkColor</dt>
+    <dd>SGR 5</dd>
+
+    <dt>ReverseColor</dt>
+    <dd>SGR 7</dd>
+
+    <dt>URLColor</dt>
+    <dd>
+      URL\x95\xB6\x8E\x9A\x97\xF1<br>
+      Tera Term\x82\xAAURL\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8C\x9F\x8Fo\x82\xB5\x82\xBD\x82Ƃ\xAB\x82ɕt\x89\xC1\x82\xB3\x82\xEA\x82镶\x8E\x9A\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g
     </dd>
 
-    <dt>BGFadeTone</dt>
-    <dd>0 - 255<br>
-      \x94w\x8Ci\x91S\x91̂\xF0\x83t\x83F\x81[\x83h\x82\xB5\x82܂\xB7\x81B</dd>
+    <dt>\x92l (0 or 1), (0 or 1), (fore red), (fore green), (fore blue), (back red), (back green), (back blue)</dt>
+    <dt>\x92l (0 or 1), (0 or 1), (fore), (back)</dt>
+    <dd>
+      <dl>
+        <dt>(0 or 1)</dt>
+        <dd>
+          1=default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9<br>
+          0=\x95ύX\x82\xB5\x82Ȃ\xA2<br>
+          (VTColor\x82ł͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2)
+        </dd>
+        <dt>(0 or 1)</dt>
+        <dd>
+          1=\x95\xB6\x8E\x9A\x91\xAE\x90\xAB(Bold attribute\x93\x99)\x82̓Ǝ\xA9\x90F\x82\xF0\x97L\x8C\xF8<br>
+          0=\x96\xB3\x8C\xF8\x82ɂ\xB7\x82\xE9<br>
+          (VTColor\x82ł͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2)
+        </dd>
 
-    <dt>BGFadeColor</dt>
-    <dd>R, G, B<br>
-      \x83t\x83F\x81[\x83h\x82\xB5\x82\xBD\x82Ƃ\xAB\x82̐F\x82\xF0\x8Ew\x92肵\x82܂\xB7\x81B</dd>
+        <dt>(fore red), (fore green), (fore blue)</dt>
+        <dd>\x95\xB6\x8E\x9A\x82̐F\x81A\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
+
+        <dt>(back red), (back green), (back blue)</dt>
+        <dd>\x94w\x8Ci\x82̐F\x81A\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
+
+        <dt>(fore), (back)</dt>
+        <dd>
+          #RRBBGG \x82̌`\x8E\xAE\x82ŁA\x8Ae\x81X00 \x82\xA9\x82\xE7 FF \x82܂\xC5
+        </dd>
+      </dl>
+    </dd>
   </dl>
 
+  <h4>ANSI color</h4>
+
+  256\x90F/16\x90F ANSI color\x82̍ŏ\x89\x82\xCC16\x90F\x81B<br>
+  8\x90F\x8E\x9E\x82́ADark color\x82\xF0\x8Eg\x97p\x82\xB5\x82Ȃ\xA2
+
   <dl>
-    <dt>VTFore \x82\xE2 Red \x82Ȃ\xC7 (\x94p\x8E~)</dt>
-    <dd>R, G, B<br>
-      \x83e\x83L\x83X\x83g\x82̐F\x82\xF0\x90ݒ肵\x82܂\xB7\x81B</dd>
+    <dt>ANSIColor=(0 or 1)</dt>
+    <dd>
+      1=default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9<br>
+      0=\x95ύX\x82\xB5\x82Ȃ\xA2
+    </dd>
   </dl>
 
-<h2>\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82̊g\x92\xA3\x90ݒ\xE8</h2>
+  <dl>
+    <dt>Fore</dt>
+    <dd>256 ANSI color 15\x94\xD4<br>
+      \x92ʏ핶\x8E\x9A\x90F(Tera Term\x82ł\xCDVTColor\x82\xAA\x8Eg\x97p\x82\xB3\x82\xEA\x82\xE9)
+    </dd>
 
-<p>
-theme\Advanced.sample \x83t\x83@\x83C\x83\x8B\x82𗘗p\x82\xB5\x82āA\x8Ag\x92\xA3\x90ݒ\xE8\x82\xF0\x82\xB7\x82邱\x82Ƃ\xAA\x82ł\xAB\x82܂\xB7\x81B<br>
-\x89\xBA\x8BL\x82́A\x8Ew\x92肵\x82\xBD\x89摜\x83t\x83@\x83C\x83\x8B(sample.jpg)\x82\xF0 Tera Term \x82̔w\x8Ci\x82ɕ`\x89悷\x82\xE9\x97\xE1\x82ŁA
-teraterm.ini \x82\xCC BGThemeFile \x83G\x83\x93\x83g\x83\x8A\x82Ŏw\x92肵\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
-</p>
+    <dt>Back</dt>
+    <dd>256 ANSI color 0\x94\xD4<br>
+      \x92ʏ\xED\x94w\x8Ci\x90F(Tera Term\x82ł\xCDVTColor\x82\xAA\x8Eg\x97p\x82\xB3\x82\xEA\x82\xE9)
+    </dd>
 
-<pre>
-[BG]
-; Advanced Setting
-; Image source setting
-; Type      : Color / Picture / Wallpaper
-: Pattern   : Stretch / Tile / Center / FitWidth / FitHeight / AutoFit
-; AntiAlias : On / Off
-; Color     : R,G,B (0-255)
-; Alpha     : 0-255
-; File      : wildcard => random select
-; Dest = (Src1  * Src1Alpha + Dest * (255 - Src1Alpha)) / 255
-; Dest = (Src2  * Src2Alpha + Dest * (255 - Src2Alpha)) / 255
-BGReverseTextAlpha = 192
-;
-BGDestType      = Picture
-BGDestFile      = sample.jpg
-BGDestPattern   = AutoFit
-BGDestAntiAlias = On
-BGDestColor     = 0,0,0
-;
-BGSrc1Type      = Color
-BGSrc1File      = 
-BGSrc1Pattern   = 
-BGSrc1AntiAlias = 
-BGSrc1Color     = 32,32,32
-BGSrc1Alpha     = 64
-;
-BGSrc2Type      = Color
-BGSrc2File      = 
-BGSrc2Pattern   = 
-BGSrc2AntiAlias = 
-BGSrc2Color     = 32,32,32
-BGSrc2Alpha     = 64
-</pre>
+    <dt>Red</dt>
+    <dt>Green</dt>
+    <dt>Yellow</dt>
+    <dt>Blue</dt>
+    <dt>Magenta</dt>
+    <dt>Cyan</dt>
+    <dt>DarkFore</dt>
+    <dt>DarkBack</dt>
+    <dt>DarkRed</dt>
+    <dt>DarkGreen</dt>
+    <dt>DarkYellow</dt>
+    <dt>DarkBlue</dt>
+    <dt>DarkMagenta</dt>
+    <dt>DarkCyan</dt>
+    <dd>\x8Ae\x95\xB6\x8E\x9A\x90F</dd>
 
-<h2>color theme</h2>
+    <dt>\x92l (red), (green), (blue)</dt>
+    <dd>\x8Ae\x92l\x82\xCD0\x82\xA9\x82\xE7255</dd>
 
-  TBD<br>
+    <dt>\x92l (color)</dt>
+    <dd>
+      #RRBBGG \x82̌`\x8E\xAE\x82ŁA\x8Ae\x81X00 \x82\xA9\x82\xE7 FF \x82܂\xC5
+    </dd>
 
-  TODO
-  <ul>
-    <li>\x8Ed\x97l\x8F\x91\x82\xAD
-    <li>release/theme/color/readme.md \x82Ƀ\x8A\x83\x93\x83N\x92\xA3\x82\xE9
-  </ul>
+  </dl>
 
 </body>
 </html>

Modified: trunk/installer/release/theme/color/README.md
===================================================================
--- trunk/installer/release/theme/color/README.md	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/installer/release/theme/color/README.md	2022-10-10 04:48:24 UTC (rev 10303)
@@ -1,5 +1,9 @@
 # color theme folder
 
+- see [Setup Files]/[theme file] in help
+- Tera Term color theme plugin was referened.
+  - https://osdn.net/users/doda/pf/TTXColorTheme/
+
 ## themes
 
 - Solarized Dark
@@ -19,12 +23,3 @@
 - Color UniversalDesign 4
   - 色覚多様性に対応した設定例
   - カラーユニバーサルデザイン(CUD)推奨配色セット ver.4に準拠
-
-## format
-
-- 未決定
-  - まだ変更すると思う
-  - TBD
-- Tera Term カラーテーマプラグイン を参考にしました。
-  - https://osdn.net/users/doda/pf/TTXColorTheme/
-

Modified: trunk/teraterm/teraterm/theme.h
===================================================================
--- trunk/teraterm/teraterm/theme.h	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/teraterm/teraterm/theme.h	2022-10-10 04:48:24 UTC (rev 10303)
@@ -66,22 +66,26 @@
 // color theme
 ////////////////////
 
+// Character Attributes
+//	Normal(SGR 0), BOLD(SGR 1),...
 typedef struct {
-	BOOL change;
-	BOOL enable;
-	COLORREF fg;
-	COLORREF bg;
+	BOOL change;		// TRUE/FALSE = default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9/\x95ύX\x82\xB5\x82Ȃ\xA2
+	BOOL enable;		// TRUE/FALSE = \x82\xB1\x82̕\xB6\x8E\x9A\x91\xAE\x90\xAB(Bold attribute\x93\x99)\x82̓Ǝ\xA9\x90F\x82\xF0\x97L\x8C\xF8/\x96\xB3\x8C\xF8\x82ɂ\xB7\x82\xE9
+	COLORREF fg;		// Fore color (\x95\xB6\x8E\x9A\x91\xAE\x90\xAB\x82̓Ǝ\xA9\x90F\x82\xAA\x97L\x8C\xF8\x82ȏꍇ)
+	COLORREF bg;		// Back color (\x95\xB6\x8E\x9A\x91\xAE\x90\xAB\x82̓Ǝ\xA9\x90F\x82\xAA\x97L\x8C\xF8\x82ȏꍇ)
 } TColorSetting;
 
+// ANSI Color
 typedef struct {
-	BOOL change;
-	BOOL enable;
-	COLORREF color[16];
+	BOOL change;			// TRUE/FALSE =  default\x90F\x82\xA9\x82\xE7\x95ύX\x82\xB7\x82\xE9/\x95ύX\x82\xB5\x82Ȃ\xA2
+	//BOOL enable;			// \x95s\x97v\x82\xA9?
+	COLORREF color[16];		// ANSI color 256\x90F \x82̍ŏ\x89\x82\xCC16\x90F, (\x91O\x94\xBC\x82\xAA\x88Â\xA2\x90F,\x8C㔼\x82\xAA\x8C\xB4\x90F\x82̖\xBE\x82邢\x90F)
 } TAnsiColorSetting;
 
+// color theme
 typedef struct {
-	char name[50];
-	TColorSetting vt;
+	wchar_t name[50];
+	TColorSetting vt;			// SGR 0
 	TColorSetting bold;			// SGR 1
 	TColorSetting underline;	// SGR 4
 	TColorSetting blink;		// SGR 5
@@ -100,8 +104,7 @@
 
 // file / themefile.cpp
 void ThemeLoadBG(const wchar_t *file, BGTheme *bg_theme);
-void ThemeLoadColor(const wchar_t *fn, TColorTheme *color_theme);
-void ThemeLoadColorOld(const wchar_t *file, TColorTheme *theme);
+void ThemeLoadColor(const wchar_t *fname, TColorTheme *color_theme);
 void ThemeLoad(const wchar_t *fname, BGTheme *bg_theme, TColorTheme *color_theme);
 void ThemeSaveBG(const BGTheme *bg_theme, const wchar_t *fname);
 void ThemeSaveColor(TColorTheme *color_theme, const wchar_t *fname);

Modified: trunk/teraterm/teraterm/themedlg.cpp
===================================================================
--- trunk/teraterm/teraterm/themedlg.cpp	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/teraterm/teraterm/themedlg.cpp	2022-10-10 04:48:24 UTC (rev 10303)
@@ -431,7 +431,7 @@
 	const int b = GetBValue(c);
 
 	wchar_t color_str[64];
-	swprintf_s(color_str, L"0x%02x%02x%02x", r,g,b);
+	swprintf_s(color_str, L"#%02x%02x%02x", r,g,b);
 	item.mask = LVIF_TEXT;
 	item.iItem = y;
 	item.iSubItem = 2;
@@ -498,7 +498,7 @@
 			//ListView_InsertColumn(hWndList, 1, &lvcol);
 			SendMessage(hWndList, LVM_INSERTCOLUMNA, 1, (LPARAM)&lvcol);
 
-			lvcol.pszText = (LPSTR)"value(RRGGBB)";
+			lvcol.pszText = (LPSTR)"value(#RRGGBB)";
 			lvcol.iSubItem = 2;
 			//ListView_InsertColumn(hWndList, 1, &lvcol);
 			SendMessage(hWndList, LVM_INSERTCOLUMNA, 2, (LPARAM)&lvcol);
@@ -748,7 +748,12 @@
 			OPENFILENAMEW ofn = {};
 			wchar_t theme_file[MAX_PATH];
 
-			wcscpy_s(theme_file, _countof(theme_file), ts->EtermLookfeel.BGThemeFileW);
+			if (ts->EtermLookfeel.BGThemeFileW != NULL) {
+				wcscpy_s(theme_file, _countof(theme_file), ts->EtermLookfeel.BGThemeFileW);
+			}
+			else {
+				theme_file[0] = 0;
+			}
 
 			ofn.lStructSize = get_OPENFILENAME_SIZEW();
 			ofn.hwndOwner   = hWnd;

Modified: trunk/teraterm/teraterm/themefile.cpp
===================================================================
--- trunk/teraterm/teraterm/themefile.cpp	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/teraterm/teraterm/themefile.cpp	2022-10-10 04:48:24 UTC (rev 10303)
@@ -35,6 +35,7 @@
 #include "asprintf.h"
 #include "inifile_com.h"
 #include "win32helper.h"
+#include "codeconv.h"
 
 #include "theme.h"
 
@@ -42,18 +43,36 @@
 #define BG_SECTION "BG"
 #define BG_SECTIONW L"BG"
 #define BG_DESTFILE "BGDestFile"
-#define BG_DESTFILEW L"BGDestFile"
-//#define BG_THEME_IMAGEFILE "theme\\ImageFile.INI"
-//#define BG_THEME_IMAGEFILE_DEFAULT "theme\\*.INI"
-#define BG_THEME_IMAGE_BRIGHTNESS_DEFAULT 64
 #define BG_THEME_IMAGE_BRIGHTNESS1 "BGSrc1Alpha"
-#define BG_THEME_IMAGE_BRIGHTNESS1W L"BGSrc1Alpha"
 #define BG_THEME_IMAGE_BRIGHTNESS2 "BGSrc2Alpha"
-//#define BG_THEME_IMAGEFILE_NAME "ImageFile.INI"
-//#define BG_THEME_IMAGEFILE_NAMEW L"ImageFile.INI"
-//#define BG_THEME_THEMEFILE_SCALE "Scale.INI"
-//#define BG_THEME_THEMEFILE_TILE "Tile.INI"
 
+/**
+ *	ANSI256\x90F\x8E\x9E\x82̐擪16\x90F
+ *	INI\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82ނƂ\xAB\x82̃L\x81[\x83\x8F\x81[\x83h\x82ƐF\x94ԍ\x86\x91Ή\x9E
+ */
+static const struct {
+	int index;
+	const wchar_t *key;
+} ansi_list[] = {
+	7 + 8, L"Fore",
+	0, L"Back",
+	1 + 8, L"Red",
+	2 + 8, L"Green",
+	3 + 8, L"Yellow",
+	4 + 8, L"Blue",
+	5 + 8, L"Magenta",
+	6 + 8, L"Cyan",
+
+	7, L"DarkFore",
+	0 + 8, L"DarkBack",
+	1, L"DarkRed",
+	2, L"DarkGreen",
+	3, L"DarkYellow",
+	4, L"DarkBlue",
+	5, L"DarkMagenta",
+	6, L"DarkCyan",
+};
+
 const BG_PATTERN_ST *ThemeBGPatternList(int index)
 {
 	static const BG_PATTERN_ST bg_pattern_list[] = {
@@ -72,28 +91,50 @@
 	return &bg_pattern_list[index];
 }
 
+static COLORREF LoadColorOneANSI(const wchar_t *section, const wchar_t *key, const wchar_t *file, COLORREF defcolor)
+{
+	int r;
+	wchar_t *str;
+	DWORD e = hGetPrivateProfileStringW(section, key, NULL, file, &str);
+	if (e != 0 || *str == 0) {
+		free(str);
+		return defcolor;
+	}
+	if (*str == L'#') {
+		// #RRGGBB \x8C`\x8E\xAE
+		DWORD i32;
+		r = swscanf_s(str, L"#%08x", &i32);
+		if (r == 1) {
+			free(str);
+			return RGB((i32 & 0xff0000) >> 16, (i32 & 0x00ff00) >> 8, (i32 & 0x0000ff));
+		}
+	}
+	// R, G, B \x8C`\x8E\xAE
+	int red, green, blue;
+	r = swscanf_s(str, L"%d , %d , %d", &red, &green, &blue);
+	free(str);
+	if (r == 3) {
+		return RGB(red, green, blue);
+	}
+	return defcolor;
+}
+
 static COLORREF BGGetColor(const char *name, COLORREF defcolor, const wchar_t *file)
 {
-	unsigned int r, g, b;
-	char colorstr[256], defstr[256];
-
-	_snprintf_s(defstr, sizeof(defstr), _TRUNCATE, "%d,%d,%d", GetRValue(defcolor), GetGValue(defcolor),
-				GetBValue(defcolor));
-
-	GetPrivateProfileStringAFileW(BG_SECTION, name, defstr, colorstr, 255, file);
-
-	r = g = b = 0;
-
-	sscanf(colorstr, "%d , %d , %d", &r, &g, &b);
-
-	return RGB(r, g, b);
+	const wchar_t *section = BG_SECTIONW;
+	wchar_t *keyW = ToWcharA(name);
+	COLORREF color = LoadColorOneANSI(section, keyW, file, defcolor);
+	free(keyW);
+	return color;
 }
 
 /*
  *	color theme\x97p\x83\x8D\x81[\x83h
  */
-void ThemeLoadColorOld(const wchar_t *file, TColorTheme *theme)
+static void ThemeLoadColorOld(const wchar_t *file, TColorTheme *theme)
 {
+	theme->ansicolor.change = TRUE;
+
 	theme->ansicolor.color[IdFore] = BGGetColor("Fore", theme->ansicolor.color[IdFore], file);
 	theme->ansicolor.color[IdBack] = BGGetColor("Back", theme->ansicolor.color[IdBack], file);
 	theme->ansicolor.color[IdRed] = BGGetColor("Red", theme->ansicolor.color[IdRed], file);
@@ -114,39 +155,64 @@
 
 	theme->vt.fg = BGGetColor("VTFore", theme->vt.fg, file);
 	theme->vt.bg = BGGetColor("VTBack", theme->vt.bg, file);
+	theme->vt.change = TRUE;
+	theme->vt.enable = TRUE;
 
 	theme->blink.fg = BGGetColor("VTBlinkFore", theme->blink.fg, file);
 	theme->blink.bg = BGGetColor("VTBlinkBack", theme->blink.bg, file);
+	theme->blink.change = TRUE;
+	theme->blink.enable = TRUE;
 
 	theme->bold.fg = BGGetColor("VTBoldFore", theme->bold.fg, file);
 	theme->bold.bg = BGGetColor("VTBoldBack", theme->bold.bg, file);
+	theme->bold.change = TRUE;
+	theme->bold.enable = TRUE;
 
 	theme->underline.fg = BGGetColor("VTUnderlineFore", theme->underline.fg, file);
 	theme->underline.bg = BGGetColor("VTUnderlineBack", theme->underline.bg, file);
+	theme->underline.change = TRUE;
+	theme->underline.enable = TRUE;
 
 	theme->reverse.fg = BGGetColor("VTReverseFore", theme->reverse.fg, file);
 	theme->reverse.bg = BGGetColor("VTReverseBack", theme->reverse.bg, file);
+	theme->reverse.change = TRUE;
+	theme->reverse.enable = TRUE;
 
 	theme->url.fg = BGGetColor("URLFore", theme->url.fg, file);
 	theme->url.bg = BGGetColor("URLBack", theme->url.bg, file);
+	theme->url.change = TRUE;
+	theme->url.enable = TRUE;
 }
 
 /**
- *	BG\x82\xF0\x83\x8D\x81[\x83h
+ *	save color one attribute
  */
-static void BGSaveColorOne(const TColorSetting *color, const char *key, const wchar_t *fn)
+static void SaveColorAttr(const wchar_t *section, const wchar_t *key, const TColorSetting *color, const wchar_t *fn)
 {
-	char buf[512];
+	wchar_t *buf;
 	COLORREF fg = color->fg;
 	COLORREF bg = color->bg;
+	int sp_len = 20 - (int)wcslen(key);
+	aswprintf(&buf, L"%*.*s %d,%d, %3hhu,%3hhu,%3hhu, %3hhu,%3hhu,%3hhu      ; #%02x%02x%02x, #%02x%02x%02x",
+			  sp_len, sp_len, L"                    ",
+			  color->change, color->enable,
+			  GetRValue(fg), GetGValue(fg), GetBValue(fg),
+			  GetRValue(bg), GetGValue(bg), GetBValue(bg),
+			  GetRValue(fg), GetGValue(fg), GetBValue(fg),
+			  GetRValue(bg), GetGValue(bg), GetBValue(bg));
+	WritePrivateProfileStringW(section, key, buf, fn);
+	free(buf);
+}
 
-	sprintf(buf, "%d,%d, %d,%d,%d, %d,%d,%d", 1, 1,
-			GetRValue(fg), GetGValue(fg), GetBValue(fg),
-			GetRValue(bg), GetGValue(bg), GetBValue(bg));
-	WritePrivateProfileStringAFileW("Color Theme", key, buf, fn);
+static void BGSaveColorOne(const TColorSetting *color, const char *key, const wchar_t *fn)
+{
+	const wchar_t *section = L"Color Theme";
+	wchar_t *keyW = ToWcharA(key);
+	SaveColorAttr(section, keyW, color, fn);
+	free(keyW);
 }
 
-static void BGSaveColorANSI(TAnsiColorSetting *color, const wchar_t *fn)
+static void BGSaveColorANSI(const TAnsiColorSetting *color, const wchar_t *fn)
 {
 	int i;
 	wchar_t *buff = NULL;
@@ -155,7 +221,7 @@
 	for (i = 0; i < 16; i++) {
 		wchar_t color_str[32];
 		const COLORREF c = color->color[i];
-		swprintf(color_str, _countof(color_str), L"%d,%d,%d, ", GetRValue(c), GetGValue(c), GetBValue(c));
+		swprintf(color_str, _countof(color_str), L"%hhu,%hhu,%hhu, ", GetRValue(c), GetGValue(c), GetBValue(c));
 		awcscat(&buff, color_str);
 	}
 
@@ -163,8 +229,39 @@
 	free(buff);
 }
 
-void ThemeSaveColor(TColorTheme *color_theme, const wchar_t *fn)
+static void SaveColorOneANSI(const wchar_t *section, const wchar_t *key, const wchar_t *file, COLORREF color, int index)
 {
+	const BYTE r = GetRValue(color);
+	const BYTE g = GetGValue(color);
+	const BYTE b = GetBValue(color);
+	int sp_len = 20 - (int)wcslen(key);
+	wchar_t *str;
+	aswprintf(&str, L"%*.*s %3hhu, %3hhu, %3hhu  ; #%02hhx%02hhx%02hhx ; ANSIColor[%2d]",
+			  sp_len, sp_len, L"                    ",
+			  r, g, b, r, g, b, index);
+	WritePrivateProfileStringW(section, key, str, file);
+	free(str);
+}
+
+static void SaveColorANSINew(const wchar_t *section, const TAnsiColorSetting *color, const wchar_t *fname)
+{
+	wchar_t *str;
+	aswprintf(&str, L"%d", color->change);
+	WritePrivateProfileStringW(section, L"ANSIColor", str, fname);
+	free(str);
+
+	for (int i = 0; i < _countof(ansi_list); i++) {
+		const int index = ansi_list[i].index;
+		const wchar_t *key = ansi_list[i].key;
+		SaveColorOneANSI(section, key, fname, color->color[index], index);
+	}
+}
+
+/**
+ *	\x83J\x83\x89\x81[\x83e\x81[\x83}\x82̕ۑ\xB6
+ */
+void ThemeSaveColorOld(TColorTheme *color_theme, const wchar_t *fn)
+{
 	WritePrivateProfileStringAFileW("Color Theme", "Theme", "teraterm theme editor", fn);
 
 	BGSaveColorOne(&(color_theme->vt), "VTColor", fn);
@@ -172,10 +269,26 @@
 	BGSaveColorOne(&(color_theme->blink), "BlinkColor", fn);
 	BGSaveColorOne(&(color_theme->reverse), "ReverseColor", fn);
 	BGSaveColorOne(&(color_theme->url), "URLColor", fn);
+	BGSaveColorOne(&(color_theme->underline), "VTUnderlineColor", fn);
 
 	BGSaveColorANSI(&(color_theme->ansicolor), fn);
 }
 
+void ThemeSaveColor(TColorTheme *color_theme, const wchar_t *fn)
+{
+	const wchar_t *section = L"Color Theme";
+	WritePrivateProfileStringW(section, L"Theme", color_theme->name, fn);
+
+	BGSaveColorOne(&(color_theme->vt), "VTColor", fn);
+	BGSaveColorOne(&(color_theme->bold), "BoldColor", fn);
+	BGSaveColorOne(&(color_theme->blink), "BlinkColor", fn);
+	BGSaveColorOne(&(color_theme->reverse), "ReverseColor", fn);
+	BGSaveColorOne(&(color_theme->url), "URLColor", fn);
+	BGSaveColorOne(&(color_theme->underline), "VTUnderlineColor", fn);
+
+	SaveColorANSINew(section, &(color_theme->ansicolor), fn);
+}
+
 void WriteInt3(const char *Sect, const char *Key, const wchar_t *FName,
 			   int i1, int i2, int i3)
 {
@@ -350,9 +463,9 @@
 	// ANSIColor16\x82́A\x96\xBE\x82邢/\x88Â\xA2\x83O\x83\x8B\x81[\x83v\x82\xAA\x93\xFC\x82\xEA\x91ւ\xED\x82\xC1\x82Ă\xA2\x82\xE9
 	const static int index256[] = {
 		0,
+		1, 2, 3, 4, 5, 6, 7,
+		8,
 		9, 10, 11, 12, 13, 14, 15,
-		8,
-		1, 2, 3, 4, 5, 6, 7
 	};
 
 	GetPrivateProfileStringAFileW("Color Theme", "ANSIColor", "0", Buff, sizeof(Buff), fn);
@@ -361,7 +474,7 @@
 	color->change = c;
 
 	GetNthNum(Buff, 2, &c);
-	color->enable = c;
+	//color->enable = c;
 
 	for (c=0; c<16; c++) {
 		int idx = index256[c];
@@ -396,16 +509,18 @@
 		GetNthNum(Buff, 8, &b);
 		color->bg = RGB(r, g, b);
 	}
-
-	return;
 }
 
-/*
- *	\x83J\x83\x89\x81[\x83e\x81[\x83}ini\x83t\x83@\x83C\x83\x8B\x82\xF0\x83\x8D\x81[\x83h\x82\xB7\x82\xE9
+/**
+ *	\x83J\x83\x89\x81[\x83e\x81[\x83}\x83v\x83\x89\x83O\x83C\x83\x93\x94\xC5 ini \x83t\x83@\x83C\x83\x8B\x93ǂݍ\x9E\x82\xDD
  */
-void ThemeLoadColor(const wchar_t *fn, TColorTheme *color_theme)
+static void LoadColorPlugin(const wchar_t *fn, TColorTheme *color_theme)
 {
-	GetPrivateProfileStringAFileW("Color Theme", "Theme", "", color_theme->name, _countof(color_theme->name), fn);
+	const wchar_t *section = L"Color Theme";
+	wchar_t *name;
+	hGetPrivateProfileStringW(section, L"Theme", NULL, fn, &name);
+	wcscpy_s(color_theme->name, _countof(color_theme->name), name);
+	free(name);
 
 	ReadColorSetting(&(color_theme->vt), "VTColor", fn);
 	ReadColorSetting(&(color_theme->bold), "BoldColor", fn);
@@ -416,144 +531,108 @@
 	ReadANSIColorSetting(&(color_theme->ansicolor), fn);
 }
 
-#if 0
-#define SECTION "Color Theme"
-
-static void ReadANSIColorSetting(TAnsiColorSetting *color, const wchar_t *fn)
+/**
+ *	\x83J\x83\x89\x81[\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x93ǂݍ\x9E\x82\xDD,1\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g\x95\xAA
+ */
+static void LoadColorAttr(const wchar_t *section, const wchar_t *key, const wchar_t *file, TColorSetting *attr)
 {
-	char Buff[512];
-	int c, r, g, b;
+	wchar_t *str;
+	DWORD e = hGetPrivateProfileStringW(section, key, NULL, file, &str);
+	if (e != 0 || *str == 0) {
+		free(str);
+		return;
+	}
 
-	GetPrivateProfileStringAFileW(SECTION, "ANSIColor", "0", Buff, sizeof(Buff), fn);
+	BOOL change = FALSE;
+	BOOL enable = FALSE;
+	int fields;
 
-	GetNthNum(Buff, 1, &c);
-	color->change = c;
+	DWORD fore_rgb;
+	DWORD back_rgb;
+	fields = swscanf_s(str, L"%d, %d, #%06x, #%06x", &change, &enable, &fore_rgb, &back_rgb);
+	if (fields == 4) {
+		free(str);
+		attr->change = change;
+		attr->enable = enable;
+		attr->fg = RGB((fore_rgb & 0xff0000) >> 16, (fore_rgb & 0x00ff00) >> 8, (fore_rgb & 0x0000ff));
+		attr->bg = RGB((back_rgb & 0xff0000) >> 16, (back_rgb & 0x00ff00) >> 8, (back_rgb & 0x0000ff));
+		return;
+	}
 
-	GetNthNum(Buff, 2, &c);
-	color->enable = c;
-
-	for (c=0; c<16; c++) {
-		GetNthNum(Buff, c * 3 + 3, &r);
-		GetNthNum(Buff, c * 3 + 4, &g);
-		GetNthNum(Buff, c * 3 + 5, &b);
-		color->color[c] = RGB(r, g, b);
+	BYTE fg_red, fg_green, fg_blue;
+	BYTE bg_red, bg_green, bg_blue;
+	fields = swscanf_s(str, L"%d, %d, %hhu, %hhu, %hhu, %hhu, %hhu, %hhu", &change, &enable, &fg_red, &fg_green,
+					   &fg_blue, &bg_red, &bg_green, &bg_blue);
+	if (fields == 8) {
+		free(str);
+		attr->change = change;
+		attr->enable = enable;
+		attr->fg = RGB(fg_red, fg_green, fg_blue);
+		attr->bg = RGB(bg_red, bg_green, bg_blue);
+		return;
 	}
-
-	return;
+	fields = swscanf_s(str, L"%d, %d", &change, &enable);
+	if (fields == 2) {
+		free(str);
+		attr->change = change;
+		attr->enable = FALSE;	 // \x90F\x8Ew\x92肪\x93ǂ߂Ȃ\xA9\x82\xC1\x82\xBD\x82̂ŁA\x95\xB6\x8E\x9A\x91\xAE\x90\xAB\x82̓Ǝ\xA9\x90F\x82͖\xB3\x8C\xF8
+		return;
+	}
+	fields = swscanf_s(str, L"%d", &change);
+	free(str);
+	if (fields == 1) {
+		attr->change = FALSE;	 // \x90F\x95ύX\x82͂\xB5\x82Ȃ\xA2
+		return;
+	}
 }
 
-static void ReadColorSetting(TColorSetting *color, char *ent, const wchar_t *fn)
+/*
+ *	color theme\x97p\x83\x8D\x81[\x83h
+ */
+static void ThemeLoadColorDraft(const wchar_t *file, TColorTheme *theme)
 {
-	char Key[32], Buff[512];
-	int c, r, g, b;
+	const wchar_t *section = L"Color Theme";
 
-	_snprintf_s(Key, sizeof(Key), _TRUNCATE, "%s", ent);
-	GetPrivateProfileStringAFileW(SECTION, Key, "0", Buff, sizeof(Buff), fn);
+	wchar_t *name;
+	hGetPrivateProfileStringW(section, L"Theme", NULL, file, &name);
+	wcscpy_s(theme->name, _countof(theme->name), name);
+	free(name);
 
-	GetNthNum(Buff, 1, &c);
-	color->change = c;
+	struct {
+		const wchar_t *key;
+		TColorSetting *color;
+	} attr_list[] = {
+		L"VTColor", &(theme->vt),
+		L"BoldColor", &(theme->bold),
+		L"BlinkColor", &(theme->blink),
+		L"ReverseColor", &(theme->reverse),
+		L"URLColor", &(theme->url),
+		L"VTUnderlineColor", &(theme->underline),
+	};
+	for (int i = 0; i < _countof(attr_list); i++) {
+		LoadColorAttr(section, attr_list[i].key, file, attr_list[i].color);
+	}
 
-	GetNthNum(Buff, 2, &c);
-	color->enable = c;
-
-	GetNthNum(Buff, 3, &r);
-	GetNthNum(Buff, 4, &g);
-	GetNthNum(Buff, 5, &b);
-	color->fg = RGB(r, g, b);
-
-	GetNthNum(Buff, 6, &r);
-	GetNthNum(Buff, 7, &g);
-	GetNthNum(Buff, 8, &b);
-	color->bg = RGB(r, g, b);
+	theme->ansicolor.change = (BOOL)GetPrivateProfileIntW(section, L"ANSIColor", 1, file);
+	for (int i = 0; i < _countof(ansi_list); i++) {
+		const int index = ansi_list[i].index;
+		const wchar_t *key = ansi_list[i].key;
+		theme->ansicolor.color[index] = LoadColorOneANSI(section, key, file, theme->ansicolor.color[index]);
+	}
 }
 
-static void ReadColorSetting(TColorSetting *color, char *ent, const wchar_t *fn)
-{
-	char Key[32], Buff[512];
-	int c, r, g, b;
-
-	_snprintf_s(Key, sizeof(Key), _TRUNCATE, "%s", ent);
-	GetPrivateProfileStringAFileW(SECTION, Key, "0", Buff, sizeof(Buff), fn);
-
-	GetNthNum(Buff, 1, &c);
-	color->change = c;
-
-	GetNthNum(Buff, 2, &c);
-	color->enable = c;
-
-	GetNthNum(Buff, 3, &r);
-	GetNthNum(Buff, 4, &g);
-	GetNthNum(Buff, 5, &b);
-	color->fg = RGB(r, g, b);
-
-	GetNthNum(Buff, 6, &r);
-	GetNthNum(Buff, 7, &g);
-	GetNthNum(Buff, 8, &b);
-	color->bg = RGB(r, g, b);
-}
-
-static void ReadColorTheme(const wchar_t *fn, TColorTheme *data)
-{
-	memset(data, 0, sizeof(*data));
-
-	GetPrivateProfileStringAFileW(SECTION, "Theme", "", data->name,
-								  sizeof(data->name), fn);
-	if (data->name[0] == '\0')
-		return;
-
-	ReadColorSetting(&data->vt, "VTColor", fn);
-	ReadColorSetting(&data->bold, "BoldColor", fn);
-	ReadColorSetting(&data->blink, "BlinkColor", fn);
-	ReadColorSetting(&data->reverse, "ReverseColor", fn);
-	ReadColorSetting(&data->url, "URLColor", fn);
-
-	ReadANSIColorSetting(&data->ansicolor, fn);
-}
-
-#endif
-
-#if 0
-static void WriteInt(PCHAR Sect, PCHAR Key, const wchar_t *FName, int i)
-{
-	char Temp[15];
-	_snprintf_s(Temp, sizeof(Temp), _TRUNCATE, "%d", i);
-	WritePrivateProfileStringAFileW(Sect, Key, Temp, FName);
-}
-#endif
-
-/**
- *	\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82̏\x91\x82\xAB\x8D\x9E\x82\xDD
+/*
+ *	\x83J\x83\x89\x81[\x83e\x81[\x83}ini\x83t\x83@\x83C\x83\x8B\x82\xF0\x83\x8D\x81[\x83h\x82\xB7\x82\xE9
  */
-#if 0
-void BGWriteThemeFile(const wchar_t *theme_file)
+void ThemeLoadColor(const wchar_t *fn, TColorTheme *color_theme)
 {
-	WritePrivateProfileStringAFileW(BG_SECTION, BG_DESTFILE, BGDest.file, theme_file);
-	BGSrc1.alpha = GetPrivateProfileIntAFileW(BG_SECTION, "BGSrc1Alpha", BGSrc1.alpha, theme_file);
-	WriteInt(BG_SECTION, BG_THEME_IMAGE_BRIGHTNESS1, theme_file, BGSrc1.alpha);
-	WriteInt(BG_SECTION, BG_THEME_IMAGE_BRIGHTNESS2, theme_file, BGSrc2.alpha);
+	ThemeGetColorDefault(color_theme);
+	LoadColorPlugin(fn, color_theme);
+	ThemeLoadColorOld(fn, color_theme);
+	ThemeLoadColorDraft(fn, color_theme);
 }
-#endif
 
 /**
- *	\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82̏\x91\x82\xAB\x8D\x9E\x82\xDD
- */
-#if 0
-static void BGWriteIniFile(const wchar_t *file)
-{
-	WritePrivateProfileStringAFileW(BG_SECTION, BG_DESTFILE, BGDest.file, file);
-	WritePrivateProfileStringAFileW(BG_SECTION, "BGDestType",
-									BGDest.type == BG_PICTURE ? "picture" : "color", file);
-	WriteCOLORREF(BG_SECTION, "BGDestColor", file, BGDest.color);
-	WritePrivateProfileStringAFileW(BG_SECTION, "BGDestPattern", GetBGPatternStr(BGDest.pattern), file);
-
-	WritePrivateProfileIntAFileW(BG_SECTION, "BGSrc1Alpha", BGSrc1.alpha, file);
-
-	WritePrivateProfileIntAFileW(BG_SECTION, "BGSrc2Alpha", BGSrc2.alpha, file);
-	WriteCOLORREF(BG_SECTION, "BGSrc2Color", file, BGSrc2.color);
-}
-#endif
-
-/**
  *	\x83e\x81[\x83}\x83t\x83@\x83C\x83\x8B\x82\xF0\x93ǂݍ\x9E\x82\xDE
  *
  * @param file				\x83t\x83@\x83C\x83\x8B\x96\xBC

Modified: trunk/teraterm/teraterm/vtdisp.c
===================================================================
--- trunk/teraterm/teraterm/vtdisp.c	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/teraterm/teraterm/vtdisp.c	2022-10-10 04:48:24 UTC (rev 10303)
@@ -3583,18 +3583,34 @@
 {
 	int i;
 
+	wcscpy_s(data->name, _countof(data->name), L"Tera Term color theme");
+	data->vt.change = TRUE;
+	data->vt.enable = TRUE;
 	data->vt.fg = BGVTColor[0];
 	data->vt.bg = BGVTColor[1];
+	data->bold.change = TRUE;
+	data->bold.enable = TRUE;
 	data->bold.fg = BGVTBoldColor[0];
 	data->bold.bg = BGVTBoldColor[1];
+	data->underline.change = TRUE;
+	data->underline.enable = TRUE;
 	data->underline.fg = BGVTUnderlineColor[0];
 	data->underline.bg = BGVTUnderlineColor[1];
+	data->blink.change = TRUE;
+	data->blink.enable = TRUE;
 	data->blink.fg = BGVTBlinkColor[0];
 	data->blink.bg = BGVTBlinkColor[1];
+	data->reverse.change = TRUE;
+	data->reverse.enable = TRUE;
 	data->reverse.fg = BGVTReverseColor[0];
 	data->reverse.bg = BGVTReverseColor[1];
+	data->url.change = TRUE;
+	data->url.enable = TRUE;
 	data->url.fg = BGURLColor[0];
 	data->url.bg = BGURLColor[1];
+
+	// ANSI color
+	data->ansicolor.change = TRUE;
 	for (i = 0; i < 16; i++) {
 		data->ansicolor.color[i] = ANSIColor[i];
 	}

Modified: trunk/teraterm/teraterm/vtdisp.h
===================================================================
--- trunk/teraterm/teraterm/vtdisp.h	2022-10-07 15:43:29 UTC (rev 10302)
+++ trunk/teraterm/teraterm/vtdisp.h	2022-10-10 04:48:24 UTC (rev 10303)
@@ -150,6 +150,7 @@
 extern BOOL IMEstat;
 extern BOOL IMECompositionState;
 
+// for DispHScroll(), DispVScroll()
 #define SCROLL_BOTTOM	1
 #define SCROLL_LINEDOWN	2
 #define SCROLL_LINEUP	3
@@ -158,6 +159,7 @@
 #define SCROLL_POS	6
 #define SCROLL_TOP	7
 
+// for DispShowWindow()
 #define WINDOW_MINIMIZE 1
 #define WINDOW_MAXIMIZE 2
 #define WINDOW_RESTORE  3
@@ -166,8 +168,6 @@
 #define WINDOW_REFRESH  6
 #define WINDOW_TOGGLE_MAXIMIZE 7
 
-#include "theme.h"
-
 #ifdef __cplusplus
 }
 #endif


ttssh2-commit メーリングリストの案内
Back to archive index