コード例 #1
0
        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");
        }
コード例 #2
0
		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;
		}
コード例 #3
0
        /// <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;
        }