Esempio n. 1
0
        public unsafe void CurveRefBack(ref InfoObject obj, byte ID)
        {
            InfoCurveParam *curveParam;

            byte[] buffer = new byte[0];
            if (m_runScreen.IsEditor)
            {
                GuiCurvePageInit();

                fixed(byte *px = &m_guiApp.CustomData[0])
                curveParam = (InfoCurveParam *)px;
            }
            else
            {
                fixed(byte *px = &m_guiApp.CustomData[obj.AttributeStart])
                curveParam = (InfoCurveParam *)px;
            }

            if (m_runScreen.IsEditor || m_guiApp.PageObjects[ID].Visible == 1)
            {
                if (curveParam->BackType == 0)
                {
                    m_runScreen.ShowXPic(
                        obj.Panel.X,
                        obj.Panel.Y,
                        (ushort)(obj.Panel.EndX - obj.Panel.X + 1),
                        (ushort)(obj.Panel.EndY - obj.Panel.Y + 1),
                        obj.Panel.X,
                        obj.Panel.Y,
                        curveParam->PicID
                        );
                }
                else if (curveParam->BackType == 2)
                {
                    m_runScreen.ShowPic(
                        obj.Panel.X,
                        obj.Panel.Y,
                        curveParam->PicID
                        );
                }
                else
                {
                    short num;
                    uint  length = (uint)(curveParam->Width * curveParam->Height);
                    m_runScreen.LCD_AreaSet(
                        obj.Panel.X,
                        obj.Panel.Y,
                        obj.Panel.EndX,
                        obj.Panel.EndY
                        );
                    m_runScreen.LCD_WR_POINT(length, curveParam->BackColor);
                    if (curveParam->GridX > 0)
                    {
                        for (num = (short)obj.Panel.X; num <= obj.Panel.EndX; num = (short)(num + curveParam->GridX))
                        {
                            m_runScreen.LCD_AreaSet((ushort)num, obj.Panel.Y, (ushort)num, obj.Panel.EndY);
                            m_runScreen.LCD_WR_POINT(curveParam->Height, curveParam->Griclr);
                        }
                    }
                    if (curveParam->GridY > 0)
                    {
                        for (num = (short)obj.Panel.EndY; num >= obj.Panel.Y; num = (short)(num - curveParam->GridY))
                        {
                            m_runScreen.LCD_AreaSet(obj.Panel.X, (ushort)num, obj.Panel.EndX, (ushort)num);
                            m_runScreen.LCD_WR_POINT(curveParam->Width, curveParam->Griclr);
                        }
                    }
                }
            }
        }