Exemple #1
0
        protected override void OnDrawBone(GlyphBone bone, int boneIndex)
        {
            float          pxscale = this._pxscale;
            GlyphBoneJoint jointA  = bone.JointA;
            GlyphBoneJoint jointB  = bone.JointB;

            bool valid = false;

            if (jointA != null && jointB != null)
            {
                Vector2 jointAPoint = jointA.OriginalJointPos;
                Vector2 jointBPoint = jointB.OriginalJointPos;

                painter.Line(
                    jointAPoint.X * pxscale, jointAPoint.Y * pxscale,
                    jointBPoint.X * pxscale, jointBPoint.Y * pxscale,
                    bone.IsLongBone ? PixelFarm.Drawing.Color.Yellow : PixelFarm.Drawing.Color.Magenta);

                if (this.DrawDynamicOutline)
                {
                    //****
                    painter.Line(
                        jointA.FitX * pxscale, jointA.FitY * pxscale,
                        jointB.FitX * pxscale, jointB.FitY * pxscale,
                        PixelFarm.Drawing.Color.White);
                }

                valid = true;

                _infoView.ShowBone(bone, jointA, jointB);
            }
            if (jointA != null && bone.TipEdge != null)
            {
                Vector2 jointAPoint = jointA.OriginalJointPos;
                Vector2 mid         = bone.TipEdge.GetMidPoint();

                painter.Line(
                    jointAPoint.X * pxscale, jointAPoint.Y * pxscale,
                    mid.X * pxscale, mid.Y * pxscale,
                    bone.IsLongBone ? PixelFarm.Drawing.Color.Yellow : PixelFarm.Drawing.Color.Magenta);

                valid = true;
                _infoView.ShowBone(bone, jointA, bone.TipEdge);
            }

            if (boneIndex == 0)
            {
                //for first bone
                painter.FillRect(_branchHeadPos.X * pxscale, _branchHeadPos.Y * pxscale, 5, 5, PixelFarm.Drawing.Color.DeepPink);
            }
            if (!valid)
            {
                throw new NotSupportedException();
            }
        }
Exemple #2
0
        public void ShowBone(GlyphBone bone, GlyphBoneJoint jointA, EdgeLine tipEdge)
        {
            if (!_clearInfoView)
            {
                return;
            }
            _treeView.SuspendLayout();
            TreeNode jointNode = new TreeNode()
            {
                Text = bone.ToString(), Tag = new NodeInfo(bone, jointA, tipEdge)
            };

            _bonesNode.Nodes.Add(jointNode);

            _treeView.ResumeLayout();
        }
Exemple #3
0
        void DrawBoneJoint(PixelFarm.Drawing.Painter painter, GlyphBoneJoint joint)
        {
            //--------------
            EdgeLine p_contactEdge = joint.dbugGetEdge_P();
            //mid point
            Vector2 jointPos = joint.OriginalJointPos * _pxscale;//scaled joint pos

            painter.FillRect(jointPos.X, jointPos.Y, 4, 4, PixelFarm.Drawing.Color.Yellow);
            if (joint.TipEdgeP != null)
            {
                EdgeLine tipEdge = joint.TipEdgeP;
                double   p_x, p_y, q_x, q_y;
                tipEdge.dbugGetScaledXY(out p_x, out p_y, out q_x, out q_y, _pxscale);
                //
                painter.Line(
                    jointPos.X, jointPos.Y,
                    p_x, p_y,
                    PixelFarm.Drawing.Color.White);
                painter.FillRect(p_x, p_y, 3, 3, PixelFarm.Drawing.Color.Green); //marker

                //
                painter.Line(
                    jointPos.X, jointPos.Y,
                    q_x, q_y,
                    PixelFarm.Drawing.Color.White);
                painter.FillRect(q_x, q_y, 3, 3, PixelFarm.Drawing.Color.Green); //marker
            }
            if (joint.TipEdgeQ != null)
            {
                EdgeLine tipEdge = joint.TipEdgeQ;
                double   p_x, p_y, q_x, q_y;
                tipEdge.dbugGetScaledXY(out p_x, out p_y, out q_x, out q_y, _pxscale);
                //
                painter.Line(
                    jointPos.X, jointPos.Y,
                    p_x, p_y,
                    PixelFarm.Drawing.Color.White);
                painter.FillRect(p_x, p_y, 3, 3, PixelFarm.Drawing.Color.Green); //marker

                //
                painter.Line(
                    jointPos.X, jointPos.Y,
                    q_x, q_y,
                    PixelFarm.Drawing.Color.White);
                painter.FillRect(q_x, q_y, 3, 3, PixelFarm.Drawing.Color.Green); //marker
            }
        }
Exemple #4
0
 protected override void OnEndLineHub(float centerX, float centerY, GlyphBoneJoint joint)
 {
     if (DrawEndLineHub)
     {
         //line hub cebter
         painter.FillRect(centerX * _pxscale, centerY * _pxscale, 7, 7,
                          PixelFarm.Drawing.Color.White);
         //this line hub is connected with other line hub at joint
         if (joint != null)
         {
             Vector2 joint_pos = joint.OriginalJointPos;
             painter.Line(
                 joint_pos.X * _pxscale, joint_pos.Y * _pxscale,
                 centerX * _pxscale, centerY * _pxscale,
                 PixelFarm.Drawing.Color.Magenta);
         }
     }
 }
Exemple #5
0
        public void ShowJoint(GlyphBoneJoint joint)
        {
            if (!_clearInfoView)
            {
                return;
            }
            //--------------
#if DEBUG
            EdgeLine p_contactEdge = joint.dbugGetEdge_Q();
            //mid point
            var jointPos = joint.OriginalJointPos;
            //painter.FillRectLBWH(jointPos.X * pxscale, jointPos.Y * pxscale, 4, 4, PixelFarm.Drawing.Color.Yellow);

            TreeNode jointNode = new TreeNode()
            {
                Tag = new NodeInfo(joint)
            };

            jointNode.Text = "j:" + joint.ToString();
            _jointsNode.Nodes.Add(jointNode);

            if (joint.HasTipP)
            {
                jointNode.Nodes.Add(new TreeNode()
                {
                    Text = "tip_p:" + joint.TipPointP, Tag = new NodeInfo(NodeInfoKind.RibEndPoint, joint.TipPointP)
                });
            }
            if (joint.HasTipQ)
            {
                jointNode.Nodes.Add(new TreeNode()
                {
                    Text = "tip_q:" + joint.TipPointQ, Tag = new NodeInfo(NodeInfoKind.RibEndPoint, joint.TipPointQ)
                });
            }
#endif
        }
Exemple #6
0
 public NodeInfo(GlyphBone bone, GlyphBoneJoint a, EdgeLine tipEdge)
 {
     this.bone     = bone;
     this.NodeKind = NodeInfoKind.Bone;
 }
Exemple #7
0
 public NodeInfo(GlyphBone bone, GlyphBoneJoint a, GlyphBoneJoint b)
 {
     this.bone     = bone;
     this.NodeKind = NodeInfoKind.Bone;
 }
Exemple #8
0
 public NodeInfo(GlyphBoneJoint joint)
 {
     this.joint    = joint;
     this.pos      = joint.OriginalJointPos;
     this.NodeKind = NodeInfoKind.Joint;
 }
Exemple #9
0
 protected override void OnBoneJoint(GlyphBoneJoint joint)
 {
     DrawBoneJoint(painter, joint);
     _infoView.ShowJoint(joint);
 }