Example #1
0
    protected override void SingletonAwake()
    {
        overlay = FindObjectOfType <UIOverlay>();
        SetupScreenDic();

        options = new ScreenOptions();
    }
Example #2
0
 // --- 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);
            });
        }
    }
Example #4
0
        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();
        }
Example #5
0
 public ScreenCaptureService(ScreenOptions screenOptions)
 {
     ScreenOptions = screenOptions;
 }
Example #6
0
 internal ScreenProperties(ScreenOptions options)
 {
     this.Width = options.Width;
     this.Height = options.Height;
     this.AspectRatio = (double)options.Width / (double)options.Height;
 }
Example #7
0
 public ScreenCap(ScreenOptions screenOptions)
 {
     _screenOptions = screenOptions;
 }