예제 #1
0
        public PixelMapper2D(int width, int height, PixelOrders pixelOrder)
        {
            this.width = width;
            this.height = height;

            this.lookupX = new int[width * height];
            this.lookupY = new int[width * height];
            this.lookupXY = new int[width, height];
            this.streamOutput = new byte[width * height * 3];

            PopulateFromPixelOrder(pixelOrder);
        }
예제 #2
0
        public PixelMapper2D(int width, int height, PixelOrders pixelOrder)
        {
            this.width  = width;
            this.height = height;

            this.lookupX      = new int[width * height];
            this.lookupY      = new int[width * height];
            this.lookupXY     = new int[width, height];
            this.streamOutput = new byte[width * height * 3];

            PopulateFromPixelOrder(pixelOrder);
        }
예제 #3
0
        private void PopulateFromPixelOrder(PixelOrders pixelOrder)
        {
            int pos = 0;

            var populate = new Action <int, int, int>((x, y, p) =>
            {
                this.lookupX[p] = x;
                this.lookupY[p] = y;

                this.lookupXY[x, y] = p;
            });

            if (pixelOrder == PixelOrders.HorizontalLineTopLeft)
            {
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        populate(x, y, pos);

                        pos++;
                    }
                }
            }
            else
            if (pixelOrder == PixelOrders.HorizontalSnakeTopLeft)
            {
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        populate(x, y, pos);

                        pos++;
                    }

                    if (++y < height)
                    {
                        for (int x = width - 1; x >= 0; x--)
                        {
                            populate(x, y, pos);

                            pos++;
                        }
                    }
                }
            }
            else
            {
                throw new NotImplementedException();
            }
        }
예제 #4
0
        private void PopulateFromPixelOrder(PixelOrders pixelOrder)
        {
            int pos = 0;

            var populate = new Action<int, int, int>((x, y, p) =>
                {
                    this.lookupX[p] = x;
                    this.lookupY[p] = y;

                    this.lookupXY[x, y] = p;
                });

            if (pixelOrder == PixelOrders.HorizontalLineTopLeft)
            {
                for (int y = 0; y < height; y++)
                    for (int x = 0; x < width; x++)
                    {
                        populate(x, y, pos);

                        pos++;
                    }
            }
            else
                if (pixelOrder == PixelOrders.HorizontalSnakeTopLeft)
                {
                    for (int y = 0; y < height; y++)
                    {
                        for (int x = 0; x < width; x++)
                        {
                            populate(x, y, pos);

                            pos++;
                        }

                        if (++y < height)
                        {
                            for (int x = width - 1; x >= 0; x--)
                            {
                                populate(x, y, pos);

                                pos++;
                            }
                        }
                    }
                }
                else
                    throw new NotImplementedException();
        }