Merge branch '2.4' into 3djc/diag-touch

This commit is contained in:
3djc
2021-04-16 11:59:11 +02:00
28 changed files with 2042 additions and 190 deletions
+23
View File
@@ -0,0 +1,23 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
void loadFonts();
+1 -1
View File
@@ -49,7 +49,7 @@ class MainViewSlider : public Window
void checkEvents() override
{
Window::checkEvents();
int8_t newValue = getValue();
int16_t newValue = getValue();
if (value != newValue) {
value = newValue;
invalidate();
+6
View File
@@ -485,8 +485,10 @@ const char * FrskyDeviceFirmwareUpdate::flashFirmware(const char * filename, Pro
INTERNAL_MODULE_OFF();
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
uint8_t extPwr = IS_EXTERNAL_MODULE_ON();
EXTERNAL_MODULE_OFF();
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
uint8_t spuPwr = IS_SPORT_UPDATE_POWER_ON();
@@ -529,10 +531,12 @@ const char * FrskyDeviceFirmwareUpdate::flashFirmware(const char * filename, Pro
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
@@ -797,10 +801,12 @@ const char * FrskyChipFirmwareUpdate::flashFirmware(const char * filename, Progr
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
+6
View File
@@ -128,7 +128,9 @@ class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver
void sendByte(uint8_t byte) const override
{
#if defined(HARDWARE_EXTERNAL_MODULE)
extmoduleSendInvertedByte(byte);
#endif
}
void clear() const override
@@ -595,8 +597,10 @@ bool MultiDeviceFirmwareUpdate::flashFirmware(const char * filename, ProgressHan
INTERNAL_MODULE_OFF();
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
uint8_t extPwr = IS_EXTERNAL_MODULE_ON();
EXTERNAL_MODULE_OFF();
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
uint8_t spuPwr = IS_SPORT_UPDATE_POWER_ON();
@@ -642,10 +646,12 @@ bool MultiDeviceFirmwareUpdate::flashFirmware(const char * filename, ProgressHan
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
+4
View File
@@ -218,6 +218,7 @@ uint8_t getRequiredProtocol(uint8_t module)
return protocol;
}
#if defined(HARDWARE_EXTERNAL_MODULE)
void enablePulsesExternalModule(uint8_t protocol)
{
// start new protocol hardware here
@@ -444,6 +445,7 @@ bool setupPulsesExternalModule(uint8_t protocol)
return false;
}
}
#endif
#if defined(HARDWARE_INTERNAL_MODULE)
static void enablePulsesInternalModule(uint8_t protocol)
@@ -601,6 +603,7 @@ bool setupPulsesInternalModule()
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
void stopPulsesExternalModule()
{
if (moduleState[EXTERNAL_MODULE].protocol != PROTOCOL_CHANNELS_UNINITIALIZED) {
@@ -625,6 +628,7 @@ bool setupPulsesExternalModule()
return setupPulsesExternalModule(protocol);
}
}
#endif
void setCustomFailsafe(uint8_t moduleIndex)
{
@@ -169,7 +169,7 @@ void intmoduleSendBuffer(const uint8_t * data, uint8_t size)
void intmoduleSendNextFrame()
{
switch(moduleState[INTERNAL_MODULE].protocol) {
switch (moduleState[INTERNAL_MODULE].protocol) {
#if defined(PXX2)
case PROTOCOL_CHANNELS_PXX2_HIGHSPEED:
intmoduleSendBuffer(intmodulePulsesData.pxx2.getData(), intmodulePulsesData.pxx2.getSize());
+4 -1
View File
@@ -463,7 +463,6 @@ set(TARGET_SRC
${TARGET_SRC}
${LED_DRIVER}
backlight_driver.cpp
extmodule_driver.cpp
trainer_driver.cpp
../common/arm/stm32/timers_driver.cpp
../common/arm/stm32/audio_dac_driver.cpp
@@ -523,6 +522,10 @@ if(INTERNAL_MODULE_PPM)
endif()
if(EXTERNAL_MODULE)
set(TARGET_SRC
${TARGET_SRC}
extmodule_driver.cpp
)
add_definitions(-DHARDWARE_EXTERNAL_MODULE)
endif()
+2
View File
@@ -102,10 +102,12 @@ void sendSynchronousPulses(uint8_t runMask)
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if ((runMask & (1 << EXTERNAL_MODULE)) && isModuleSynchronous(EXTERNAL_MODULE)) {
if (setupPulsesExternalModule())
extmoduleSendNextFrame();
}
#endif
}
uint32_t nextMixerTime[NUM_MODULES];
+2 -2
View File
@@ -9,8 +9,8 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND)
set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(${RADIO_SRC_DIR}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0 -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS} -fsanitize=address")
use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1
if(PCB STREQUAL X12S OR PCB STREQUAL X10)
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

+252
View File
@@ -0,0 +1,252 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <math.h>
#include <gtest/gtest.h>
#define SWAP_DEFINED
#include "opentx.h"
#include "location.h"
#if defined(COLORLCD)
#include "gui/colorlcd/fonts.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
void convert_RGB565_to_RGB888(uint8_t * dst, const uint16_t * src, unsigned pixels)
{
while(pixels--) {
RGB_SPLIT(*src, r, g, b); src++;
*(dst++) = (uint8_t)(r << 3);
*(dst++) = (uint8_t)(g << 2);
*(dst++) = (uint8_t)(b << 3);
}
}
void dumpImage(const std::string& filename, const BitmapBuffer* dc)
{
std::string fullpath = TESTS_PATH "/failed_" + filename;
TRACE("dumping image '%s'", fullpath.c_str());
// allocate enough for 3 channels
auto pixels = dc->width() * dc->height();
auto stride = dc->width() * 3;
uint8_t * img = (uint8_t *)malloc(pixels * 3);
convert_RGB565_to_RGB888(img, dc->getPixelPtr(0,0), pixels);
stbi_write_png(fullpath.c_str(), dc->width(), dc->height(), 3, img, stride);
free(img);
}
bool checkScreenshot_colorlcd(const BitmapBuffer* dc, const char* test)
{
if (dc->width() != LCD_W || dc->height() != LCD_H) {
return false;
}
std::string filename = std::string(test);
filename += '_' + std::to_string(LCD_W);
filename += 'x' + std::to_string(LCD_H);
filename += ".png";
std::string fullpath = TESTS_PATH "/" + filename;
std::unique_ptr<BitmapBuffer> testPict(BitmapBuffer::loadBitmap(fullpath.c_str()));
if (!testPict || testPict->width() != LCD_W || testPict->height() != LCD_H) {
dumpImage(filename, dc);
return false;
}
auto testPtr = testPict->getPixelPtr(0,0);
auto dcPtr = dc->getPixelPtr(0,0);
for (int i=0; i<LCD_W*LCD_H; i++) {
if (testPtr[i] != dcPtr[i]) {
dumpImage(filename, dc);
return false;
}
}
return true;
}
TEST(Lcd_colorlcd, vline)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
for (int x=0; x<100; x+=2) {
dc.drawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
}
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "vline"));
}
TEST(Lcd_colorlcd, primitives)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "primitives_" TRANSLATIONS));
}
TEST(Lcd_colorlcd, transparency)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR|OPACITY(10));
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2));
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6));
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10));
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX));
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR|OPACITY(2));
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR|OPACITY(OPACITY_MAX));
for(int n=0; n<10; n++) {
int x = 120 + n * 20;
int y = 80 + n * 10;
int color = COLOR(n/2 + 5);
int size = 100;
dc.drawFilledRect(x, y, size, size, SOLID, color|OPACITY(8));
}
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "transparency_" TRANSLATIONS));
}
//
// Fonts test are disabled, as they cause
// too much trouble (font are generated and never
// really the same based on which software / radio
// combination.
//
#if 0
TEST(Lcd_colorlcd, fonts)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
dc.drawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
dc.drawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
dc.drawText(50, 25, "The quick", DEFAULT_COLOR | FONT(XXS));
dc.drawText(50, 40, "The quick", DEFAULT_COLOR | FONT(XS));
dc.drawText(50, 55, "The quick", DEFAULT_COLOR | FONT(L));
dc.drawText(50, 80, "The quick", DEFAULT_COLOR | FONT(XL));
dc.drawText(50, 120, "The quick", DEFAULT_COLOR | FONT(XXL));
dc.drawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4));
dc.drawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12));
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "fonts_" TRANSLATIONS));
}
#endif
TEST(Lcd_colorlcd, clipping)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawSolidVerticalLine(100, 0, LCD_H, DEFAULT_COLOR);
dc.drawSolidVerticalLine(400, 0, LCD_H, DEFAULT_COLOR);
dc.drawSolidHorizontalLine(0, 50, LCD_W, DEFAULT_COLOR);
dc.drawSolidHorizontalLine(0, 200, LCD_W, DEFAULT_COLOR);
dc.setClippingRect(100, 400, 50, 200);
dc.drawSolidHorizontalLine(0, 80, LCD_W, TITLE_BGCOLOR);
dc.drawHorizontalLine( 0, 81, LCD_W, SOLID, TITLE_BGCOLOR);
dc.drawSolidVerticalLine(150, 0, LCD_H, TITLE_BGCOLOR);
dc.drawVerticalLine( 151, 0, LCD_H, SOLID, TITLE_BGCOLOR);
dc.drawSolidRect(70, 20, 50, 50, 2, TITLE_BGCOLOR);
dc.drawRect( 380, 20, 50, 50, 2, SOLID, TITLE_BGCOLOR);
dc.clearClippingRect();
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "clipping"));
}
TEST(Lcd_colorlcd, bitmap)
{
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.setClippingRect(100, 400, 50, 200);
std::unique_ptr<BitmapBuffer> bmp(BitmapBuffer::loadBitmap(TESTS_PATH "/opentx.png"));
dc.drawBitmap( 0, 0, bmp.get());
dc.drawBitmap(320, 0, bmp.get());
dc.drawBitmap( 0, 150, bmp.get());
dc.clearClippingRect();
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "bitmap"));
}
#endif
-183
View File
@@ -1,183 +0,0 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <QtCore/QDir>
#include <QtCore/QDebug>
#include <QApplication>
#include <QPainter>
#include <math.h>
#include <gtest/gtest.h>
#define SWAP_DEFINED
#include "opentx.h"
#include "location.h"
#include "targets/simu/simulcd.h"
#if defined(COLORLCD)
void doPaint_colorlcd(QPainter & p)
{
QRgb rgb = qRgb(0, 0, 0);
p.setBackground(QBrush(rgb));
p.eraseRect(0, 0, LCD_W, LCD_H);
uint16_t previousColor = 0xFF;
for (int y=0; y<LCD_H; y++) {
for (int x=0; x<LCD_W; x++) {
#if defined(LCD_VERTICAL_INVERT)
uint16_t color = simuLcdBuf[(LCD_W-1-x)+LCD_W*(LCD_H-1-y)]; // color in RGB565
#else
uint16_t color = simuLcdBuf[x+LCD_W*y]; // color in RGB565
#endif
if (color) {
if (color != previousColor) {
previousColor = color;
RGB_SPLIT(color, r, g, b);
rgb = qRgb(r<<3, g<<2, b<<3);
p.setPen(rgb);
p.setBrush(QBrush(rgb));
}
p.drawPoint(x, y);
}
}
}
}
bool checkScreenshot_colorlcd(const QString & test)
{
lcdRefresh();
QImage buffer(LCD_W, LCD_H, QImage::Format_RGB32);
QPainter p(&buffer);
doPaint_colorlcd(p);
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
QImage reference(TESTS_PATH "/" + filename);
if (buffer == reference) {
return true;
}
else {
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
buffer.save("/tmp/" + filename);
return false;
}
}
TEST(Lcd_colorlcd, vline)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
for (int x=0; x<100; x+=2) {
lcdDrawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
}
EXPECT_TRUE(checkScreenshot_colorlcd("vline"));
}
TEST(Lcd_colorlcd, primitives)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR);
lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
lcdDrawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
EXPECT_TRUE(checkScreenshot_colorlcd("primitives"));
}
TEST(Lcd_colorlcd, transparency)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR|OPACITY(10));
lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR|OPACITY(12));
lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8));
lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8));
lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8));
lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2));
lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6));
lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10));
lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX));
lcdDrawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR|OPACITY(2));
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR|OPACITY(OPACITY_MAX));
for(int n=0; n<10; n++) {
int x = 120 + n * 20;
int y = 80 + n * 10;
int color = COLOR(n/2 + 5);
int size = 100;
lcdDrawFilledRect(x, y, size, size, SOLID, color|OPACITY(8));
}
EXPECT_TRUE(checkScreenshot_colorlcd("transparency"));
}
TEST(Lcd_colorlcd, fonts)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
lcdDrawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
lcdDrawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
// lcdDrawText(50, 200, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|VERTICAL);
lcdDrawText(50, 25, "The quick", TEXT_COLOR|TINSIZE);
lcdDrawText(50, 40, "The quick", TEXT_COLOR|SMLSIZE);
lcdDrawText(50, 55, "The quick", TEXT_COLOR|MIDSIZE);
lcdDrawText(50, 80, "The quick", TEXT_COLOR|DBLSIZE);
lcdDrawText(50, 120, "The quick", TEXT_COLOR|XXLSIZE);
lcdDrawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4));
lcdDrawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12));
EXPECT_TRUE(checkScreenshot_colorlcd("fonts"));
}
#endif
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB