Exemplo n.º 1
0
 public Color[] GetPixels(Flip flip)
 {
     if (!Pixels.ContainsKey(flip))
     {
         if (!Pixels.ContainsKey(Flip.None))
         {
             int w = (int)rect.width;
             int h = (int)rect.height;
             int x = (int)rect.x;
             int y = (int)rect.y;
             Pixels[Flip.None] = texture.GetPixels(x, y, w, h);
         }
         if (flip != Flip.None)
         {
             int     w     = (int)rect.width;
             int     h     = (int)rect.height;
             bool    flipX = flip.HasFlag(Flip.Horizontal);
             bool    flipY = flip.HasFlag(Flip.Vertical);
             Color[] pix   = Pixels[Flip.None];
             Color[] tar   = new Color[pix.Length];
             for (int j = 0; j < h; j++)
             {
                 for (int k = 0; k < w; k++)
                 {
                     int tileY = flipY ? (h - 1 - j) : j;
                     int tileX = flipX ? (w - 1 - k) : k;
                     tar[j * w + k] = pix[tileY * w + tileX];
                 }
             }
             Pixels[flip] = tar;
         }
     }
     return(Pixels[flip]);
 }