public TemplateModificationResult <TemplatePageAreaPart> DefinePointOfInterest(Rectangle dimension, uint orderInArea)
        {
            if (!AreaDimension.Contains(dimension))
            {
                return(TemplateModificationResult <TemplatePageAreaPart> .Failure(new PageAreaPartNotInPageAreaDimension(dimension, AreaDimension)));
            }

            foreach (var interestPoint in _interestPoints)
            {
                if (interestPoint.Dimension == dimension)
                {
                    return(TemplateModificationResult <TemplatePageAreaPart> .Failure(new DuplicatedPageAreaDimension(dimension)));
                }
                if (interestPoint.OrderInArea == orderInArea)
                {
                    return(TemplateModificationResult <TemplatePageAreaPart> .Failure(new DuplicatedPageAreaPartOrder(orderInArea)));
                }
            }

            var areaPart = new TemplatePageAreaPart(dimension, orderInArea);

            _interestPoints.Add(areaPart);

            return(TemplateModificationResult <TemplatePageAreaPart> .Success(areaPart));
        }
 public OutdoorRecreationProduct()
 {
     this.itemVolumeField                  = new VolumeDimension();
     this.wheelBaseField                   = new CycleLengthDimension();
     this.cycleBottomBracketDropField      = new CycleLengthDimension();
     this.cycleBottomBracketHeightField    = new CycleLengthDimension();
     this.cycleChainstayLengthField        = new CycleLengthDimension();
     this.cycleEffectiveTopTubeLengthField = new CycleLengthDimension();
     this.cycleHeadTubeAngleField          = new DegreeDimension();
     this.cycleHeadTubeLengthField         = new CycleLengthDimension();
     this.cycleReachLengthField            = new CycleLengthDimension();
     this.cycleSeatTubeAngleField          = new DegreeDimension();
     this.cycleSeatTubeLengthField         = new CycleLengthDimension();
     this.cycleStackHeightField            = new CycleLengthDimension();
     this.cycleTopTubeLengthField          = new CycleLengthDimension();
     this.batteryAverageLifeField          = new AssemblyTimeDimension();
     this.itemAreaField = new AreaDimension();
     this.memoryStorageCapacityField = new MemorySizeDimension();
     this.wattageField = new WattageDimension();
     this.lightSourceOperatingLifeField = new BurnTimeDimension();
     this.maximumEnergyOutputField      = new EnergyConsumptionDimension();
     this.temperatureRatingField        = new TemperatureRatingDimension();
     this.heatOutputField = new TemperatureRatingDimension();
     this.minimumCompatibleBootSizeField = new BootSizeDimension();
     this.maximumCompatibleBootSizeField = new BootSizeDimension();
     this.fuelCapacityField = new VolumeDimension();
     this.capacityField     = new VolumeDimension();
     this.amperageField     = new AmperageDimension();
     this.inseamLengthField = new NeckSizeDimension();
     this.floorAreaField    = new AreaDimension();
 }
 public override int GetHashCode()
 {
     return(AreaDimension.GetHashCode());
 }
 public bool Equals(TemplatePageArea other)
 {
     return(AreaDimension.Equals(other.AreaDimension));
 }