public override void Draw() { //base.Update(); #region draw circle { VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); VG.vgClearPath(mLinear, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 40.0f); VG.vgSetPaint(mPaint, VGPaintMode.VG_STROKE_PATH); VG.vgSetfv(VGParamType.VG_STROKE_DASH_PATTERN, mDashPattern.Length, mDashPattern); const float kFullScale = 55; var rv = kFullScale * (Percent / 100.0f); VGU.vguLine(mLinear, X + 35, Y + 35, X + 35, Y + 35 + rv); VG.vgDrawPath(mLinear, VGPaintMode.VG_STROKE_PATH); VG.vgFinish(); } #endregion VG.vgFinish(); }
public override void Draw() { { VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); for (var i = 0; i < mCount; i++) { VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); if (i == (mSpeed - 1)) { VG.vgSetPaint(mActivePaint, VGPaintMode.VG_FILL_PATH); mText[i][0].SetFont(Palette.Black); } else { VG.vgSetPaint(mDefaultPaint, VGPaintMode.VG_FILL_PATH); mText[i][0].SetFont(Palette.White); } VGU.vguRoundRect(mPath, X, Y + i * (Width + 5), Width, Width, 5, 5); VG.vgDrawPath(mPath, VGPaintMode.VG_FILL_PATH); VG.vgFinish(); } } //base.Update(); }
public ProgressBar(IWidget parent, int x, int y, int width, int height, int round) : base(parent, x, y, width, height) { mRound = round; mPath = VG.vgCreatePath(0, VGPathDatatype.VG_PATH_DATATYPE_S_16, 1, 0, 0, 0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VGU.vguRoundRect(mPath, 0, 0, Width, Height, mRound, mRound); mPaint = VG.vgCreatePaint(); Status = new TextArea(this, 0, 0, Width, Height); Status.SetAlign(Align.Center, new GfxPoint(0, 3)); Status.OnTextChange += caller => Invalidate(); Border = new VGSolidColor(Palette.White); Background = new VGSolidColor(Palette.Black); var percent = new VGLinearGradient(0, 0, 0, Height); percent.AddColor(0, new Color(0xE9AE5DFF)); //percent.AddColor(50, new Color(0xE08F1EFF)); percent.AddColor(100, new Color(0xE08F1EFF)); //percent.AddColor(0, new Color(0x00FF00FF)); //percent.AddColor(100, new Color(0xFF0000FF)); PercentLine = percent; }
public VideoPlayer(IWindow parent, string text, int port, int x, int y, int width, int height) : base(parent, x, Application.Screen.Height - y - height, width, height) { var label = new TextArea(this, 0, height / 2 - 20, width, 40) { Text = text }; label.SetFont(Palette.White, 35); label.SetAlign(Align.Center, new GfxPoint(0, 5)); mPath = new VGPath(null, new VGSolidColor(new Color(0x2c2d2eff))); //VGU.vguRect(mPath.GetPath(), 0, 0, width, height); VGU.vguRoundRect(mPath.GetPath(), 0, 0, width - 12, height - 12, 10, 10); mPath.Move(6, 7); mArgs = string.Format("tcpclientsrc host=127.0.0.1 port={0} ! multipartdemux boundary=\"boundary\" ! vpudec ! mfw_isink axis-left={1} axis-top={2} disp-width={3} disp-height={4}", port, x, y, width, height); Environment.SetEnvironmentVariable("VSALPHA", "1"); mThread = new Thread(Processing); mThread.Start(); }
Button EngButton(IWidget parent, string name, int x, int y) { const int kHeight = 35; const float kRound = 5f; var contour = VGPath.OpenVGPath(); // 33x35 VGU.vguRoundRect(contour, 0, 0, 33, kHeight, kRound, kRound); var normal = new VGPath(contour, null, new VGSolidColor(Palette.LightGrey)); var active = new VGPath(contour, null, new VGSolidColor(Palette.DarkGray)); var btn = new Button(parent, active, normal);//, "eng");//, x, y, width, kHeight, kRound); var label = new TextArea(btn, 0, 0, btn.Width, btn.Height) { Text = name }; label.SetAlign(Align.Center, new GfxPoint(0, 5)); label.SetFont(22); btn.Move(x, y); btn.OnRelease = caller => { Text += Text.Length == 0 ? label.Text : label.Text.ToLower(); mTextArea.Text = Text; }; btn.Hide(); mEngLayout.Add(btn); return(btn); }
public static TableLine InputArea(IWidget parent, string label, int x, int y, int width = 440, int height = 30) { var rv = new TableLine(parent, height); rv.AddColumn(width, null, Align.Left, 20, Palette.Black, new GfxPoint(5, 5)); var outline = VGPath.OpenVGPath(); VGU.vguRoundRect(outline, 0, 0, width, height, 5, 5); rv.AddVGPath(new VGPath(outline, new VGSolidColor(Palette.LightGrey), new VGSolidColor(Palette.TextArea.Background))); rv.Move(x, y); var hitLabel = new TextArea(rv, 0, 0, rv.Width, rv.Height); hitLabel.SetAlign(Align.Left, new GfxPoint(5, 5)); hitLabel.SetFont(Palette.DarkSlateGray, 20); hitLabel.Text = label; rv.OnPaint += caller => { if (string.IsNullOrEmpty(rv.Text[0].Text)) { hitLabel.Show(); } else { hitLabel.Hide(); } }; return(rv); }
private static void InitModal() { if (mModalInitialized) { return; } const int kWidth = 90; const int kHeight = 35; const int kRound = 10; mModalOutline = VGPath.OpenVGPath(); VGU.vguRoundRect(mModalOutline, 0, 0, kWidth, kHeight, kRound, kRound); mModalStrokeVGPaint = new VGSolidColor(Palette.LightGrey); #region default color mModalNormalVGPaintDefault = SetPaint(Palette.DarkGray, Palette.LightGrey, kHeight); mModalActiveVGPaintDefault = SetPaint(Palette.LightGrey, Palette.DarkGray, kHeight); #endregion #region red color mModalNormalVGPaintRed = SetPaint(new Color(0x640000FF), Palette.Red, kHeight); mModalActiveVGPaintRed = SetPaint(Palette.Red, new Color(0x640000FF), kHeight); #endregion #region green color mModalNormalVGPaintGreen = SetPaint(new Color(0x006400FF), Palette.Lime, kHeight); mModalActiveVGPaintGreen = SetPaint(Palette.Lime, new Color(0x006400FF), kHeight); #endregion mModalInitialized = true; }
protected internal TestWidget(IWidget parent) : base(parent, 0, 0, 150, 150) { //Text.Label(this, "Hello", 50, 10, 20, Width, 50, Align.Center, Palette.DarkSlateGray); //mPath = new VGPath(null, new VGSolidColor(Palette.Orange)); mPath = new VGPath(null, new VGSolidColor(new Color(0xFFA5003F))); mPath.Move(30, 30); VGU.vguRoundRect(mPath.GetPath(), 0, 0, 100, 100, 35, 35); }
private void Init(int x, int y) { InitBackground(); mImage = new Image(this, 10, 35); mImage.Load("./wvga.filter.raw"); Text.Label(this, "Фильтр\\nв системе смазки", 14, 0, 0, Width, 14); mPaint = VG.vgCreatePaint(); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, (new Color(0xEDAB18ff)).Value); mRollArea = new TextArea(this, Width - 50, 45, 49, 30) { Text = "" }; mRollArea.SetAlign(Align.Center, new GfxPoint(0, 5)); mRollArea.SetFont(Palette.White, 16); const int kLimit = 10; mRollArea.Text = string.Format("{0}", "Отключен"); VG.vgSetParameterfv(mFilterPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new Color(0x2EC90Eff).Value); mSensor.OnUpdate += sensor => { if (mStatus.ValueAsInt == 0) { mRollArea.Text = string.Format("{0}", "Отключен"); VG.vgSetParameterfv(mFilterPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new Color(0x2EC90Eff).Value); } else { mRollArea.Text = string.Format("{0}", sensor.Value / 10.0f); //mRollArea.Text = string.Format("{0}", sensor.Value > kLimit ? "Норма" : "Авария"); VG.vgSetParameterfv(mFilterPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, sensor.Value > kLimit ? (new Color(0x2EC90Eff)).Value : (new Color(0xE3AB1Fff)).Value); } }; AddVGPath(new VGPath(mPath, null, new VGSolidColor(new Color(0x2c2d2eff)))); Move(x, y); mFilterPath = VGPath.OpenVGPath(); VGU.vguRect(mFilterPath, mImage.ScreenPosition.X + 1, mImage.ScreenPosition.Y + 1, mImage.Width - 2, mImage.Height - 2); mFilterPaint = VG.vgCreatePaint(); VG.vgSetParameterfv(mFilterPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, (new Color(0xEDAB18ff)).Value); }
private void InitBackground() { if (mInitialized) { return; } const int kRound = 10; mPath = VGPath.OpenVGPath(); VGU.vguRoundRect(mPath, 0, 0, Width, Height, kRound, kRound); mInitialized = true; }
protected ModalWindow() : base(null, Application.Screen.Width, Application.Screen.Height) { Hide(); if (mPath == null) { mPath = new VGPath(null, new VGSolidColor(new Color { R = 0.0f, G = 0.0f, B = 0.0f, A = 0.8f })); VGU.vguRect(mPath.GetPath(), 0, 0, Width, Height); } mCounter++; }
public override ModalWindow AddModal(string name) { var modal = base.AddModal("modal-" + name); var modalOutline = VGPath.OpenVGPath(); VGU.vguRoundRect(modalOutline, 0, 0, 400, 230, 20, 20); var fill = new VGLinearGradient(0, 0, 0, 230); fill.AddColor(0, Palette.DarkGray); fill.AddColor(25, Palette.LightGrey); fill.AddColor(100, Palette.LightGrey); var outline = new VGPath(modalOutline, new VGSolidColor(Palette.DarkSlateGray), fill) { StrokeWidth = 2.0f }; outline.Move(40, 25); modal.AddVGPath(outline); var textOutline = VGPath.OpenVGPath(); VGU.vguRect(textOutline, 0, 0, 360, 160); var text = new VGPath(textOutline, new VGSolidColor(Palette.DarkSlateGray), new VGSolidColor(Palette.White)) { StrokeWidth = 2.0f }; text.Move(60, 85); modal.AddVGPath(text); switch (name) { case "yesno": ConfigureModalYesNo(modal); break; case "ok": ConfigureModalOk(modal); break; } return(modal); }
private VGPath GetPanelPath() { var fill = new VGLinearGradient(0, 0, mPanel.Width, 0); fill.AddColor(0, Palette.LightBlue); fill.AddColor(25, Palette.Gainsboro); fill.AddColor(75, Palette.Gainsboro); fill.AddColor(100, Palette.LightBlue); var path = VG.vgCreatePath(0, VGPathDatatype.VG_PATH_DATATYPE_S_16, 1, 0, 0, 0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VGU.vguRect(path, 0, 0, mPanel.Width, mPanel.Height); return(new VGPath(path, new VGSolidColor(Palette.White), fill)); }
private VGPath GetPanelPath() { var fill = new VGLinearGradient(0, 0, mPanel.Width, 0); fill.AddColor(0, Palette.LightBlue); fill.AddColor(25, Palette.Gainsboro); fill.AddColor(75, Palette.Gainsboro); fill.AddColor(100, Palette.LightBlue); var rv = new VGPath(new VGSolidColor(Palette.White), fill); VGU.vguRect(rv.GetPath(), 0, 0, mPanel.Width, mPanel.Height); return(rv); }
public static TableLine DateTime(IWidget parent, int x, int y) { const int kHeight = 40; var rv = new TableLine(parent, kHeight); rv.AddColumn(35, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // hour rv.AddColumn(15, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // : rv.AddColumn(35, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // minute rv.AddColumn(0, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // : rv.AddColumn(0, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // seconds rv.AddColumn(20, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // " - " rv.AddColumn(35, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // day rv.AddColumn(15, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // "/" rv.AddColumn(35, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // month rv.AddColumn(15, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // "/" rv.AddColumn(80, null, Align.Center, 40, Palette.Black, new GfxPoint(5, 5)); // year //rv.AddColumn(30, null, Align.Center, 20, Palette.Black, new GfxPoint(5, 5)); // seconds var outline = VGPath.OpenVGPath(); VGU.vguRoundRect(outline, 0, 0, rv.Width, kHeight, 5, 5); rv.AddVGPath(new VGPath(outline, new VGSolidColor(Palette.LightGrey), new VGSolidColor(Palette.TextArea.Background))); rv.Move(x, y); { rv.Text[0].Text = "09"; rv.Text[1].Text = ":"; rv.Text[2].Text = "00"; rv.Text[3].Text = ":"; rv.Text[4].Text = "00"; rv.Text[5].Text = " - "; rv.Text[6].Text = "01"; rv.Text[7].Text = "/"; rv.Text[8].Text = "03"; rv.Text[9].Text = "/"; rv.Text[10].Text = "2014"; //rv.Text[0].Text = ":"; //rv.Text[0].Text = "14"; } return(rv); }
private void InitBackground() { if (mInitialized) { return; } const int kRound = 10; mPath = VGPath.OpenVGPath(); VGU.vguRoundRect(mPath, 0, 0, Width, Height, kRound, kRound); mLinear = VG.vgCreatePath(0, VGPathDatatype.VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); mInitialized = true; }
protected override void Draw() { // draw bg if (Background != null) { VG.vgSetfv(VGParamType.VG_CLEAR_COLOR, 4, Background.Value); VG.vgClear(X, Y, Width, Height); } if (Grid != null) { Grid.Update(); } if (Arrows != null) { Arrows.Update(); } // draw line if (mGrapihcs.Count > 0) { foreach (var data in from data in mGrapihcs where data != null where data.Data != null where data.Data.Length > 0 select data) { VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); VG.vgTranslate(X + data.Position.X, Y + data.Position.Y); // (40, 20) VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, data.StrokeWidth); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, data.Color != null ? data.Color.Value : Palette.Black.Value); VG.vgSetPaint(mPaint, VGPaintMode.VG_STROKE_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); var size = (data.Data.Length - 1) > (Width - data.Position.X) ? (Width - data.Position.X) : (data.Data.Length - 1); for (var i = 0; i < size; i++) { VGU.vguLine(mPath, i, data.Data[i], i + 1, data.Data[i + 1]); } VG.vgDrawPath(mPath, VGPaintMode.VG_STROKE_PATH); } } }
Button GenericButton(IWidget parent, int x, int y, int width, string text, Color color) { const int kHeight = 35; const float kRound = 5f; var contour = VGPath.OpenVGPath(); VGU.vguRoundRect(contour, 0, 0, width, kHeight, kRound, kRound); var normal = new VGPath(contour, null, new VGSolidColor(color ?? Palette.LightGrey)); var activeColor = Palette.DarkGray; if (color == Palette.Red) { activeColor = Palette.Orange; } //activeColor = new Color(0x640000FF); if (color == Palette.Lime) { activeColor = Palette.Orange; } //activeColor = new Color(0x006400FF); var active = new VGPath(contour, null, new VGSolidColor(activeColor)); var btn = new Button(parent, active, normal);//, "generic");//, x, y, width, kHeight, kRound); var label = new TextArea(btn, 0, 0, btn.Width, btn.Height) { Text = text }; label.SetAlign(Align.Center, new GfxPoint(0, 10)); label.SetFont(22); btn.Move(x, y); btn.Show(); return(btn); }
private static void InitDown() { if (mDownInitialized) { return; } const int kWidth = 62; const int kHeight = 34; const int kRound = 10; mDownOutline = VGPath.OpenVGPath(); VGU.vguRoundRect(mDownOutline, 0, 0, kWidth, kHeight, kRound, kRound); #region default color mClassicActiveVGPaintDefault = SetPaint(Palette.Black, new Color(0x58595BFF), kHeight); #endregion mDownInitialized = true; }
private static void InitQuad() { if (mQuadInitialized) { return; } const int kButtonsWidth = 62; const int kButtonsHeight = 45; mQuadOutline = VGPath.OpenVGPath(); VGU.vguRect(mQuadOutline, 0, 0, kButtonsWidth, kButtonsHeight); #region default color mQuadActiveVGPaintDefault = SetPaint(Palette.Black, new Color(0x58595BFF), kButtonsHeight); #endregion mQuadInitialized = true; }
public override void Update() { VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); #region fill rect { VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); if (State == ButtonState.Released) { VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, PressColor.Value); } else { var release = new Color { A = PressColor.A, R = PressColor.R * 0.7f, G = PressColor.G * 0.7f, B = PressColor.B * 0.7f }; VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, release.Value); } VG.vgSetPaint(mPaint, VGPaintMode.VG_FILL_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 1.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VGU.vguRoundRect(mPath, X, Y, Width, Height, mRound, mRound); VG.vgDrawPath(mPath, VGPaintMode.VG_FILL_PATH); } #endregion base.Update(); }
private static void InitGiant() { if (mGiantInitialized) { return; } const int kWidth = 230; const int kHeight = 90; const int kRound = 25; mGiantOutline = VGPath.OpenVGPath(); VGU.vguRoundRect(mGiantOutline, 0, 0, kWidth, kHeight, kRound, kRound); mGiantStrokeVGPaint = new VGSolidColor(Palette.LightGrey); //mGiantNormalVGPaint = SetPaint(Palette.LightBlue, Palette.LightGrey, kHeight); mGiantNormalVGPaint = SetPaint(Palette.DarkGray, Palette.LightGrey, kHeight); mGiantActiveVGPaint = SetPaint(Palette.LightGrey, Palette.DarkGray, kHeight); mGiantInitialized = true; }
private static void InitClassic() { if (mClassicInitialized) { return; } const int kWidth = 120; const int kHeight = 50; const int kRound = 15; mClassicOutline = VGPath.OpenVGPath(); VGU.vguRoundRect(mClassicOutline, 0, 0, kWidth, kHeight, kRound, kRound); mClassicStrokeVGPaint = new VGSolidColor(Palette.LightGrey); #region default color //mClassicNormalVGPaintDefault = SetPaint(Palette.LightBlue, Palette.LightGrey, kHeight); mClassicNormalVGPaintDefault = SetPaint(Palette.DarkGray, Palette.LightGrey, kHeight); mClassicActiveVGPaintDefault = SetPaint(Palette.LightGrey, Palette.DarkGray, kHeight); #endregion #region red color //mClassicNormalVGPaintRed = SetPaint(Palette.LightBlue, Palette.Red, kHeight); mClassicNormalVGPaintRed = SetPaint(new Color(0x640000FF), Palette.Red, kHeight); mClassicActiveVGPaintRed = SetPaint(Palette.Red, new Color(0x640000FF), kHeight); #endregion #region green color //mClassicNormalVGPaintGreen = SetPaint(Palette.LightBlue, Palette.Lime, kHeight); //mClassicNormalVGPaintGreen = SetPaint(new Color(0x004623FF), Palette.Lime, kHeight); mClassicNormalVGPaintGreen = SetPaint(new Color(0x006400FF), Palette.Lime, kHeight); mClassicActiveVGPaintGreen = SetPaint(Palette.Lime, new Color(0x006400FF), kHeight); #endregion mClassicInitialized = true; }
private void Init(int x, int y) { InitBackground(); Text.Label(this, mDescription, 14, 0, 0, Width, 14); //Text.Label(this, "100%", 14, 0, 0, Width, 14); //Text.Label(this, "0%", 14, 0, 0, Width, 14); mPaint = VG.vgCreatePaint(); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, (new Color(0xEDAB18ff)).Value); Format = "{0:0}"; mActiveArea = new TextArea(this, Width - 40, (int)(Height * 0.45f), 40, 30);// SetValue(0); mActiveArea.SetAlign(Align.Left, new GfxPoint(0, 5)); mActiveArea.SetFont(Palette.White, 22); AddVGPath(new VGPath(mPath, null, new VGSolidColor(new Color(0x2c2d2eff)))); { var i = VGPath.OpenVGPath(); VGU.vguRect(i, 0, 0, 45, 59); var rv = new VGPath(i, new VGSolidColor(new Color(0x6d6e71ff)), new VGSolidColor(new Color(0x414041ff))) { StrokeWidth = 1.0f }; rv.Move(X + 12, Y + 32); AddVGPath(rv); } mSensor.OnUpdate += sensor => SetValue(sensor.Value / 10.0f); Move(x, y); }
public void AddLine(ITableLine line) { line.Parent = this; line.Move(0, Height); // берем макимальную ширину и добавляем высоту строки Resize(Width > line.Width ? Width : line.Width, Height + line.Height); line.OnPress = CellPressed; line.OnRelease = CellReleased; mLines.Add(line); for (var i = 0; i < mLines.Count; i++) { mLines[i].Name = (mLines.Count - i).ToString(""); } // add new borders to mPath foreach (var cell in line.Text) { VGU.vguRect(mPath, cell.X, line.Y, cell.Width, cell.Height); } }
public static GraphicArea ClassicArea(IWidget parent) { var rv = new GraphicArea(parent, 460, 220) { Background = Palette.TextArea.Background }; #region Lines & arrows { var path = VGPath.OpenVGPath(); VG.vgLoadIdentity(); VGU.vguLine(path, 0, 0, rv.Width - 60, 0); // OX VGU.vguLine(path, 0, 0, 0, rv.Height - 40); // OY const float kXBias = 5f; const float kYBias = 12f; var yArroyBias = rv.Height - 40f; var pathData = new float[16]; pathData[0] = -kXBias; pathData[1] = yArroyBias; //0f; pathData[2] = 0f; pathData[3] = yArroyBias + kYBias; // kYBias; pathData[4] = kXBias; pathData[5] = yArroyBias; //0f; VGU.vguPolygon(path, pathData, 3, VGboolean.VG_TRUE); var xArroyBias = rv.Width - 60f; pathData[0] = xArroyBias; pathData[1] = -kXBias; pathData[2] = xArroyBias + kYBias; pathData[3] = 0f; pathData[4] = xArroyBias; pathData[5] = kXBias; VGU.vguPolygon(path, pathData, 3, VGboolean.VG_TRUE); var vgPath = new VGPath(path, new VGSolidColor(Palette.Black), new VGSolidColor(Palette.LightBlue)); vgPath.Move(35, 15); rv.Arrows = vgPath; } #endregion #region Grid { var path = VGPath.OpenVGPath(); for (var i = 1; i < 4; i++) { VGU.vguLine(path, 0, i * 60, rv.Width - 60, i * 60); // OX } for (var i = 1; i < 11; i++) { VGU.vguLine(path, i * 40, 0, i * 40, rv.Height - 40); // OY } var vgPath = new VGPath(path, null, null); vgPath.SetStroke(new VGSolidColor(Palette.DarkSlateGray), new[] { 5.0f, 10.0f, 15.0f, 10.0f }); vgPath.StrokeWidth = 0.5f; vgPath.Move(40, 20); rv.Grid = vgPath; } #endregion rv.Move(10, 10); return(rv); }
public override void Update() { // render table { VG.vgSeti(VGParamType.VG_BLEND_MODE, (int)VGBlendMode.VG_BLEND_SRC_OVER); VG.vgSeti(VGParamType.VG_FILL_RULE, (int)VGFillRule.VG_NON_ZERO); VG.vgSetfv(VGParamType.VG_STROKE_DASH_PATTERN, 0, null); // create some paths var path0 = VG.vgCreatePath(0, VGPathDatatype.VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); // create and set a paint for fill var fillPaint = VG.vgCreatePaint(); var strokePaint = VG.vgCreatePaint(); // set model view matrix VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); #region draw border if (Border) { VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 5.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VG.vgSetParameteri(strokePaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); const float kGreyColor = 192f / 256f; VG.vgSetParameterfv(strokePaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new[] { kGreyColor, kGreyColor, kGreyColor, 1.0f }); VG.vgSetPaint(strokePaint, VGPaintMode.VG_STROKE_PATH); var tableLenght = 0; for (var i = 0; i < mLenghtX.Length; i++) { tableLenght += mLenghtX[i]; } VGU.vguRect(path0, (mX - 2.5f), (mY - 2.5f), tableLenght + 5, GetLenght(mLenghtY.Length, mLenghtY) + 5.0f); VG.vgDrawPath(path0, VGPaintMode.VG_STROKE_PATH); } #endregion #region fill cells if (CellFill) { for (var i = 0; i < mLenghtX.Length; i++) { for (var j = 0; j < mLenghtY.Length; j++) { VG.vgSetParameteri(fillPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); VG.vgSetParameterfv(fillPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, CellColors[i, j].Value); VG.vgSetPaint(fillPaint, VGPaintMode.VG_FILL_PATH); VG.vgClearPath(path0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VGU.vguRect(path0, mX + GetLenght(i, mLenghtX), mY + GetLenght(j, mLenghtY), mLenghtX[i], mLenghtY[j]); VG.vgDrawPath(path0, VGPaintMode.VG_FILL_PATH); } } } #endregion #region draw cells borders if (CellBorder) { VG.vgSetParameteri(strokePaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); VG.vgSetParameterfv(strokePaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new[] { 0.0f, 0.0f, 0.0f, 1.0f }); VG.vgSetPaint(strokePaint, VGPaintMode.VG_STROKE_PATH); VG.vgClearPath(path0, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 1.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); for (var i = 0; i < mLenghtX.Length; i++) { for (var j = 0; j < mLenghtY.Length; j++) { VGU.vguRect(path0, mX + GetLenght(i, mLenghtX), mY + GetLenght(j, mLenghtY), mLenghtX[i], mLenghtY[j]); } } VG.vgDrawPath(path0, VGPaintMode.VG_STROKE_PATH); } #endregion VG.vgDestroyPath(path0); VG.vgDestroyPaint(strokePaint); } base.Update(); }
public override void Update() { if (Width == 0 || Height == 0) { return; } if (!IsVisible) { return; } VG.vgLoadIdentity(); if (!mIsRealUpdate) { // copy image from mCache VG.vgSetPixels(X - 1, Y - 1, mCache, 0, 0, Width + 2, Height + 2); return; } mIsRealUpdate = false; VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); #region fill rect { var colStops = new float[25];// xRGBA VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_LINEAR_GRADIENT); if (State == ButtonState.Released) { colStops[0] = 0.0f; colStops[1] = 0x2c / 255f; colStops[2] = 0x2d / 255f; colStops[3] = 0x2f / 255f; colStops[4] = 1.0f; colStops[5] = 0.20f; colStops[6] = 0x34 / 255f; colStops[7] = 0x35 / 255f; colStops[8] = 0x37 / 255f; colStops[9] = 1.0f; colStops[10] = 0.80f; colStops[11] = 0x34 / 255f; colStops[12] = 0x35 / 255f; colStops[13] = 0x37 / 255f; colStops[14] = 1.0f; colStops[15] = 1.0f; colStops[16] = 0x43 / 255f; colStops[17] = 0x43 / 255f; colStops[18] = 0x47 / 255f; colStops[19] = 1.0f; } else { colStops[0] = 0.0f; colStops[1] = 0x47 / 255f; colStops[2] = 0x49 / 255f; colStops[3] = 0x4d / 255f; colStops[4] = 1.0f; colStops[5] = 0.20f; colStops[6] = 0x2e / 255f; colStops[7] = 0x30 / 255f; colStops[8] = 0x32 / 255f; colStops[9] = 1.0f; colStops[10] = 0.80f; colStops[11] = 0x2e / 255f; colStops[12] = 0x30 / 255f; colStops[13] = 0x32 / 255f; colStops[14] = 1.0f; colStops[15] = 1.0f; colStops[16] = 0x16 / 255f; colStops[17] = 0x19 / 255f; colStops[18] = 0x19 / 255f; colStops[19] = 1.0f; } VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_LINEAR_GRADIENT, 4, new float[] { X, Y, X, Y + Height }); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR_RAMP_STOPS, 20, colStops); VG.vgSetPaint(mPaint, VGPaintMode.VG_FILL_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 1.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VGU.vguRoundRect(mPath, X, Y, Width, Height, mRound, mRound); VG.vgDrawPath(mPath, VGPaintMode.VG_FILL_PATH); VG.vgFinish(); } #endregion #region draw line { VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); var lineSize = 1.0f; if (State == ButtonState.Released) { VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new[] { 0x6b / 255f, 0x6c / 255f, 0x6c / 255f, 1.0f }); } else { lineSize = 3.0f; VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, IsLock() ? new[] { 0xd9 / 255f, 0x11 / 255f, 0x07 / 255f, 1.0f } // red : new[] { 0x31 / 255f, 0xa3 / 255f, 0x1f / 255f, 1.0f }); // freen } VG.vgSetPaint(mPaint, VGPaintMode.VG_STROKE_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, lineSize); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VGU.vguRoundRect(mPath, X + (lineSize / 2f), Y + (lineSize / 2f), Width - lineSize, Height - lineSize, mRound, mRound); VG.vgDrawPath(mPath, VGPaintMode.VG_STROKE_PATH); VG.vgFinish(); } #endregion base.Update(); // copy render image to cache VG.vgGetPixels(mCache, 0, 0, X - 1, Y - 1, Width + 2, Height + 2); }
public override void Update() { VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE); VG.vgLoadIdentity(); #region fill rect { var colStops = new float[25];// xRGBA colStops[0] = 0.0f; colStops[1] = PressColor.R * 0.7f; colStops[2] = PressColor.G * 0.7f; colStops[3] = PressColor.B * 0.7f; colStops[4] = PressColor.A * 1.0f; colStops[5] = 0.2f; colStops[6] = PressColor.R * 1.0f; colStops[7] = PressColor.G * 1.0f; colStops[8] = PressColor.B * 1.0f; colStops[9] = PressColor.A * 1.0f; // Fill with linear gradient paint //VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_LINEAR_GRADIENT); //VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_RADIAL_GRADIENT); if (State == ButtonState.Pressed) { //VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, PressColor.Value); colStops[1] = PressColor.R * 0.4f; colStops[2] = PressColor.G * 0.4f; colStops[3] = PressColor.B * 0.4f; colStops[6] = PressColor.R * 0.7f; colStops[7] = PressColor.G * 0.7f; colStops[8] = PressColor.B * 0.7f; VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_LINEAR_GRADIENT, 4, new float[] { X, Y, X, Y + Height }); //VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_RADIAL_GRADIENT, 5, new float[] { mX + mWidth / 2, mY, // mX + mWidth / 2, mY + mHeight * 2, // mWidth }); } else { //VG.vgTranslate(3,-3); //VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, ReleaseColor.Value); colStops[1] = PressColor.R * 0.7f; colStops[2] = PressColor.G * 0.7f; colStops[3] = PressColor.B * 0.7f; colStops[6] = PressColor.R * 1.0f; colStops[7] = PressColor.G * 1.0f; colStops[8] = PressColor.B * 1.0f; VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_LINEAR_GRADIENT, 4, new float[] { X, Y, X, Y + Height }); //VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_RADIAL_GRADIENT, 5, new float[] { mX + mWidth / 2, mY, // mX + mWidth / 2, mY - mHeight * 2, // mWidth }); } VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR_RAMP_STOPS, 10, colStops); VG.vgSetPaint(mPaint, VGPaintMode.VG_FILL_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 1.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VGU.vguRoundRect(mPath, X, Y, Width, Height, mRound, mRound); VG.vgDrawPath(mPath, VGPaintMode.VG_FILL_PATH); VG.vgFinish(); } #endregion #region draw line { VG.vgSetParameteri(mPaint, (int)VGPaintParamType.VG_PAINT_TYPE, (int)VGPaintType.VG_PAINT_TYPE_COLOR); VG.vgSetParameterfv(mPaint, (int)VGPaintParamType.VG_PAINT_COLOR, 4, new[] { 1.0f, 1.0f, 1.0f, 1.0f }); VG.vgSetPaint(mPaint, VGPaintMode.VG_STROKE_PATH); VG.vgClearPath(mPath, VGPathCapabilities.VG_PATH_CAPABILITY_ALL); VG.vgSetf(VGParamType.VG_STROKE_LINE_WIDTH, 3.0f); VG.vgSeti(VGParamType.VG_STROKE_CAP_STYLE, (int)VGCapStyle.VG_CAP_BUTT); VG.vgSeti(VGParamType.VG_STROKE_JOIN_STYLE, (int)VGJoinStyle.VG_JOIN_BEVEL); VGU.vguRoundRect(mPath, X, Y, Width, Height, mRound, mRound); VG.vgDrawPath(mPath, VGPaintMode.VG_STROKE_PATH); VG.vgFinish(); } #endregion base.Update(); }
public VagonIcon(IWidget parent, ISignal pump, ISignal uz2, ISignal uz3, ISignal uz4, ISignal uz5, ISignal conveyor, int y) : base(parent) { mPump = pump; #region насосная станция mPump.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(0); } break; case 1: // active { EngineActive(0); } break; case 2: // fault { EngineFault(0); } break; } }; #endregion mUz2 = uz2; #region ПЧН 1 mUz2.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(1); } break; case 1: // active { EngineActive(1); } break; case 2: // fault { EngineFault(1); } break; } }; #endregion mUz3 = uz3; #region ПЧН 2 mUz3.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(2); } break; case 1: // active { EngineActive(2); } break; case 2: // fault { EngineFault(2); } break; } }; #endregion mUz4 = uz4; #region ПЧН 3 mUz4.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(3); } break; case 1: // active { EngineActive(3); } break; case 2: // fault { EngineFault(3); } break; } }; #endregion mUz5 = uz5; #region ПЧН4 mUz5.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(4); } break; case 1: // active { EngineActive(4); } break; case 2: // fault { EngineFault(4); } break; } }; #endregion mConveyor = conveyor; #region конвейер mConveyor.OnUpdate += sensor => { switch (sensor.ValueAsInt) { case 0: // stop { EngineNormal(5); } break; case 1: // active { EngineActive(5); } break; case 2: // fault { EngineFault(5); } break; } }; #endregion mImage = new Image(this, 0, 0); const float kScale = 1.0f; mImage.Scale(kScale, kScale); mImage.Load("./wvga.vagon.raw"); //Width = (int)(mImage.Width * kScale); //Height = (int)(mImage.Height * kScale); Resize((int)(mImage.Width * kScale), (int)(mImage.Height * kScale)); Init(y); for (var i = 0; i < 6; i++) { mRects.Add(new Rect { Path = VGPath.OpenVGPath(), Color = mDefaultColor }); } var pos = ScreenPosition; VGU.vguRect(mRects[0].Path, pos.X + 145, pos.Y + mImage.Height - 30, 35, 20); VGU.vguRect(mRects[1].Path, pos.X + 75, pos.Y + mImage.Height - 35, 30, 25); VGU.vguRect(mRects[2].Path, pos.X + 185, pos.Y + mImage.Height - 35, 30, 25); VGU.vguRect(mRects[3].Path, pos.X + 75, pos.Y + 10, 30, 25); VGU.vguRect(mRects[4].Path, pos.X + 185, pos.Y + 10, 30, 25); VGU.vguRect(mRects[5].Path, pos.X + 10, pos.Y + mImage.Height / 2 - 20, mImage.Width - 20, 40); mPaint = VG.vgCreatePaint(); }