Exemple #1
0
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);
}
Exemple #2
0
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;
}