Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
NShaderScannerFactory.cs
Go to the documentation of this file.
1 #region Header Licence
2 // ---------------------------------------------------------------------
3 //
4 // Copyright (c) 2009 Alexandre Mutel and Microsoft Corporation.
5 // All rights reserved.
6 //
7 // This code module is part of NShader, a plugin for visual studio
8 // to provide syntax highlighting for shader languages (hlsl, glsl, cg)
9 //
10 // ------------------------------------------------------------------
11 //
12 // This code is licensed under the Microsoft Public License.
13 // See the file License.txt for the license details.
14 // More info on: http://nshader.codeplex.com
15 //
16 // ------------------------------------------------------------------
17 #endregion
18 using System.Collections.Generic;
19 using System.IO;
20 using Microsoft.VisualStudio.Package;
21 using Microsoft.VisualStudio.TextManager.Interop;
22 
23 namespace NShader
24 {
25  public class NShaderScannerFactory {
26  private static NShaderScanner paradoxShaderScanner;
27  private static Dictionary<string, NShaderScanner> mapExtensionToScanner;
28 
29  static void Init() {
30  if (mapExtensionToScanner == null)
31  {
32  mapExtensionToScanner = new Dictionary<string, NShaderScanner>();
33 
34  // Paradox Scanner
35  paradoxShaderScanner = new NShaderScanner(new ParadoxShaderTokenProvider());
36 
37  foreach (var field in typeof (NShaderSupportedExtensions).GetFields())
38  {
39  if (field.Name.StartsWith("Paradox_"))
40  mapExtensionToScanner.Add(field.GetValue(null).ToString(), paradoxShaderScanner);
41  }
42  }
43  }
44 
45  public static NShaderScanner GetShaderScanner(string filepath)
46  {
47  Init();
48 
49  string ext = Path.GetExtension(filepath).ToLower();
50  NShaderScanner scanner;
51  if (!mapExtensionToScanner.TryGetValue(ext, out scanner))
52  {
53  scanner = paradoxShaderScanner;
54  }
55  return scanner;
56  }
57 
58  public static NShaderScanner GetShaderScanner(IVsTextLines buffer)
59  {
60  return GetShaderScanner(FilePathUtilities.GetFilePath(buffer));
61  }
62  }
63 }
Supported extensions. Loaded by NShaderScannerFactory. WARNING, you need also to add those extensions...
static NShaderScanner GetShaderScanner(IVsTextLines buffer)
static NShaderScanner GetShaderScanner(string filepath)