コード例 #1
0
    public async Task <RouteResult> RouteAsync(string uri, object initData, ViewportOptions viewportOptions,
                                               ClaimsPrincipal principal)
    {
        var routeRequest = new RouteRequest(uri, initData, viewportOptions, principal);

        return(await RouteAsync(routeRequest));
    }
コード例 #2
0
 public RouteRequest(string uri, object initData, ViewportOptions viewportOptions, ClaimsPrincipal principal)
 {
     Uri             = uri;
     InitData        = initData;
     ViewportOptions = viewportOptions;
     Principal       = principal;
 }
コード例 #3
0
ファイル: SvgToPng.cs プロジェクト: studentutu/AkyuiUnity
        public static byte[] Convert(string svg, Vector2 size, ViewportOptions viewportOptions, XdImportSettings xdImportSettings)
        {
            var sizeX = Mathf.RoundToInt(size.x * xdImportSettings.SpriteSaveScale);
            var sizeY = Mathf.RoundToInt(size.y * xdImportSettings.SpriteSaveScale);

            if (string.IsNullOrWhiteSpace(svg))
            {
                var texture = new Texture2D(sizeX, sizeY);
                texture.SetPixels(Enumerable.Repeat(Color.clear, texture.width * texture.height).ToArray());
                return(texture.EncodeToPNG());
            }

            var unityAssetsParentPath = Path.GetDirectoryName(Application.dataPath) ?? "";
            var savePath     = Path.Combine("Assets", "Temp.svg");
            var saveFullPath = Path.Combine(unityAssetsParentPath, savePath);

            SvgImportTrigger.ProcessingFile  = savePath.ToUniversalPath();
            SvgImportTrigger.Size            = new Vector2Int(sizeX, sizeY);
            SvgImportTrigger.ViewportOptions = viewportOptions;

            using (Disposable.Create(() =>
            {
                SvgImportTrigger.ProcessingFile = null;
                SvgImportTrigger.Size = Vector2Int.zero;
                AssetDatabase.DeleteAsset(savePath);
            }))
            {
                File.WriteAllBytes(saveFullPath, System.Text.Encoding.UTF8.GetBytes(svg));
                AssetDatabase.ImportAsset(savePath);
                // SvgImportTrigger.OnPreprocessAssetが呼ばれる
                var texture = AssetDatabase.LoadAssetAtPath <Texture2D>(savePath);
                return(texture.EncodeToPNG());
            }
        }
コード例 #4
0
 public TestParameters(bool canDeactivate, bool isAuthorized, object newViewModel, RouteRequest routeRequest = null)
 {
     CanDeactivate = canDeactivate;
     IsAuthorized  = isAuthorized;
     NewViewModel  = newViewModel;
     RouteRequest  = routeRequest ?? new RouteRequest("uri", null, ViewportOptions.MainViewport(), new ClaimsPrincipal());
 }
コード例 #5
0
 private void UpdateProperties()
 {
     // The "PreserveViewport" property is deprecated and should be moved to the "ViewportOptions" property
     if (m_PreserveViewport)
     {
         m_ViewportOptions  = ViewportOptions.PreserveViewport;
         m_PreserveViewport = false;
     }
     EditorUtility.SetDirty(this);
 }
コード例 #6
0
ファイル: Camera.cs プロジェクト: sladen/openbve2
 // set viewport
 /// <summary>Sets the viewport.</summary>
 /// <param name="Options">The options to set up the viewport.</param>
 internal static void SetViewport(ViewportOptions options)
 {
     Gl.glViewport(0, 0, Screen.Properties.Width, Screen.Properties.Height);
     Gl.glMatrixMode(Gl.GL_PROJECTION);
     Gl.glLoadIdentity();
     const double inverseDegrees = 57.295779513082320877;
     double aspectRatio = Math.Tan(0.5 * options.HorizontalViewingAngle) / Math.Tan(0.5 * options.VerticalViewingAngle);
     Glu.gluPerspective(options.VerticalViewingAngle * inverseDegrees, -aspectRatio, options.NearClippingPlane, options.FarClippingPlane);
     Gl.glMatrixMode(Gl.GL_MODELVIEW);
     Gl.glLoadIdentity();
     Viewport = options;
 }
