1 /*$
2  Copyright (C) 2016-2020 Azel.
3 
4  This file is part of AzPainterB.
5 
6  AzPainterB is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  AzPainterB is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 $*/
19 
20 /*****************************
21  * 設定データ
22  *****************************/
23 
24 #ifndef DEF_CONFIG_H
25 #define DEF_CONFIG_H
26 
27 #include "mStrDef.h"
28 #include "mListDef.h"
29 
30 /** 個数 */
31 
32 #define CONFIG_RECENTFILE_NUM   10	//最近使ったファイル
33 #define CONFIG_RECENTDIR_NUM    8   //ディレクトリの履歴
34 #define CONFIG_IMAGESIZE_NUM    10	//新規作成の履歴と登録
35 #define CONFIG_POINTERBTT_NUM   16  //ポインタデバイスのボタン最大数
36 #define CONFIG_POINTERBTT_MAXNO 15  //ボタン番号の最大値
37 
38 
39 /** 新規作成の履歴・記録データ */
40 
41 typedef struct
42 {
43 	int w,h,dpi;
44 	uint8_t unit; //0:px 1:cm 2:inch 255:none
45 }ImageSizeData;
46 
47 /** 保存設定 */
48 
49 typedef struct
50 {
51 	uint32_t flags;
52 	int32_t tpcol;		//透過色 (PNG/GIF 共通。上位ビット ON でなし)
53 	uint16_t jpeg_sampling_factor;
54 	uint8_t jpeg_quality,
55 		png_complevel,
56 		psd_type;
57 }ConfigSaveOption;
58 
59 /*-----------------*/
60 
61 
62 /** ConfigData */
63 
64 typedef struct _ConfigData
65 {
66 	mList grid_list;	//グリッドデータのリスト
67 
68 	ConfigSaveOption save;	//保存設定
69 
70 	ImageSizeData imgsize_recent[CONFIG_IMAGESIZE_NUM],	//新規作成の履歴
71 		imgsize_record[CONFIG_IMAGESIZE_NUM];			//新規作成の記録
72 
73 	mBox box_mainwin,			//メインウィンドウの位置とサイズ
74 		box_textdlg;			//テキストダイアログの位置とサイズ
75 	mPoint pt_filterdlg;		//フィルタダイアログ位置
76 
77 	int canvasview_zoom_normal,	//キャンバスビュー:非ルーペ時の倍率 (100%=100)
78 		canvasview_zoom_loupe,	//ルーペ時の倍率
79 		savedup_format,			//複製保存時の保存形式 (0 で現在のファイルと同じ)
80 		undo_maxbufsize;		//アンドゥ最大バッファサイズ
81 
82 	uint32_t fView,				//表示フラグ
83 		optflags,				//オプションフラグ
84 		colCanvasBkgnd,			//キャンバス背景色
85 		colBkgndPlaid[2];		//イメージ背景色・チェック柄の色
86 
87 	uint16_t init_imgw,				//起動時の初期幅と高さ
88 		init_imgh,
89 		pane_width[3],				//各ペインの幅
90 		canvasZoomStep_low,			//キャンバス倍率、1段階 (100%以下)
91 		canvasZoomStep_hi,			//キャンバス倍率、1段階 (100%以上)
92 		canvasAngleStep,			//キャンバス回転角度、1段階
93 		dragBrushSize_step,			//+Shift ブラシサイズ変更の増減幅
94 		undo_maxnum,				//アンドゥ最大回数
95 		iconsize_toolbar,			//アイコンサイズ(ツールバー)
96 		iconsize_layer,				//アイコンサイズ(レイヤ)
97 		iconsize_other;				//アイコンサイズ(ほか)
98 
99 	uint8_t mainwin_maximized,		//メインウィンドウが最大化されているか
100 		openimage_flags,			//イメージファイルを開く時のフラグ
101 		canvas_resize_flags,		//キャンバスサイズ変更フラグ
102 		canvas_scale_type,			//キャンバス拡大縮小の補間方法
103 		canvasview_flags,			//キャンバスビュー:フラグ
104 		canvasview_btt[5],			//キャンバスビュー:操作
105 		imageviewer_flags,			//イメージビューア:フラグ
106 		imageviewer_btt[5],			//イメージビューア:操作
107 		dockcolor_tabno,			//カラー:タブ番号
108 		dockcolpal_tabno,			//カラーパレット:タブ番号
109 		dockcolwheel_type,			//カラーホイールタイプ
110 		dockopt_tabno,				//オプション:タブ番号
111 		rotate_type,				//回転、補間方法
112 		default_btt_cmd[CONFIG_POINTERBTT_NUM],	//デフォルトの各ボタンのコマンド
113 				/* 0:消しゴム側 1:左ボタン... */
114 		pentab_btt_cmd[CONFIG_POINTERBTT_NUM];	//ペンタブレットの各ボタンのコマンド
115 
116 	char pane_layout[5],		//ペイン配置
117 		dock_layout[16];		//パネル配置順
118 
119 	mStr strFontStyle_gui,		//GUI フォントスタイル
120 		strFontStyle_dock,		//パレットフォントスタイル
121 		strTempDir,				//作業用ディレクトリ (top)
122 		strTempDirProc,			//プロセスごとの作業用ディレクトリ
123 		strImageViewerDir,		//イメージビューア開くディレクトリ
124 		strGridFileDir,			//グリッドファイルディレクトリ
125 		strTextureFileDir,		//テクスチャ画像ディレクトリ
126 		strLayerFileDir,		//レイヤファイルディレクトリ
127 		strStampFileDir,		//スタンプ画像ディレクトリ
128 		strSelectFileDir,		//選択範囲関連のディレクトリ
129 		strThemeFile,			//テーマファイル (空でデフォルト)
130 		strRecentFile[CONFIG_RECENTFILE_NUM],	//最近使ったファイル
131 		strRecentOpenDir[CONFIG_RECENTDIR_NUM],	//開いたディレクトリの履歴
132 		strRecentSaveDir[CONFIG_RECENTDIR_NUM];	//保存ディレクトリの履歴
133 
134 	uint8_t canvaskey[256];		//キャンバスキー (各キーに対応するコマンドID)
135 
136 	uint8_t *cursor_buf,		//描画用カーソルイメージ
137 		*toolbar_btts;
138 	int cursor_bufsize,
139 		toolbar_btts_size;
140 }ConfigData;
141 
142 
143 extern ConfigData  *g_app_config;
144 #define APP_CONF   g_app_config
145 
146 
147 /*---- flags ----*/
148 
149 
150 /* imageviewer_flags */
151 #define CONFIG_IMAGEVIEWER_F_FIT    1	//全体表示
152 
153 /* canvas_resize_flags */
154 #define CONFIG_CANVAS_RESIZE_F_CROP  1  //範囲外を切り取る
155 
156 /* optflags */
157 enum
158 {
159 	CONFIG_OPTF_MES_SAVE_OVERWRITE = 1<<0,		//上書き保存確認
160 	CONFIG_OPTF_MES_SAVE_APD = 1<<1,			//上書き時、APD で保存するか確認
161 	CONFIG_OPTF_APD_NOINCLUDE_BLENDIMG = 1<<2	//APD 保存時、一枚絵イメージを含めない
162 };
163 
164 /* fView */
165 enum
166 {
167 	CONFIG_VIEW_F_TOOLBAR = 1<<0,
168 	CONFIG_VIEW_F_STATUSBAR = 1<<1,
169 	CONFIG_VIEW_F_DOCKS = 1<<2,
170 	CONFIG_VIEW_F_GRID  = 1<<3,
171 	CONFIG_VIEW_F_BKGND_PLAID = 1<<4,
172 	CONFIG_VIEW_F_FILTERDLG_PREVIEW = 1<<5
173 };
174 
175 /* openimage_flags */
176 enum
177 {
178 	CONFIG_OPENIMAGE_F_IGNORE_ALPHA = 1<<0,
179 	CONFIG_OPENIMAGE_F_LEAVE_TRANS  = 1<<1
180 };
181 
182 /* canvasview_flags */
183 enum
184 {
185 	CONFIG_CANVASVIEW_F_LOUPE_MODE = 1<<0,
186 	CONFIG_CANVASVIEW_F_FIT = 1<<1
187 };
188 
189 /* ConfigSaveOption::flags */
190 
191 enum
192 {
193 	CONFIG_SAVEOPTION_F_JPEG_PROGRESSIVE = 1<<0,
194 	CONFIG_SAVEOPTION_F_PNG_ALPHA_CHANNEL = 1<<1,
195 	CONFIG_SAVEOPTION_F_PSD_UNCOMPRESSED = 1<<2
196 };
197 
198 #endif
199