示例#1
0
        private unsafe static byte DrawSliderBackGround(objxinxi *obj, SLIDER_PARAM *pSliRam)
        {
            byte result;

            switch (pSliRam->BackType)
            {
            case 0:
                if (pSliRam->BkPicID >= GuiSlider.myapp.app.picqyt)
                {
                    result = 0;
                    return(result);
                }
                Readdata.Readdata_ReadPic(ref GuiSlider.myapp.brush.pic, (int)pSliRam->BkPicID);
                break;

            case 1:
                GuiSlider.myapp.brush.backcolor = pSliRam->BkPicID;
                break;

            case 2:
                if (pSliRam->BkPicID >= GuiSlider.myapp.app.picqyt)
                {
                    result = 0;
                    return(result);
                }
                GuiSlider.myapp.brush.x = obj->redian.x;
                GuiSlider.myapp.brush.y = obj->redian.y;
                Readdata.Readdata_ReadPic(ref GuiSlider.myapp.brush.pic, (int)pSliRam->BkPicID);
                break;
            }
            GuiSlider.myapp.brush.sta = pSliRam->BackType;
            Showpic.Showpic_Clearspa((int)obj->redian.x, (int)obj->redian.y, (int)(obj->redian.endx - obj->redian.x + 1), (int)(obj->redian.endy - obj->redian.y + 1));
            result = 1;
            return(result);
        }
示例#2
0
文件: GuiCurve.cs 项目: skyclub66/HMI
        public unsafe static byte GuiCurveInit(objxinxi *obj, byte ID)
        {
            if (GuiCurve.myapp.upapp.runapptype == runapptype.bianji)
            {
                GuiCurve.GuiCurvePageInit();
            }
            byte result;

            if (obj->attpos + obj->attposqyt > 8192)
            {
                result = 0;
            }
            else
            {
                for (byte b = 0; b < 5; b += 1)
                {
                    if (GuiCurve.CurveIndex[(int)b].objID == 255)
                    {
                        GuiCurve.CurveIndex[(int)b].objID  = ID;
                        GuiCurve.CurveIndex[(int)b].offset = obj->attpos;
                        if (GuiCurve.myapp.upapp.runapptype == runapptype.bianji)
                        {
                            GuiCurve.CurveRefBack(obj, ID);
                        }
                        break;
                    }
                }
                result = 1;
            }
            return(result);
        }
示例#3
0
 public unsafe static byte GuiSliderObjInit(objxinxi *obj, byte ID)
 {
     if (GuiSlider.myapp.upapp.runapptype == runapptype.bianji)
     {
         GuiSlider.GuiSliderRef(obj, ID);
     }
     return(1);
 }
示例#4
0
文件: GuiCurve.cs 项目: skyclub66/HMI
        public unsafe static byte CurveRefBack(objxinxi *obj, byte ID)
        {
            byte[]       array = new byte[0];
            CURVE_PARAM *ptr;

            if (GuiCurve.myapp.upapp.runapptype == runapptype.bianji)
            {
                GuiCurve.GuiCurvePageInit();
                ptr = (CURVE_PARAM *)GuiCurve.myapp.mymerry;
            }
            else
            {
                ptr = (CURVE_PARAM *)(GuiCurve.myapp.mymerry + obj->attpos);
            }
            if (GuiCurve.myapp.upapp.runapptype == runapptype.bianji || GuiCurve.myapp.pageobjs[ID].vis == 1)
            {
                if (ptr->BackType == 0)
                {
                    Showpic.Showpic_ShowXpic((int)obj->redian.x, (int)obj->redian.y, (ushort)(obj->redian.endx - obj->redian.x + 1), (ushort)(obj->redian.endy - obj->redian.y + 1), (int)obj->redian.x, (int)obj->redian.y, ptr->PicID);
                }
                else if (ptr->BackType == 2)
                {
                    Showpic.Showpic_ShowPic((int)obj->redian.x, (int)obj->redian.y, ptr->PicID);
                }
                else
                {
                    uint qyt = (uint)(ptr->objWid * ptr->objHig);
                    Lcd.LCD_addset((int)obj->redian.x, (int)obj->redian.y, (int)obj->redian.endx, (int)obj->redian.endy, 1);
                    Lcd.Lcd_WR_POINT(qyt, ptr->Bkclr);
                    if (ptr->GridX > 0)
                    {
                        for (short num = (short)obj->redian.x; num <= (short)obj->redian.endx; num += (short)ptr->GridX)
                        {
                            Lcd.LCD_addset((int)((ushort)num), (int)obj->redian.y, (int)((ushort)num), (int)obj->redian.endy, 1);
                            Lcd.Lcd_WR_POINT((uint)ptr->objHig, ptr->Griclr);
                        }
                    }
                    if (ptr->GridY > 0)
                    {
                        for (short num = (short)obj->redian.endy; num >= (short)obj->redian.y; num -= (short)ptr->GridY)
                        {
                            Lcd.LCD_addset((int)obj->redian.x, (int)((ushort)num), (int)obj->redian.endx, (int)((ushort)num), 1);
                            Lcd.Lcd_WR_POINT((uint)ptr->objWid, ptr->Griclr);
                        }
                    }
                }
            }
            return(1);
        }
