コード例 #1
0
        /// <summary>
        /// Returns the unit background color at the specified texture coordinates.
        /// </summary>
        /// <param name="u">The U coordinate.</param>
        /// <param name="v">The V coordinate.</param>
        /// <param name="mode">The sampling mode to use.</param>
        /// <returns></returns>
        public BufferColor GetColorFromUV(double u, double v, TextureSampleMode mode = TextureSampleMode.Tile)
        {
            switch (mode)
            {
            case TextureSampleMode.Clamp:
                if (u > 1.0)
                {
                    u = 1.0;
                }
                else if (u < 0.0)
                {
                    u = 0.0;
                }
                if (v > 1.0)
                {
                    v = 1.0;
                }
                else if (v < 0.0)
                {
                    v = 0.0;
                }
                return(_buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor);

            case TextureSampleMode.Explicit:
                if (u > 1.0 || u < 0.0 || v > 1.0 || v < 0.0)
                {
                    return(BufferColor.Black);
                }
                else
                {
                    return(_buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor);
                }

            default:
            case TextureSampleMode.Tile:
                return(_buffer[Utils.Mod((int)(v * _height), _height), Utils.Mod((int)(u * _width), _width)].BackColor);
            }
        }
コード例 #2
0
ファイル: ConsoleBuffer.cs プロジェクト: TheBerkin/StdPaint
 /// <summary>
 /// Returns the unit background color at the specified texture coordinates.
 /// </summary>
 /// <param name="u">The U coordinate.</param>
 /// <param name="v">The V coordinate.</param>
 /// <param name="mode">The sampling mode to use.</param>
 /// <returns></returns>
 public BufferColor GetColorFromUV(double u, double v, TextureSampleMode mode = TextureSampleMode.Tile)
 {
     switch(mode)
     {
         case TextureSampleMode.Clamp:
             if (u > 1.0)
             {
                 u = 1.0;
             }
             else if (u < 0.0)
             {
                 u = 0.0;
             }
             if (v > 1.0)
             {
                 v = 1.0;
             }
             else if (v < 0.0)
             {
                 v = 0.0;
             }
             return _buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor;
         case TextureSampleMode.Explicit:
             if (u > 1.0 || u < 0.0 || v > 1.0 || v < 0.0)
             {
                 return BufferColor.Black;
             }
             else
             {
                 return _buffer[(int)(v * (_height - 1)), (int)(u * (_width - 1))].BackColor;
             }
         default:
         case TextureSampleMode.Tile:
             return _buffer[Utils.Mod((int)(v * _height), _height), Utils.Mod((int)(u * _width), _width)].BackColor;
     }
 }