void dropArrowThing_draw(IUnifiedDraw ud, USolidBrush brsh, UStroke strk) { var ddr = dropArrowThing.DisplayRectangle; Rectangle rr = ddr.Inflated(new Thickness(-1f)); float rad = (float)ddr.Size.height / 4f; brsh.color = new Color(0.6f); ud.FillRoundedRectangle(rr, rad, rad, brsh); brsh.color = new Color(0.7f); rr = ddr.Inflated(new Thickness(-.5f)); strk.strokeWidth = 1f; ud.DrawRoundedRectangle(rr, rad, rad, brsh, strk); brsh.color = new Color(0); var drw = ddr.width; var drh = ddr.height; var drt = ddr.top; var drl = ddr.left; var p1 = new Point(drl + drw / 4f, drt + drh / 3f); var p2 = new Point(drl + 2f * drw / 4f, drt + 2f * drh / 3f); var p3 = new Point(drl + 3f * drw / 4f, drt + drh / 3f); strk.strokeWidth = 1.5f; ud.DrawLine(p1, p2, brsh, strk); ud.DrawLine(p2, p3, brsh, strk); }
public D2D_TextElements CreateNewTextElements(UText t) { var textLayout = new TextLayout(dwFact, t.text, new TextFormat( dwFact, t.font.name, t.font.bold ? FontWeight.Bold : FontWeight.Normal, t.font.italic ? FontStyle.Italic : FontStyle.Normal, TranslateFontSize(t.font.size)) { ParagraphAlignment = Translate(t.valign), TextAlignment = Translate(t.halign), WordWrapping = t.wrapped ? WordWrapping.Wrap : WordWrapping.NoWrap }, t.width, t.height); // Set font ranges... textLayout just created, dont worry about any leftover ranges. foreach (var sr in t.SafeGetStyleRanges) { var tr = new TextRange(sr.start, sr.length); if (sr.fontOverride != null) { UFont ft = (UFont)sr.fontOverride; textLayout.SetFontFamilyName(ft.name, tr); textLayout.SetFontSize(TranslateFontSize(ft.size), tr); textLayout.SetFontStyle(ft.italic ? FontStyle.Italic : FontStyle.Normal, tr); textLayout.SetFontWeight(ft.bold ? FontWeight.Bold : FontWeight.Normal, tr); } if (sr.fgOverride != null || sr.bgOverride != null) { ClientTextEffect cte = new ClientTextEffect(); if (sr.fgOverride != null) { cte.fgBrush = CreateBrush(sr.fgOverride); } if (sr.bgOverride != null) { cte.bgBrush = CreateBrush(sr.bgOverride); } textLayout.SetDrawingEffect(cte, tr); } } // Set renderer with a default brush var def = new USolidBrush() { color = new Color(0) }; var textRenderer = new D2D_ClientTextRenderer(realRenderer.renderTarget, new ClientTextEffect() { fgBrush = CreateBrush(def) }); var ret = new D2D_TextElements(textLayout, textRenderer); realRenderer.renderTarget.Disposed += new EventHandler <EventArgs>((o, e) => t.Invalidate()); return(ret); }
Brush CreateNewBrush(UBrush b) { Brush ret; if (b is USolidBrush) { // FIXME support brushProperties USolidBrush sb = b as USolidBrush; ret = new SolidColorBrush(realRenderer.renderTarget, D2DTr.tr(sb.color)); } else if (b is ULinearGradientBrush) { // FIXME advanced features not used var lb = b as ULinearGradientBrush; LinearGradientBrush lgb = new LinearGradientBrush(realRenderer.renderTarget, new LinearGradientBrushProperties() { StartPoint = D2DTr.tr(lb.point1), EndPoint = D2DTr.tr(lb.point2) }, new GradientStopCollection(realRenderer.renderTarget, new GradientStop[] { new GradientStop() { Color = D2DTr.tr(lb.color1), Position = 0f }, new GradientStop() { Color = D2DTr.tr(lb.color2), Position = 1f } }, Gamma.StandardRgb, ExtendMode.Clamp) ); ret = lgb; } else { throw new NotImplementedException(); } // Extra invalidation condition besides colors changeing etc as handled by the ObjStore descendants: renderTarget disposed (eg resize). realRenderer.renderTarget.Disposed += new EventHandler <EventArgs>((o, e) => b.Invalidate()); return(ret); }
public void PlotGeoElementStartpointisend() { Point sp = new Point(0, 0); ULine l = new ULine(new Point(1, 1)); USolidBrush sb = new USolidBrush() { color = new Color(1, 1, 1, 1) }; mockedDraw.PlotGeoElement(ref sp, l, sb, false); Assert.AreEqual(sp.X, 1); Assert.AreEqual(sp.Y, 1); buf.ResetBuffer(); var a = new UArc(new Point(5, 4), new Size(3, 3), true, false, 12f); mockedDraw.PlotGeoElement(ref sp, a, sb, false); Assert.AreEqual(sp.X, 5); Assert.AreEqual(sp.Y, 4); buf.ResetBuffer(); }
Brush CreateNewBrush(UBrush b) { // FIXME can use PathGradientBrush, d2d just has gradientbrush... Brush ret; if (b is USolidBrush) { // FIXME support brushProperties USolidBrush sb = b as USolidBrush; ret = new SolidBrush(SDGTr.tr(sb.color)); } else if (b is ULinearGradientBrush) { var lb = b as ULinearGradientBrush; ret = new LinearGradientBrush(SDGTr.trF(lb.point1), SDGTr.trF(lb.point2), SDGTr.tr(lb.color1), SDGTr.tr(lb.color2)); } else { throw new NotImplementedException(); } return(ret); }
void Init() { brushLine = new USolidBrush() { color = buttonColor }; if (type == ButtonType.Basic) { brushFill = new USolidBrush() { color = buttonColor } } ; if (type == ButtonType.Win8) { brushFill = new ULinearGradientBrush() { color1 = new Color(229f / 255f), point1 = new Point(DisplayRectangle.width / 2, DisplayRectangle.bottom), color2 = new Color(240f / 255f), point2 = new Point(DisplayRectangle.width / 2, DisplayRectangle.top) } } ; brushText = new USolidBrush() { color = textColor }; SetBrushColors(); } void SetBrushColors() { bool focus = focusManager.FocusGet(this); if (type == ButtonType.Basic) { switch (state) { case ButtonControlState.Normal: (brushLine as USolidBrush).color = buttonColor.Scale(focus ? -0.1f : -0.7f); (brushFill as USolidBrush).color = buttonColor; break; case ButtonControlState.Hover: (brushLine as USolidBrush).color = buttonColor.Scale(focus ? -0.1f : -0.7f); (brushFill as USolidBrush).color = buttonColor.Scale(0.3f); break; case ButtonControlState.Click: (brushLine as USolidBrush).color = buttonColor.Scale(-0.1f); (brushFill as USolidBrush).color = buttonColor.Scale(0.5f); break; } } if (type == ButtonType.Win8) { switch (state) { case ButtonControlState.Normal: // Always this grey normally (brushLine as USolidBrush).color = focus ? buttonColor.Add(51f - 96f, 153f - 150f, 255f - 191f, 255) : new Color(172f / 255f); (brushFill as ULinearGradientBrush).color1 = new Color(229f / 255f); (brushFill as ULinearGradientBrush).color2 = new Color(240f / 255f); break; case ButtonControlState.Hover: // hover related to theme color (brushLine as USolidBrush).color = buttonColor.Add(126f - 96f, 153f - 180f, 234f - 191f, 255); (brushFill as ULinearGradientBrush).color1 = buttonColor.Add(220f - 96f, 236f - 150f, 252f - 191f, 255); (brushFill as ULinearGradientBrush).color2 = buttonColor.Add(236f - 96f, 244f - 150f, 252f - 191f, 255); break; case ButtonControlState.Click: (brushLine as USolidBrush).color = buttonColor.Add(86f - 96f, 157f - 180f, 229f - 191f, 255); (brushFill as ULinearGradientBrush).color1 = buttonColor.Add(129f - 96f, 224f - 150f, 252f - 191f, 255); (brushFill as ULinearGradientBrush).color2 = buttonColor.Add(218f - 96f, 236f - 150f, 252f - 191f, 255); break; } } } Point aof(Point dp) { dp.X += DisplayRectangle.left; dp.Y += DisplayRectangle.top; return(dp); }