void TickerTape::setPositions(TextAction &action) { Vec2i txtDims = Vec2i(textDims(this, getText(action.m_targetIndex))); Vec2i widgetSize = getSize() - getBordersAll(); int yPos = (widgetSize.h - txtDims.h) / 2; int aPos; if (m_anchor.isPercentage()) { if (m_anchor.getPercentage() == -1) { aPos = widgetSize.w; } else { aPos = int(m_anchor.getPercentage() / 100.f * widgetSize.w); } } else { aPos = m_anchor.getAbsolute(); } if (m_align == Alignment::CENTERED) { aPos -= txtDims.w / 2; } else if (m_align == Alignment::FLUSH_LEFT) { // nop } else if (m_align == Alignment::FLUSH_RIGHT) { aPos -= txtDims.w; } else { assert(false); } Vec2i destPos(getBorderLeft() + aPos, getBorderTop() + yPos); TextWidget::setTextPos(destPos, action.m_targetIndex); Vec2f targetPos = Vec2f(destPos); Vec2f startOffset, endOffset; if (m_alternateOrigin && action.m_actionNumber % 2 == 1) { startOffset = m_endOffset; endOffset = m_startOffset; } else { startOffset = m_startOffset; endOffset = m_endOffset; } if (action.m_phaseNumber == 0) { action.m_startPos = targetPos + startOffset; action.m_destPos = targetPos; } else if (action.m_phaseNumber == 1) { action.m_startPos = action.m_destPos = targetPos; } else if (action.m_phaseNumber == 2) { action.m_startPos = targetPos; action.m_destPos = targetPos + endOffset; } setTextPos(Vec2i(action.m_startPos), action.m_targetIndex); setTextFade(action.m_startAlpha, action.m_targetIndex); }
void CommandTip::layout() { Vec2i size(0,0); Vec2i offset(getBorderLeft(), getBorderTop()); size = m_header->getSize(); m_header->setPos(offset); offset.y += m_header->getHeight(); if (!m_tip->getText().empty()) { size.h += m_tip->getHeight(); m_tip->setPos(offset); offset.y += m_tip->getHeight(); if (size.w < m_tip->getWidth()) { size.w = m_tip->getWidth(); } } foreach (vector<CommandTipElement*>, it, m_items) { Vec2i sz = (*it)->getSize(); (*it)->setPos(offset); offset.y += sz.h; size.h += sz.h; if (size.w < sz.w) { size.w = sz.w; } }
/** * Called whenever the graphic view has changed. * Adjusts the scrollbar ranges / steps. */ void QG_GraphicView::adjustOffsetControls() { static bool running = false; if (running) { return; } running = true; RS_DEBUG->print("QG_GraphicView::adjustOffsetControls() begin"); if (container==NULL || hScrollBar==NULL || vScrollBar==NULL) { return; } int ox = getOffsetX(); int oy = getOffsetY(); RS_Vector min = container->getMin(); RS_Vector max = container->getMax(); // no drawing yet - still allow to scroll if (max.x < min.x+1.0e-6 || max.y < min.y+1.0e-6 || max.x > RS_MAXDOUBLE || max.x < RS_MINDOUBLE || min.x > RS_MAXDOUBLE || min.x < RS_MINDOUBLE || max.y > RS_MAXDOUBLE || max.y < RS_MINDOUBLE || min.y > RS_MAXDOUBLE || min.y < RS_MINDOUBLE ) { min = RS_Vector(-10,-10); max = RS_Vector(100,100); } int minVal = (int)(-ox-toGuiDX(getWidth())*0.5 - QG_SCROLLMARGIN - getBorderLeft()); int maxVal = (int)(-ox+toGuiDX(getWidth())*0.5 + QG_SCROLLMARGIN + getBorderRight()); hScrollBar->setValue(0); if (minVal<=maxVal) { hScrollBar->setRange(minVal, maxVal); } //hScrollBar->setMinValue(minVal); //hScrollBar->setMaxValue(maxVal); minVal = (int)(oy-toGuiDY(getHeight())*0.5 - QG_SCROLLMARGIN - getBorderTop()); maxVal = (int)(oy+toGuiDY(getHeight())*0.5 +QG_SCROLLMARGIN + getBorderBottom()); if (minVal<=maxVal) { vScrollBar->setRange(minVal, maxVal); } //vScrollBar->setMaxValue((int)(QG_SCROLLMARGIN + getBorderBottom() // - (min.y * getFactor().y))); //vScrollBar->setMinValue((int)(getHeight() - // max.y * getFactor().y // - QG_SCROLLMARGIN - getBorderTop())); hScrollBar->setPageStep((int)(getWidth())); vScrollBar->setPageStep((int)(getHeight())); hScrollBar->setValue(-ox); vScrollBar->setValue(oy); slotHScrolled(-ox); slotVScrolled(oy); RS_DEBUG->print("H min: %d / max: %d / step: %d / value: %d\n", hScrollBar->minimum(), hScrollBar->maximum(), hScrollBar->pageStep(), ox); // DEBUG_HEADER(); RS_DEBUG->print(/*RS_Debug::D_WARNING, */"V min: %d / max: %d / step: %d / value: %d\n", vScrollBar->minimum(), vScrollBar->maximum(), vScrollBar->pageStep(), oy); RS_DEBUG->print("QG_GraphicView::adjustOffsetControls() end"); running = false; }