16
Discussion - EVE / Re: Auto-increment on spinner
« on: November 02, 2020, 09:21:20 AM »
what is spinner button? do you mean "ESD SpinBox" Widget?
Welcome to the Bridgetek Community!
Please read our Welcome Note
Technical Support enquires
please contact the team @ Bridgetek Support
Please refer to our website for detailed information on all our products - Bridgetek - Bridging Technology
bitmap_source()
bitmap_layout()
bitmap_layout_h
bitmap_size
bitmap_size_h
bitmap_ext_format (if required)
In the current case, the splash image is 800x480 and the icons, 80x80. Why are they requested however?
#include "Ft_Esd.h"
#include "Ft_Esd_Dl.h"
#include "Ft_Esd_CircleLine.h"
extern Ft_Gpu_Hal_Context_t *Ft_Esd_Host;
void Ft_Esd_CircleLine_SetDSTAlpha();
void Ft_Esd_CircleLine_ClearDSTAlpha();
void Ft_Esd_CircleLine_Draw_Point(int x, int y, int radius);
void Ft_Esd_CircleLine_Draw_Point_Float(ft_float_t x, ft_float_t y, ft_float_t radius);
void Ft_Esd_CircleLine_Draw_Square(int x, int y, int side);
ESD_METHOD(Ft_Esd_CircleLine_Render_Func, Context = Ft_Esd_CircleLine)
ESD_PARAMETER(x, Type = int)
ESD_PARAMETER(y, Type = int)
ESD_PARAMETER(radius, Type = int)
ESD_PARAMETER(border, Type = int)
ESD_PARAMETER(color, Type = ft_argb32_t)
void Ft_Esd_CircleLine_Render_Func(Ft_Esd_CircleLine *context, int x, int y, int radius, int border, ft_argb32_t color);
void Ft_Esd_CircleLine_Render_Func(Ft_Esd_CircleLine *context, int x, int y, int radius, int border, ft_argb32_t color)
{
if (radius < 0)
return;
int a = ((color & 0xFF000000)) >> 24;
int r = ((color & 0x00FF0000)) >> 16;
int g = ((color & 0x0000FF00)) >> 8;
int b = ((color & 0x000000FF));
int innerRadius = radius - border;
if (innerRadius < 0)
innerRadius = 0;
Ft_Esd_Primitive = 0;
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, SAVE_CONTEXT());
Ft_Esd_Rect16 scissor = Ft_Esd_Rect16_Crop(context->Widget.GlobalRect, Ft_Esd_Dl_Scissor_Get());
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, SCISSOR_XY(scissor.X, scissor.Y));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, SCISSOR_SIZE(scissor.Width, scissor.Height));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, COLOR_MASK(0, 0, 0, 1));
//Draw the rectangle covering whole circle with alpha value 0
Ft_Esd_CircleLine_ClearDSTAlpha();
Ft_Esd_CircleLine_Draw_Square(x - radius - 1, y - radius - 1, (radius * 2) + 2);
//Draw outer circle with desired alpha value
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, COLOR_A(a));
Ft_Esd_CircleLine_SetDSTAlpha();
Ft_Esd_CircleLine_Draw_Point(x, y, radius);
//Draw inner circle with alpha value 0
Ft_Esd_CircleLine_ClearDSTAlpha();
if (innerRadius > 0)
{
Ft_Esd_CircleLine_Draw_Point(x, y, innerRadius);
}
// Finally draw final color
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, COLOR_RGB(r, g, b));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, COLOR_A(a));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, COLOR_MASK(1, 1, 1, 1));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, BLEND_FUNC(DST_ALPHA, ONE_MINUS_DST_ALPHA));
Ft_Esd_CircleLine_Draw_Square(x - radius, y - radius, radius * 2);
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, RESTORE_CONTEXT());
}
void Ft_Esd_CircleLine_SetDSTAlpha()
{
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, BLEND_FUNC(SRC_ALPHA, ZERO));
}
void Ft_Esd_CircleLine_ClearDSTAlpha()
{
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, BLEND_FUNC(ZERO, ZERO));
}
void Ft_Esd_CircleLine_Draw_Square(int x, int y, int side)
{
#if (EVE_MODEL >= EVE_FT810)
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, VERTEX_FORMAT(4));
#endif
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, BEGIN(RECTS));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, LINE_WIDTH(16));
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, VERTEX2F((x * 16), (y * 16)));
x += side;
y += side;
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, VERTEX2F((x * 16), (y * 16)));
// Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, END());
}
void Ft_Esd_CircleLine_Draw_Point(int x, int y, int radius)
{
Ft_Esd_CircleLine_Draw_Point_Float((ft_float_t)x, (ft_float_t)y, (ft_float_t)radius);
}
// FIXME: Use ft_int16_f4_t as fixed point instead of float
void Ft_Esd_CircleLine_Draw_Point_Float(ft_float_t x, ft_float_t y, ft_float_t radius)
{
#if (EVE_MODEL >= EVE_FT810)
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, VERTEX_FORMAT(4));
#endif
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, BEGIN(FTPOINTS));
int iR = (radius * 16.0f) + 0.5f;
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, POINT_SIZE(iR));
int iX = (x * 16.0f) + 0.5f;
int iY = (y * 16.0f) + 0.5f;
Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, VERTEX2F(iX, iY));
// Ft_Gpu_CoCmd_SendCmd(Ft_Esd_Host, END());
}
CLEAR_COLOR_RGB(255,255,255)
CLEAR_COLOR_A(255)
CLEAR(1, 1, 1)
CMD_GRADIENT(100, 207, 0x007FFF, 244, 189, 0x7FFF00)
SAVE_CONTEXT()
SCISSOR_XY(100, 100)
SCISSOR_SIZE(100, 100)
COLOR_RGB(255,255,255)
COLOR_A(255)
COLOR_MASK(0,0,0,1)
BLEND_FUNC(ZERO, ZERO) #clear Alpha
BEGIN(RECTS)
VERTEX2II(100,100,0,0)
VERTEX2II(200,200,0,0)
COLOR_A(255) # ALPHA_TEST
BLEND_FUNC(SRC_ALPHA, ZERO) #Set Alpha
POINT_SIZE(800)
BEGIN(POINTS)
VERTEX2II(150,150, 0,0)
BLEND_FUNC(ZERO, ZERO) #clear Alpha
POINT_SIZE(400)
BEGIN(POINTS)
VERTEX2II(150,150, 0,0)
COLOR_RGB(245,58,41)
COLOR_A(255) #ALPHA_TEST
COLOR_MASK(1,1,1,1)
BLEND_FUNC(DST_ALPHA, ONE_MINUS_DST_ALPHA)
BEGIN(RECTS)
VERTEX2II(100,100,0,0)
VERTEX2II(200,200,0,0)
RESTORE_CONTEXT()
Hello,
here is my display list. But in the heat of battle it seems I have not stored the version I have sent in the picture. As you can see, in the version below there is a gray dot in the middle.
CLEAR(1, 1, 1)
CMD_GRADIENT(17, 64, 0x0075AF, 230, 226, 0xA6F1FF)
COLOR_MASK(0, 0, 0, 1)
BLEND_FUNC(ONE, ONE_MINUS_SRC_ALPHA)
COLOR_A(255)
BEGIN(POINTS)
POINT_SIZE(1000)
VERTEX2II(133, 176, 0, 0)
COLOR_MASK(1, 1, 1, 0)
BLEND_FUNC(ONE_MINUS_DST_ALPHA, SRC_ALPHA)
BEGIN(RECTS)
VERTEX2II(0, 0, 0, 0)
VERTEX2II(239, 319, 0, 0)
COLOR_MASK(0, 0, 0, 1)
COLOR_A(128)
BLEND_FUNC(ZERO, ONE_MINUS_SRC_ALPHA)
BEGIN(POINTS)
POINT_SIZE(500)
VERTEX2II(133, 177, 0, 0)
COLOR_MASK(1, 1, 1, 0)
BLEND_FUNC(ONE_MINUS_DST_ALPHA, DST_ALPHA)
BEGIN(RECTS)
VERTEX2II(0, 0, 0, 0)
VERTEX2II(239, 319, 0, 0)
0 1 2 3 4 5 6
7 0 0 0 0 0 0
CLEAR(1, 1, 1)
CMD_SETBITMAP(0x800000 | 128, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
BEGIN(BITMAPS)
VERTEX2II(0,0,0,0)
CMD_SETBITMAP(0x800000 | 214, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX2II(104,0,0,0)
CMD_SETBITMAP(0x800000 | 300, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX2II(208,0,0,0)
CMD_SETBITMAP(0x800000 | 386, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX2II(312,0,0,0)
CMD_SETBITMAP(0x800000 | 472, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX2II(416,0,0,0)
CMD_SETBITMAP(0x800000 | 558, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX_FORMAT(0)
VERTEX2F(520,0)
CMD_SETBITMAP(0x800000 | 644, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX_FORMAT(0)
VERTEX2F(624,0)
CMD_SETBITMAP(0x800000 | 730, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX_FORMAT(0)
VERTEX2F(0,104)
CMD_SETBITMAP(0x800000 | 128, COMPRESSED_RGBA_ASTC_8x8_KHR, 104, 104)
VERTEX2F(104,104)
VERTEX2F(208,104)
VERTEX2F(312,104)
VERTEX2F(416,104)
VERTEX2F(520,104)
VERTEX2F(624,104)