Skip to content

Commit c6f92dc

Browse files
authored
Merge pull request #155 from m5stack/develop
0.2.15
2 parents bf16c3d + 031dbe2 commit c6f92dc

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"type": "git",
1111
"url": "https://github.com/m5stack/M5GFX.git"
1212
},
13-
"version": "0.2.14",
13+
"version": "0.2.15",
1414
"frameworks": ["arduino", "espidf", "*"],
1515
"platforms": ["espressif32", "native"],
1616
"headers": "M5GFX.h"

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=M5GFX
2-
version=0.2.14
2+
version=0.2.15
33
author=M5Stack
44
maintainer=M5Stack
55
sentence=Library for M5Stack All Display

src/lgfx/v1/gitTagVersion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#define LGFX_VERSION_MAJOR 1
22
#define LGFX_VERSION_MINOR 2
3-
#define LGFX_VERSION_PATCH 14
3+
#define LGFX_VERSION_PATCH 15
44
#define LOVYANGFX_VERSION F( LGFX_VERSION_MAJOR "." LGFX_VERSION_MINOR "." LGFX_VERSION_PATCH )

src/lgfx/v1/platforms/esp32/Panel_EPD.cpp

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ namespace lgfx
9595
LUT_MAKE(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2),
9696
LUT_MAKE(3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3),
9797
LUT_MAKE(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3),
98+
~0u, ~0u, ~0u, ~0u,
99+
~0u, ~0u, ~0u, ~0u,
100+
~0u, ~0u, ~0u, ~0u,
101+
~0u, ~0u, ~0u, ~0u,
98102
0u,
99103
};
100104

@@ -111,6 +115,11 @@ namespace lgfx
111115
LUT_MAKE(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
112116
LUT_MAKE(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
113117
LUT_MAKE(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2),
118+
~0u, ~0u, ~0u,
119+
~0u, ~0u, ~0u, ~0u,
120+
~0u, ~0u, ~0u, ~0u,
121+
~0u, ~0u, ~0u, ~0u,
122+
~0u, ~0u, ~0u, ~0u,
114123
0u, // 0 1 2 3 4 5 6 7 8 9 a b c d e f
115124
};
116125

@@ -123,6 +132,7 @@ namespace lgfx
123132
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
124133
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
125134
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
135+
~0u,
126136
0u,
127137
};
128138

@@ -132,6 +142,7 @@ namespace lgfx
132142
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
133143
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
134144
LUT_MAKE(1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2),
145+
~0u,
135146
0u,
136147
};
137148

@@ -140,6 +151,7 @@ namespace lgfx
140151
static constexpr const uint32_t lut_eraser[] = {
141152
LUT_MAKE(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1),
142153
LUT_MAKE(2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
154+
~0u,
143155
0u,
144156
};
145157

@@ -630,7 +642,6 @@ __asm__ __volatile(
630642
" addi " SRC "," SRC ", 32 \n" // 元データのポインタを進める
631643
" addi " DST "," DST ", 4 \n" // 出力先のポインタを進める
632644
"BLT_BUFFER_END: \n" // ループ終端
633-
" mov a2 ," LPX " \n" // 戻り値にLPXを指定する。データ処理が存在した場合 true, 処理ナシの場合 false となる
634645
" j BLT_END \n" // 関数終了
635646

636647
"BLT_SECTION0: \n"
@@ -770,7 +781,9 @@ __asm__ __volatile(
770781
" j BLT_RETURN7 \n"
771782

772783
"BLT_END: \n"
773-
:"=r"(dst));
784+
" mov a2 ," LPX " \n" // 戻り値にLPXを指定する。データ処理が存在した場合 true, 処理ナシの場合 false となる
785+
" retw \n"
786+
);
774787
return dst;
775788

776789
#undef DST
@@ -935,7 +948,9 @@ __asm__ __volatile(
935948
s += 2;
936949
d += 4;
937950
}
938-
} else {
951+
} else
952+
if (new_data.mode == epd_mode_t::epd_text) {
953+
uint_fast16_t white = lut_offset | 0x00FF;
939954
for (int i = 0; i < w; i += 2) {
940955
uint_fast16_t s0 = s[0];
941956
uint_fast16_t s1 = s[1];
@@ -946,6 +961,38 @@ __asm__ __volatile(
946961
d1 &= 0x7FFF;
947962
d3 &= 0x7FFF;
948963

964+
// 白以外またはリクエスト済みの内容と相違がある場合に更新
965+
if (white != d1 || d1 != s0) {
966+
uint_fast16_t d0 = d[0];
967+
d[1] = s0;
968+
// 消去処理を挟んで更新指示する。(元の値の下位8bitのみを使用するとlut_eraser扱いになる)
969+
// 既に消去処理動作中の場合は変更しない
970+
if (d0 >= (lut_eraser_step << 8)) {
971+
d[0] = (uint8_t)d0;
972+
}
973+
}
974+
975+
// 白以外またはリクエスト済みの内容と相違がある場合に更新
976+
if (white != d3 || d3 != s1) {
977+
uint_fast16_t d2 = d[2];
978+
d[3] = s1;
979+
if (d2 >= (lut_eraser_step << 8)) {
980+
// 消去処理を挟んで更新指示する。(元の値の下位8bitのみを使用するとlut_eraser扱いになる)
981+
d[2] = (uint8_t)d2;
982+
}
983+
}
984+
s += 2;
985+
d += 4;
986+
}
987+
} else {
988+
for (int i = 0; i < w; i += 2) {
989+
uint_fast16_t s0 = s[0];
990+
uint_fast16_t s1 = s[1];
991+
uint_fast16_t d1 = d[1];
992+
uint_fast16_t d3 = d[3];
993+
s0 += lut_offset;
994+
s1 += lut_offset;
995+
949996
// 既にリクエスト済みの内容と相違がある場合のみ更新
950997
if (d1 != s0) {
951998
uint_fast16_t d0 = d[0];

0 commit comments

Comments
 (0)