GUI_Interface.c 4.78 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
#include "GUI_Interface.h"
#include "jcua.h"
#include "loc_graphics.h"
/******************************************************************************
函数名:GUI_General_Digit_Display
******************************************************************************/
/*数字显示函数
Digit:数值
u16Font:  字号
Len:  长度
Blank:消隐
*px:   X坐标,个位在前
 y:    Y坐标
*/
void GUI_General_Digit_Display(SpriteName_t SpriteID, uint32_t Digit, uint16_t u16Font, uint8_t Len, uint8_t Blank, const uint16_t *px, uint16_t y, uint8_t u8BlendEn)
{
    uint8_t i;
    uint8_t ActLen;
    uint8_t d[10];
    LogicLayerAttr_t LogicLayerAttr = {0};

    ActLen = 0;
    while (Digit)
    {
        d[ActLen] = Digit % 10;
        Digit /= 10;
        ActLen++;
    }

    if (ActLen == 0)
    {
        ActLen = 1;
        d[0] = 0;
    }

    for (i = ActLen; i < Len; i++ )
        d[i] = 0;


    i = (Len - 1);
    while ((d[i] == 0) && (i >= (Len - Blank)))
    {
        d[i] = 0xFF;
        i--;
    }

    loc_memset_LogicLayerAttr(&LogicLayerAttr);
    LogicLayerAttr.u8BlendEn = u8BlendEn;
    for (i = 0; i < Len; i++)
    {
        if (d[i] == 0xFF)
		{
			LogicLayerAttr.u16ImageID = SpriteSize;
            LogicLayerAttr.u16PosX = *(px + i);
            LogicLayerAttr.u16PosY = y;
            loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
		}
        else
        {
            LogicLayerAttr.u16ImageID = u16Font + d[i];
            LogicLayerAttr.u16PosX = *(px + i);
            LogicLayerAttr.u16PosY = y;
            loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
        }
    }
}

/*
Function  :                    GUI_Translate_Display
SpriteID  :                    The map's name
Position  :                    posx  posy
坐标自行填写
*/
void GUI_Translate_Display(SpriteName_t SpriteID, uint16_t ImageID, uint16_t Posx, uint16_t Posy, uint8_t u8BlendEn)
{
    LogicLayerAttr_t LogicLayerAttr = {0};

    loc_memset_LogicLayerAttr(&LogicLayerAttr);
    LogicLayerAttr.u16ImageID = ImageID;
    LogicLayerAttr.u16PosX = Posx;
    LogicLayerAttr.u16PosY = Posy;
    LogicLayerAttr.u8BlendEn = u8BlendEn;
    loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
}
/*
Function  :                    GUI_General_Display
SpriteID  :                    The map's name
坐标自动索引
底图用jpg格式用此函数
*/
void GUI_General_Display(SpriteName_t SpriteID, uint16_t ImageID, uint8_t u8BlendEn)
{
    LogicLayerAttr_t LogicLayerAttr = {0};
    t_PicStruct picStruct = get_Pic_Attribute(ImageID);

    if (picStruct .u16Pic_Format != JPG)
    {
        loc_memset_LogicLayerAttr(&LogicLayerAttr);
        LogicLayerAttr.u16ImageID = ImageID;
        LogicLayerAttr.u16PosX = picStruct.u16Pic_X;
        LogicLayerAttr.u16PosY = picStruct.u16Pic_Y;
        LogicLayerAttr.u8BlendEn = u8BlendEn;
        loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
    }
    else
    {
        loc_JcuaRun(picStruct .u32Pic_Addr);
    }
}
/*
Function  :                    GUI_Unicode_Display
SpriteID  :                    The map's name
Position  :                    posx  posy
坐标自行填写
*/
void GUI_Unicode_Display(SpriteName_t SpriteID, uint16_t Posx, uint16_t Posy, uint16_t Unicode[], uint8_t Length, uint32_t Color)
{
    LogicLayerAttr_t LogicLayerAttr = {0};

    loc_memset_LogicLayerAttr(&LogicLayerAttr);

    LogicLayerAttr.u16ImageID = 0u;
    LogicLayerAttr.u16PosX = Posx;
    LogicLayerAttr.u16PosY = Posy;
    LogicLayerAttr.u8UnicodeEn = 1u;
    LogicLayerAttr.u32UnicodeColor = Color;

    loc_Unicode_Normal(SpriteID, LogicLayerAttr, Unicode, Length);
hu's avatar
hu committed
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
}


void GUI_General_Digit16_Display(SpriteName_t SpriteID, uint32_t Digit, uint16_t u16Font, uint8_t Len, uint8_t Blank, const uint16_t *px, uint16_t y, uint8_t u8BlendEn)
{
    uint8_t i;
    uint8_t ActLen;
    uint8_t d[10];
    LogicLayerAttr_t LogicLayerAttr = {0};

    ActLen = 0;
    while (Digit)
    {
        d[ActLen] = Digit % 16;
        Digit /= 16;
        ActLen++;
    }

    if (ActLen == 0)
    {
        ActLen = 1;
        d[0] = 0;
    }

    for (i = ActLen; i < Len; i++ )
        d[i] = 0;


    i = (Len - 1);
    while ((d[i] == 0) && (i >= (Len - Blank)))
    {
        d[i] = 0xFF;
        i--;
    }

    loc_memset_LogicLayerAttr(&LogicLayerAttr);
    LogicLayerAttr.u8BlendEn = u8BlendEn;
    for (i = 0; i < Len; i++)
    {
        if (d[i] == 0xFF)
        {
            LogicLayerAttr.u16ImageID = SpriteSize;
            LogicLayerAttr.u16PosX = *(px + i);
            LogicLayerAttr.u16PosY = y;
            loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
        }
        else
        {
            LogicLayerAttr.u16ImageID = u16Font + d[i];
            LogicLayerAttr.u16PosX = *(px + i);
            LogicLayerAttr.u16PosY = y;
            loc_RenderTexture_Normal(SpriteID, LogicLayerAttr);
        }
    }
hu's avatar
hu committed
183
}