Exemplo n.º 1
0
        public override void Draw(CustomGraphics g)
        {
            var selected = NeedsHighlight;
            var s        = "Audio Out";

            if (mLabelNum > 1)
            {
                s = "Audio " + mLabelNum;
            }
            int textWidth = (int)g.GetTextSize(s).Width;

            g.LineColor = CustomGraphics.GrayColor;
            int pct = mDataFull ? textWidth : textWidth * mDataPtr / mDataCount;

            g.FillRectangle(P2.X - textWidth / 2, P2.Y - 10, pct, 20);
            g.LineColor = selected ? CustomGraphics.SelectColor : CustomGraphics.WhiteColor;
            setLead1(1 - (textWidth / 2.0) / mLen);
            setBbox(mPoint1, mLead1, 0);
            drawCenteredText(s, P2, true);
            if (selected)
            {
                g.LineColor = CustomGraphics.SelectColor;
            }
            else
            {
                g.LineColor = CustomGraphics.GrayColor;
            }
            drawLead(mPoint1, mLead1);
            drawPosts();
        }
Exemplo n.º 2
0
        protected void drawCenteredText(string s, Point p, bool cx)
        {
            var fs = Context.GetTextSize(s);
            int w  = (int)fs.Width;
            int h2 = (int)fs.Height / 2;

            if (cx)
            {
                adjustBbox(p.X - w / 2, p.Y - h2, p.X + w / 2, p.Y + h2);
            }
            else
            {
                adjustBbox(p.X, p.Y - h2, p.X + w, p.Y + h2);
            }
            Context.DrawCenteredText(s, p.X, p.Y);
        }
Exemplo n.º 3
0
        public override void Draw(CustomGraphics g)
        {
            base.Draw(g);
            int w = (int)g.GetTextSize("+").Width;

            g.DrawLeftText("+", mPlusPoint.X - w / 2, mPlusPoint.Y);
        }
Exemplo n.º 4
0
        public override void Draw(CustomGraphics g)
        {
            var    rt = getRailText();
            double w  = rt == null ? (BODY_LEN * 0.5) : g.GetTextSize(rt).Width / 2;

            if (w > mLen * .8)
            {
                w = mLen * .8;
            }
            if (waveform == WAVEFORM.SQUARE && (mFlags & FLAG_CLOCK) != 0 || waveform == WAVEFORM.DC)
            {
                setLead1(1 - (w - 5) / mLen);
            }
            else
            {
                setLead1(1 - w / mLen);
            }
            setBbox(mPoint1, mPoint2, BODY_LEN);

            drawLead(mPoint1, mLead1);
            drawRail(g);
            drawPosts();
            mCurCount = updateDotCount(-mCurrent, mCurCount);
            if (CirSim.Sim.DragElm != this)
            {
                drawDots(mPoint1, mLead1, mCurCount);
            }
        }
Exemplo n.º 5
0
        public override void Draw(CustomGraphics g)
        {
            drawLead(mPoint1, mLead1);
            g.LineColor = NeedsHighlight ? CustomGraphics.SelectColor : CustomGraphics.WhiteColor;
            var str      = Text;
            var lineOver = false;

            if (str.StartsWith("/"))
            {
                lineOver = true;
                str      = str.Substring(1);
            }
            drawCenteredText(str, P2, true);
            if (lineOver)
            {
                int asc = (int)CustomGraphics.FontText.Size;
                if (lineOver)
                {
                    int ya = P2.Y - asc;
                    int sw = (int)g.GetTextSize(str).Width;
                    g.DrawLine(P2.X - sw / 2, ya, P2.X + sw / 2, ya);
                }
            }
            mCurCount = updateDotCount(mCurrent, mCurCount);
            drawDots(mPoint1, mLead1, mCurCount);
            interpPoint(ref mPos, 1 + 11.0 / mLen);
            setBbox(mPoint1, mPos, CircleSize);
            drawPosts();
        }
Exemplo n.º 6
0
        public override void Draw(CustomGraphics g)
        {
            var str = "export";

            interpPoint(ref mLead1, 1 - ((int)g.GetTextSize(str).Width / 2) / mLen);
            setBbox(mPoint1, mLead1, 0);

            drawCenteredText(str, P2, true);
            drawLead(mPoint1, mLead1);
            drawPosts();
        }
Exemplo n.º 7
0
        public override void Draw(CustomGraphics g)
        {
            var bkColor = CustomGraphics.TextColor;
            var bkSize  = CustomGraphics.TextSize;

            CustomGraphics.TextColor = NeedsHighlight ? CustomGraphics.SelectColor : CustomGraphics.GrayColor;
            CustomGraphics.TextSize  = mSize;
            var size = g.GetTextSize(mText);

            P2.X = (int)(P1.X + size.Width);
            P2.Y = (int)(P1.Y + size.Height);
            g.DrawLeftText(mText, P1.X, (int)(P1.Y + size.Height / 2));
            setBbox(P1, P2);
            CustomGraphics.TextColor = bkColor;
            CustomGraphics.TextSize  = bkSize;
        }
