public override IPhoto CreatePhoto()
        {
            while (true)
            {
                PhotMetadata tmp = it_stock.Get();
                if (tmp == null)
                {
                    it_stock = stockDatabase.GetIterator();
                    if (it_stock.Get() == null)
                    {
                        throw new Exception("StockDatabase is empty");
                    }
                    else
                    {
                        tmp = it_stock.Get();
                    }
                }
                if (it_stock.HasNext())
                {
                    it_stock.Next();
                }
                else
                {
                    it_stock = stockDatabase.GetIterator();
                }


                double longitute = tmp.Longitude;
                double latitute  = tmp.Latitude;

                if (MinLatitude <= latitute && latitute <= MaxLatitude &&
                    MinLongitude <= longitute && longitute <= MaxLongitude)
                {
                    PhotMetadata decrypted = new PhotMetadata(tmp);
                    decrypted.HeightPx = stockCoder.Decoder.Handle(decrypted.HeightPx);
                    decrypted.WidthPx  = stockCoder.Decoder.Handle(decrypted.WidthPx);

                    // testing if data is correct
                    String test1 = stockCoder.Coder.Handle(decrypted.HeightPx);
                    if (test1 != tmp.HeightPx)
                    {
                        continue;
                    }

                    test1 = stockCoder.Coder.Handle(decrypted.WidthPx);
                    if (test1 != tmp.WidthPx)
                    {
                        continue;
                    }

                    return(new ItalyPhoto(new PlainPhoto(decrypted)));
                }
            }
        }
        private static PhotMetadata GeneratePhotoData(Random R)
        {
            var result = new PhotMetadata()
            {
                Camera         = DBGeneratorUtils.AnyFromArray(R, cameras),
                Name           = DBGeneratorUtils.AnyFromArray(R, namePrefix) + DBGeneratorUtils.AnyFromArray(R, nameBase) + ".jpg",
                CameraSettings = GetCameraSettings(R),
                Date           = new DateTime(2004, 1, 1).AddDays(R.Next(365 * 16)),
            };

            (result.Longitude, result.Latitude) = GetRandomLatLong(R);
            int pixelIdx = R.Next(pixelWidths.Length);

            result.WidthPx  = pixelMap[pixelWidths[pixelIdx]];
            result.HeightPx = pixelMap[pixelHeights[pixelIdx]];
            return(result);
        }
示例#3
0
 public FrancePhoto(ShutterStockIterator shutterStock)
 {
     while (this.photo == null)
     {
         if (shutterStock.HasNext)
         {
             PhotMetadata p = shutterStock.GetNext;
             if (p.Longitude >= 0.0 && p.Longitude <= 5.4 && p.Latitude >= 43.6 && p.Latitude <= 50.0)
             {
                 this.photo = p;
             }
         }
         else
         {
             shutterStock.Reset();
         }
     }
 }
示例#4
0
 public PolandPhoto(ShutterStockIterator shutterStock)
 {
     while (this.photo == null)
     {
         if (shutterStock.HasNext)
         {
             PhotMetadata p = shutterStock.GetNext;
             if (p.Longitude >= 14.4 && p.Longitude <= 23.5 && p.Latitude >= 49.8 && p.Latitude <= 54.2)
             {
                 this.photo = p;
             }
         }
         else
         {
             shutterStock.Reset();
         }
     }
 }
示例#5
0
 public ItalyPhoto(ShutterStockIterator shutterStock)
 {
     while (this.photo == null)
     {
         if (shutterStock.HasNext)
         {
             PhotMetadata p = shutterStock.GetNext;
             if (p != null)
             {
                 if (p.Longitude >= 8.8 && p.Longitude <= 15.2 && p.Latitude >= 37.7 && p.Latitude <= 44.0)
                 {
                     this.photo = p;
                 }
             }
         }
         else
         {
             shutterStock.Reset();
         }
     }
 }
 public FrancePhoto(PhotMetadata p) : base(p)
 {
 }
示例#7
0
 public PlainPhoto(PhotMetadata phot)
 {
     this.plain = phot;
 }
示例#8
0
 public AbstractPhoto(PhotMetadata p)
 {
     photo = p;
 }
示例#9
0
 public static Photo FromPhotMetadata(PhotMetadata p)
 {
     return(new Photo(p.Name, int.Parse(p.WidthPx), int.Parse(p.HeightPx)));
 }
示例#10
0
 public PolandPhoto(PhotMetadata p) : base(p)
 {
 }
示例#11
0
 public ItalyPhoto(PhotMetadata p) : base(p)
 {
 }