コード例 #7
0
    // public Option<UIElement> GetActiveControl(string viewportName)
    // {
    //     var viewportAdapter = GetControlViewportAdapter(viewportName);
    //     return viewportAdapter.HasNoValue
    //         ? Option<UIElement>.None
    //         : viewportAdapter.Value.ActiveControl;
    // }

    public Option <object> GetActiveDataContext(ViewportOptions viewportOptions)
    {
        switch (viewportOptions)
        {
        case NewWindowViewportOptions newWindowViewportOptions:
            return(Option.None <object>());

        case StandardViewportOptions standardViewportOptions:
            var viewportAdapterOption = GetExistingStandardViewportAdapter(standardViewportOptions);
            return(viewportAdapterOption.FlatMap(z => z.ActiveDataContext));

        default:
            throw new ArgumentOutOfRangeException(nameof(viewportOptions));
        }
    }
コード例 #8
0
    public Option <UIElement> GetActiveControl(ViewportOptions viewportOptions)
    {
        switch (viewportOptions)
        {
        case NewWindowViewportOptions newWindowViewportOptions:
            return(Option.None <UIElement>());

        case StandardViewportOptions standardViewportOptions:
            var viewportAdapterOption = GetExistingStandardViewportAdapter(standardViewportOptions);
            return(viewportAdapterOption.Select(z => z.ViewportUIElement));

        default:
            throw new ArgumentOutOfRangeException(nameof(viewportOptions));
        }
    }
コード例 #9
0
    public bool ImportSVG(TextReader textReader, ViewportOptions viewportOptions, float dpi = 0, float pixelsPerUnit = 1, int windowWidth = 0, int windowHeight = 0)
    {
        bool ret = false;

        try
        {
            _scene = SVGParser.ImportSVG(textReader, viewportOptions, dpi, pixelsPerUnit, windowWidth, windowHeight);
            ret    = true;
        }
        catch (System.Exception e)
        {
            Debug.LogError(e);
        }
        return(ret);
    }
コード例 #10
0
    public async Task ViewAwareVmReceivesView()
    {
        _fixture.GetMock <IViewAwareVm>()
        .Setup(z => z.LoadView(It.IsAny <object>()))
        .Verifiable();

        var routeRequest = new RouteRequest("", (decimal)25, ViewportOptions.MainViewport(), new ClaimsPrincipal());

        var parameters = new TestParameters(canDeactivate: true, isAuthorized: true,
                                            newViewModel: _viewAwareViewModel,
                                            routeRequest: routeRequest);
        var routeResult = await RunTest(parameters);

        routeResult.Success.Should().Be(true);
        routeResult.StatusCode.Should().Be(RouteResultStatusCode.OK);

        _fixture.GetMock <IViewAwareVm>()
        .Verify();
    }
コード例 #11
0
    public async Task Init1ParamsReturnsVoid()
    {
        _fixture.GetMock <IViewModelInit1ParamsReturnsTask>()
        .Setup(z => z.Init(It.IsAny <decimal>()))
        .Returns(() => Task.CompletedTask);

        var routeRequest = new RouteRequest("", (decimal)25, ViewportOptions.MainViewport(), new ClaimsPrincipal());

        var parameters = new TestParameters(canDeactivate: true, isAuthorized: true,
                                            newViewModel: _viewModelInit1ParamsReturnsTask,
                                            routeRequest: routeRequest);
        var routeResult = await RunTest(parameters);

        routeResult.Success.Should().Be(true);
        routeResult.StatusCode.Should().Be(RouteResultStatusCode.OK);

        _fixture.GetMock <IViewModelInit1ParamsReturnsTask>()
        .Verify();
    }
コード例 #12
0
    internal RouteWorkflowTask(
        RouteRequest routeRequest,
        IRouteEntryRegistry routeEntryRegistry,
        IRouteAuthorizationManager routeAuthorizationManager,
        IRouterService routerService,
        ILogger logger)
    {
        _routeRequest = routeRequest;

        _routeEntryRegistry        = routeEntryRegistry;
        _routeAuthorizationManager = routeAuthorizationManager;
        _routerService             = routerService;
        _logger = logger
                  .ForContext(SerilogConstants.Serilog_SourceContext_Name, nameof(RouteWorkflowTask))
                  .ForContext("Uri", Uri)
                  .ForContext("ViewportName", ViewportOptions.ToString())
                  .ForContext("InitData", InitData)
                  .ForContext("RouterServiceId", _routerService.RouterServiceId)
                  .ForContext("RoutingWorkflowId", RoutingWorkflowId);
    }
