// Draw the contents of the widget.
void ScintillaQt::paintEvent(QPaintEvent *e)
{
    Surface *sw = Surface::Allocate();

    if (!sw)
        return;

    paintState = painting;

    const QRect &qr = e->rect();

    rcPaint.left = qr.left();
    rcPaint.top = qr.top();
    rcPaint.right = qr.right() + 1;
    rcPaint.bottom = qr.bottom() + 1;

    PRectangle rcText = GetTextRectangle();
    paintingAllText = rcPaint.Contains(rcText);

    QPainter painter(qsb->viewport());

    sw->Init(&painter);
    sw->SetUnicodeMode(CodePage() == SC_CP_UTF8);
    Paint(sw, rcPaint);

    delete sw;

    // If the painting area was insufficient to cover the new style or brace
    // highlight positions then repaint the whole thing.
    if (paintState == paintAbandoned)
        qsb->viewport()->update();

    paintState = notPainting;
}
Пример #2
0
void QAttribute::mousePressEvent(QGraphicsSceneMouseEvent *event)
    {
        QPointF point = this->mapToScene(event->lastScreenPos());
        if (event->button()==Qt::RightButton){
                ref->GetParentList()->SetReservedValue(0);
                menu->popup(point.toPoint());
            }
        else {
                if (!selct) ref->DeselectAll();
                setSelected(!selct);
                if ((!grabRefer->isEnableGrabber()) &&(GetTextRectangle()->contains(point)));
        }
        QGraphicsItem::mousePressEvent(event);
}
void isiTapResults::adjustTableColumnWidth()
	{
	QRect rc;
	QHeader *header;
	QString qText;
	int nColumn, nRow, nWidth, nWtd;
	int nRows = IDC_CHAN->numRows();
	for(nColumn=0; nColumn<5; ++nColumn)
		{
		header = IDC_CHAN->horizontalHeader();
		qText = IDC_CHAN->text(0, nColumn); 
		GetTextRectangle(IDC_CHAN,qText, rc);
		nWidth = header->sectionSize(nColumn);
		for(nRow=1; nRow<nRows; ++nRow)
			{
			qText = IDC_CHAN->text(0, nColumn); 
			GetTextRectangle(IDC_CHAN,qText, rc);
			nWtd = rc.width()+4;
			if(nWidth < nWtd) nWidth = nWtd;
			}
		header->resizeSection(nColumn, nWidth);
		}
	}
