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(); } }
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(); }
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 } }
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); } } }
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 }
public NodeInfo(GlyphBone bone, GlyphBoneJoint a, EdgeLine tipEdge) { this.bone = bone; this.NodeKind = NodeInfoKind.Bone; }
public NodeInfo(GlyphBone bone, GlyphBoneJoint a, GlyphBoneJoint b) { this.bone = bone; this.NodeKind = NodeInfoKind.Bone; }
public NodeInfo(GlyphBoneJoint joint) { this.joint = joint; this.pos = joint.OriginalJointPos; this.NodeKind = NodeInfoKind.Joint; }
protected override void OnBoneJoint(GlyphBoneJoint joint) { DrawBoneJoint(painter, joint); _infoView.ShowJoint(joint); }