예제 #1
0
        /// <inheritdoc cref="Load"/>
        public byte[] Save(IEnumerable <Color> colors, EncodingSaveContext saveContext)
        {
            var values = colors.AsParallel().AsOrdered()
                         .WithDegreeOfParallelism(saveContext.TaskCount)
                         .Select(c => _descriptor.GetValue(c));

            var bits   = saveContext.Size.Width * saveContext.Size.Height * BitsPerValue;
            var buffer = new byte[bits / 8 + (bits % 8 > 0 ? 1 : 0)];

            _writeValuesDelegate(values, buffer);

            return(buffer);
        }
예제 #2
0
        /// <inheritdoc cref="Load"/>
        public byte[] Save(IEnumerable <Color> colors, EncodingSaveContext saveContext)
        {
            var ms = new MemoryStream();

            using var bw = new BinaryWriterX(ms, _byteOrder, _bitOrder, 1);

            var values = colors.AsParallel().AsOrdered()
                         .WithDegreeOfParallelism(saveContext.TaskCount)
                         .Select(c => _descriptor.GetValue(c));

            foreach (var value in values)
            {
                _writeValueDelegate(bw, value);
            }

            return(ms.ToArray());
        }
예제 #3
0
 private ushort FromRgb565ToRgb555(ushort color0)
 {
     return((ushort)Rgb555.GetValue(Rgb565.GetColor(color0)));
 }