// Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            objData++;
        }
        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            objData--;
        }

        if (objData > TRANSFORM.SizZ)
        {
            objData = TRANSFORM.PosX;
        }
        if (objData < TRANSFORM.PosX)
        {
            objData = TRANSFORM.SizZ;
        }

        Vector3    pos = transform.localPosition;
        Vector3    siz = transform.localScale;
        Quaternion p   = transform.rotation;

        switch (objData)
        {
        case TRANSFORM.PosX: pos.x += ChangeNum(); break;

        case TRANSFORM.PosY: pos.y += ChangeNum(); break;

        case TRANSFORM.PosZ: pos.z += ChangeNum(); break;

        case TRANSFORM.SizX: siz.x += ChangeNum(); break;

        case TRANSFORM.SizY: siz.y += ChangeNum(); break;

        case TRANSFORM.SizZ: siz.y += ChangeNum(); break;

        case TRANSFORM.RollX:
            break;

        case TRANSFORM.RollY:
            break;

        case TRANSFORM.RollZ:
            break;
        }

        transform.localPosition = pos;
        transform.localScale    = siz;

        TextOutput();
    }
        public static void OpaquePixelsConvert <TSrcPixel, TDstPixel>(SpanBitmap <TSrcPixel> src, SpanBitmap <TDstPixel> dst, TRANSFORM srcXform, bool useBilinear)
            where TSrcPixel : unmanaged, Pixel.IConvertTo
            where TDstPixel : unmanaged
        {
            void _rowProcessorNearest(Span <TDstPixel> dst, SpanQuantized8Sampler <TSrcPixel, TSrcPixel> src, _RowTransformIterator srcIterator)
            {
                for (int i = 0; i < dst.Length; ++i)
                {
                    srcIterator.MoveNext(out int sx, out int sy);
                    src.GetSourcePixelOrDefault(sx, sy).CopyTo(ref dst[i]);
                }
            }

            void _rowProcessorBilinear(Span <TDstPixel> dst, SpanQuantized8Sampler <TSrcPixel, TSrcPixel> src, _RowTransformIterator srcIterator)
            {
                for (int i = 0; i < dst.Length; ++i)
                {
                    srcIterator.MoveNext(out int sx, out int sy, out int rx, out int ry);
                    src.GetSampleOrDefault(sx, sy, rx, ry).CopyTo(ref dst[i]);
                }
            }

            var p = useBilinear
                ? (_ProcessRowCallback8 <TSrcPixel, TSrcPixel, TDstPixel>)_rowProcessorBilinear
                : (_ProcessRowCallback8 <TSrcPixel, TSrcPixel, TDstPixel>)_rowProcessorNearest;

            _ProcessRows(dst, src, srcXform, p);
        }
        public static void ComposePixels <TSrcPixel, TDstPixel>(SpanBitmap <TSrcPixel> src, SpanBitmap <TDstPixel> dst, TRANSFORM srcXform, bool useBilinear, float opacity)
            where TSrcPixel : unmanaged, Pixel.IConvertTo
            where TDstPixel : unmanaged, Pixel.IConvertTo
        {
            int opacityQ = (int)(opacity * 256);

            void _rowProcessorNearest(Span <TDstPixel> dst, SpanQuantized8Sampler <TSrcPixel, Pixel.BGRP32> src, _RowTransformIterator srcIterator)
            {
                Pixel.BGRP32 srcPixel = default;
                Pixel.BGRP32 composer = default;

                for (int i = 0; i < dst.Length; ++i)
                {
                    srcIterator.MoveNext(out int sx, out int sy);

                    src.GetSourcePixelOrDefault(sx, sy).CopyTo(ref srcPixel);

                    if (srcPixel.A == 0)
                    {
                        continue;
                    }

                    ref var dstI = ref dst[i];

                    dstI.CopyTo(ref composer);
                    composer.SetSourceOver(srcPixel, opacityQ);
                    composer.CopyTo(ref dstI);
                }
            }
        public static void OpaquePixelsDirect <TPixel>(SpanBitmap <TPixel> src, SpanBitmap <TPixel> dst, TRANSFORM srcXform)
            where TPixel : unmanaged
        {
            void _rowProcessor(Span <TPixel> dst, SpanQuantized8Sampler <TPixel, TPixel> src, _RowTransformIterator srcIterator)
            {
                for (int i = 0; i < dst.Length; ++i)
                {
                    srcIterator.MoveNext(out int sx, out int sy);
                    dst[i] = src.GetSourcePixelOrDefault(sx, sy);
                }
            }

            _ProcessRows(dst, src, srcXform, (_ProcessRowCallback8 <TPixel, TPixel, TPixel>)_rowProcessor);
        }