public unsafe byte GuiCurveRef(ref InfoObject 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]; uint address = 0; InfoPicture pic = new InfoPicture(); InfoCurveParam *curve_paramPtr; fixed(byte *px = &m_guiApp.CustomData[obj.AttributeStart]) curve_paramPtr = (InfoCurveParam *)px; InfoCurveChannelParam *[] curve_channel_paramPtrArray = new InfoCurveChannelParam *[4]; short x = 0; short num11 = 0; if (curve_paramPtr->ChannelCount <= 4) { byte num3; for (num3 = 0; num3 < curve_paramPtr->ChannelCount; num3++) { curve_channel_paramPtrArray[num3] = (InfoCurveChannelParam *)((((uint)curve_paramPtr) + sizeof(InfoCurveParam)) + (sizeof(InfoCurveChannelParam) * num3)); } byte num2 = 0; num3 = 0; while (num3 < curve_paramPtr->ChannelCount) { buffer[num3] = 1; numArray[num3] = curve_channel_paramPtrArray[num3]->BufNext; numArray3[num3] = curve_channel_paramPtrArray[num3]->DotLen; numArray4[num3] = numArray3[num3]; if (numArray3[num3] > 0) { num2 = (byte)(num2 + 1); } num3 = (byte)(num3 + 1); } if (num2 == 0) { CurveRefBack(ref obj, ID); } else { if (curve_paramPtr->BackType == 0) { qyt = 5; pic = m_runScreen.ReadInfoPicture(curve_paramPtr->PicID); address = pic.DataStart + m_guiApp.App.PictureImageStart; if (pic.IsPotrait == 1) { address += (uint)((((obj.Panel.Y + 1) * pic.W) - obj.Panel.X) * 2); } else { address += (uint)(((obj.Panel.Y * pic.W) + obj.Panel.X) * 2); } } else if (curve_paramPtr->BackType == 2) { qyt = 5; pic = m_runScreen.ReadInfoPicture(curve_paramPtr->PicID); address = pic.DataStart + m_guiApp.App.PictureImageStart; } else { x = (short)obj.Panel.X; num11 = (short)(x + curve_paramPtr->GridX); } for (short i = (short)obj.Panel.X; i <= obj.Panel.EndX; i = (short)(i + qyt)) { short endx = (short)((i + 5) - 1); if (endx > obj.Panel.EndX) { endx = (short)obj.Panel.EndX; } if (curve_paramPtr->BackType == 0) { if (pic.IsPotrait == 1) { address -= (uint)(qyt * 2); } m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.SendDataOffset(address, (ushort)(pic.W << 1), curve_paramPtr->Height, (byte)((endx - i) + 1)); if (pic.IsPotrait == 0) { address += (uint)(qyt * 2); } } else if (curve_paramPtr->BackType == 2) { if (pic.IsPotrait == 1) { address -= (uint)(qyt * 2); } m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.SendDataOffset(address, (ushort)(pic.W << 1), curve_paramPtr->Height, (byte)((endx - i) + 1)); if (pic.IsPotrait == 0) { address += (uint)(qyt * 2); } } else { short endy; short y; if (curve_paramPtr->GridX > 0) { ushort num14; ushort num15; if (i == x) { m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)i, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(curve_paramPtr->Height, curve_paramPtr->Griclr); num14 = (ushort)(i + 1); } else { num14 = (ushort)i; } if ((num14 + 5) >= num11) { num15 = (ushort)(num11 - 1); x = num11; num11 = (short)(num11 + curve_paramPtr->GridX); } else { num15 = (ushort)((num14 + 5) - 1); } qyt = (byte)((num15 - i) + 1); if ((i + qyt) > obj.Panel.EndX) { num15 = (ushort)endx; qyt = (byte)((endx - i) + 1); } if (curve_paramPtr->GridY > 0) { endy = (short)obj.Panel.EndY; while (endy > obj.Panel.Y) { y = (short)((endy - curve_paramPtr->GridY) + 1); if (y < obj.Panel.Y) { y = (short)obj.Panel.Y; } m_runScreen.LCD_AreaSet(num14, (ushort)y, num15, (ushort)endy); m_runScreen.LCD_WR_POINT((uint)(((num15 - num14) + 1) * (endy - y)), curve_paramPtr->BackColor); m_runScreen.LCD_WR_POINT((uint)((num15 - num14) + 1), curve_paramPtr->Griclr); endy = (short)(endy - curve_paramPtr->GridY); } } else { address = (uint)(curve_paramPtr->Height * ((num15 - num14) + 1)); m_runScreen.LCD_AreaSet(num14, obj.Panel.Y, num15, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(address, curve_paramPtr->BackColor); } } else if (curve_paramPtr->GridY > 0) { for (endy = (short)obj.Panel.EndY; endy > obj.Panel.Y; endy = (short)(endy - curve_paramPtr->GridY)) { y = (short)((endy - curve_paramPtr->GridY) + 1); if (y < obj.Panel.Y) { y = (short)obj.Panel.Y; } m_runScreen.LCD_AreaSet((ushort)i, (ushort)y, (ushort)endx, (ushort)endy); qyt = (byte)((endx - i) + 1); m_runScreen.LCD_WR_POINT((uint)(qyt * (endy - y)), curve_paramPtr->BackColor); m_runScreen.LCD_WR_POINT(qyt, curve_paramPtr->Griclr); } } else { qyt = (byte)((endx - i) + 1); address = (uint)(curve_paramPtr->Height * ((endx - i) + 1)); m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(address, curve_paramPtr->BackColor); } } num3 = 0; while (num3 < curve_paramPtr->ChannelCount) { if (numArray4[num3] > 0) { for (num2 = 0; num2 < qyt; num2 = (byte)(num2 + 1)) { byte num6; if (numArray[num3] == curve_channel_paramPtrArray[num3]->Begin) { numArray[num3] = (ushort)curve_channel_paramPtrArray[num3]->End; } else { numArray[num3] = (ushort)(numArray[num3] - 1); } if (numArray[num3] == curve_channel_paramPtrArray[num3]->Begin) { numArray2[num3] = (ushort)curve_channel_paramPtrArray[num3]->End; } else { numArray2[num3] = (ushort)(numArray[num3] - 1); } byte num5 = m_guiApp.CustomData[numArray[num3]]; byte num4 = m_guiApp.CustomData[numArray2[num3]]; if (buffer[num3] > 0) { num4 = num5; buffer[num3] = 0; } if (numArray4[num3] == 1) { num4 = num5; } if (num5 > num4) { num6 = (byte)((num5 - num4) + 1); m_runScreen.LCD_AreaSet((ushort)(i + num2), (ushort)(obj.Panel.EndY - num5), (ushort)(i + num2), (ushort)(obj.Panel.EndY - num4)); m_runScreen.LCD_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr); } else { num6 = (byte)((num4 - num5) + 1); m_runScreen.LCD_AreaSet((ushort)(i + num2), (ushort)(obj.Panel.EndY - num4), (ushort)(i + num2), (ushort)(obj.Panel.EndY - num5)); m_runScreen.LCD_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr); } numArray4[num3] = (ushort)(numArray4[num3] - 1); if (numArray4[num3] == 0) { break; } } } num3 = (byte)(num3 + 1); } } for (num3 = 0; num3 < curve_paramPtr->ChannelCount; num3 = (byte)(num3 + 1)) { if (curve_channel_paramPtrArray[num3]->DotLen == curve_paramPtr->Width) { curve_channel_paramPtrArray[num3]->BufFree = (ushort)((curve_paramPtr->BufLen - curve_paramPtr->Width) - (curve_channel_paramPtrArray[num3]->DotLen - numArray3[num3])); } } } curve_paramPtr->RefFlag = 0; } return(0); }
public unsafe byte GuiCurveRef(ref InfoObject 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]; uint address = 0; InfoPicture pic = new InfoPicture(); InfoCurveParam* curve_paramPtr; fixed(byte* px = &m_guiApp.CustomData[obj.AttributeStart]) curve_paramPtr = (InfoCurveParam*)px; InfoCurveChannelParam*[] curve_channel_paramPtrArray = new InfoCurveChannelParam*[4]; short x = 0; short num11 = 0; if (curve_paramPtr->ChannelCount <= 4) { byte num3; for (num3 = 0; num3 < curve_paramPtr->ChannelCount; num3++) curve_channel_paramPtrArray[num3] = (InfoCurveChannelParam*)((((uint)curve_paramPtr) + sizeof(InfoCurveParam)) + (sizeof(InfoCurveChannelParam) * num3)); byte num2 = 0; num3 = 0; while (num3 < curve_paramPtr->ChannelCount) { buffer[num3] = 1; numArray[num3] = curve_channel_paramPtrArray[num3]->BufNext; numArray3[num3] = curve_channel_paramPtrArray[num3]->DotLen; numArray4[num3] = numArray3[num3]; if (numArray3[num3] > 0) { num2 = (byte)(num2 + 1); } num3 = (byte)(num3 + 1); } if (num2 == 0) { CurveRefBack(ref obj, ID); } else { if (curve_paramPtr->BackType == 0) { qyt = 5; pic = m_runScreen.ReadInfoPicture(curve_paramPtr->PicID); address = pic.DataStart + m_guiApp.App.PictureImageStart; if (pic.IsPotrait == 1) address += (uint)((((obj.Panel.Y + 1) * pic.W) - obj.Panel.X) * 2); else address += (uint)(((obj.Panel.Y * pic.W) + obj.Panel.X) * 2); } else if (curve_paramPtr->BackType == 2) { qyt = 5; pic = m_runScreen.ReadInfoPicture(curve_paramPtr->PicID); address = pic.DataStart + m_guiApp.App.PictureImageStart; } else { x = (short)obj.Panel.X; num11 = (short)(x + curve_paramPtr->GridX); } for (short i = (short)obj.Panel.X; i <= obj.Panel.EndX; i = (short)(i + qyt)) { short endx = (short)((i + 5) - 1); if (endx > obj.Panel.EndX) { endx = (short)obj.Panel.EndX; } if (curve_paramPtr->BackType == 0) { if (pic.IsPotrait == 1) address -= (uint)(qyt * 2); m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.SendDataOffset(address, (ushort)(pic.W << 1), curve_paramPtr->Height, (byte)((endx - i) + 1)); if (pic.IsPotrait == 0) address += (uint)(qyt * 2); } else if (curve_paramPtr->BackType == 2) { if (pic.IsPotrait == 1) address -= (uint)(qyt * 2); m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.SendDataOffset(address, (ushort)(pic.W << 1), curve_paramPtr->Height, (byte)((endx - i) + 1)); if (pic.IsPotrait == 0) address += (uint)(qyt * 2); } else { short endy; short y; if (curve_paramPtr->GridX > 0) { ushort num14; ushort num15; if (i == x) { m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)i, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(curve_paramPtr->Height, curve_paramPtr->Griclr); num14 = (ushort)(i + 1); } else num14 = (ushort)i; if ((num14 + 5) >= num11) { num15 = (ushort)(num11 - 1); x = num11; num11 = (short)(num11 + curve_paramPtr->GridX); } else num15 = (ushort)((num14 + 5) - 1); qyt = (byte)((num15 - i) + 1); if ((i + qyt) > obj.Panel.EndX) { num15 = (ushort)endx; qyt = (byte)((endx - i) + 1); } if (curve_paramPtr->GridY > 0) { endy = (short)obj.Panel.EndY; while (endy > obj.Panel.Y) { y = (short)((endy - curve_paramPtr->GridY) + 1); if (y < obj.Panel.Y) { y = (short)obj.Panel.Y; } m_runScreen.LCD_AreaSet(num14, (ushort)y, num15, (ushort)endy); m_runScreen.LCD_WR_POINT((uint)(((num15 - num14) + 1) * (endy - y)), curve_paramPtr->BackColor); m_runScreen.LCD_WR_POINT((uint)((num15 - num14) + 1), curve_paramPtr->Griclr); endy = (short)(endy - curve_paramPtr->GridY); } } else { address = (uint)(curve_paramPtr->Height * ((num15 - num14) + 1)); m_runScreen.LCD_AreaSet(num14, obj.Panel.Y, num15, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(address, curve_paramPtr->BackColor); } } else if (curve_paramPtr->GridY > 0) { for (endy = (short)obj.Panel.EndY; endy > obj.Panel.Y; endy = (short)(endy - curve_paramPtr->GridY)) { y = (short)((endy - curve_paramPtr->GridY) + 1); if (y < obj.Panel.Y) { y = (short)obj.Panel.Y; } m_runScreen.LCD_AreaSet((ushort)i, (ushort)y, (ushort)endx, (ushort)endy); qyt = (byte)((endx - i) + 1); m_runScreen.LCD_WR_POINT((uint)(qyt * (endy - y)), curve_paramPtr->BackColor); m_runScreen.LCD_WR_POINT(qyt, curve_paramPtr->Griclr); } } else { qyt = (byte)((endx - i) + 1); address = (uint)(curve_paramPtr->Height * ((endx - i) + 1)); m_runScreen.LCD_AreaSet((ushort)i, obj.Panel.Y, (ushort)endx, obj.Panel.EndY); m_runScreen.LCD_WR_POINT(address, curve_paramPtr->BackColor); } } num3 = 0; while (num3 < curve_paramPtr->ChannelCount) { if (numArray4[num3] > 0) { for (num2 = 0; num2 < qyt; num2 = (byte)(num2 + 1)) { byte num6; if (numArray[num3] == curve_channel_paramPtrArray[num3]->Begin) numArray[num3] = (ushort)curve_channel_paramPtrArray[num3]->End; else numArray[num3] = (ushort)(numArray[num3] - 1); if (numArray[num3] == curve_channel_paramPtrArray[num3]->Begin) numArray2[num3] = (ushort)curve_channel_paramPtrArray[num3]->End; else numArray2[num3] = (ushort)(numArray[num3] - 1); byte num5 = m_guiApp.CustomData[numArray[num3]]; byte num4 = m_guiApp.CustomData[numArray2[num3]]; if (buffer[num3] > 0) { num4 = num5; buffer[num3] = 0; } if (numArray4[num3] == 1) num4 = num5; if (num5 > num4) { num6 = (byte)((num5 - num4) + 1); m_runScreen.LCD_AreaSet((ushort)(i + num2), (ushort)(obj.Panel.EndY - num5), (ushort)(i + num2), (ushort)(obj.Panel.EndY - num4)); m_runScreen.LCD_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr); } else { num6 = (byte)((num4 - num5) + 1); m_runScreen.LCD_AreaSet((ushort)(i + num2), (ushort)(obj.Panel.EndY - num4), (ushort)(i + num2), (ushort)(obj.Panel.EndY - num5)); m_runScreen.LCD_WR_POINT(num6, curve_channel_paramPtrArray[num3]->Penclr); } numArray4[num3] = (ushort)(numArray4[num3] - 1); if (numArray4[num3] == 0) break; } } num3 = (byte)(num3 + 1); } } for (num3 = 0; num3 < curve_paramPtr->ChannelCount; num3 = (byte)(num3 + 1)) { if (curve_channel_paramPtrArray[num3]->DotLen == curve_paramPtr->Width) { curve_channel_paramPtrArray[num3]->BufFree = (ushort)((curve_paramPtr->BufLen - curve_paramPtr->Width) - (curve_channel_paramPtrArray[num3]->DotLen - numArray3[num3])); } } } curve_paramPtr->RefFlag = 0; } return 0; }