コード例 #13
0
    public Option <IControlViewportAdapter> GetControlViewportAdapter(ViewportOptions viewportOptions)
    {
        switch (viewportOptions)
        {
        case NewWindowViewportOptions newWindowViewportOptions:
            var windowSize = newWindowViewportOptions.DesiredWindowSize;
            var window     = new Window()
            {
                Width = windowSize.Width, Height = windowSize.Height
            };
            var viewportAdapter = new WindowViewportAdapter(window);
            return(viewportAdapter.Some <IControlViewportAdapter>());

        case StandardViewportOptions standardViewportOptions:
            return(GetExistingStandardViewportAdapter(standardViewportOptions));

        default:
            throw new ArgumentOutOfRangeException(nameof(viewportOptions),
                                                  $"No code to handle {viewportOptions.GetType()} viewport options.");
        }
    }
コード例 #14
0
 private void NavigateToOneMain()
 {
     var result = _routerService.RouteAsync("/control1", null, ViewportOptions.MainViewport(), null);
 }
コード例 #15
0
    internal async Task <RouteResult> GoAsync()
    {
        var initDataIsNull = InitData != null ? " with init data" : " without init data";

        using var timer = PerformanceTimer.Start(_logger,
                                                 $"Routing operation to {Uri} in Viewport {ViewportOptions.ToString() + initDataIsNull}");

        try
        {
            RouteEntryOption = RouteWorkflow.GetRouteEntry(_logger, _routeEntryRegistry, Uri);
            timer.Checkpoint("Route entry retrieved.");

            var routeResult = await RouteEntryOption.Match(
                some : async routeEntry =>
            {
                //Check authorization
                var routeContext = new RoutingContext(routeEntry, _routeRequest);
                var authorized   =
                    await RouteWorkflow.CheckRouteAuthorizationAsync(
                        _logger, _routeAuthorizationManager, routeContext);

                timer.Checkpoint("Route auth checked.");
                if (!authorized)
                {
                    return(new RouteResult(RouteResultStatusCode.Unauthorized));
                }

                //Can deactivate current
                var canDeactivate =
                    await RouteWorkflow.CanDeactivateCurrentRouteAsync(
                        _logger, _routerService, ViewportOptions, Uri,
                        InitData);
                timer.Checkpoint("CanDeactivate checked.");
                if (!canDeactivate)
                {
                    return(new RouteResult(RouteResultStatusCode.CanDeactiveFailed));
                }

                //Activate new route
                var canActivate = await RouteWorkflow.CanActivateNewRouteAsync(_logger);
                timer.Checkpoint("Activate checked.");
                if (!canActivate)
                {
                    return(new RouteResult(RouteResultStatusCode.CanActivateFailed));
                }

                //Get ViewModel
                Controller = RouteWorkflow.CreateViewModel(_logger, routeEntry);
                timer.Checkpoint("Viewmodel created");
                await RouteWorkflow.InitViewModel(_logger, InitData, Controller);
                timer.Checkpoint("Viewmodel inited.");
                //Get View
                View = RouteWorkflow.CreateView(_logger, routeEntry);
                timer.Checkpoint("View created.");
                RouteWorkflow.AssignDataContext(_logger, View, Controller);

                //IViewAware context
                if (Controller is IViewAware viewAware)
                {
                    RouteWorkflow.AssignViewToViewModel(_logger, View, viewAware);
                    timer.Checkpoint("ViewModel is view aware, so view assigned to view model");
                }

                //Add View to UI
                var routeResult = RouteWorkflow.AddViewToUi(_logger, _routerService, this, View);
                timer.Checkpoint("View added to UI.K");
                return(routeResult);
            },
                none : async() => new RouteResult(RouteResultStatusCode.RouteNotFound));

            FinishedTime = DateTime.UtcNow;

            return(routeResult);
        }
        catch (Exception e)
        {
            _logger.Error(e, "Exception during RouteWorkflowTask.Go() method.");
            throw;
        }
    }