/// <summary> /// 処理後のイメージ情報リストに変換します。 /// </summary> /// <param name="leftOrTop">左側又は上側のBatchTargetImage。</param> /// <param name="rightOrBottom">右側又は下側のBatchTargetImage。</param> /// <param name="finisherEnabled">保存処理が有効かを表すbool。</param> /// <returns>処理後のBatchTargetImageリスト</returns> private List <BatchTargetImage> toBatchTargetImageList(BatchTargetImage leftOrTop, BatchTargetImage rightOrBottom, bool finisherEnabled) { DefaultImageWriter.SaveImage(leftOrTop, this.Settings, finisherEnabled); DefaultImageWriter.SaveImage(rightOrBottom, this.Settings, finisherEnabled); return(this.Settings.ToBatchTargetImageList(leftOrTop, rightOrBottom)); }
/// <summary> /// トリミングされたイメージを取得します。 /// </summary> /// <param name="rect">トリミングする矩形を表すRectangle。</param> /// <returns>トリミングされたImage。</returns> private Image getTrimmingImage(Rectangle rect) { var retImage = new BatchTargetImage(); using (var bmp = new Bitmap(this.TargetImage)) { return(bmp.Clone(rect, bmp.PixelFormat)); } }
/// <summary> /// 非選択ファイルをコピーします。 /// </summary> /// <param name="target">コピー対象のファイルを表すBatchTargetImage。</param> /// <returns>コピーした非選択ファイルを表すBatchTargetImage。</returns> private BatchTargetImage copyUnselectedFile(BatchTargetImage target) { var retTarget = this.toUnselectedTarge(target); // 非選択ファイルをコピー File.Copy(target.FilePath, retTarget.FilePath, Settings.IsSkipSameFileName == false); return(retTarget); }
/// <summary> /// 非選択ファイルを新規ファイルとして保存する。 /// </summary> /// <param name="target">元イメージのBatchTargetImage。</param> /// <returns>処理後の非選択ファイルを表すBatchTargetImage。</returns> private BatchTargetImage createNewFileFromUnselectedFile(BatchTargetImage target) { var newTarget = this.toUnselectedTarge(target); newTarget.TargetImage = target.GetTargetImage(); DefaultImageWriter.SaveImage(newTarget, this.Settings, this.SelectedFilesFinisherEnabled); return(newTarget); }
/// <summary> /// Splitterのファクトリメソッド。 /// </summary> /// <param name="srcImage">処理対象の元BatchTargetImage。</param> /// <returns>Splitterのインスタンス。</returns> internal Splitter CreateSplitter(BatchTargetImage srcImage) { switch (this.PageSplitType) { case SplitType.Vertical1_2: case SplitType.Vertical2_1: return(new VerticalSplitter(srcImage, this)); case SplitType.Horizontal1_2: case SplitType.Horizontal2_1: return(new HorizontalSplitter(srcImage, this)); default: break; } return(null); }
/// <summary> /// 非選択ファイルを処理後のBatchTargetImageに変換します。 /// </summary> /// <param name="srcTarget">元イメージのBatchTargetImage。</param> /// <returns>処理後の非選択ファイルを表すBatchTargetImage。</returns> private BatchTargetImage toUnselectedTarge(BatchTargetImage srcTarget) { var ext = string.Empty; if (this.Settings.UnselectedFilesOperation == UnselectedFilesOperation.CopyFiles) { ext = srcTarget.Extension; } else { ext = this.Settings.GetFileExtension(); } var fileName = Path.GetFileNameWithoutExtension(srcTarget.FileName) + ext; var destPath = Path.Combine(this.Settings.DestinatedFolderPath, fileName); return(new BatchTargetImage { FilePath = destPath, Selected = srcTarget.Selected }); }
/// <summary> /// プラグインの処理を実行します。 /// </summary> /// <param name="target">処理対象のイメージを表すBatchTargetImage</param> /// <returns>プラグインの処理結果を表すBatchTargetImageのリスト。</returns> public override List <BatchTargetImage> Execute(BatchTargetImage target) { var retList = new List <BatchTargetImage>(); if (target.Selected) { // 選択ファイル using (var splitter = this.Settings.CreateSplitter(target)) { retList.AddRange(splitter.Split(this.SelectedFilesFinisherEnabled)); } } else { // 非選択ファイル if (this.Settings.IsTargetForUnselectedFiles) { switch (this.Settings.UnselectedFilesOperation) { case UnselectedFilesOperation.CopyFiles: // コピー retList.Add(this.copyUnselectedFile(target)); break; case UnselectedFilesOperation.CreatNewFiles: // 新規保存 retList.Add(this.createNewFileFromUnselectedFile(target)); break; default: break; } } else { retList.Add(target); } } return(retList); }
/// <summary> /// 一括処理対象イメージのリストに変換します。 /// </summary> /// <param name="leftOrTop">左側又は上側のイメージを表すBatchTargetImage。</param> /// <param name="rightOrBottom">右側又は下側のイメージを表すBatchTargetImage。</param> /// <returns>BatchTargetImageのリスト。</returns> public List <BatchTargetImage> ToBatchTargetImageList(BatchTargetImage leftOrTop, BatchTargetImage rightOrBottom) { var retList = new List <BatchTargetImage>(); switch (this.PageSplitType) { case SplitType.Vertical1_2: case SplitType.Horizontal1_2: retList.Add(leftOrTop); retList.Add(rightOrBottom); break; case SplitType.Vertical2_1: case SplitType.Horizontal2_1: retList.Add(rightOrBottom); retList.Add(leftOrTop); break; default: break; } return(retList); }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="srcImage">処理対象の元BatchTargetImage。</param> /// <param name="settings">分割設定を表すImageSplitSettings。</param> public VerticalSplitter(BatchTargetImage srcImage, ImageSplitSettings settings) : base(srcImage, settings) { }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="srcImage">処理対象の元BatchTargetImage。</param> /// <param name="settings">分割設定を表すImageSplitSettings。</param> public Splitter(BatchTargetImage srcImage, ImageSplitSettings settings) : base() { this.img = srcImage.GetTargetImage(); this.srcImage = srcImage; this.settings = settings; }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="srcImage">処理対象の元BatchTargetImage。</param> /// <param name="settings">分割設定を表すImageSplitSettings。</param> public HorizontalSplitter(BatchTargetImage srcImage, ImageSplitSettings settings) : base(srcImage, settings) { }