protected override void SingletonAwake() { overlay = FindObjectOfType <UIOverlay>(); SetupScreenDic(); options = new ScreenOptions(); }
// --- static functions /// <summary>Initializes the SDL window.</summary> /// <param name="Options">The options to set up the window.</param> /// <returns>A boolean indicating the success of the operation.</returns> internal static bool Initialize(ScreenOptions options) { if (Sdl.SDL_InitSubSystem(Sdl.SDL_INIT_VIDEO) != 0) { return false; } else { Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_DOUBLEBUFFER, 1); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_RED_SIZE, Program.CurrentOptions.RedSize); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_GREEN_SIZE, Program.CurrentOptions.GreenSize); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_BLUE_SIZE, Program.CurrentOptions.BlueSize); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, Program.CurrentOptions.AlphaSize); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_DEPTH_SIZE, Program.CurrentOptions.DepthSize); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_SWAP_CONTROL, options.VerticalSynchronization ? 1 : 0); Sdl.SDL_ShowCursor(Sdl.SDL_DISABLE); int flags = Sdl.SDL_OPENGL | Sdl.SDL_HWSURFACE | Sdl.SDL_ANYFORMAT | Sdl.SDL_DOUBLEBUF; if (options.Fullscreen) { flags |= Sdl.SDL_FULLSCREEN; } else { flags |= Sdl.SDL_RESIZABLE; } IntPtr video = Sdl.SDL_SetVideoMode(options.Width, options.Height, options.BitsPerPixel, flags); if (video == IntPtr.Zero) { Sdl.SDL_QuitSubSystem(Sdl.SDL_INIT_VIDEO); return false; } else { { int value; Sdl.SDL_GL_GetAttribute(Sdl.SDL_GL_RED_SIZE, out value); Program.Log.Append("SDL_GL_RED_SIZE = ").Append(value.ToString(CultureInfo.InvariantCulture)).Append(" (").Append(Program.CurrentOptions.RedSize).AppendLine(" requested)"); Sdl.SDL_GL_GetAttribute(Sdl.SDL_GL_GREEN_SIZE, out value); Program.Log.Append("SDL_GL_GREEN_SIZE = ").Append(value.ToString(CultureInfo.InvariantCulture)).Append(" (").Append(Program.CurrentOptions.GreenSize).AppendLine(" requested)"); Sdl.SDL_GL_GetAttribute(Sdl.SDL_GL_BLUE_SIZE, out value); Program.Log.Append("SDL_GL_BLUE_SIZE = ").Append(value.ToString(CultureInfo.InvariantCulture)).Append(" (").Append(Program.CurrentOptions.BlueSize).AppendLine(" requested)"); Sdl.SDL_GL_GetAttribute(Sdl.SDL_GL_ALPHA_SIZE, out value); Program.Log.Append("SDL_GL_ALPHA_SIZE = ").Append(value.ToString(CultureInfo.InvariantCulture)).Append(" (").Append(Program.CurrentOptions.AlphaSize).AppendLine(" requested)"); Sdl.SDL_GL_GetAttribute(Sdl.SDL_GL_DEPTH_SIZE, out value); Program.Log.Append("SDL_GL_DEPTH_SIZE = ").Append(value.ToString(CultureInfo.InvariantCulture)).Append(" (").Append(Program.CurrentOptions.DepthSize).AppendLine(" requested)"); Program.Log.AppendLine(); } Sdl.SDL_WM_SetCaption("openBVE", null); string[] extensions = Gl.glGetString(Gl.GL_EXTENSIONS).Split(new char[] { ' ' }); for (int i = 0; i < extensions.Length; i++) { if (string.Equals(extensions[i], "GL_EXT_texture_filter_anisotropic", StringComparison.OrdinalIgnoreCase)) { Gl.glGetFloatv(Gl.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, out Program.AnisotropicMaximum); break; } } Properties = new ScreenProperties(options); Initialized = true; return true; } } }
public static void DrawBackground(AfterButton afterButton, bool showSettings = false) { GuiHelper.DrawElement("Images/popupWindow", 0.02, 0.1, 1, 0.94); GuiHelper.ButtonWithText(0.9, 0.92, 0.4, 0.2, "", SpriteManager.GetBackButton(), GuiHelper.CustomButton, afterButton); if (showSettings && GUI.Button(new Rect(GuiHelper.PercentW(0.8), GuiHelper.PercentH(0.70), GuiHelper.PercentW(0.2), GuiHelper.PercentH(0.2)), SpriteManager.GetSettingsIcon(), GuiHelper.CustomButton)) { ScreenOptions so = Camera.main.gameObject.AddComponent <ScreenOptions>(); so.Prepare(delegate(){ Destroy(so); }); } }
public void FixScreenOptions() { if (ScreenOptions == null) { ScreenOptions = new List <ScreenOption>(); } foreach (var screenItem in WallpaperApi.Screens) { var exist = ScreenOptions.FirstOrDefault(m => m.Screen == screenItem); if (exist == null) { //新增了屏幕 ScreenOptions.Add(new ScreenOption() { Screen = screenItem }); } } // 过滤移除的屏幕 ScreenOptions = ScreenOptions.Where(m => WallpaperApi.Screens.Contains(m.Screen)).ToList(); }
public ScreenCaptureService(ScreenOptions screenOptions) { ScreenOptions = screenOptions; }
internal ScreenProperties(ScreenOptions options) { this.Width = options.Width; this.Height = options.Height; this.AspectRatio = (double)options.Width / (double)options.Height; }
public ScreenCap(ScreenOptions screenOptions) { _screenOptions = screenOptions; }