示例#5
0
 private unsafe static byte ValueToTouchPos(objxinxi *obj, SLIDER_PARAM *pSliRam, byte ID)
 {
     if (pSliRam->Mode > 0)
     {
         byte b  = Convert.ToByte(pSliRam->CursorHig / 2);
         byte b2 = Convert.ToByte(pSliRam->CursorHig - b);
         if (pSliRam->NowVal >= pSliRam->MaxVal)
         {
             pSliRam->TouchPos = (ushort)(obj->redian.y + (ushort)b2 - 1);
         }
         else if (pSliRam->NowVal <= pSliRam->MinVal)
         {
             pSliRam->TouchPos = (ushort)(obj->redian.endy - (ushort)b);
         }
         else
         {
             ushort num = (ushort)((pSliRam->NowVal - pSliRam->MinVal) * (obj->redian.endy - obj->redian.y - (ushort)pSliRam->CursorHig + 1) / (pSliRam->MaxVal - pSliRam->MinVal + 1));
             pSliRam->TouchPos = (ushort)(obj->redian.endy - (ushort)b2 - num);
         }
     }
     else
     {
         byte b  = Convert.ToByte(pSliRam->CursorWid / 2);
         byte b2 = Convert.ToByte(pSliRam->CursorWid - b);
         if (pSliRam->NowVal >= pSliRam->MaxVal)
         {
             pSliRam->TouchPos = (ushort)(obj->redian.endx - (ushort)b2 + 1);
         }
         else if (pSliRam->NowVal <= pSliRam->MinVal)
         {
             pSliRam->TouchPos = (ushort)(obj->redian.x + (ushort)b);
         }
         else
         {
             ushort num = (ushort)((long)(obj->redian.x + (ushort)b) + (long)((ulong)(pSliRam->NowVal - pSliRam->MinVal) * (ulong)((long)(obj->redian.endx - obj->redian.x - (ushort)pSliRam->CursorWid + 1)) / (ulong)((long)(pSliRam->MaxVal - pSliRam->MinVal + 1))));
             pSliRam->TouchPos = num;
         }
     }
     if (GuiSlider.myapp.upapp.runapptype == runapptype.run)
     {
         GuiSlider.myapp.pageobjs[ID].refFlag = 1;
     }
     pSliRam->LastVal = pSliRam->NowVal;
     return(1);
 }
示例#6
0
        private unsafe static byte RefSliderCursor(objxinxi *obj, byte ID)
        {
            SLIDER_PARAM *ptr = (SLIDER_PARAM *)(GuiSlider.myapp.mymerry + obj->attpos);
            ushort        lastPos;
            ushort        num;
            ushort        num2;
            ushort        lastPos2;

            GuiSlider.DrawSliderCursor(obj, ptr, &lastPos, &num, &num2, &lastPos2);
            GuiSlider.ClearSliderCursor(obj, ptr, &lastPos, &num, &num2, &lastPos2);
            if (ptr->Mode > 0)
            {
                ptr->LastPos = lastPos2;
            }
            else
            {
                ptr->LastPos = lastPos;
            }
            return(1);
        }
