mirror of
https://github.com/paperdash/device-epd.git
synced 2024-11-12 01:10:25 +00:00
22e8b6df19
- switch to canvas for print screen functionality - implement jpg encoder for print screen
158 lines
5.9 KiB
C++
158 lines
5.9 KiB
C++
/**
|
|
* Copyright (c) 2012-2016 Moodstocks SAS
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files (the
|
|
* "Software"), to deal in the Software without restriction, including
|
|
* without limitation the rights to use, copy, modify, merge, publish,
|
|
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
* permit persons to whom the Software is furnished to do so, subject to
|
|
* the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
#include "conf.h"
|
|
|
|
const uint8_t jpec_qzr[64] = {
|
|
16, 11, 10, 16, 24, 40, 51, 61,
|
|
12, 12, 14, 19, 26, 58, 60, 55,
|
|
14, 13, 16, 24, 40, 57, 69, 56,
|
|
14, 17, 22, 29, 51, 87, 80, 62,
|
|
18, 22, 37, 56, 68,109,103, 77,
|
|
24, 35, 55, 64, 81,104,113, 92,
|
|
49, 64, 78, 87,103,121,120,101,
|
|
72, 92, 95, 98,112,100,103, 99
|
|
};
|
|
|
|
const float jpec_dct[7] = {
|
|
0.49039, 0.46194, 0.41573, 0.35355,
|
|
0.27779, 0.19134, 0.09755
|
|
};
|
|
|
|
const int jpec_zz[64] = {
|
|
0, 1, 8, 16, 9, 2, 3, 10,
|
|
17, 24, 32, 25, 18, 11, 4, 5,
|
|
12, 19, 26, 33, 40, 48, 41, 34,
|
|
27, 20, 13, 6, 7, 14, 21, 28,
|
|
35, 42, 49, 56, 57, 50, 43, 36,
|
|
29, 22, 15, 23, 30, 37, 44, 51,
|
|
58, 59, 52, 45, 38, 31, 39, 46,
|
|
53, 60, 61, 54, 47, 55, 62, 63
|
|
};
|
|
|
|
const uint8_t jpec_dc_nodes[17] = { 0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0 };
|
|
const int jpec_dc_nb_vals = 12; /* sum of dc_nodes */
|
|
const uint8_t jpec_dc_vals[12] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
|
|
|
|
const uint8_t jpec_ac_nodes[17] = { 0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d };
|
|
const int jpec_ac_nb_vals = 162; /* sum of ac_nodes */
|
|
const uint8_t jpec_ac_vals[162] = {
|
|
0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, /* 0x00: EOB */
|
|
0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,
|
|
0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
|
|
0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0, /* 0xf0: ZRL */
|
|
0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
|
|
0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,
|
|
0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
|
|
0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,
|
|
0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
|
|
0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
|
|
0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
|
|
0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
|
|
0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
|
|
0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
|
|
0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
|
|
0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,
|
|
0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
|
|
0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,
|
|
0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
|
|
0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
|
|
0xf9,0xfa
|
|
};
|
|
|
|
const uint8_t jpec_dc_len[12] = { 2,3,3,3,3,3,4,5,6,7,8,9 };
|
|
const int jpec_dc_code[12] = {
|
|
0x000,0x002,0x003,0x004,0x005,0x006,
|
|
0x00e,0x01e,0x03e,0x07e,0x0fe,0x1fe
|
|
};
|
|
|
|
const int8_t jpec_ac_len[256] = {
|
|
4, 2, 2, 3, 4, 5, 7, 8,
|
|
10,16,16, 0, 0, 0, 0, 0,
|
|
0, 4, 5, 7, 9,11,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 5, 8,10,12,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 6, 9,12,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 6,10,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 7,11,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 7,12,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 8,12,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 9,15,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 9,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0, 9,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0,10,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0,10,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0,11,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
0,16,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0,
|
|
11,16,16,16,16,16,16,16,
|
|
16,16,16, 0, 0, 0, 0, 0
|
|
};
|
|
|
|
const int jpec_ac_code[256] = {
|
|
0x000a,0x0000,0x0001,0x0004,0x000b,0x001a,0x0078,0x00f8,
|
|
0x03f6,0xff82,0xff83,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x000c,0x001b,0x0079,0x01f6,0x07f6,0xff84,0xff85,
|
|
0xff86,0xff87,0xff88,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x001c,0x00f9,0x03f7,0x0ff4,0xff89,0xff8a,0xff8b,
|
|
0xff8c,0xff8d,0xff8e,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x003a,0x01f7,0x0ff5,0xff8f,0xff90,0xff91,0xff92,
|
|
0xff93,0xff94,0xff95,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x003b,0x03f8,0xff96,0xff97,0xff98,0xff99,0xff9a,
|
|
0xff9b,0xff9c,0xff9d,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x007a,0x07f7,0xff9e,0xff9f,0xffa0,0xffa1,0xffa2,
|
|
0xffa3,0xffa4,0xffa5,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x007b,0x0ff6,0xffa6,0xffa7,0xffa8,0xffa9,0xffaa,
|
|
0xffab,0xffac,0xffad,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x00fa,0x0ff7,0xffae,0xffaf,0xffb0,0xffb1,0xffb2,
|
|
0xffb3,0xffb4,0xffb5,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x01f8,0x7fc0,0xffb6,0xffb7,0xffb8,0xffb9,0xffba,
|
|
0xffbb,0xffbc,0xffbd,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x01f9,0xffbe,0xffbf,0xffc0,0xffc1,0xffc2,0xffc3,
|
|
0xffc4,0xffc5,0xffc6,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x01fa,0xffc7,0xffc8,0xffc9,0xffca,0xffcb,0xffcc,
|
|
0xffcd,0xffce,0xffcf,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x03f9,0xffd0,0xffd1,0xffd2,0xffd3,0xffd4,0xffd5,
|
|
0xffd6,0xffd7,0xffd8,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x03fa,0xffd9,0xffda,0xffdb,0xffdc,0xffdd,0xffde,
|
|
0xffdf,0xffe0,0xffe1,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0x07f8,0xffe2,0xffe3,0xffe4,0xffe5,0xffe6,0xffe7,
|
|
0xffe8,0xffe9,0xffea,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x0000,0xffeb,0xffec,0xffed,0xffee,0xffef,0xfff0,0xfff1,
|
|
0xfff2,0xfff3,0xfff4,0x0000,0x0000,0x0000,0x0000,0x0000,
|
|
0x07f9,0xfff5,0xfff6,0xfff7,0xfff8,0xfff9,0xfffa,0xfffb,
|
|
0xfffc,0xfffd,0xfffe,0x0000,0x0000,0x0000,0x0000,0x0000
|
|
};
|