Exemplo n.º 8
0
 public void drawChip(CustomGraphics g)
 {
     for (int i = 0; i != PostCount; i++)
     {
         var p = pins[i];
         var a = p.post;
         var b = p.stub;
         drawLead(a, b);
         p.curcount = updateDotCount(p.current, p.curcount);
         drawDots(b, a, p.curcount);
         if (p.bubble)
         {
             g.LineColor = Color.White;
             g.DrawCircle(p.bubblePos, 1);
             g.LineColor = CustomGraphics.GrayColor;
             g.DrawCircle(p.bubblePos, 3);
         }
         g.LineColor = p.selected ? CustomGraphics.SelectColor : CustomGraphics.GrayColor;
         int fsz  = 12 * csize;
         var font = CustomGraphics.FontText;
         while (true)
         {
             int sw = (int)g.GetTextSize(p.text, font).Width;
             /* scale font down if it's too big */
             if (sw > 12 * csize)
             {
                 fsz--;
                 font = new Font(CustomGraphics.FontText.Name, fsz);
                 continue;
             }
             g.DrawCenteredText(p.text, p.textloc.X, p.textloc.Y, font);
             if (p.lineOver)
             {
                 int ya = p.textloc.Y;
                 g.DrawLine(p.textloc.X - sw / 2, ya, p.textloc.X + sw / 2, ya);
             }
             break;
         }
     }
     g.LineColor = NeedsHighlight ? CustomGraphics.SelectColor : CustomGraphics.GrayColor;
     g.DrawPolygon(rectPoints);
     if (clockPoints != null)
     {
         g.DrawPolygon(clockPoints);
     }
     drawPosts();
 }
Exemplo n.º 9
0
        public override void Draw(CustomGraphics g)
        {
            double vl = Volts[V_L];
            double vr = Volts[V_R];
            double vs = Volts[V_S];

            setBbox(mPoint1, mPoint2, HS);
            draw2Leads();

            int divide = (int)(SEGMENTS * mPosition);

            if (ControlPanel.ChkUseAnsiSymbols.Checked)
            {
                /* draw zigzag */
                for (int i = 0; i != SEGMENTS; i++)
                {
                    double v = vl + (vs - vl) * i / divide;
                    if (i >= divide)
                    {
                        v = vs + (vr - vs) * (i - divide) / (SEGMENTS - divide);
                    }
                    drawLead(mPs1[i], mPs2[i]);
                }
            }
            else
            {
                /* draw rectangle */
                drawLead(mRect1[0], mRect2[0]);
                for (int i = 0, j = 1; i != SEGMENTS; i++, j++)
                {
                    double v = vl + (vs - vl) * i / divide;
                    if (i >= divide)
                    {
                        v = vs + (vr - vs) * (i - divide) / (SEGMENTS - divide);
                    }
                    drawLead(mRect1[j], mRect3[j]);
                    drawLead(mRect2[j], mRect4[j]);
                }
                drawLead(mRect1[SEGMENTS + 1], mRect2[SEGMENTS + 1]);
            }

            /* draw slider */
            drawLead(mPost3, mCorner2);
            drawLead(mCorner2, mArrowPoint);
            drawLead(mArrow1, mArrowPoint);
            drawLead(mArrow2, mArrowPoint);

            /* draw dot */
            mCurCount1 = updateDotCount(mCurrent1, mCurCount1);
            mCurCount2 = updateDotCount(mCurrent2, mCurCount2);
            mCurCount3 = updateDotCount(mCurrent3, mCurCount3);
            if (CirSim.Sim.DragElm != this)
            {
                drawDots(mPoint1, mMidPoint, mCurCount1);
                drawDots(mPoint2, mMidPoint, mCurCount2);
                drawDots(mPost3, mCorner2, mCurCount3);
                drawDots(mCorner2, mMidPoint, mCurCount3 + Utils.Distance(mPost3, mCorner2));
            }
            drawPosts();

            if (ControlPanel.ChkShowValues.Checked && mResistance1 > 0 && (mFlags & FLAG_SHOW_VALUES) != 0)
            {
                /* check for vertical pot with 3rd terminal on left */
                bool reverseY = (mPost3.X < mLead1.X && mLead1.X == mLead2.X);
                /* check for horizontal pot with 3rd terminal on top */
                bool reverseX = (mPost3.Y < mLead1.Y && mLead1.X != mLead2.X);
                /* check if we need to swap texts (if leads are reversed, e.g. drawn right to left) */
                bool rev = (mLead1.X == mLead2.X && mLead1.Y < mLead2.Y) || (mLead1.Y == mLead2.Y && mLead1.X > mLead2.X);

                /* draw units */
                string s1         = Utils.UnitText(rev ? mResistance2 : mResistance1, "");
                string s2         = Utils.UnitText(rev ? mResistance1 : mResistance2, "");
                int    txtHeightH = CustomGraphics.FontText.Height / 2;
                int    txtWidth1  = (int)g.GetTextSize(s1).Width;
                int    txtWidth2  = (int)g.GetTextSize(s2).Width;

                /* vertical? */
                if (mLead1.X == mLead2.X)
                {
                    g.DrawLeftTopText(s1, !reverseY ? mArrowPoint.X : mArrowPoint.X - txtWidth1, Math.Min(mArrow1.Y, mArrow2.Y) + 4 * txtHeightH);
                    g.DrawLeftTopText(s2, !reverseY ? mArrowPoint.X : mArrowPoint.X - txtWidth2, Math.Max(mArrow1.Y, mArrow2.Y) - txtHeightH);
                }
                else
                {
                    g.DrawLeftTopText(s1, Math.Min(mArrow1.X, mArrow2.X) - txtWidth1, !reverseX ? (mArrowPoint.Y + txtHeightH + 10) : mArrowPoint.Y);
                    g.DrawLeftTopText(s2, Math.Max(mArrow1.X, mArrow2.X), !reverseX ? (mArrowPoint.Y + txtHeightH + 10) : mArrowPoint.Y);
                }
            }
            if (ControlPanel.ChkShowName.Checked)
            {
                if (mNameV)
                {
                    g.DrawCenteredVText(ReferenceName, mNamePos.X, mNamePos.Y);
                }
                else
                {
                    g.DrawLeftText(ReferenceName, mNamePos.X, mNamePos.Y);
                }
            }
        }