示例#7
0
        private unsafe static byte DrawSliderCursor(objxinxi *obj, SLIDER_PARAM *pSliRam, ushort *CurXPos, ushort *CurXEnd, ushort *CurYPos, ushort *CurYEnd)
        {
            if (pSliRam->Mode > 0)
            {
                byte b       = (byte)(pSliRam->CursorHig / 2);
                *    CurXPos = (ushort)((obj->redian.endx - obj->redian.x + 1 - (ushort)pSliRam->CursorWid) / 2 + obj->redian.x);
                *    CurXEnd = (ushort)(*CurXPos + (ushort)pSliRam->CursorWid - 1);
                *    CurYEnd = (ushort)(pSliRam->TouchPos + (ushort)b);
                *    CurYPos = (ushort)(*CurYEnd - (ushort)pSliRam->CursorHig + 1);
            }
            else
            {
                byte b       = (Convert.ToByte(pSliRam->CursorWid / 2));
                *    CurYPos = (ushort)((obj->redian.endy - obj->redian.y + 1 - (ushort)pSliRam->CursorHig) / 2 + obj->redian.y);
                *    CurYEnd = (ushort)(*CurYPos + (ushort)pSliRam->CursorHig - 1);
                *    CurXPos = (ushort)(pSliRam->TouchPos - (ushort)b);
                *    CurXEnd = (ushort)(*CurXPos + (ushort)pSliRam->CursorWid - 1);
            }
            byte result;

            if (pSliRam->CursorType > 0)
            {
                if (pSliRam->CuPicID >= GuiSlider.myapp.app.picqyt)
                {
                    result = 0;
                    return(result);
                }
                GuiSlider.myapp.brush.sta = 2;
                Readdata.Readdata_ReadPic(ref GuiSlider.myapp.brush.pic, (int)pSliRam->CuPicID);
                GuiSlider.myapp.brush.x = *CurXPos;
                GuiSlider.myapp.brush.y = *CurYPos;
            }
            else
            {
                GuiSlider.myapp.brush.sta       = 1;
                GuiSlider.myapp.brush.backcolor = pSliRam->CuPicID;
            }
            Showpic.Showpic_Clearspa((int)(*CurXPos), (int)(*CurYPos), (int)pSliRam->CursorWid, (int)pSliRam->CursorHig);
            result = 1;
            return(result);
        }
示例#8
0
        public unsafe static byte GuiSliderPressDown(objxinxi *obj, byte ID)
        {
            SLIDER_PARAM *ptr      = (SLIDER_PARAM *)(GuiSlider.myapp.mymerry + obj->attpos);
            ushort        touchPos = ptr->TouchPos;
            ushort        val;

            if (ptr->Mode > 0)
            {
                val = GuiSlider.myapp.upapp.tp_dev.y_down;
            }
            else
            {
                val = GuiSlider.myapp.upapp.tp_dev.x_down;
            }
            GuiSlider.ChangeTouchValue(obj, ptr, val);
            if (touchPos != ptr->TouchPos)
            {
                GuiSlider.RefSliderCursor(obj, ID);
            }
            return(1);
        }
示例#9
0
        public unsafe static byte GuiSliderRef(objxinxi *obj, byte ID)
        {
            SLIDER_PARAM *ptr;

            if (GuiSlider.myapp.upapp.runapptype == runapptype.bianji)
            {
                ptr = (SLIDER_PARAM *)GuiSlider.myapp.mymerry;
            }
            else
            {
                ptr = (SLIDER_PARAM *)(GuiSlider.myapp.mymerry + obj->attpos);
            }
            if (ptr->LastVal != ptr->NowVal)
            {
                GuiSlider.ValueToTouchPos(obj, ptr, ID);
            }
            GuiSlider.DrawSliderBackGround(obj, ptr);
            ushort lastPos;
            ushort num;
            ushort num2;
            ushort lastPos2;

            GuiSlider.DrawSliderCursor(obj, ptr, &lastPos, &num, &num2, &lastPos2);
            if (ptr->Mode > 0)
            {
                ptr->LastPos = lastPos2;
            }
            else
            {
                ptr->LastPos = lastPos;
            }
            if (GuiSlider.myapp.upapp.runapptype == runapptype.run)
            {
                GuiSlider.myapp.pageobjs[ID].refFlag = 0;
            }
            return(1);
        }
示例#10
0
 public unsafe static byte GuiSliderPressUp(objxinxi *obj, byte ID)
 {
     return(1);
 }
