public static OperatorCodec GetCodec(Operator op, FastType type) { Utility.Tuple <Operator, FastType> key = Utility.Tuple.Create(op, type); OperatorCodec codec; if (OperatorMap.TryGetValue(key, out codec)) { return(codec); } Global.ErrorHandler.OnError(null, StaticError.OperatorTypeIncomp, "The operator '{0}' is not compatible with type '{1}'", op, type); throw new ArgumentOutOfRangeException("op" + ",type", key, "Not found"); }
public override Utility.Tuple<ColumnType, string, object>[] GetDetails(object key, bool useWIC) { string filePath = key as string; //List<Utility.Tuple<ColumnType, string, object>> details = new List<Utility.Tuple<ColumnType, string, object>>(); var details = new Utility.Tuple<ColumnType, string, object>[8]; int ptr = 0; // Get file info if (File.Exists(filePath)) { FileInfo fileInfo = new FileInfo(filePath); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.DateCreated, string.Empty, fileInfo.CreationTime); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.DateAccessed, string.Empty, fileInfo.LastAccessTime); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.DateModified, string.Empty, fileInfo.LastWriteTime); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.FileSize, string.Empty, fileInfo.Length); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.FilePath, string.Empty, filePath); //details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.FolderName, string.Empty, info.Directory.Name ?? ""); string fileName = Path.GetFileName(filePath); string fileText = Path.GetFileNameWithoutExtension(fileName); string fileExt = Path.GetExtension(fileName); string artist = null; StringBuilder fileTitle = new System.Text.StringBuilder(fileText.Length); StringBuilder fileDesc = new System.Text.StringBuilder(fileText.Length); int i = 0, j = 0; int tagCount = 1; while (i < fileText.Length) { if (fileText[i] == '(' || fileText[i] == '[') { fileTitle.Append(fileText.Substring(j, i - j)); j = i = i + 1; int k = 1; while (k > 0 && i < fileText.Length) { switch (fileText[i]) { case '(': case '[': k++; break; case ')': case ']': k--; break; } i++; } i = i - 1; string tag = fileText.Substring(j, i - j).Trim(); if (artist == null) artist = tag; else fileDesc.Append(tag).Append(" / "); j = i + 1; } i = i + 1; } fileDesc.Append(fileInfo.Length / 1024 / 1024).Append("MB / "); fileDesc.Append(fileExt.Substring(1).ToUpperInvariant()); if (j < fileText.Length) { fileTitle.Append(fileText.Substring(j, i - j)); } details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.Title, string.Empty, fileTitle.ToString().Trim()); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.Description, string.Empty, fileDesc.ToString().Trim()); details[ptr++] = new Utility.Tuple<ColumnType, string, object>(ColumnType.Artist, string.Empty, artist); //if (GalleryUtility.IsVideoFile(filePath)) //{ // var videoInfo = GalleryUtility.GetVideoDetails(filePath); // details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Duration, string.Empty, videoInfo[ColumnType.Duration])); // details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Width, string.Empty, videoInfo[ColumnType.Width])); // details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Height, string.Empty, videoInfo[ColumnType.Width])); //} // Get metadata //MetadataExtractor metadata = MetadataExtractor.FromFile(filePath, useWIC); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Dimensions, string.Empty, new Size(metadata.Width, metadata.Height))); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Resolution, string.Empty, new SizeF((float)metadata.DPIX, (float)metadata.DPIY))); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.ImageDescription, string.Empty, metadata.ImageDescription ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.EquipmentModel, string.Empty, metadata.EquipmentModel ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.DateTaken, string.Empty, metadata.DateTaken)); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Artist, string.Empty, metadata.Artist ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Copyright, string.Empty, metadata.Copyright ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.ExposureTime, string.Empty, (float)metadata.ExposureTime)); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.FNumber, string.Empty, (float)metadata.FNumber)); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.ISOSpeed, string.Empty, (ushort)metadata.ISOSpeed)); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.UserComment, string.Empty, metadata.Comment ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Rating, string.Empty, (ushort)metadata.Rating)); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.Software, string.Empty, metadata.Software ?? "")); //details.Add(new Utility.Tuple<ColumnType, string, object>(ColumnType.FocalLength, string.Empty, (float)metadata.FocalLength)); } //return details.ToArray(); return details; }
/// <summary> /// Updates group order and name of the item. /// </summary> /// <param name="column">The group column.</param> internal void UpdateGroup(ImageListView.ImageListViewColumnHeader column) { if (column == null) { groupOrder = 0; group = string.Empty; return; } Utility.Tuple<int, string> groupInfo = new Utility.Tuple<int, string>(0, string.Empty); switch (column.Type) { case ColumnType.DateAccessed: groupInfo = Utility.GroupTextDate(DateAccessed); break; case ColumnType.DateCreated: groupInfo = Utility.GroupTextDate(DateCreated); break; case ColumnType.DateModified: groupInfo = Utility.GroupTextDate(DateModified); break; case ColumnType.Dimensions: groupInfo = Utility.GroupTextDimension(Dimensions); break; case ColumnType.FileName: groupInfo = Utility.GroupTextAlpha(FileName); break; case ColumnType.FilePath: groupInfo = Utility.GroupTextAlpha(FilePath); break; case ColumnType.FolderName: groupInfo = Utility.GroupTextAlpha(FolderName); break; case ColumnType.FileSize: groupInfo = Utility.GroupTextFileSize(FileSize); break; case ColumnType.FileType: groupInfo = Utility.GroupTextAlpha(FileType); break; case ColumnType.Name: groupInfo = Utility.GroupTextAlpha(Text); break; case ColumnType.ImageDescription: groupInfo = Utility.GroupTextAlpha(ImageDescription); break; case ColumnType.EquipmentModel: groupInfo = Utility.GroupTextAlpha(EquipmentModel); break; case ColumnType.DateTaken: groupInfo = Utility.GroupTextDate(DateTaken); break; case ColumnType.Artist: groupInfo = Utility.GroupTextAlpha(Artist); break; case ColumnType.Copyright: groupInfo = Utility.GroupTextAlpha(Copyright); break; case ColumnType.UserComment: groupInfo = Utility.GroupTextAlpha(UserComment); break; case ColumnType.Software: groupInfo = Utility.GroupTextAlpha(Software); break; case ColumnType.Custom: groupInfo = Utility.GroupTextAlpha(GetSubItemText(column.Guid)); break; case ColumnType.ISOSpeed: groupInfo = new Utility.Tuple<int, string>(ISOSpeed, ISOSpeed.ToString()); break; case ColumnType.Rating: groupInfo = new Utility.Tuple<int, string>(Rating / 5, (Rating / 5).ToString()); break; case ColumnType.FocalLength: groupInfo = new Utility.Tuple<int, string>((int)FocalLength, FocalLength.ToString()); break; case ColumnType.ExposureTime: groupInfo = new Utility.Tuple<int, string>((int)ExposureTime, ExposureTime.ToString()); break; case ColumnType.FNumber: groupInfo = new Utility.Tuple<int, string>((int)FNumber, FNumber.ToString()); break; case ColumnType.Resolution: groupInfo = new Utility.Tuple<int, string>((int)Resolution.Width, Resolution.Width.ToString()); break; default: groupInfo = new Utility.Tuple<int, string>(0, "Unknown"); break; } groupOrder = groupInfo.Item1; group = groupInfo.Item2; }