void EditorPoint::drawPoint(int p_index, bool &p_isSelected, bool &p_isLight, CL_GraphicContext &p_gc) { CL_Colorf color = (p_isSelected || p_isLight) ? m_impl->m_selectedPointColor : m_impl->m_pointColor; if (p_isSelected) { if (isFirstKey(CL_KEY_SHIFT) && m_impl->m_selectedIndex != -1) { CL_Pen pen; pen.set_line_width(PAINT_LINE_WIDTH); p_gc.set_pen(pen); int x1, y1, x2, y2; getShiftRect(p_index, &x1, &y1, &x2, &y2); CL_Draw::line(p_gc, x1, y1, x2, y2, m_impl->m_shiftLineColor); pen.set_line_width(1.0f); p_gc.set_pen(pen); CL_Draw::fill(p_gc, getPointRect(m_impl->m_minShiftPoint), m_impl->m_minAndMaxShiftRectColor); CL_Draw::fill(p_gc, getPointRect(m_impl->m_maxShiftPoint), m_impl->m_minAndMaxShiftRectColor); } } CL_Draw::fill(p_gc, getPointRect(p_index), color); if (p_isSelected) { CL_Draw::box(p_gc, getPointRect(p_index), m_impl->m_selectedPointFrameColor); } }
void SyberGraphRect::paintActiveState(QPainter *painter) { painter->save(); QPen pen; pen.setColor(Qt::red); // painter->setRenderHint(Q); painter->setPen(pen); for(int i = 0; i<=getHandlerCount(); i++) { QRect rect = getPointRect(); rect.moveCenter(getHandle(i)); painter->drawRect(rect); } painter->restore(); }
void EditorPoint::findPointAt(const CL_Pointf &p_pos, int &p_index) { if (getKeys().size() == 0) { p_index = -1; m_impl->m_state = EditorPointImpl::None; CL_Rect rect = getPointRect(p_pos); for (int i = 0; i < m_track.getPointCount(); ++i) { if (rect.contains(m_track.getPoint(i).getPosition())) { m_impl->m_state = EditorPointImpl::Point; p_index = i; return; } } } }
bool SyberGraphRect::contains(const QPoint &point) { QRect rect = getPointRect(); rect.moveCenter(point); return intersects(rect); }