示例#11
0
        private unsafe static byte ChangeTouchValue(objxinxi *obj, SLIDER_PARAM *pSliRam, ushort val)
        {
            ushort nowVal = pSliRam->NowVal;

            if (pSliRam->Mode > 0)
            {
                byte b  = Convert.ToByte(pSliRam->CursorHig / 2);
                byte b2 = (byte)(pSliRam->CursorHig / 2);
                if (val >= obj->redian.endy - (ushort)b)
                {
                    pSliRam->TouchPos = (ushort)(obj->redian.endy - (ushort)b);
                    pSliRam->NowVal   = pSliRam->MinVal;
                }
                else if (val <= obj->redian.y + (ushort)b2 - 1)
                {
                    pSliRam->TouchPos = (ushort)(obj->redian.y + (ushort)b2 - 1);
                    pSliRam->NowVal   = pSliRam->MaxVal;
                }
                else
                {
                    pSliRam->TouchPos = val;
                    pSliRam->NowVal   = (ushort)((ulong)pSliRam->MinVal + (ulong)(obj->redian.endy - (ushort)b2 - val) * (ulong)((long)(pSliRam->MaxVal - pSliRam->MinVal + 1)) / (ulong)((long)(obj->redian.endy - obj->redian.y - (ushort)pSliRam->CursorHig + 1)));
                }
            }
            else
            {
                byte b  = Convert.ToByte(pSliRam->CursorWid / 2);
                byte b2 = Convert.ToByte(pSliRam->CursorWid - b);
                if (val <= obj->redian.x + (ushort)b)
                {
                    pSliRam->TouchPos = (ushort)(obj->redian.x + (ushort)b);
                    pSliRam->NowVal   = pSliRam->MinVal;
                }
                else if (val >= obj->redian.endx - (ushort)b2 + 1)
                {
                    pSliRam->TouchPos = (ushort)(obj->redian.endx - (ushort)b2 + 1);
                    pSliRam->NowVal   = pSliRam->MaxVal;
                }
                else
                {
                    pSliRam->TouchPos = val;
                    pSliRam->NowVal   = (ushort)((ulong)pSliRam->MinVal + (ulong)(val - obj->redian.x - (ushort)b) * (ulong)((long)(pSliRam->MaxVal - pSliRam->MinVal + 1)) / (ulong)((long)(obj->redian.endx - obj->redian.x - (ushort)pSliRam->CursorWid + 1)));
                }
            }
            if (pSliRam->NowVal > 100)
            {
                pSliRam->NowVal = pSliRam->NowVal;
            }
            byte result;

            if (nowVal != pSliRam->NowVal)
            {
                pSliRam->LastVal = pSliRam->NowVal;
                result           = 1;
            }
            else
            {
                result = 0;
            }
            return(result);
        }
示例#12
0
 public unsafe static byte GuiSliderLoad(objxinxi *obj, byte ID)
 {
     GuiSlider.GuiSliderRef(obj, ID);
     return(1);
 }
示例#13
0
        private unsafe static byte ClearSliderCursor(objxinxi *obj, SLIDER_PARAM *pSliRam, ushort *CurXPos, ushort *CurXEnd, ushort *CurYPos, ushort *CurYEnd)
        {
            ushort num  = 0;
            ushort num2 = 0;
            ushort num3 = 0;
            ushort num4 = 0;

            if (pSliRam->Mode > 0)
            {
                num  = *CurXPos;
                num3 = *CurXEnd;
                if (*CurYEnd < pSliRam->LastPos)
                {
                    num4 = pSliRam->LastPos;
                    num2 = (ushort)(num4 - (ushort)pSliRam->CursorHig + 1);
                    if (*CurYEnd >= num2)
                    {
                        num2 = (ushort)(*CurYEnd + 1);
                    }
                }
                else if (*CurYEnd > pSliRam->LastPos)
                {
                    num4 = pSliRam->LastPos;
                    num2 = (ushort)(num4 - (ushort)pSliRam->CursorHig + 1);
                    if (num4 >= *CurYPos)
                    {
                        num4 = (ushort)(*CurYPos - 1);
                    }
                }
            }
            else
            {
                num2 = *CurYPos;
                num4 = *CurYEnd;
                if (*CurXPos < pSliRam->LastPos)
                {
                    num  = pSliRam->LastPos;
                    num3 = (ushort)(num + (ushort)pSliRam->CursorWid - 1);
                    if (*CurXEnd >= num)
                    {
                        num = (ushort)(*CurXEnd + 1);
                    }
                }
                else if (*CurXPos > pSliRam->LastPos)
                {
                    num  = pSliRam->LastPos;
                    num3 = (ushort)(num + (ushort)pSliRam->CursorWid - 1);
                    if (num3 >= *CurXPos)
                    {
                        num3 = (ushort)(*CurXPos - 1);
                    }
                }
            }
            switch (pSliRam->BackType)
            {
            case 0:
                Readdata.Readdata_ReadPic(ref GuiSlider.myapp.brush.pic, (int)pSliRam->BkPicID);
                break;

            case 1:
                GuiSlider.myapp.brush.backcolor = pSliRam->BkPicID;
                break;

            case 2:
                Readdata.Readdata_ReadPic(ref GuiSlider.myapp.brush.pic, (int)pSliRam->BkPicID);
                GuiSlider.myapp.brush.x = obj->redian.x;
                GuiSlider.myapp.brush.y = obj->redian.y;
                break;
            }
            GuiSlider.myapp.brush.sta = pSliRam->BackType;
            Showpic.Showpic_Clearspa((int)num, (int)num2, (int)(num3 - num + 1), (int)(num4 - num2 + 1));
            return(1);
        }
