/** ******************************************************************************** * @summary TreeView上で表示するテキスト取得 ***********************************************************************************/ public string GetDisplayText(EHeaderColumnId id) { switch (id) { case EHeaderColumnId.TextureName: return(Texture.name); case EHeaderColumnId.TextureType: return(TextureImporter.textureType.ToString()); case EHeaderColumnId.NPot: return(TextureImporter.npotScale.ToString()); case EHeaderColumnId.MaxSize: return(TextureImporter.maxTextureSize.ToString()); case EHeaderColumnId.GenerateMips: return(TextureImporter.mipmapEnabled.ToString()); case EHeaderColumnId.AlphaIsTransparency: return(TextureImporter.alphaIsTransparency.ToString()); case EHeaderColumnId.TextureSize: return($"{Texture.width}x{Texture.height}"); case EHeaderColumnId.DataSize: return(textureDataSizeText); default: return("---"); } }
/** ******************************************************************************** * @summary TreeView上で表示するデータ取得 ***********************************************************************************/ public object GetDisplayData(EHeaderColumnId id) { switch (id) { case EHeaderColumnId.TextureName: return(Texture.name); case EHeaderColumnId.TextureType: return(TextureImporter.textureType); case EHeaderColumnId.NPot: return(TextureImporter.npotScale); case EHeaderColumnId.MaxSize: return(TextureImporter.maxTextureSize); case EHeaderColumnId.GenerateMips: return(TextureImporter.mipmapEnabled); case EHeaderColumnId.AlphaIsTransparency: return(TextureImporter.alphaIsTransparency); case EHeaderColumnId.TextureSize: return(new Vector2Int(Texture.width, Texture.height)); case EHeaderColumnId.DataSize: return(TextureByteLength); default: return(-1); } }
private void SortByMultipleColumns() { var sortedColumns = multiColumnHeader.state.sortedColumns; if (sortedColumns.Length == 0) { return; } //var searchStrings = (multiColumnHeader.state as TextureColumnHeaderState).SearchStrings; var searchStates = (multiColumnHeader.state as TextureColumnHeaderState).SearchStates; var children = GetRows() // 現在TreeViewに表示されている行を取得(rootItem.childrenを使うと全行が取得されてしまうので注意) .Cast <TextureTreeViewItem>() //.Where(l => l.data.DoesItemMatchSearch(searchStrings)) .Where(l => l.data.DoesItemMatchSearch(searchStates)) .ToArray(); var orderedQuery = InitialOrder(children, sortedColumns); for (int i = 1; i < sortedColumns.Length; i++) { EHeaderColumnId sortOption = sortOptions[sortedColumns[i]]; bool ascending = multiColumnHeader.IsSortedAscending(sortedColumns[i]); var sortSelector = sortSelectors[(int)sortOption]; orderedQuery = orderedQuery.ThenBy(l => sortSelector(l.data), ascending); } rootItem.children = orderedQuery .Cast <TreeViewItem>() .ToList(); }
private IOrderedEnumerable <TextureTreeViewItem> InitialOrder(IEnumerable <TextureTreeViewItem> elements, int[] history) { EHeaderColumnId sortOption = sortOptions[history[0]]; bool ascending = multiColumnHeader.IsSortedAscending(history[0]); var sortSelector = sortSelectors[(int)sortOption]; return(elements.Order(l => sortSelector(l.data), ascending)); }
/** ******************************************************************************** * @summary フィルタリングにマッチするか判定 ***********************************************************************************/ public bool DoesItemMatch(EHeaderColumnId headerId, TextureTreeElement element) { int typeAsBit = -1; var textureImporter = element.TextureImporter; var texture = element.Texture; switch (headerId) { case EHeaderColumnId.TextureName: return(DoesStringMatch(searchString, element.Texture.name)); case EHeaderColumnId.TextureType: typeAsBit = (int)TypeBitConverter.ConvertTextureImpoterType(textureImporter.textureType); break; case EHeaderColumnId.NPot: typeAsBit = (int)TypeBitConverter.ConvertTextureImporterNPOTScale(textureImporter.npotScale); break; case EHeaderColumnId.MaxSize: typeAsBit = (int)TypeBitConverter.ConvertMaxTextureSize(textureImporter.maxTextureSize); break; case EHeaderColumnId.GenerateMips: typeAsBit = (int)TypeBitConverter.ConvertMipMapEnabled(textureImporter.mipmapEnabled); break; case EHeaderColumnId.AlphaIsTransparency: typeAsBit = (int)TypeBitConverter.ConvertAlphaIsTransparency(textureImporter.alphaIsTransparency); break; case EHeaderColumnId.TextureSize: return(DoesStringMatch(searchString, element.Texture.name)); case EHeaderColumnId.DataSize: typeAsBit = (int)TypeBitConverter.ConvertDataSizeUnit(element.TextureByteLength); //return DoesSizeMatch(unit, element.TextureByteLength); break; default: return(true); } return((searchFilter & typeAsBit) > 0); }
} = new List <TextureTreeElement>(); // 子の要素 /** ******************************************************************************** * @summary TreeView上のラベルのGUIStyle取得 ***********************************************************************************/ public GUIStyle GetLabelStyle(EHeaderColumnId id) { GUIStyle labelStyle = MyStyle.DefaultLabel; switch (id) { case EHeaderColumnId.TextureName: case EHeaderColumnId.TextureType: break; case EHeaderColumnId.NPot: if (TextureImporter.npotScale == TextureImporterNPOTScale.None) { labelStyle = MyStyle.RedLabel; } break; case EHeaderColumnId.MaxSize: if (TextureImporter.maxTextureSize > ToolConfig.RedMaxTextureSize) { labelStyle = MyStyle.RedLabel; } break; case EHeaderColumnId.GenerateMips: if (TextureImporter.mipmapEnabled == true) { labelStyle = MyStyle.RedLabel; } break; case EHeaderColumnId.AlphaIsTransparency: break; case EHeaderColumnId.TextureSize: switch (Mathf.Min(Texture.width, Texture.height)) { case int minSize when minSize > ToolConfig.RedTextureSize: labelStyle = MyStyle.RedLabel; break; case int minSize when minSize > ToolConfig.YellowTextureSize: labelStyle = MyStyle.YellowLabel; break; default: labelStyle = MyStyle.DefaultLabel; break; } break; case EHeaderColumnId.DataSize: switch ((int)TextureByteLength) { case int len when len > ToolConfig.RedDataSize: labelStyle = MyStyle.RedLabel; break; //case int len when len > ToolConfig.YellowDataSize: // labelStyle = MyStyle.YellowLabel; // break; default: labelStyle = MyStyle.DefaultLabel; break; } break; } return(labelStyle); }