/* ----------------------------------------------------------------- */ /// /// FileTypeCombBox_SelectedIndexChanged /// /// <summary> /// ファイルの種類が変更された時に実行されるイベントハンドラです。 /// 変換するファイルの種類によって無効なオプションがあるため、 /// 有効/無効を切り替えます。 /// </summary> /// /// <remarks> /// ファイルタイプに依存するオプションは以下の通りです。 /// /// PDF, PS, EPS, SVG: フォントの埋め込み /// PDF: バージョン、 文書プロパティ、セキュリティ、Web 最適化 /// BMP, JPEG, PNG: 解像度 /// /// 尚、Ghostscript のバグで現在のところ PS, EPS, SVG は /// グレースケール設定ができないようです。また,フォント埋め込みを /// 無効にすると文字化けが発生するので、暫定的に強制無効設定にして /// います。 /// </remarks> /// /* ----------------------------------------------------------------- */ private void FileTypeCombBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBox control = sender as ComboBox; if (control == null) { return; } Parameter.FileTypes id = Translator.IndexToFileType(control.SelectedIndex); bool is_pdf = (id == Parameter.FileTypes.PDF); bool is_bitmap = (id == Parameter.FileTypes.BMP || id == Parameter.FileTypes.JPEG || id == Parameter.FileTypes.PNG || id == Parameter.FileTypes.TIFF); bool is_grayscale = !(id == Parameter.FileTypes.PS || id == Parameter.FileTypes.EPS || id == Parameter.FileTypes.SVG); bool is_webopt = this.WebOptimizeCheckBox.Checked; bool is_security = (this.RequiredUserPasswordCheckBox.Checked || this.OwnerPasswordCheckBox.Checked); this.PDFVersionComboBox.Enabled = is_pdf; this.ResolutionComboBox.Enabled = is_bitmap; this.DocPanel.Enabled = is_pdf; this.SecurityGroupBox.Enabled = is_pdf && !is_webopt; this.EmbedFontCheckBox.Enabled = false; //!is_bitmap; this.GrayscaleCheckBox.Enabled = is_grayscale; this.ImageFilterCheckBox.Enabled = !is_bitmap; this.WebOptimizeCheckBox.Enabled = is_pdf && !is_security; // 出力パスの拡張子を変更後のファイルタイプに合わせる. if (this.OutputPathTextBox.Text.Length > 0) { this.OutputPathTextBox.Text = Path.ChangeExtension(this.OutputPathTextBox.Text, Parameter.Extension(id)); } this.SettingChanged(sender, e); }
/* ----------------------------------------------------------------- */ /// /// ToIndex /// /// <summary> /// FileTypes からコンボボックスのインデックスに変換します。 /// </summary> /// /* ----------------------------------------------------------------- */ public static int ToIndex(Parameter.FileTypes id) { foreach (Parameter.FileTypes x in Enum.GetValues(typeof(Parameter.FileTypes))) { if (x == id) { return((int)id); } } return((int)Parameter.FileTypes.PDF); }
public void TestRunAs(Parameter.FileTypes type, Parameter.Orientations orient, bool rename_test) { var setting = CreateSetting(); setting.FileType = type; setting.Resolution = Parameter.Resolutions.Resolution72; setting.Orientation = orient; var suffix = string.Format("-{0}", orient); AssertRun(setting, suffix); if (rename_test) { setting.ExistedFile = Parameter.ExistedFiles.Rename; AssertRun(setting, suffix); } }
/* ----------------------------------------------------------------- */ /// /// UpgradeFromV1 /// /// <summary> /// 過去のバージョンのレジストリを読み込み,現行バージョンに対応 /// した形に変換する. /// </summary> /// /* ----------------------------------------------------------------- */ public bool UpgradeFromV1(string root) { bool status = true; try { // ユーザ設定を読み込む RegistryKey subkey = Registry.CurrentUser.OpenSubKey(root, false); if (subkey == null) return false; // パス関連 string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string path = subkey.GetValue(REG_LAST_OUTPUT_ACCESS, desktop) as string; if (path != null && path.Length > 0 && Directory.Exists(path)) _output = path; path = subkey.GetValue(REG_LAST_INPUT_ACCESS, desktop) as string; if (path != null && path.Length > 0 && Directory.Exists(path)) _input = path; path = subkey.GetValue(REG_USER_PROGRAM, "") as string; if (path != null && path.Length > 0 && File.Exists(path)) _program = path; // チェックボックスのフラグ関連 int flag = (int)subkey.GetValue(REG_PAGE_ROTATION, 1); _rotation = (flag != 0); flag = (int)subkey.GetValue(REG_EMBED_FONT, 1); _embed = (flag != 0); flag = (int)subkey.GetValue(REG_GRAYSCALE, 0); _grayscale = (flag != 0); flag = (int)subkey.GetValue(REG_WEB_OPTIMIZE, 0); _web = (flag != 0); flag = (int)subkey.GetValue(REG_SAVE_SETTING, 0); _save = (flag != 0); flag = (int)subkey.GetValue(REG_CHECK_UPDATE, 1); _update = (flag != 0); flag = (int)subkey.GetValue(REG_ADVANCED_MODE, 0); _advance = (flag != 0); flag = (int)subkey.GetValue(REG_SELECT_INPUT, 0); _selectable = (flag != 0); // コンボボックスの変換 string type = (string)subkey.GetValue(REG_FILETYPE, ""); foreach (Parameter.FileTypes id in Enum.GetValues(typeof(Parameter.FileTypes))) { if (Parameter.FileTypeValue(id) == type) { _type = id; break; } } string pdfver = (string)subkey.GetValue(REG_PDF_VERSION, ""); foreach (Parameter.PDFVersions id in Enum.GetValues(typeof(Parameter.PDFVersions))) { if (Parameter.PDFVersionValue(id).ToString() == pdfver) { _pdfver = id; break; } } string resolution = (string)subkey.GetValue(REG_RESOLUTION, ""); foreach (Parameter.Resolutions id in Enum.GetValues(typeof(Parameter.Resolutions))) { if (Parameter.ResolutionValue(id).ToString() == resolution) { _resolution = id; break; } } // ExistedFile: v1 は日本語名で直接指定されていた string exist = (string)subkey.GetValue(REG_EXISTED_FILE, ""); if (exist == "上書き") _exist = Parameter.ExistedFiles.Overwrite; else if (exist == "先頭に結合") _exist = Parameter.ExistedFiles.MergeHead; else if (exist == "末尾に結合") _exist = Parameter.ExistedFiles.MergeTail; // PostProcess: v1 は日本語名で直接指定されていた string postproc = (string)subkey.GetValue(REG_POST_PROCESS, ""); if (postproc == "開く") _postproc = Parameter.PostProcesses.Open; else if (postproc == "何もしない") _postproc = Parameter.PostProcesses.None; else if (postproc == "ユーザープログラム") _postproc = Parameter.PostProcesses.UserProgram; // DownsSampling: v1 は日本語名で直接指定されていた string downsampling = (string)subkey.GetValue(REG_DOWNSAMPLING, ""); if (downsampling == "なし") _downsampling = Parameter.DownSamplings.None; else if (downsampling == "平均化") _downsampling = Parameter.DownSamplings.Average; else if (downsampling == "バイキュービック") _downsampling = Parameter.DownSamplings.Bicubic; else if (downsampling == "サブサンプル") _downsampling = Parameter.DownSamplings.Subsample; } catch (Exception /* err */) { status = false; } return status; }
/* ----------------------------------------------------------------- */ /// /// Load /// /// <summary> /// ParameterList クラスにロードされた内容を元に設定情報をロード /// する. /// </summary> /// /* ----------------------------------------------------------------- */ private void Load(ParameterManager param) { var v = param.Parameters; // パス関連 string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string s = v.Contains(REG_LAST_OUTPUT_ACCESS) ? (string)v.Find(REG_LAST_OUTPUT_ACCESS).Value : ""; _output = (s.Length > 0) ? s : desktop; s = v.Contains(REG_LAST_INPUT_ACCESS) ? (string)v.Find(REG_LAST_INPUT_ACCESS).Value : ""; _input = (s.Length > 0) ? s : desktop; s = v.Contains(REG_USER_PROGRAM) ? (string)v.Find(REG_USER_PROGRAM).Value : ""; _program = s; s = v.Contains(REG_USER_ARGUMENTS) ? (string)v.Find(REG_USER_ARGUMENTS).Value : "%%FILE%%"; _argument = s; // チェックボックスのフラグ関連 int value = v.Contains(REG_PAGE_ROTATION) ? (int)v.Find(REG_PAGE_ROTATION).Value : 1; _rotation = (value != 0); value = v.Contains(REG_EMBED_FONT) ? (int)v.Find(REG_EMBED_FONT).Value : 1; _embed = (value != 0); value = v.Contains(REG_GRAYSCALE) ? (int)v.Find(REG_GRAYSCALE).Value : 0; _grayscale = (value != 0); value = v.Contains(REG_WEB_OPTIMIZE) ? (int)v.Find(REG_WEB_OPTIMIZE).Value : 0; _web = (value != 0); value = v.Contains(REG_SAVE_SETTING) ? (int)v.Find(REG_SAVE_SETTING).Value : 0; _save = (value != 0); value = v.Contains(REG_CHECK_UPDATE) ? (int)v.Find(REG_CHECK_UPDATE).Value : 1; _update = (value != 0); value = v.Contains(REG_ADVANCED_MODE) ? (int)v.Find(REG_ADVANCED_MODE).Value : 0; _advance = (value != 0); value = v.Contains(REG_VISIBLE) ? (int)v.Find(REG_VISIBLE).Value : 1; _visible = (value != 0); value = v.Contains(REG_SELECT_INPUT) ? (int)v.Find(REG_SELECT_INPUT).Value : 0; _selectable = (value != 0); // コンボボックスのインデックス関連 value = v.Contains(REG_FILETYPE) ? (int)v.Find(REG_FILETYPE).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.FileTypes))) { if (x == value) _type = (Parameter.FileTypes)value; } value = v.Contains(REG_PDF_VERSION) ? (int)v.Find(REG_PDF_VERSION).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.PDFVersions))) { if (x == value) _pdfver = (Parameter.PDFVersions)value; } value = v.Contains(REG_RESOLUTION) ? (int)v.Find(REG_RESOLUTION).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.Resolutions))) { if (x == value) _resolution = (Parameter.Resolutions)value; } value = v.Contains(REG_EXISTED_FILE) ? (int)v.Find(REG_EXISTED_FILE).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.ExistedFiles))) { if (x == value) _exist = (Parameter.ExistedFiles)value; } value = v.Contains(REG_POST_PROCESS) ? (int)v.Find(REG_POST_PROCESS).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.PostProcesses))) { if (x == value) _postproc = (Parameter.PostProcesses)value; } value = v.Contains(REG_DOWNSAMPLING) ? (int)v.Find(REG_DOWNSAMPLING).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.DownSamplings))) { if (x == value) _downsampling = (Parameter.DownSamplings)value; } value = v.Contains(REG_IMAGEFILTER) ? (int)v.Find(REG_IMAGEFILTER).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.ImageFilters))) { if (x == value) _filter = (Parameter.ImageFilters)value; } }
/* ----------------------------------------------------------------- */ /// /// FileTypeString /// /// <summary> /// FileTypes の各値に対応する文字列を取得します。 /// </summary> /// /* ----------------------------------------------------------------- */ public static string FileTypeString(Parameter.FileTypes id) { return(Parameter.FileTypeValue(id)); }
/* ----------------------------------------------------------------- */ /// /// LoadIndices /// /// <summary> /// CubePdf.Settings.Document オブジェクトから CubePDF メイン画面で /// 表示されているコンボボックスのインデックス関連の情報を抽出して、 /// 対応する変数にロードします。 /// </summary> /// /* ----------------------------------------------------------------- */ private void LoadIndices(CubePdf.Settings.Document document) { var filetype = document.Root.Find(_RegFileType); if (filetype != null) { foreach (int item in Enum.GetValues(typeof(Parameter.FileTypes))) { if (item == (int)filetype.Value) { _type = (Parameter.FileTypes)filetype.Value; break; } } } var pdfversion = document.Root.Find(_RegPdfVersion); if (pdfversion != null) { foreach (int item in Enum.GetValues(typeof(Parameter.PdfVersions))) { if (item == (int)pdfversion.Value) { _pdfver = (Parameter.PdfVersions)pdfversion.Value; break; } } } var resolution = document.Root.Find(_RegResolution); if (resolution != null) { foreach (int item in Enum.GetValues(typeof(Parameter.Resolutions))) { if (item == (int)resolution.Value) { _resolution = (Parameter.Resolutions)resolution.Value; break; } } } var exist = document.Root.Find(_RegExistedFile); if (exist != null) { foreach (int item in Enum.GetValues(typeof(Parameter.ExistedFiles))) { if (item == (int)exist.Value) { _exist = (Parameter.ExistedFiles)exist.Value; break; } } } var postproc = document.Root.Find(_RegPostProcess); if (postproc != null) { foreach (int item in Enum.GetValues(typeof(Parameter.PostProcesses))) { if (item == (int)postproc.Value) { _postproc = (Parameter.PostProcesses)postproc.Value; break; } } } var downsampling = document.Root.Find(_RegDownSampling); if (downsampling != null) { foreach (int item in Enum.GetValues(typeof(Parameter.DownSamplings))) { if (item == (int)downsampling.Value) { _downsampling = (Parameter.DownSamplings)downsampling.Value; break; } } } var filter = document.Root.Find(_RegImageFilter); if (filter != null) { foreach (int item in Enum.GetValues(typeof(Parameter.ImageFilters))) { if (item == (int)filter.Value) { _filter = (Parameter.ImageFilters)filter.Value; break; } } } var save = document.Root.Find(_RegSaveSetting); if (save != null) { foreach (int item in Enum.GetValues(typeof(Parameter.SaveSettings))) { if (item == (int)save.Value) { _save = (Parameter.SaveSettings)save.Value; break; } } } }
/* ----------------------------------------------------------------- */ /// /// UpgradeFromV1 /// /// <summary> /// 過去のバージョンのレジストリを読み込み、現行バージョンに対応 /// した形に変換します。 /// </summary> /// /* ----------------------------------------------------------------- */ public bool UpgradeFromV1(string root) { bool status = true; try { // ユーザ設定を読み込む RegistryKey subkey = Registry.CurrentUser.OpenSubKey(root, false); if (subkey == null) return false; // パス関連 string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string path = subkey.GetValue(_RegLastAccess, desktop) as string; if (path != null && path.Length > 0 && Directory.Exists(path)) _output = path; path = subkey.GetValue(_RegLastInputAccess, desktop) as string; if (path != null && path.Length > 0 && Directory.Exists(path)) _input = path; path = subkey.GetValue(_RegUserProgram, "") as string; if (path != null && path.Length > 0 && File.Exists(path)) _program = path; // チェックボックスのフラグ関連 int flag = (int)subkey.GetValue(_RegPageRotation, 1); _rotation = (flag != 0); flag = (int)subkey.GetValue(_RegEmbedFont, 1); _embed = (flag != 0); flag = (int)subkey.GetValue(_RegGrayscale, 0); _grayscale = (flag != 0); flag = (int)subkey.GetValue(_RegWebOptimize, 0); _web = (flag != 0); flag = (int)subkey.GetValue(_RegSaveSetting, 0); _save = (flag != 0) ? Parameter.SaveSettings.Save : Parameter.SaveSettings.None; flag = (int)subkey.GetValue(_RegCheckUpdate, 1); _update = (flag != 0); flag = (int)subkey.GetValue(_RegAdvancedMode, 0); _advance = (flag != 0); flag = (int)subkey.GetValue(_RegSelectInput, 0); _selectable = (flag != 0); // コンボボックスの変換 string type = (string)subkey.GetValue(_RegFileType, ""); foreach (Parameter.FileTypes id in Enum.GetValues(typeof(Parameter.FileTypes))) { if (Parameter.FileTypeValue(id) == type) { _type = id; break; } } string pdfver = (string)subkey.GetValue(_RegPdfVersion, ""); foreach (Parameter.PdfVersions id in Enum.GetValues(typeof(Parameter.PdfVersions))) { if (Parameter.PdfVersionValue(id).ToString() == pdfver) { _pdfver = id; break; } } string resolution = (string)subkey.GetValue(_RegResolution, ""); foreach (Parameter.Resolutions id in Enum.GetValues(typeof(Parameter.Resolutions))) { if (Parameter.ResolutionValue(id).ToString() == resolution) { _resolution = id; break; } } // ExistedFile: v1 は日本語名で直接指定されていた string exist = (string)subkey.GetValue(_RegExistedFile, ""); if (exist == "上書き") _exist = Parameter.ExistedFiles.Overwrite; else if (exist == "先頭に結合") _exist = Parameter.ExistedFiles.MergeHead; else if (exist == "末尾に結合") _exist = Parameter.ExistedFiles.MergeTail; // PostProcess: v1 は日本語名で直接指定されていた string postproc = (string)subkey.GetValue(_RegPostProcess, ""); if (postproc == "開く") _postproc = Parameter.PostProcesses.Open; else if (postproc == "何もしない") _postproc = Parameter.PostProcesses.None; else if (postproc == "ユーザープログラム") _postproc = Parameter.PostProcesses.UserProgram; // DownsSampling: v1 は日本語名で直接指定されていた string downsampling = (string)subkey.GetValue(_RegDownSampling, ""); if (downsampling == "なし") _downsampling = Parameter.DownSamplings.None; else if (downsampling == "平均化") _downsampling = Parameter.DownSamplings.Average; else if (downsampling == "バイキュービック") _downsampling = Parameter.DownSamplings.Bicubic; else if (downsampling == "サブサンプル") _downsampling = Parameter.DownSamplings.Subsample; } catch (Exception /* err */) { status = false; } return status; }
/* ----------------------------------------------------------------- */ /// /// GetString /// /// <summary> /// FileTypes の各値に対応する文字列を取得します。 /// </summary> /// /* ----------------------------------------------------------------- */ public static string GetString(Parameter.FileTypes id) { return(Parameter.ToValue(id)); }