SourceCode/Bond/Servo/EqsGraphWnd.cpp
@@ -35,14 +35,7 @@
   m_hWnd = NULL;
   m_crFrame = GetSysColor(COLOR_WINDOWFRAME);
   m_crBkgnd = RGB(255, 255, 255);
   m_listener.onConnectPin = nullptr;
   m_listener.onCheckConnectPin = nullptr;
   m_listener.onDisconnectPin = nullptr;
   m_listener.onDeleteEqItem = nullptr;
   m_listener.onEqItemPosChanged = nullptr;
   m_listener.onDblckEqItem = nullptr;
   m_listener.onRclickEqItem = nullptr;
   m_listener.onSelectEqItem = nullptr;
   m_listener = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr };
   m_crItemBackground[0] = RGB(218, 218, 218);
   m_crItemBackground[1] = RGB(193, 208, 227);
   m_crItemFrame[0] = RGB(128, 128, 128);
@@ -1918,10 +1911,12 @@
   HBRUSH hbrItemBackground[2];
   HBRUSH hbrItemFrame[2];
   HBRUSH hbrPinBackground[3];
   HBRUSH hbrIndicator;
   hbrItemBackground[0] = CreateSolidBrush(m_crItemBackground[0]);
   hbrItemBackground[1] = CreateSolidBrush(m_crItemBackground[1]);
   hbrItemFrame[0] = CreateSolidBrush(m_crItemFrame[0]);
   hbrItemFrame[1] = CreateSolidBrush(m_crItemFrame[1]);
   hbrIndicator = CreateSolidBrush(RGB(34, 177, 76));
   for (int i = 0; i < 3; i++) {
      hbrPinBackground[i] = CreateSolidBrush(m_crPinBkgnd[i]);
   }
@@ -1967,6 +1962,21 @@
         HFONT hFontOld = (HFONT)::SelectObject(hMemDC, m_hFontName);
         ::SetTextColor(hMemDC, pItem->bHighlight ? m_crItemNameText[1] : m_crItemNameText[0]);
         ::DrawText(hMemDC, pItem->text, (int)strlen(pItem->text), &rcItem, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
         // 添加一个小绿点指示器
         if(pItem->bShowIndicator[0]){
            RECT rcIndicator;
            rcIndicator.left = rcItem.left + 5;
            rcIndicator.top = rcItem.top + 5;
            rcIndicator.right = rcIndicator.left + 12;
            rcIndicator.bottom = rcIndicator.top + 12;
            HRGN hRgn = CreateRoundRectRgn(rcIndicator.left, rcIndicator.top, rcIndicator.right, rcIndicator.bottom, 2, 2);
            ::FillRgn(hMemDC, hRgn, hbrIndicator);
            ::FrameRgn(hMemDC, hRgn, hbrItemFrame[0], 1, 1);
            ::DeleteObject(hRgn);
         }
         if (pItem->nShowType != ITEM_SMALL) {
            RECT rcId = rcItem;
@@ -2081,6 +2091,7 @@
      ::DeleteObject(hbrItemBackground[1]);
      ::DeleteObject(hbrItemFrame[0]);
      ::DeleteObject(hbrItemFrame[1]);
      ::DeleteObject(hbrIndicator);
   }
@@ -2397,6 +2408,15 @@
   SetTimer(m_hWnd, TIMER_ANIMATION_RECT, uElpase, NULL);
}
void CEqsGraphWnd::ShowItemIndicator(DWORD_PTR dwItemData, BOOL bShow)
{
   EQITEM* pItem = GetItem(dwItemData);
   if (pItem != nullptr) {
      pItem->bShowIndicator[0] = bShow;
      ::InvalidateRect(m_hWnd, nullptr, TRUE);
   }
}
double CEqsGraphWnd::PointToSegDist(double x, double y, double x1, double y1, double x2, double y2)
{
   double cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);