public async Task <IActionResult> CreateAssociation(AssociationCreateRequest request)
        {
            //Creazione modello richiesto da admin
            var model = new Association
            {
                Name                      = request.Name,
                Classifications           = request.Classifications,
                Divisions                 = request.Divisions,
                Categories                = request.Categories,
                FirstPenaltyLabel         = request.FirstPenaltyLabel,
                HitOnNonThreatPointDown   = request.HitOnNonThreatPointDown,
                FirstProceduralPointDown  = request.FirstProceduralPointDown,
                SecondPenaltyLabel        = request.SecondPenaltyLabel,
                SecondProceduralPointDown = request.SecondProceduralPointDown,
                ThirdPenaltyLabel         = request.ThirdPenaltyLabel,
                ThirdProceduralPointDown  = request.ThirdProceduralPointDown,
                SoRoles                   = request.SoRoles
            };

            //Invocazione del service layer
            var validations = await BasicLayer.CreateAssociation(model, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }


            //Return contract
            return(Ok(ContractUtils.GenerateContract(model)));
        }
Ejemplo n.º 2
0
        public Task <IActionResult> FetchAvailableGroupShooter(GroupRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetGroup(request.GroupId);

            //modifica solo se admin o se utente richiedente è lo stesso che ha creato
            if (entity == null)
            {
                return(Task.FromResult <IActionResult>(NotFound()));
            }

            //Invocazione del service layer
            var shooters = BasicLayer.FetchAvailableShooters(entity);

            var shooterIds = shooters.Select(s => s.Id).ToList();

            var shooterAssociation = BasicLayer.FetchShooterAssociationByShooterIds(shooterIds, entity.MatchId);
            var shooterTeams       = BasicLayer.FetchTeamsFromShooterIds(shooterIds);

            var teamsIds = shooterTeams.Select(x => x.TeamId).ToList();
            var teams    = BasicLayer.FetchTeamsByIds(teamsIds);

            var result = shooters.As(x => ContractUtils.GenerateContract(x,
                                                                         shooterAssociation.Where(s => s.ShooterId == x.Id).ToList(),
                                                                         teams.Where(s => shooterTeams.Where(st => st.ShooterId == x.Id).Select(st => st.TeamId).Contains(s.Id))
                                                                         .ToList()));

            //Return contract
            return(Reply(result));
        }
        public async Task <IActionResult> CreateShooterAssociationInfo(ShooterAssociationInfoCreateRequest request)
        {
            var(validations, shooter, association) = CheckRequest(request.ShooterId, request.AssociationId, request.Categories);
            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            var entity = new ShooterAssociationInfo
            {
                ShooterId        = request.ShooterId,
                AssociationId    = request.AssociationId,
                CardNumber       = request.CardNumber,
                SafetyOfficier   = request.SafetyOfficier,
                RegistrationDate = request.RegistrationDate,
                Categories       = request.Categories
            };

            //Invocazione del service layer
            validations = await BasicLayer.CreateShooterAssociationInfo(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Return contract
            return(Ok(ContractUtils.GenerateContract(entity, association, shooter)));
        }
Ejemplo n.º 4
0
        public Task <IActionResult> DeleteStageSO(ShooterSOStageRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetShooterSOStage(request.ShooterSOStageId);

            //Se l'utente non hai i permessi non posso rimuovere entità con userId nullo
            if (entity == null)
            {
                return(Task.FromResult <IActionResult>(NotFound()));
            }

            //Invocazione del service layer
            var validations = BasicLayer.DeleteShooterSOStage(entity);

            if (validations.Count > 0)
            {
                return(BadRequestTask(validations));
            }

            var shooterSOStagees = BasicLayer.FetchShooterSOStagesByStageId(entity.StageId);
            var shooterIds       = shooterSOStagees.Select(x => x.ShooterId).ToList();
            var shooters         = BasicLayer.FetchShootersByIds(shooterIds);

            //Return contract
            return(Reply(shooterSOStagees.As(x => ContractUtils.GenerateContract(x, shooters.FirstOrDefault(s => s.Id == x.ShooterId)))));
        }
        private (IList <ValidationResult> validations, Shooter shooter, Association association) CheckRequest(string shooterId, string associationId, IList <string> categories)
        {
            IList <ValidationResult> validations = new List <ValidationResult>();

            // check shooter
            var shooter = BasicLayer.GetShooter(shooterId);

            if (shooter == null)
            {
                validations.Add(new ValidationResult("Shooter not found"));
            }
            // check association
            var association = BasicLayer.GetAssociation(associationId);

            if (association == null)
            {
                validations.Add(new ValidationResult("Association not found"));
                return(validations, shooter, association);
            }

            if (!categories.All(x => association.Categories.Contains(x)))
            {
                validations.Add(new ValidationResult("Some categories were not found in association"));
            }

            return(validations, shooter, association);
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> DeleteUserROle(UserRoleRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = AuthorizationLayer.GetUserRole(request.UserRoleId);

            //Se l'utente non hai i permessi non posso rimuovere entità con userId nullo
            if (entity == null)
            {
                return(NotFound());
            }

            //Invocazione del service layer
            var validations = await AuthorizationLayer.DeleteUserRole(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            var userRoles = AuthorizationLayer.FetchUserRole(entity.RoleId);

            var userIds = userRoles.Select(x => x.UserId).ToList();

            var users = BasicLayer.FetchShootersByIds(userIds);

            //Return contract
            return(Ok(userRoles.As(x => ContractUtils.GenerateContract(x, users?.FirstOrDefault(s => s.Id == x.UserId)))));
        }
Ejemplo n.º 7
0
        public Task <IActionResult> UpsertTeamHolder(TeamHolderCreateRequest request)
        {
            var entity = this.BasicLayer.GetTeamHolderByTeamAndShooterId(request.TeamId, request.ShooterId);

            if (entity == null)
            {
                entity = new TeamHolder
                {
                    ShooterId = request.ShooterId,
                    TeamId    = request.TeamId
                };
            }

            entity.Description = request.Description;

            //Invocazione del service layer
            var validations = BasicLayer.UpsertTeamHolder(entity);

            if (validations.Count > 0)
            {
                return(BadRequestTask(validations));
            }

            //Return contract
            return(Reply(ContractUtils.GenerateContract(entity)));
        }
        public async Task <IActionResult> CreatePlace(PlaceCreateRequest request)
        {
            //Creazione modello richiesto da admin
            var model = new Place
            {
                Name          = request.Name,
                Holder        = request.Holder,
                Phone         = request.Phone,
                Email         = request.Email,
                Address       = request.Address,
                City          = request.City,
                Region        = request.Region,
                PostalZipCode = request.PostalZipCode,
                Country       = request.Country
            };

            //Invocazione del service layer
            var validations = await BasicLayer.CreatePlace(model, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Return contract
            return(Ok(ContractUtils.GenerateContract(model)));
        }
        public async Task <IActionResult> CreateMatch(MatchCreateRequest request)
        {
            //Creazione modello richiesto da admin
            var model = new Match
            {
                Name = request.Name,
                MatchDateTimeStart   = request.MatchDateTimeStart,
                MatchDateTimeEnd     = request.MatchDateTimeEnd,
                AssociationId        = request.AssociationId,
                PlaceId              = request.PlaceId,
                OpenMatch            = request.OpenMatch,
                UnifyClassifications = request.UnifyClassifications,
                Cost           = request.Cost,
                PaymentDetails = request.PaymentDetails
            };

            //Invocazione del service layer
            var validations = await BasicLayer.CreateMatch(model, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            var association = BasicLayer.GetAssociation(model.AssociationId);
            var place       = BasicLayer.GetPlace(model.PlaceId);

            //Return contract
            return(Ok(ContractUtils.GenerateContract(model, association, place)));
        }
        public async Task <IActionResult> UpdateTeam([EntityId] TeamUpdateRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetTeam(request.TeamId);

            //modifica solo se admin o se utente richiedente è lo stesso che ha creato
            if (entity == null)
            {
                return(NotFound());
            }

            //Aggiornamento dell'entità
            entity.Name = request.Name;

            //Salvataggio
            var validations = await BasicLayer.UpdateTeam(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Confermo
            return(Ok(ContractUtils.GenerateContract(entity)));
        }
        public Task <IActionResult> UpsertShooterTeam(ShooterTeamCreateRequest request)
        {
            var entity = this.BasicLayer.GetShooterTeamByTeamAndShooterId(request.TeamId, request.ShooterId);

            if (entity == null)
            {
                entity = new ShooterTeam
                {
                    ShooterId = request.ShooterId,
                    TeamId    = request.TeamId
                };
            }

            entity.RegistrationDate = request.RegistrationDate;

            //Invocazione del service layer
            var validations = BasicLayer.UpsertShooterTeam(entity);

            if (validations.Count > 0)
            {
                return(BadRequestTask(validations));
            }

            //Return contract
            return(Reply(new OkResponse {
                Status = true
            }));
        }
        public async Task <IActionResult> DeleteMatch([EntityId] MatchRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetMatch(request.MatchId);

            //Se l'utente non hai i permessi non posso rimuovere entità con userId nullo
            if (entity == null)
            {
                return(NotFound());
            }

            //Invocazione del service layer
            var validations = await BasicLayer.DeleteMatch(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            var association = BasicLayer.GetAssociation(entity.AssociationId);
            var place       = BasicLayer.GetPlace(entity.PlaceId);

            //Return contract
            return(Ok(ContractUtils.GenerateContract(entity, association, place)));
        }
        public Task <IActionResult> UpsertShooterStage(ShooterStageRequest request)
        {
            var shooterStage = new ShooterStage
            {
                StageId           = request.StageId,
                Time              = request.Time,
                ShooterId         = request.ShooterId,
                DownPoints        = request.DownPoints,
                Procedurals       = request.Procedurals,
                Bonus             = request.Bonus,
                HitOnNonThreat    = request.HitOnNonThreat,
                FlagrantPenalties = request.FlagrantPenalties,
                Ftdr              = request.Ftdr,
                Warning           = request.Warning,
                Disqualified      = request.Disqualified,
                Notes             = request.Notes
            };
            //Invocazione del service layer
            var validations = BasicLayer.UpsertShooterStage(shooterStage);

            if (validations.Count > 0)
            {
                return(BadRequestTask(validations));
            }

            //Return contract
            return(Reply(new OkResponse {
                Status = true
            }));
        }
Ejemplo n.º 14
0
 protected SharedExercise(BasicLayer layer, int uid, string exerciseName, string userName)
 {
     UID          = uid;
     Layer        = layer;
     ExerciseName = exerciseName;
     UserName     = userName;
 }
Ejemplo n.º 15
0
        /// <summary>
        /// Generate the RBF network.
        /// </summary>
        /// <returns>The neural network.</returns>
        public BasicNetwork Generate()
        {
            int        y          = PatternConst.START_Y;
            BasicLayer inputLayer = new BasicLayer(new ActivationLinear(),
                                                   false, this.InputNeurons);

            inputLayer.X = PatternConst.START_X;
            inputLayer.Y = y;
            y           += PatternConst.INC_Y;
            BasicLayer outputLayer = new BasicLayer(ActivationFunction, false, this.OutputNeurons);

            outputLayer.X = PatternConst.START_X;
            outputLayer.Y = y;
            NEATSynapse synapse = new NEATSynapse(inputLayer, outputLayer,
                                                  this.neurons, this.NEATActivation, 0);

            synapse.Snapshot = this.Snapshot;
            inputLayer.AddSynapse(synapse);
            BasicNetwork network = new BasicNetwork();

            network.TagLayer(BasicNetwork.TAG_INPUT, inputLayer);
            network.TagLayer(BasicNetwork.TAG_OUTPUT, outputLayer);
            network.Structure.FinalizeStructure();

            return(network);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Save the specified Encog object to an XML writer.
        /// </summary>
        /// <param name="obj">The object to save.</param>
        /// <param name="xmlOut">The XML writer to save to.</param>
        public void Save(IEncogPersistedObject obj, WriteXML xmlOut)
        {
            PersistorUtil.BeginEncogObject(
                EncogPersistedCollection.TYPE_BASIC_LAYER, xmlOut, obj, false);
            BasicLayer layer = (BasicLayer)obj;

            xmlOut.AddProperty(BasicLayerPersistor.PROPERTY_NEURONS, layer
                               .NeuronCount);
            xmlOut.AddProperty(BasicLayerPersistor.PROPERTY_X, layer.X);
            xmlOut.AddProperty(BasicLayerPersistor.PROPERTY_Y, layer.Y);

            if (layer.HasBias)
            {
                StringBuilder result = new StringBuilder();
                NumberList.ToList(CSVFormat.EG_FORMAT, result, layer.BiasWeights);
                xmlOut.AddProperty(BasicLayerPersistor.PROPERTY_THRESHOLD, result
                                   .ToString());
            }

            xmlOut.AddProperty(BasicLayerPersistor.PROPERTY_BIAS_ACTIVATION, layer.BiasActivation);

            if (layer.ActivationFunction != null)
            {
                SaveActivationFunction(layer.ActivationFunction, xmlOut);
            }

            xmlOut.EndTag();
        }
        public async Task <IActionResult> UpdateShooterAssociationInfo(ShooterAssociationInfoUpdateRequest request)
        {
            var entity = this.BasicLayer.GetShooterAssociationInfo(request.ShooterAssociationInfoId);

            if (entity == null)
            {
                return(NotFound());
            }

            var(validations, shooter, association) = CheckRequest(request.ShooterId, request.AssociationId, request.Categories);
            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            entity.ShooterId        = request.ShooterId;
            entity.AssociationId    = request.AssociationId;
            entity.CardNumber       = request.CardNumber;
            entity.SafetyOfficier   = request.SafetyOfficier;
            entity.Categories       = request.Categories;
            entity.RegistrationDate = request.RegistrationDate;


            //Invocazione del service layer
            validations = await BasicLayer.UpdateShooterAssociationInfo(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Return contract
            return(Ok(ContractUtils.GenerateContract(entity, association, shooter)));
        }
        /// <summary>
        /// Generate the feedforward neural network.
        /// </summary>
        public IMLMethod Generate()
        {
            if (_activationOutput == null)
            {
                _activationOutput = _activationHidden;
            }

            ILayer input = new BasicLayer(null, true, _inputNeurons);

            var result = new BasicNetwork();

            result.AddLayer(input);


            foreach (Int32 count  in  _hidden)
            {
                ILayer hidden = new BasicLayer(_activationHidden, true,
                                               (count));

                result.AddLayer(hidden);
            }

            ILayer output = new BasicLayer(_activationOutput, false,
                                           _outputNeurons);

            result.AddLayer(output);

            result.Structure.FinalizeStructure();
            result.Reset();

            return(result);
        }
        public async Task <IActionResult> UpdatePlace([EntityId] PlaceUpdateRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetPlace(request.PlaceId);

            //modifica solo se admin o se utente richiedente è lo stesso che ha creato
            if (entity == null)
            {
                return(NotFound());
            }

            //Aggiornamento dell'entità
            entity.Name          = request.Name;
            entity.Holder        = request.Holder;
            entity.Phone         = request.Phone;
            entity.Email         = request.Email;
            entity.Address       = request.Address;
            entity.City          = request.City;
            entity.Region        = request.Region;
            entity.PostalZipCode = request.PostalZipCode;
            entity.Country       = request.Country;

            //Salvataggio
            var validations = await BasicLayer.UpdatePlace(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Confermo
            return(Ok(ContractUtils.GenerateContract(entity)));
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Generate the RBF network.
        /// </summary>
        /// <returns>The neural network.</returns>
        public BasicNetwork Generate()
        {
            ILayer input = new BasicLayer(new ActivationLinear(), false,
                                          this.inputNeurons);
            ILayer                   output   = new BasicLayer(new ActivationLinear(), false, this.outputNeurons);
            BasicNetwork             network  = new BasicNetwork();
            RadialBasisFunctionLayer rbfLayer = new RadialBasisFunctionLayer(
                this.hiddenNeurons);

            network.AddLayer(input);
            network.AddLayer(rbfLayer, SynapseType.Direct);
            network.AddLayer(output);
            network.Structure.FinalizeStructure();
            network.Reset();
            network.TagLayer(RBF_LAYER, rbfLayer);
            rbfLayer.RandomizeRBFCentersAndWidths(this.inputNeurons, -1, 1, RBFEnum.Gaussian);
            int y = PatternConst.START_Y;

            input.X    = PatternConst.START_X;
            input.Y    = y;
            y         += PatternConst.INC_Y;
            rbfLayer.X = PatternConst.START_X;
            rbfLayer.Y = y;
            y         += PatternConst.INC_Y;
            output.X   = PatternConst.START_X;
            output.Y   = y;
            return(network);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Generate the RSOM network.
        /// </summary>
        /// <returns>The neural network.</returns>
        public BasicNetwork Generate()
        {
            ILayer output = new BasicLayer(new ActivationLinear(), false,
                                           this.outputNeurons);
            ILayer input = new BasicLayer(new ActivationLinear(), false,
                                          this.inputNeurons);

            BasicNetwork network = new BasicNetwork();
            ILayer       context = new ContextLayer(this.outputNeurons);

            network.AddLayer(input);
            network.AddLayer(output);

            output.AddNext(context, SynapseType.OneToOne);
            context.AddNext(input);

            int y = PatternConst.START_Y;

            input.X = PatternConst.START_X;
            input.Y = y;

            context.X = PatternConst.INDENT_X;
            context.Y = y;

            y += PatternConst.INC_Y;

            output.X = PatternConst.START_X;
            output.Y = y;

            network.Structure.FinalizeStructure();
            network.Reset();
            return(network);
        }
        public async Task <IActionResult> CreateShooterTeamPayment(ShooterTeamPaymentCreateRequest request)
        {
            //Creazione modello richiesto da admin
            var model = new ShooterTeamPayment
            {
                ShooterId        = request.ShooterId,
                TeamId           = request.TeamId,
                Amount           = request.Amount,
                Reason           = request.Reason,
                PaymentDateTime  = request.PaymentDateTime,
                ExpireDateTime   = request.ExpireDateTime,
                NotifyExpiration = request.NotifyExpiration
            };

            //Invocazione del service layer
            var validations = await BasicLayer.CreateShooterTeamPayment(model, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Return contract
            return(Ok(ContractUtils.GenerateContract(model)));
        }
        public async Task <IActionResult> UpdateShooterTeamPayment([EntityId] ShooterTeamPaymentUpdateRequest request)
        {
            //Recupero l'elemento dal business layer
            var entity = BasicLayer.GetShooterTeamPayment(request.ShooterTeamPaymentId);

            //modifica solo se admin o se utente richiedente è lo stesso che ha creato
            if (entity == null)
            {
                return(NotFound());
            }

            //Aggiornamento dell'entità
            entity.TeamId           = request.TeamId;
            entity.ShooterId        = request.ShooterId;
            entity.Amount           = request.Amount;
            entity.Reason           = request.Reason;
            entity.PaymentDateTime  = request.PaymentDateTime;
            entity.ExpireDateTime   = request.ExpireDateTime;
            entity.NotifyExpiration = request.NotifyExpiration;

            //Salvataggio
            var validations = await BasicLayer.UpdateShooterTeamPayment(entity, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Confermo
            return(Ok(ContractUtils.GenerateContract(entity)));
        }
Ejemplo n.º 24
0
        public Task <IActionResult> FetchAvailableMatchDirectorByAssociation(AssociationRequest request)
        {
            //Recupero la lista dal layer
            var entities = BasicLayer.FetchAvailableMatchDirectorByAssociaitonId(request.AssociationId);

            //Ritorno i contratti
            return(Reply(entities.As(x => ContractUtils.GenerateContract(x))));
        }
        public Task <IActionResult> FetchShooterTeamPaymentByShooterAndTeam(ShooterTeamRequest request)
        {
            //Recupero l'elemento dal business layer
            var entities = BasicLayer.FetchShooterTeamPaymentByTeamAndShooterId(request.TeamId, request.ShooterId);

            //Return contract
            return(Reply(entities.As(x => ContractUtils.GenerateContract(x))));
        }
Ejemplo n.º 26
0
        public Task <IActionResult> FetchAvailableStageSO(StageRequest request)
        {
            //Recupero la lista dal layer
            var entities = BasicLayer.FetchAvailabelShooterSOByStageId(request.StageId);

            //Ritorno i contratti
            return(Reply(entities.As(x => ContractUtils.GenerateContract(x))));
        }
        public Task <IActionResult> FetchAllGroups(MatchRequest request)
        {
            //Recupero la lista dal layer
            var entities = BasicLayer.FetchAllGroupsByMatchId(request.MatchId);

            //Ritorno i contratti
            return(Reply(entities.As(x => ContractUtils.GenerateContract(x))));
        }
Ejemplo n.º 28
0
        public Task <IActionResult> FetchAllShooters()
        {
            //Recupero la lista dal layer
            var entities = BasicLayer.FetchAllShooters();

            //Ritorno i contratti
            return(Reply(entities.As(x => ContractUtils.GenerateContract(x))));
        }
Ejemplo n.º 29
0
        public static List <IFeature> RenderStackedLabelLayer(IViewport viewport, BasicLayer layer)
        {
            lock (_syncRoot)
            {
                var renderedFeatures = new List <IFeature> ();
                var canvas           = new CALayer();
                canvas.Opacity = (float)layer.Opacity;

                //todo: take into account the priority
                var features = layer.GetFeaturesInView(viewport.Extent, viewport.Resolution);
                var margin   = viewport.Resolution * 15;

                var clusters = new List <Cluster> ();
                //todo: repeat until there are no more merges
                ClusterFeatures(clusters, features, margin, null, viewport, viewport.Resolution);
                //CenterClusters (clusters);

                //CATransaction.Begin();
                //CATransaction.SetValueForKey (MonoTouch.Foundation.NSNumber.FromBoolean(true), CATransaction.DisableActionsKey);

                foreach (var cluster in clusters)
                {
                    var feature = cluster.Features.OrderBy(f => f.Geometry.GetBoundingBox().GetCentroid().Y).FirstOrDefault();
                    //SetFeatureOutline (feature, layer.LayerName, cluster.Features.Count);
                    //var bb = RenderBox(cluster.Box, viewport);

                    //Zorg dat dit ALTIJD decimal zelfde ISet als ViewChanged is
                    //var feature = cluster.Features.FirstOrDefault ();

                    var styles = feature.Styles ?? Enumerable.Empty <IStyle>();
                    foreach (var style in styles)
                    {
                        if (feature.Styles != null && style.Enabled)
                        {
                            var styleKey         = layer.LayerName;                     //feature.GetHashCode ().ToString ();
                            var renderedGeometry = (feature[styleKey] != null) ? (CALayer)feature[styleKey] : null;

                            if (renderedGeometry == null)
                            {
                                renderedGeometry = GeometryRenderer.RenderPoint(feature.Geometry as Mapsui.Geometries.Point, style, viewport);

                                feature [styleKey] = renderedGeometry;
                                feature ["first"]  = true;
                            }
                            else
                            {
                                feature ["first"] = false;
                            }
                        }
                    }
                    renderedFeatures.Add(feature);

                    //renderedFeatures.Add (bb);
                }

                return(renderedFeatures);
            }
        }
Ejemplo n.º 30
0
		public static List<IFeature> RenderStackedLabelLayer(IViewport viewport, BasicLayer layer)
		{
			lock(_syncRoot)
			{
				var renderedFeatures = new List<IFeature> ();
				var canvas = new CALayer ();
				canvas.Opacity = (float)layer.Opacity;

				//todo: take into account the priority 
				var features = layer.GetFeaturesInView (viewport.Extent, viewport.Resolution);
				var margin = viewport.Resolution * 15;

				var clusters = new List<Cluster> ();
				//todo: repeat until there are no more merges
				ClusterFeatures (clusters, features, margin, null, viewport, viewport.Resolution);
				//CenterClusters (clusters);

				//CATransaction.Begin();
				//CATransaction.SetValueForKey (MonoTouch.Foundation.NSNumber.FromBoolean(true), CATransaction.DisableActionsKey);

				foreach(var cluster in clusters){

					var feature = cluster.Features.OrderBy(f => f.Geometry.GetBoundingBox().GetCentroid().Y).FirstOrDefault();
					//SetFeatureOutline (feature, layer.LayerName, cluster.Features.Count);
					//var bb = RenderBox(cluster.Box, viewport);

					//Zorg dat dit ALTIJD decimal zelfde ISet als ViewChanged is
					//var feature = cluster.Features.FirstOrDefault ();

					var styles = feature.Styles ?? Enumerable.Empty<IStyle>();
					foreach (var style in styles)
					{
						if (feature.Styles != null && style.Enabled)
						{
							var styleKey = layer.LayerName; //feature.GetHashCode ().ToString ();
							var renderedGeometry = (feature[styleKey] != null) ? (CALayer)feature[styleKey] : null;

							if (renderedGeometry == null) {
								renderedGeometry = GeometryRenderer.RenderPoint (feature.Geometry as Mapsui.Geometries.Point, style, viewport);

								feature [styleKey] = renderedGeometry;
								feature ["first"] = true;

							} else {
								feature ["first"] = false;
							}
						}
					}
					renderedFeatures.Add (feature);

					//renderedFeatures.Add (bb);
				}

				return renderedFeatures;
			}
		}
Ejemplo n.º 31
0
 public override void CollectLayer(BasicLayer layer)
 {
     foreach (var stroke in layer.Strokes)
     {
         foreach (var point in stroke.Points)
         {
             points.Add(point);
         }
     }
 }