No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Images.cs 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. using Codice.LogWrapper;
  6. using Unity.PlasticSCM.Editor.AssetUtils;
  7. namespace Unity.PlasticSCM.Editor.UI
  8. {
  9. internal class Images
  10. {
  11. internal enum Name
  12. {
  13. None,
  14. IconPlastic,
  15. IconCloseButton,
  16. IconPressedCloseButton,
  17. IconAddedLocal,
  18. IconAddedOverlay,
  19. IconPrivateOverlay,
  20. IconCheckedOutLocalOverlay,
  21. IconDeleted,
  22. IconDeletedLocalOverlay,
  23. IconDeletedRemote,
  24. IconDeletedRemoteOverlay,
  25. IconOutOfSync,
  26. IconOutOfSyncOverlay,
  27. IconMoved,
  28. IconMergeLink,
  29. Ignored,
  30. IgnoredOverlay,
  31. IconConflicted,
  32. IconConflictedOverlay,
  33. IconConflictResolvedOverlay,
  34. IconLockedLocalOverlay,
  35. IconLockedRemoteOverlay,
  36. IconRetainedOverlay,
  37. XLink,
  38. Ok,
  39. SecondaryTabClose,
  40. SecondaryTabCloseHover,
  41. NotOnDisk,
  42. IconRepository,
  43. IconPlasticView,
  44. IconPlasticNotifyIncoming,
  45. IconPlasticNotifyConflict,
  46. Loading,
  47. IconEmptyGravatar,
  48. Step1,
  49. Step2,
  50. Step3,
  51. StepOk,
  52. ButtonSsoSignInUnity,
  53. ButtonSsoSignInEmail,
  54. ButtonSsoSignInGoogle,
  55. IconBranch,
  56. IconUndo,
  57. Refresh,
  58. IconInviteUsers,
  59. IconLock
  60. }
  61. internal static Texture2D GetImage(Name image)
  62. {
  63. return LoadImage(image, false);
  64. }
  65. internal static Texture GetFileIcon(string path)
  66. {
  67. string relativePath = GetRelativePath.ToApplication(path);
  68. return GetFileIconFromRelativePath(relativePath);
  69. }
  70. internal static Texture GetFileIconFromCmPath(string path)
  71. {
  72. return GetFileIconFromRelativePath(
  73. path.Substring(1).Replace("/",
  74. Path.DirectorySeparatorChar.ToString()));
  75. }
  76. internal static Texture GetDropDownIcon()
  77. {
  78. return GetIconFromEditorGUI("icon dropdown");
  79. }
  80. internal static Texture GetDirectoryIcon()
  81. {
  82. return GetIconFromEditorGUI("Folder Icon");
  83. }
  84. internal static Texture GetPrivatedOverlayIcon()
  85. {
  86. if (mPrivatedOverlayIcon == null)
  87. mPrivatedOverlayIcon = GetOverlay(Name.IconPrivateOverlay);
  88. return mPrivatedOverlayIcon;
  89. }
  90. internal static Texture GetAddedOverlayIcon()
  91. {
  92. if (mAddedOverlayIcon == null)
  93. mAddedOverlayIcon = GetOverlay(Name.IconAddedOverlay);
  94. return mAddedOverlayIcon;
  95. }
  96. internal static Texture GetDeletedLocalOverlayIcon()
  97. {
  98. if (mDeletedLocalOverlayIcon == null)
  99. mDeletedLocalOverlayIcon = GetOverlay(Name.IconDeletedLocalOverlay);
  100. return mDeletedLocalOverlayIcon;
  101. }
  102. internal static Texture GetDeletedRemoteOverlayIcon()
  103. {
  104. if (mDeletedRemoteOverlayIcon == null)
  105. mDeletedRemoteOverlayIcon = GetOverlay(Name.IconDeletedRemoteOverlay);
  106. return mDeletedRemoteOverlayIcon;
  107. }
  108. internal static Texture GetCheckedOutOverlayIcon()
  109. {
  110. if (mCheckedOutOverlayIcon == null)
  111. mCheckedOutOverlayIcon = GetOverlay(Name.IconCheckedOutLocalOverlay);
  112. return mCheckedOutOverlayIcon;
  113. }
  114. internal static Texture GetOutOfSyncOverlayIcon()
  115. {
  116. if (mOutOfSyncOverlayIcon == null)
  117. mOutOfSyncOverlayIcon = GetOverlay(Name.IconOutOfSyncOverlay);
  118. return mOutOfSyncOverlayIcon;
  119. }
  120. internal static Texture GetConflictedOverlayIcon()
  121. {
  122. if (mConflictedOverlayIcon == null)
  123. mConflictedOverlayIcon = GetOverlay(Name.IconConflictedOverlay);
  124. return mConflictedOverlayIcon;
  125. }
  126. internal static Texture GetConflictResolvedOverlayIcon()
  127. {
  128. if (mConflictResolvedOverlayIcon == null)
  129. mConflictResolvedOverlayIcon = GetOverlay(Name.IconConflictResolvedOverlay);
  130. return mConflictResolvedOverlayIcon;
  131. }
  132. internal static Texture GetLockedLocalOverlayIcon()
  133. {
  134. if (mLockedLocalOverlayIcon == null)
  135. mLockedLocalOverlayIcon = GetOverlay(Name.IconLockedLocalOverlay);
  136. return mLockedLocalOverlayIcon;
  137. }
  138. internal static Texture GetLockedRemoteOverlayIcon()
  139. {
  140. if (mLockedRemoteOverlayIcon == null)
  141. mLockedRemoteOverlayIcon = GetOverlay(Name.IconLockedRemoteOverlay);
  142. return mLockedRemoteOverlayIcon;
  143. }
  144. internal static Texture GetRetainedOverlayIcon()
  145. {
  146. if (mRetainedOverlayIcon == null)
  147. mRetainedOverlayIcon = GetOverlay(Name.IconRetainedOverlay);
  148. return mRetainedOverlayIcon;
  149. }
  150. internal static Texture GetIgnoredOverlayIcon()
  151. {
  152. if (mIgnoredverlayIcon == null)
  153. mIgnoredverlayIcon = GetOverlay(Name.IgnoredOverlay);
  154. return mIgnoredverlayIcon;
  155. }
  156. internal static Texture GetWarnIcon()
  157. {
  158. return GetIconFromEditorGUI("console.warnicon.sml");
  159. }
  160. internal static Texture GetInfoIcon()
  161. {
  162. return GetIconFromEditorGUI("console.infoicon.sml");
  163. }
  164. internal static Texture GetErrorDialogIcon()
  165. {
  166. return GetIconFromEditorGUI("console.erroricon");
  167. }
  168. internal static Texture GetWarnDialogIcon()
  169. {
  170. return GetIconFromEditorGUI("console.warnicon");
  171. }
  172. internal static Texture GetInfoDialogIcon()
  173. {
  174. return GetIconFromEditorGUI("console.infoicon");
  175. }
  176. internal static Texture GetRefreshIcon()
  177. {
  178. if (mRefreshIcon == null)
  179. mRefreshIcon = GetImage(Name.Refresh);
  180. return mRefreshIcon;
  181. }
  182. internal static Texture GetSettingsIcon()
  183. {
  184. return GetIconFromEditorGUI("settings");
  185. }
  186. internal static Texture GetCloseIcon()
  187. {
  188. if (mCloseIcon == null)
  189. mCloseIcon = GetImage(Name.SecondaryTabClose);
  190. return mCloseIcon;
  191. }
  192. internal static Texture GetClickedCloseIcon()
  193. {
  194. if (mClickedCloseIcon == null)
  195. mClickedCloseIcon = GetImage(Name.SecondaryTabCloseHover);
  196. return mClickedCloseIcon;
  197. }
  198. internal static Texture GetHoveredCloseIcon()
  199. {
  200. if (mHoveredCloseIcon == null)
  201. mHoveredCloseIcon = GetImage(Name.SecondaryTabCloseHover);
  202. return mHoveredCloseIcon;
  203. }
  204. internal static Texture2D GetUndoIcon()
  205. {
  206. if (mUndoIcon == null)
  207. mUndoIcon = GetImage(Name.IconUndo);
  208. return mUndoIcon;
  209. }
  210. internal static Texture2D GetPlasticIcon()
  211. {
  212. if (mPlasticIcon == null)
  213. mPlasticIcon = GetImage(Name.IconPlastic);
  214. return mPlasticIcon;
  215. }
  216. internal static Texture2D GetBranchIcon()
  217. {
  218. if (mBranchIcon == null)
  219. mBranchIcon = GetImage(Name.IconBranch);
  220. return mBranchIcon;
  221. }
  222. internal static Texture2D GetConflictedIcon()
  223. {
  224. if (mConflictedIcon == null)
  225. mConflictedIcon = GetImage(Name.IconConflicted);
  226. return mConflictedIcon;
  227. }
  228. internal static Texture2D GetOutOfSyncIcon()
  229. {
  230. if (mOutOfSyncIcon == null)
  231. mOutOfSyncIcon = GetImage(Name.IconOutOfSync);
  232. return mOutOfSyncIcon;
  233. }
  234. internal static Texture2D GetPlasticViewIcon()
  235. {
  236. if (mPlasticViewIcon == null)
  237. mPlasticViewIcon = GetImage(Name.IconPlasticView);
  238. return mPlasticViewIcon;
  239. }
  240. internal static Texture2D GePlasticNotifyIncomingIcon()
  241. {
  242. if (mPlasticNotifyIncomingIcon == null)
  243. mPlasticNotifyIncomingIcon = GetImage(Name.IconPlasticNotifyIncoming);
  244. return mPlasticNotifyIncomingIcon;
  245. }
  246. internal static Texture2D GetPlasticNotifyConflictIcon()
  247. {
  248. if (mPlasticNotifyConflictIcon == null)
  249. mPlasticNotifyConflictIcon = GetImage(Name.IconPlasticNotifyConflict);
  250. return mPlasticNotifyConflictIcon;
  251. }
  252. internal static Texture2D GetEmptyGravatar()
  253. {
  254. if (mEmptyGravatarIcon == null)
  255. mEmptyGravatarIcon = Images.GetImage(Images.Name.IconEmptyGravatar);
  256. return mEmptyGravatarIcon;
  257. }
  258. internal static Texture2D GetStepOkIcon()
  259. {
  260. if (mStepOkIcon == null)
  261. mStepOkIcon = Images.GetImage(Images.Name.StepOk);
  262. return mStepOkIcon;
  263. }
  264. internal static Texture2D GetStep1Icon()
  265. {
  266. if (mStep1Icon == null)
  267. mStep1Icon = Images.GetImage(Images.Name.Step1);
  268. return mStep1Icon;
  269. }
  270. internal static Texture2D GetStep2Icon()
  271. {
  272. if (mStep2Icon == null)
  273. mStep2Icon = Images.GetImage(Images.Name.Step2);
  274. return mStep2Icon;
  275. }
  276. internal static Texture2D GetMergeLinkIcon()
  277. {
  278. if (mMergeLinkIcon == null)
  279. mMergeLinkIcon = Images.GetImage(Images.Name.IconMergeLink);
  280. return mMergeLinkIcon;
  281. }
  282. internal static Texture2D GetAddedLocalIcon()
  283. {
  284. if (mAddedLocalIcon == null)
  285. mAddedLocalIcon = Images.GetImage(Images.Name.IconAddedLocal);
  286. return mAddedLocalIcon;
  287. }
  288. internal static Texture2D GetDeletedRemoteIcon()
  289. {
  290. if (mDeletedRemoteIcon == null)
  291. mDeletedRemoteIcon = Images.GetImage(Images.Name.IconDeletedRemote);
  292. return mDeletedRemoteIcon;
  293. }
  294. internal static Texture2D GetDeletedIcon()
  295. {
  296. if (mDeletedIcon == null)
  297. mDeletedIcon = Images.GetImage(Images.Name.IconDeleted);
  298. return mDeletedIcon;
  299. }
  300. internal static Texture2D GetMovedIcon()
  301. {
  302. if (mMovedIcon == null)
  303. mMovedIcon = Images.GetImage(Images.Name.IconMoved);
  304. return mMovedIcon;
  305. }
  306. internal static Texture2D GetRepositoryIcon()
  307. {
  308. if (mRepositoryIcon == null)
  309. mRepositoryIcon = Images.GetImage(Images.Name.IconRepository);
  310. return mRepositoryIcon;
  311. }
  312. internal static Texture GetFileIcon()
  313. {
  314. if (mFileIcon == null)
  315. mFileIcon = EditorGUIUtility.FindTexture("DefaultAsset Icon");
  316. if (mFileIcon == null)
  317. mFileIcon = GetIconFromAssetPreview(typeof(DefaultAsset));
  318. if (mFileIcon == null)
  319. mFileIcon = GetEmptyImage();
  320. return mFileIcon;
  321. }
  322. internal static Texture2D GetLinkUnderlineImage()
  323. {
  324. if (mLinkUnderlineImage == null)
  325. {
  326. mLinkUnderlineImage = new Texture2D(1, 1);
  327. mLinkUnderlineImage.SetPixel(0, 0, UnityStyles.Colors.Link);
  328. mLinkUnderlineImage.Apply();
  329. }
  330. return mLinkUnderlineImage;
  331. }
  332. internal static Texture2D GetInviteUsersIcon()
  333. {
  334. if (mInviteUsersIcon == null)
  335. mInviteUsersIcon = GetImage(Name.IconInviteUsers);
  336. return mInviteUsersIcon;
  337. }
  338. internal static Texture2D GetLockIcon()
  339. {
  340. if (mLockIcon == null)
  341. mLockIcon = GetImage(Name.IconLock);
  342. return mLockIcon;
  343. }
  344. internal static Texture2D GetTreeviewBackgroundTexture()
  345. {
  346. if (mTreeviewBackgroundTexture == null)
  347. mTreeviewBackgroundTexture = GetTextureFromColor(UnityStyles.Colors.TreeViewBackground);
  348. return mTreeviewBackgroundTexture;
  349. }
  350. internal static Texture2D GetCommentBackgroundTexture()
  351. {
  352. if (mCommentBackground == null)
  353. mCommentBackground = GetTextureFromColor(UnityStyles.Colors.CommentsBackground);
  354. return mCommentBackground;
  355. }
  356. internal static Texture2D GetColumnsBackgroundTexture()
  357. {
  358. if (mColumnsBackgroundTexture == null)
  359. mColumnsBackgroundTexture = GetTextureFromColor(UnityStyles.Colors.ColumnsBackground);
  360. return mColumnsBackgroundTexture;
  361. }
  362. internal static Texture2D GetNewTextureFromTexture(Texture2D texture)
  363. {
  364. Texture2D result = new Texture2D(texture.width, texture.height, TextureFormat.BGRA32, false);
  365. // To keep images consistent throughout the plugin,
  366. // manually set the filter mode
  367. result.filterMode = FilterMode.Bilinear;
  368. return result;
  369. }
  370. internal static Texture2D GetNewTextureFromBytes(int width, int height, byte[] bytes)
  371. {
  372. Texture2D result = new Texture2D(width, height, TextureFormat.RGBA32, false);
  373. result.LoadImage(bytes);
  374. // To keep images consistent throughout the plugin,
  375. // manually set the filter mode
  376. result.filterMode = FilterMode.Bilinear;
  377. return result;
  378. }
  379. static Texture2D GetNewTextureFromFile(string path)
  380. {
  381. return GetNewTextureFromBytes(1, 1, File.ReadAllBytes(path));
  382. }
  383. static Texture2D GetOverlay(Name image)
  384. {
  385. return LoadImage(image, true);
  386. }
  387. static Texture2D LoadImage(Name image, bool preferFulResImage)
  388. {
  389. string imageFileName = image.ToString().ToLower() + ".png";
  390. string imageFileName2x = image.ToString().ToLower() + "@2x.png";
  391. string darkImageFileName = string.Format("d_{0}", imageFileName);
  392. string darkImageFileName2x = string.Format("d_{0}", imageFileName2x);
  393. string imageFileRelativePath = GetImageFileRelativePath(imageFileName);
  394. string imageFileRelativePath2x = GetImageFileRelativePath(imageFileName2x);
  395. string darkImageFileRelativePath = GetImageFileRelativePath(darkImageFileName);
  396. string darkImageFileRelativePath2x = GetImageFileRelativePath(darkImageFileName2x);
  397. Texture2D result = null;
  398. if (EditorGUIUtility.isProSkin)
  399. result = TryLoadImage(darkImageFileRelativePath, darkImageFileRelativePath2x, preferFulResImage);
  400. if (result != null)
  401. return result;
  402. result = TryLoadImage(imageFileRelativePath, imageFileRelativePath2x, preferFulResImage);
  403. if (result != null)
  404. return result;
  405. mLog.WarnFormat("Image not found: {0}", imageFileName);
  406. return GetEmptyImage();
  407. }
  408. static Texture2D GetEmptyImage()
  409. {
  410. if (mEmptyImage == null)
  411. mEmptyImage = GetTextureFromColor(Color.clear);
  412. return mEmptyImage;
  413. }
  414. static Texture2D GetTextureFromColor(Color color)
  415. {
  416. Texture2D texture = new Texture2D(1, 1);
  417. texture.SetPixel(0, 0, color);
  418. texture.Apply();
  419. return texture;
  420. }
  421. static Texture GetFileIconFromRelativePath(string relativePath)
  422. {
  423. Texture result = AssetDatabase.GetCachedIcon(relativePath);
  424. if (result != null)
  425. return result;
  426. result = GetFileIconFromKnownExtension(relativePath);
  427. if (result != null)
  428. return result;
  429. return GetFileIcon();
  430. }
  431. static Texture GetFileIconFromKnownExtension(string relativePath)
  432. {
  433. if (relativePath.EndsWith(UnityConstants.TREEVIEW_META_LABEL))
  434. {
  435. relativePath = relativePath.Substring(0,
  436. relativePath.Length- UnityConstants.TREEVIEW_META_LABEL.Length);
  437. }
  438. string extension = Path.GetExtension(relativePath).ToLower();
  439. if (extension.Equals(".cs"))
  440. return GetIconFromEditorGUI("cs Script Icon");
  441. if (extension.Equals(".png") || extension.Equals(".jpg")
  442. || extension.Equals(".jpeg") || extension.Equals(".gif")
  443. || extension.Equals(".tga") || extension.Equals(".bmp")
  444. || extension.Equals(".tif") || extension.Equals(".tiff"))
  445. return GetIconFromEditorGUI("d_Texture Icon");
  446. if (extension.Equals(".mat"))
  447. return GetIconFromAssetPreview(typeof(UnityEngine.Material));
  448. if (extension.Equals(".fbx") || extension.Equals(".ma")
  449. || extension.Equals(".mb") || extension.Equals(".blend")
  450. || extension.Equals(".max") )
  451. return GetIconFromAssetPreview(typeof(UnityEngine.GameObject));
  452. if (extension.Equals(".wav") || extension.Equals(".mp3"))
  453. return GetIconFromAssetPreview(typeof(UnityEngine.AudioClip));
  454. if (extension.Equals(".anim"))
  455. return GetIconFromAssetPreview(typeof(UnityEngine.Animation));
  456. if (extension.Equals(".animator"))
  457. return GetIconFromAssetPreview(typeof(UnityEngine.Animator));
  458. if (extension.Equals(".shader"))
  459. return GetIconFromEditorGUI("d_Shader Icon");
  460. if (extension.Equals(".asset") && relativePath.StartsWith("ProjectSettings\\"))
  461. return GetIconFromEditorGUI("EditorSettings Icon");
  462. return null;
  463. }
  464. static Texture2D GetIconFromEditorGUI(string name)
  465. {
  466. Texture2D result;
  467. if (mImagesFromEditorGUICache.TryGetValue(name, out result))
  468. {
  469. if (result != null)
  470. return result;
  471. mImagesFromEditorGUICache.Remove(name);
  472. }
  473. result = EditorGUIUtility.IconContent(name).image as Texture2D;
  474. mImagesFromEditorGUICache.Add(name, result);
  475. return result;
  476. }
  477. static Texture2D GetIconFromAssetPreview(System.Type type)
  478. {
  479. Texture2D result;
  480. if (mImagesFromAssetPreviewCache.TryGetValue(type.ToString(), out result))
  481. {
  482. if (result != null)
  483. return result;
  484. mImagesFromAssetPreviewCache.Remove(type.ToString());
  485. }
  486. result = AssetPreview.GetMiniTypeThumbnail(type);
  487. mImagesFromAssetPreviewCache.Add(type.ToString(), result);
  488. return result;
  489. }
  490. static string GetImageFileRelativePath(string imageFileName)
  491. {
  492. return Path.Combine(
  493. AssetsPath.GetImagesFolderRelativePath(),
  494. imageFileName);
  495. }
  496. static Texture2D TryLoadImage(
  497. string imageFileRelativePath, string image2xFilePath, bool preferFulResImage)
  498. {
  499. bool isImageAvailable = File.Exists(Path.GetFullPath(imageFileRelativePath));
  500. bool isImage2XAvailable = File.Exists(Path.GetFullPath(image2xFilePath));
  501. if ((EditorGUIUtility.pixelsPerPoint > 1f || !isImageAvailable || preferFulResImage) &&
  502. isImage2XAvailable)
  503. return LoadTextureFromFile(image2xFilePath);
  504. if (isImageAvailable)
  505. return LoadTextureFromFile(imageFileRelativePath);
  506. return null;
  507. }
  508. static Texture2D LoadTextureFromFile(string path)
  509. {
  510. Texture2D result;
  511. if (mImagesByPathCache.TryGetValue(path, out result))
  512. {
  513. if (result != null)
  514. return result;
  515. mImagesByPathCache.Remove(path);
  516. }
  517. // Don't use AssetDatabase to load as it will
  518. // pick filtering mode from the asset itself
  519. // which leads to inconsistent filtering between
  520. // images.
  521. result = GetNewTextureFromFile(path);
  522. mImagesByPathCache.Add(path, result);
  523. return result;
  524. }
  525. static Dictionary<string, Texture2D> mImagesByPathCache =
  526. new Dictionary<string, Texture2D>();
  527. static Dictionary<string, Texture2D> mImagesFromEditorGUICache =
  528. new Dictionary<string, Texture2D>();
  529. static Dictionary<string, Texture2D> mImagesFromAssetPreviewCache =
  530. new Dictionary<string, Texture2D>();
  531. static Texture mFileIcon;
  532. static Texture mPrivatedOverlayIcon;
  533. static Texture mAddedOverlayIcon;
  534. static Texture mDeletedLocalOverlayIcon;
  535. static Texture mDeletedRemoteOverlayIcon;
  536. static Texture mCheckedOutOverlayIcon;
  537. static Texture mOutOfSyncOverlayIcon;
  538. static Texture mConflictedOverlayIcon;
  539. static Texture mConflictResolvedOverlayIcon;
  540. static Texture mLockedLocalOverlayIcon;
  541. static Texture mLockedRemoteOverlayIcon;
  542. static Texture mRetainedOverlayIcon;
  543. static Texture mIgnoredverlayIcon;
  544. static Texture mRefreshIcon;
  545. static Texture mCloseIcon;
  546. static Texture mClickedCloseIcon;
  547. static Texture mHoveredCloseIcon;
  548. static Texture2D mLinkUnderlineImage;
  549. static Texture2D mEmptyImage;
  550. static Texture2D mTreeviewBackgroundTexture;
  551. static Texture2D mColumnsBackgroundTexture;
  552. static Texture2D mCommentBackground;
  553. static Texture2D mUndoIcon;
  554. static Texture2D mPlasticIcon;
  555. static Texture2D mBranchIcon;
  556. static Texture2D mConflictedIcon;
  557. static Texture2D mOutOfSyncIcon;
  558. static Texture2D mInviteUsersIcon;
  559. static Texture2D mLockIcon;
  560. static Texture2D mPlasticViewIcon;
  561. static Texture2D mPlasticNotifyIncomingIcon;
  562. static Texture2D mPlasticNotifyConflictIcon;
  563. static Texture2D mEmptyGravatarIcon;
  564. static Texture2D mStepOkIcon;
  565. static Texture2D mStep1Icon;
  566. static Texture2D mStep2Icon;
  567. static Texture2D mMergeLinkIcon;
  568. static Texture2D mAddedLocalIcon;
  569. static Texture2D mDeletedRemoteIcon;
  570. static Texture2D mDeletedIcon;
  571. static Texture2D mMovedIcon;
  572. static Texture2D mRepositoryIcon;
  573. static readonly ILog mLog = PlasticApp.GetLogger("Images");
  574. }
  575. }