Пример #4
0
// Set the extent of the vertical and horizontal scrollbars and return true if
// the view needs re-drawing.
bool QsciScintillaQt::ModifyScrollBars(int nMax,int nPage)
{
    bool modified = false;
    QScrollBar *sb;

    int vNewPage = nPage;
    int vNewMax = nMax - vNewPage + 1;

    if (vMax != vNewMax || vPage != vNewPage)
    {
        vMax = vNewMax;
        vPage = vNewPage;
        modified = true;

        sb = qsb->verticalScrollBar();
        sb->setMaximum(vMax);
        sb->setPageStep(vPage);
    }

    int hNewPage = GetTextRectangle().Width();
    int hNewMax = (scrollWidth > hNewPage) ? scrollWidth - hNewPage : 0;
    int charWidth = vs.styles[STYLE_DEFAULT].aveCharWidth;

    sb = qsb->horizontalScrollBar();

    if (hMax != hNewMax || hPage != hNewPage || sb->singleStep() != charWidth)
    {
        hMax = hNewMax;
        hPage = hNewPage;
        modified = true;

        sb->setMaximum(hMax);
        sb->setPageStep(hPage);
        sb->setSingleStep(charWidth);
    }

    return modified;
}
void CDBPickView::DrawWindow(int nWindow, CDC *pDC)
	{

    CBrush WhiteBrush(RGB(255,255,255));
    CBrush GrayBrush(RGB(192,192,192));
    CBrush BlueBrush(RGB(0,0,128));

    CPen WhitePen(PS_SOLID,1,RGB(255,255,255));
	CPen DarkPen(PS_SOLID,1,RGB(0,0,0));
    CPen BluePen(PS_SOLID,1,RGB(0,0,255));
    CPen YellowPen(PS_SOLID,1,RGB(255,255,0));


	int xw1=WaveformInfo[nWindow]->xw1;
	int xw2=WaveformInfo[nWindow]->xw2;
	int yw1=WaveformInfo[nWindow]->yw1;
	int yw2=WaveformInfo[nWindow]->yw2;

	int x1=WaveformInfo[nWindow]->x1;
	int x2=WaveformInfo[nWindow]->x2;
	int y1=WaveformInfo[nWindow]->y1;
	int y2=WaveformInfo[nWindow]->y2;



	long amin=WaveformInfo[nWindow]->amin;
	long amax=WaveformInfo[nWindow]->amax;



    CPen   *oldPen=pDC->GetCurrentPen();
    CFont  *oldFont=pDC->GetCurrentFont();
    CBrush *oldBrush=pDC->GetCurrentBrush();



	CRect rc(xw1, MaxY-yw2, xw2, MaxY-yw1);
	pDC->FillRect(&rc, &BlueBrush);

	pDC->SelectObject(&DarkPen);

//***********************************************************

	pDC->SelectObject(&WhitePen);

	pDC->MoveTo(xw1,MaxY-yw2);		
	pDC->LineTo(xw2,MaxY-yw2);

	pDC->MoveTo(xw1,MaxY-yw2);		
	pDC->LineTo(xw1,MaxY-yw1);

	pDC->MoveTo(xw1+1,MaxY-yw2);		
	pDC->LineTo(xw1+1,MaxY-yw1);


	pDC->SelectObject(&DarkPen);

	pDC->MoveTo(xw2,MaxY-yw1);		
	pDC->LineTo(xw2,MaxY-yw2);

	pDC->MoveTo(xw2,MaxY-yw1);		
	pDC->LineTo(xw1,MaxY-yw1);


	pDC->SelectObject(&DarkPen);

	pDC->MoveTo(xw1+WindowInfoXsize,MaxY-yw1);		
	pDC->LineTo(xw1+WindowInfoXsize,MaxY-yw2);

	pDC->SelectObject(&WhitePen);

	pDC->MoveTo(xw1+WindowInfoXsize+1,MaxY-yw1);		
	pDC->LineTo(xw1+WindowInfoXsize+1,MaxY-yw2);

	pDC->MoveTo(xw1+WindowInfoXsize+2,MaxY-yw1);		
	pDC->LineTo(xw1+WindowInfoXsize+2,MaxY-yw2);

//*************************************************************
//      Draw Ampl (Y) Axis
//

	CRect rc1(xw1, MaxY-yw2, xw1+WindowInfoXsize-1, MaxY-yw1);
	pDC->FillRect(&rc1, &GrayBrush);


	pDC->SelectObject(&DarkPen);
	pDC->SetTextColor(RGB(0,0,0));

	pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8));		
	pDC->LineTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8));

	pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw1+8));
	pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw1+8));

	pDC->MoveTo(xw1+WindowInfoXsize-8,MaxY-(yw2-8));
	pDC->LineTo(xw1+WindowInfoXsize-8+4,MaxY-(yw2-8));

	pDC->SelectObject(&WhitePen);

	{
	RECT rcText;
	char cText[64];
	sprintf(cText,"%d",amax);

	CRect rcc1(xw1,MaxY-(yw2-8),xw1+WindowInfoXsize-8-2, MaxY-(yw2-8-13));

	pDC->DrawText(cText,rcc1,DT_RIGHT);

	sprintf(cText,"%d",amin);
	GetTextRectangle(cText, rcText);

	CRect rcc2(xw1,MaxY-(yw1+8+13),xw1+WindowInfoXsize-8-2, MaxY-(yw1-8));
	pDC->DrawText(cText,rcc2,DT_RIGHT);

	CRect rcc3(xw1+5,(MaxY-yw2),xw1+WindowInfoXsize-8-2, (MaxY-yw1));
	sprintf(cText,"%s::%s",WaveformInfo[nWindow]->StaName, WaveformInfo[nWindow]->ChanName);
	pDC->DrawText(cText,rcc3,	DT_VCENTER|DT_SINGLELINE );

	}

//**************************************************************

	int nXferBlocks=this->pRTDisplay->WaveformInfo[nWindow]->xferData.GetSize();
	double ttt=-1.;
	double dSpS=WaveformInfo[nWindow]->dSpS;

	pDC->SelectObject(&YellowPen);

	for(int j=0; j<nXferBlocks; ++j)
		{
		CDataBlock *xfd=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j];
		double t1packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->beg;
		double t2packet=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->end;
		int nsamp=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->nsamp;


		for(int k=0; k<nsamp; ++k)
			{
			long a=this->pRTDisplay->WaveformInfo[nWindow]->xferData[j]->data[k];
			double tt=t1packet+(1./dSpS)*k;
			int x,y;

			if(tt<t1) continue;
			if(tt>t2) break;

			x=(int)((tt-t1)*(x2-x1)/(t2-t1)+x1);

			if(a>amax) a=amax;
			if(a<amin) a=amin;

			y=(a-amin)*(y2-y1)/(amax-amin)+y1;
			y=MaxY-y;
			if(tt-ttt>1.1/dSpS)
				{
				pDC->MoveTo(x,y);		
				}
			else
				{
				pDC->LineTo(x,y);		
				}
			ttt=tt;
			}
		}
	DrawGaps(nWindow,pDC);
    pDC->SelectObject(oldPen);
    pDC->SelectObject(oldBrush);
    pDC->SelectObject(oldFont);

	}