示例#14
0
文件: GuiCurve.cs 项目: skyclub66/HMI
        public unsafe static byte GuiCurveRef(objxinxi *obj, byte ID)
        {
            byte qyt = 0;

            byte[]       buffer         = new byte[4];
            ushort[]     numArray       = new ushort[4];
            ushort[]     numArray2      = new ushort[4];
            ushort[]     numArray3      = new ushort[4];
            ushort[]     numArray4      = new ushort[4];
            byte[]       buffer2        = new byte[4];
            int          num9           = 0;
            int          num10          = 0;
            Picturexinxi pic            = new Picturexinxi();
            CURVE_PARAM *curve_paramPtr = (CURVE_PARAM *)(myapp.mymerry + obj->attpos);

            CURVE_CHANNEL_PARAM *[] curve_channel_paramPtrArray = new CURVE_CHANNEL_PARAM *[4];
            short x     = 0;
            short num12 = 0;
            short endy  = 0;
            short y     = 0;
            short num17 = 0;

            if (curve_paramPtr->CH_qyt <= 4)
            {
                byte num3;
                for (num3 = 0; num3 < curve_paramPtr->CH_qyt; num3 = (byte)(num3 + 1))
                {
                    curve_channel_paramPtrArray[num3] = (CURVE_CHANNEL_PARAM *)((((uint)curve_paramPtr) + sizeof(CURVE_PARAM)) + (sizeof(CURVE_CHANNEL_PARAM) * num3));
                }
                byte num2 = 0;
                num3 = 0;
                while (num3 < curve_paramPtr->CH_qyt)
                {
                    buffer[num3]    = 1;
                    numArray3[num3] = curve_channel_paramPtrArray[num3]->DotLen;
                    if (numArray3[num3] > 0)
                    {
                        num2 = (byte)(num2 + 1);
                    }
                    numArray4[num3] = obj->redian.x;
                    if (curve_paramPtr->DrawDir == 0)
                    {
                        numArray[num3] = (ushort)(curve_channel_paramPtrArray[num3]->BufNext - 1);
                        num17          = -1;
                    }
                    else
                    {
                        num17 = (short)(curve_channel_paramPtrArray[num3]->BufNext - curve_channel_paramPtrArray[num3]->BufPos.star);
                        if (num17 >= numArray3[num3])
                        {
                            numArray[num3] = (ushort)(curve_channel_paramPtrArray[num3]->BufNext - curve_channel_paramPtrArray[num3]->DotLen);
                        }
                        else
                        {
                            numArray[num3] = (ushort)((curve_channel_paramPtrArray[num3]->BufPos.end - (curve_channel_paramPtrArray[num3]->DotLen - num17)) + 1);
                        }
                        if (curve_paramPtr->DrawDir == 2)
                        {
                            num17 = (short)((obj->redian.endx - obj->redian.x) + 1);
                            if (numArray3[num3] < num17)
                            {
                                numArray4[num3] = (ushort)(numArray4[num3] + ((ushort)(num17 - numArray3[num3])));
                            }
                        }
                        num17 = 1;
                    }
                    num3 = (byte)(num3 + 1);
                }
                if (num2 == 0)
                {
                    CurveRefBack(obj, ID);
                }
                else
                {
                    if (curve_paramPtr->BackType == 0)
                    {
                        qyt = 5;
                        Readdata.Readdata_ReadPic(ref pic, curve_paramPtr->PicID);
                        num9 = (int)(pic.addbeg + myapp.app.picdataadd);
                        if (myapp.upapp.lcddev.guidire == 0)
                        {
                            num9 += ((obj->redian.y * pic.W) + obj->redian.x) << 1;
                            num10 = qyt << 1;
                        }
                        else if (myapp.upapp.lcddev.guidire == 1)
                        {
                            num9 += (((pic.H - obj->redian.endy) - 1) + (obj->redian.x * pic.H)) << 1;
                            num10 = (qyt * pic.H) << 1;
                        }
                        else if (myapp.upapp.lcddev.guidire == 2)
                        {
                            num9 += ((((pic.H - obj->redian.endy) * pic.W) - obj->redian.x) - qyt) << 1;
                            num10 = qyt * -2;
                        }
                        else if (myapp.upapp.lcddev.guidire == 3)
                        {
                            num9 += (obj->redian.y + (((pic.W - obj->redian.x) - qyt) * pic.H)) << 1;
                            num10 = (qyt * pic.H) * -2;
                        }
                    }
                    else if (curve_paramPtr->BackType == 2)
                    {
                        qyt = 5;
                        Readdata.Readdata_ReadPic(ref pic, curve_paramPtr->PicID);
                        num9 = (int)(pic.addbeg + myapp.app.picdataadd);
                        if (myapp.upapp.lcddev.guidire == 0)
                        {
                            num10 = qyt << 1;
                        }
                        else if (myapp.upapp.lcddev.guidire == 1)
                        {
                            num10 = (qyt * pic.H) << 1;
                        }
                        else if (myapp.upapp.lcddev.guidire == 2)
                        {
                            num9 += (pic.W - qyt) << 1;
                            num10 = qyt * -2;
                        }
                        else if (myapp.upapp.lcddev.guidire == 3)
                        {
                            num9 += ((pic.W - qyt) * pic.H) << 1;
                            num10 = (qyt * pic.H) * -2;
                        }
                    }
                    else
                    {
                        x     = (short)obj->redian.x;
                        num12 = (short)(x + curve_paramPtr->GridX);
                    }
                    for (short i = (short)obj->redian.x; i <= obj->redian.endx; i = (short)(i + qyt))
                    {
                        short endx = (short)((i + 5) - 1);
                        if (endx > obj->redian.endx)
                        {
                            endx = (short)obj->redian.endx;
                        }
                        if (curve_paramPtr->BackType == 1)
                        {
                            if (curve_paramPtr->GridX > 0)
                            {
                                ushort num15;
                                ushort num16;
                                if (i == x)
                                {
                                    Lcd.LCD_addset((ushort)i, obj->redian.y, (ushort)i, obj->redian.endy, 1);
                                    Lcd.Lcd_WR_POINT(curve_paramPtr->objHig, curve_paramPtr->Griclr);
                                    num15 = (ushort)(i + 1);
                                }
                                else
                                {
                                    num15 = (ushort)i;
                                }
                                if ((num15 + 5) >= num12)
                                {
                                    num16 = (ushort)(num12 - 1);
                                    x     = num12;
                                    num12 = (short)(num12 + curve_paramPtr->GridX);
                                }
                                else
                                {
                                    num16 = (ushort)((num15 + 5) - 1);
                                }
                                qyt = (byte)((num16 - i) + 1);
                                if ((i + qyt) > obj->redian.endx)
                                {
                                    num16 = (ushort)endx;
                                    qyt   = (byte)((endx - i) + 1);
                                }
                                if (curve_paramPtr->GridY > 0)
                                {
                                    endy = (short)obj->redian.endy;
                                    while (endy >= obj->redian.y)
                                    {
                                        y = (short)((endy - curve_paramPtr->GridY) + 1);
                                        if (y < obj->redian.y)
                                        {
                                            y = (short)obj->redian.y;
                                        }
                                        Lcd.LCD_addset(num15, (ushort)endy, num16, (ushort)endy, 1);
                                        Lcd.Lcd_WR_POINT((ushort)((num16 - num15) + 1), curve_paramPtr->Griclr);
                                        Lcd.LCD_addset(num15, (ushort)y, num16, (ushort)(endy - 1), 1);
                                        Lcd.Lcd_WR_POINT((uint)(((num16 - num15) + 1) * (endy - y)), curve_paramPtr->Bkclr);
                                        endy = (short)(endy - curve_paramPtr->GridY);
                                    }
                                }
                                else
                                {
                                    num9 = curve_paramPtr->objHig * ((num16 - num15) + 1);
                                    Lcd.LCD_addset(num15, obj->redian.y, num16, obj->redian.endy, 1);
                                    Lcd.Lcd_WR_POINT((uint)num9, curve_paramPtr->Bkclr);
                                }
                            }
                            else if (curve_paramPtr->GridY > 0)
                            {
                                for (endy = (short)obj->redian.endy; endy >= obj->redian.y; endy = (short)(endy - curve_paramPtr->GridY))
                                {
                                    y = (short)((endy - curve_paramPtr->GridY) + 1);
                                    if (y < obj->redian.y)
                                    {
                                        y = (short)obj->redian.y;
                                    }
                                    Lcd.LCD_addset((ushort)i, (ushort)y, (ushort)endx, (ushort)endy, 1);
                                    qyt = (byte)((endx - i) + 1);
                                    Lcd.Lcd_WR_POINT((uint)(qyt * (endy - y)), curve_paramPtr->Bkclr);
                                    Lcd.Lcd_WR_POINT(qyt, curve_paramPtr->Griclr);
                                }
                            }
                            else
                            {
                                qyt  = (byte)((endx - i) + 1);
                                num9 = curve_paramPtr->objHig * ((endx - i) + 1);
                                Lcd.LCD_addset((ushort)i, obj->redian.y, (ushort)endx, obj->redian.endy, 1);
                                Lcd.Lcd_WR_POINT((uint)num9, curve_paramPtr->Bkclr);
                            }
                        }
                        else
                        {
                            Lcd.LCD_addset((ushort)i, obj->redian.y, (ushort)endx, obj->redian.endy, 1);
                            if ((myapp.upapp.lcddev.guidire & 1) > 0)
                            {
                                Showpic.Showpic_SendDataOffset((uint)num9, (ushort)(pic.H << 1), (ushort)((endx - i) + 1), (byte)curve_paramPtr->objHig);
                            }
                            else
                            {
                                Showpic.Showpic_SendDataOffset((uint)num9, (ushort)(pic.W << 1), curve_paramPtr->objHig, (byte)((endx - i) + 1));
                            }
                            num9 += num10;
                        }
                        for (num3 = 0; num3 < curve_paramPtr->CH_qyt; num3 = (byte)(num3 + 1))
                        {
                            if ((numArray3[num3] > 0) && (i >= numArray4[num3]))
                            {
                                for (num2 = 0; num2 < qyt; num2 = (byte)(num2 + 1))
                                {
                                    byte num6;
                                    byte num5 = myapp.mymerry[numArray[num3]];
                                    byte num4 = buffer2[num3];
                                    if (buffer[num3] > 0)
                                    {
                                        num4         = num5;
                                        buffer[num3] = 0;
                                    }
                                    if (num5 > num4)
                                    {
                                        num6 = (byte)((num5 - num4) + 1);
                                        Lcd.LCD_addset((ushort)(i + num2), (ushort)(obj->redian.endy - num5), (ushort)(i + num2), (ushort)(obj->redian.endy - num4), 1);
                                        Lcd.Lcd_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr);
                                    }
                                    else
                                    {
                                        num6 = (byte)((num4 - num5) + 1);
                                        Lcd.LCD_addset((ushort)(i + num2), (ushort)(obj->redian.endy - num4), (ushort)(i + num2), (ushort)(obj->redian.endy - num5), 1);
                                        Lcd.Lcd_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr);
                                    }
                                    buffer2[num3]  = num5;
                                    numArray[num3] = (ushort)(numArray[num3] + num17);
                                    if (numArray[num3] > curve_channel_paramPtrArray[num3]->BufPos.end)
                                    {
                                        numArray[num3] = curve_channel_paramPtrArray[num3]->BufPos.star;
                                    }
                                    else if (numArray[num3] < curve_channel_paramPtrArray[num3]->BufPos.star)
                                    {
                                        numArray[num3] = curve_channel_paramPtrArray[num3]->BufPos.end;
                                    }
                                    numArray3[num3] = (ushort)(numArray3[num3] - 1);
                                    if (numArray3[num3] == 0)
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                myapp.pageobjs[ID].refFlag = 0;
            }
            return(0);
        }