void CDBPickView::DrawTimePanel(CDC *pDC)
	{

	char cBuff[64];
    CPen WhitePen(PS_SOLID,1,RGB(255,255,255));
	CPen DarkPen(PS_SOLID,1,RGB(0,0,0));
	CPen RedPen(PS_SOLID,1,RGB(255,0,0));
	
	int xw1=WindowInfoXsize+3;
	int xw2=MaxX-1;
	int yw1=1;
	int yw2=TimeBarYsize-1;
	int x, x_old;


	CPen   *oldPen=pDC->GetCurrentPen();
	pDC->SelectObject(&WhitePen);


	pDC->MoveTo(xw1,MaxY-yw2);		
	pDC->LineTo(xw2,MaxY-yw2);

	pDC->MoveTo(xw1,MaxY-yw2);		
	pDC->LineTo(xw1,MaxY-yw1);

	pDC->SelectObject(&DarkPen);

	pDC->MoveTo(xw2,MaxY-yw1);		
	pDC->LineTo(xw2,MaxY-yw2);

	pDC->MoveTo(xw2,MaxY-yw1);		
	pDC->LineTo(xw1,MaxY-yw1);

	x_old=-1;

	int imode;

	x=(int)((xw2-xw1)/(t2-t1));

	if(x<3)
		{
		x=(int)(60*(xw2-xw1)/(t2-t1));
		if(x==0)
			{
			imode=2;
			}
		else
			{
			imode=1;
			}
		}
	else
		{
		imode=0;
		}
	nLastMarkRightPos=-100;
	for(long tt=(long)t1; tt<t2; ++tt)
		{
		x=(int)((tt-t1)*(xw2-xw1)/(t2-t1)+xw1);

		if(tt%3600==0)
			{
			pDC->SelectObject(&WhitePen);
			pDC->MoveTo(x,MaxY-yw2);		
			pDC->LineTo(x,MaxY-(yw2-12));
			pDC->SelectObject(&DarkPen);
			pDC->MoveTo(x+1,MaxY-yw2);		
			pDC->LineTo(x+1,MaxY-(yw2-12));
			x_old=x;


			lstrcpy(cBuff, dttostr(tt, 1));
			RECT rcc;
			GetTextRectangle(cBuff,rcc);
			int nWtd=(rcc.right-rcc.left)/2+1;
			rcc.left=x-nWtd;
			rcc.right=x+nWtd;
			rcc.bottom=(MaxY-yw1);
			rcc.top=(MaxY-yw2);
			if(nLastMarkRightPos<rcc.left)
				{
				pDC->DrawText(cBuff,&rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM);
				nLastMarkRightPos=rcc.right;
				}

			continue;
			}


		
		if(imode<2)
		if(tt%60==0)
			{
			pDC->SelectObject(&WhitePen);
			pDC->MoveTo(x,MaxY-yw2);		
			pDC->LineTo(x,MaxY-(yw2-8));
			pDC->SelectObject(&DarkPen);
			pDC->MoveTo(x+1,MaxY-yw2);		
			pDC->LineTo(x+1,MaxY-(yw2-8));
			x_old=x;

			pDC->SetTextColor(RGB(255,255,255));

			lstrcpy(cBuff, dttostr(tt, 1));
			RECT rcc;
			GetTextRectangle(cBuff,rcc);
			int nWtd=(rcc.right-rcc.left)/2+1;
			rcc.left=x-nWtd;
			rcc.right=x+nWtd;
			rcc.bottom=(MaxY-yw1);
			rcc.top=(MaxY-yw2);
			if(nLastMarkRightPos<rcc.left)
				{
				pDC->DrawText(cBuff,&rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM);
				nLastMarkRightPos=rcc.right;
				}
			continue;
			}

		if(imode==0)
			{
			pDC->SelectObject(&WhitePen);
			pDC->MoveTo(x,MaxY-yw2);		
			pDC->LineTo(x,MaxY-(yw2-4));
			pDC->SelectObject(&DarkPen);
			pDC->MoveTo(x+1,MaxY-yw2);		
			pDC->LineTo(x+1,MaxY-(yw2-4));
			x_old=x;
			}

		}

/*	pDC->SetTextColor(RGB(255,255,255));

	lstrcpy(cBuff, dttostr(t1, 1));
	CRect *rcc=new CRect(xw1,(MaxY-yw2),xw2, (MaxY-yw1));
	pDC->DrawText(cBuff,rcc,DT_LEFT|DT_SINGLELINE|DT_BOTTOM);
	delete rcc;

	lstrcpy(cBuff, dttostr(t2, 1));
	rcc=new CRect(xw1,(MaxY-yw2),xw2, (MaxY-yw1));
	pDC->DrawText(cBuff,rcc,DT_RIGHT|DT_SINGLELINE|DT_BOTTOM);
	delete rcc;*/

    pDC->SelectObject(oldPen);

	}