예제 #1
0
파일: dial.cpp 프로젝트: doublespy/OpenCPN
void DashboardInstrument_Dial::Draw(wxGCDC* bdc)
{
    wxColour c1;
    GetGlobalColor(_T("DASHB"), &c1);
    wxBrush b1(c1);
    bdc->SetBackground(b1);
    bdc->Clear();

    wxSize size = GetClientSize();
    m_cx = size.x / 2;
    int availableHeight = size.y - m_TitleHeight - 6;
    int width, height;
    bdc->GetTextExtent( _T("000"), &width, &height, 0, 0, g_pFontLabel );
    m_cy = m_TitleHeight + 2;
    m_cy += availableHeight / 2;
    m_radius = availableHeight / 2;


    DrawLabels(bdc);
    DrawFrame(bdc);
    DrawMarkers(bdc);
    DrawBackground(bdc);
    DrawData(bdc, m_MainValue, m_MainValueUnit, m_MainValueFormat, m_MainValueOption);
    DrawData(bdc, m_ExtraValue, m_ExtraValueUnit, m_ExtraValueFormat, m_ExtraValueOption);
    DrawForeground(bdc);
}
예제 #2
0
void CVisLabelVisualizer::DoProcessing()
{
	Uint32 y;
	
	// Acquire buffers
	Uint32*							inputImg = (Uint32*)m_iportImage.GetBuffer();
	FastLabelObject *				objLabels = (FastLabelObject*)m_iportLabelData.GetBuffer();
	Uint32*							outputImg = (Uint32*)m_oportResult.GetBuffer();	
	
	// Determine bounds
	Uint32 w_in, h_in;
	Uint32 w_out, h_out;
	m_iportImage.GetImageSize( w_in, h_in );
	
	w_out = min( w_in/m_nScale, m_unResultWidth );
	h_out = min( h_in/m_nScale, m_unResultHeight );
	
	// Copy input image downscaled to the output image. We'll use a 2D to 1D DMA transfer
	// for this.
	for ( y=0; y< h_out; y++ )
	{
		WaitCopy( StartCopy2D( 	COPY_2D1D, 
								outputImg + y * m_unResultWidth , 
								inputImg + y * w_in * m_nScale,
								4, m_unResultWidth, 4 * m_nScale ));
	}

	// Draw labels
	DrawLabels( objLabels, outputImg );		
}
예제 #3
0
void GraphicWidget::paintEvent(QPaintEvent *e)
{
    QPainter painterWidget;
    w = this->width();
    h = this->height();
    for (std::vector<GraphData>::iterator it = GraphicsData.begin(); it != GraphicsData.end(); it++)
    {
        it->setWidthHeight(w, h);
    }

    painterWidget.begin(this);
        painterWidget.setPen(pen);
        painterWidget.setRenderHint(QPainter::HighQualityAntialiasing, true);

        for (std::vector<GraphData>::iterator it = GraphicsData.begin(); it != GraphicsData.end(); it++)
        {
            for (unsigned i = 0; i < it->numPoints() - 1; i++)
            {
                painterWidget.drawLine(int(it->getArg(i)), int(it->getVal(i)),
                                       int(it->getArg(i + 1)), int(it->getVal(i + 1)));
            }
        }
        DrawLabels(painterWidget);
        painterWidget.drawRect(0, 0, int(w - 0.001 * w), int(h - h * 0.001));
    painterWidget.end();
}
예제 #4
0
파일: wind.cpp 프로젝트: CarCode/Cocoa-OCPN
void TacticsInstrument_AppTrueWindAngle::Draw(wxGCDC* bdc)
{
	wxColour c1;
	GetGlobalColor(_T("DASHB"), &c1);
	wxBrush b1(c1);
	bdc->SetBackground(b1);
	bdc->Clear();

	wxSize size = GetClientSize();
	m_cx = size.x / 2;
	int availableHeight = size.y - m_TitleHeight - 6;
	int width, height;
	bdc->GetTextExtent(_T("000"), &width, &height, 0, 0, g_pFontLabel);
	m_cy = m_TitleHeight + 2;
	m_cy += availableHeight / 2;
	m_radius = availableHeight / 2.0 * 0.95;


	DrawLabels(bdc);
	DrawFrame(bdc);
	DrawMarkers(bdc);
	DrawBackground(bdc);
	DrawData(bdc, m_MainValueApp, m_MainValueAppUnit, m_MainValueFormat, m_MainValueOption1);
	DrawData(bdc, m_MainValueTrue, m_MainValueTrueUnit, m_MainValueFormat, m_MainValueOption2);
	DrawData(bdc, m_ExtraValueApp, m_ExtraValueAppUnit, m_ExtraValueFormat, m_ExtraValueOption1);
	DrawData(bdc, m_ExtraValueTrue, m_ExtraValueTrueUnit, m_ExtraValueFormat, m_ExtraValueOption2);
    DrawData(bdc, m_TWD, m_MainValueTrueUnit, _T("TWD:%.0f"), DIAL_POSITION_INSIDE);

	DrawForeground(bdc);
}
예제 #5
0
// whole process of draw a figure.
void Figure::Show()
{
	Initialize();

	IplImage *output = cvCreateImage(figure_size, IPL_DEPTH_8U, 3);
	cvSet(output, backgroud_color, 0);

	DrawAxis(output);

	DrawPlots(output);

	DrawLabels(output, figure_size.width - 100, 10);

	cvShowImage(figure_name.c_str(), output);
	cvWaitKey(1);
	cvReleaseImage(&output);

}
예제 #6
0
void TOnePadDisplay::BookCanvas() {
//Booking of labels, canvasand pad and setting the styles
  BookLabels();
//canvas
  fCanvas = new TCanvas(GetName(),GetTitle(),fCanTopX,fCanTopY,fCanWidth,fCanHeigth);
  fCanvas->Range(0,0,1,1);
  fCanvas->SetFillColor(fCanColor);
  fCanvas->SetBorderSize(fCanBsz);
  fCanvas->SetFillStyle(fCanStyle);
  DrawLabels();
//pad
  fPad = new TPad("OnePad","OnePad",fPadXlow,fPadYlow,fPadXup,fPadYup);
  fPad->SetFillColor(fPadColor);
  fPad->SetBorderSize(fPadBsz);
  fPad->SetGridx();
  fPad->SetGridy();
  fPad->SetFrameFillColor(fFrameColor);
  fPad->SetFillStyle(fPadStyle);
  fPad->SetLogx(fPadLogX);
  fPad->SetLogy(fPadLogY);
//styles
  gStyle->SetOptStat(fStyleStat);
  gStyle->SetStatFont(fStyleFont);
  gStyle->SetStatColor(fStyleColor);
  gStyle->SetStatH(fStyleH);
  gStyle->SetTitleXSize(fStyleTXSize);
  gStyle->SetTitleXOffset(fStyleTXOffset);
  gStyle->SetTitleYSize(fStyleTYSize);
  gStyle->SetTitleYOffset(fStyleTYOffset);
  gStyle->SetTitleH(fStyleTitleH);
  gStyle->SetTitleW(fStyleTitleW);
  gStyle->SetTitleX(fStyleTitleX);
  gStyle->SetTitleY(fStyleTitleY);
  gStyle->SetTitleBorderSize(fStyleTBSize);
  gStyle->SetTitleFillColor(fStyleTFColor);
  gStyle->SetTitleW(fStyleW);
  gStyle->SetHistFillColor(fStyleHistColor);
  gStyle->SetTitleFont(fStyleTitleFont);
  gStyle->SetTitleColor(fStyleTitleColor);
  gStyle->SetTitleTextColor(fStyleTTextColor);
  gStyle->SetLabelSize(fStyleLabelSize,fStyleLabelAxis);
  fPad->Draw();
  fPad->cd();
}
예제 #7
0
void TacticsInstrument_BearingCompass::Draw(wxGCDC* bdc)
{
	wxColour c1;
	GetGlobalColor(_T("DASHB"), &c1);
	wxBrush b1(c1);
	bdc->SetBackground(b1);
	bdc->Clear();

	wxSize size = GetClientSize();
	m_cx = size.x / 2;
	int availableHeight = size.y - m_TitleHeight - 6;
	int width, height;
	bdc->GetTextExtent(_T("000"), &width, &height, 0, 0, g_pFontLabel);
	m_cy = m_TitleHeight + 2;
	m_cy += availableHeight / 2;
	m_radius = availableHeight / 2 *0.80;


	DrawLabels(bdc);
	DrawFrame(bdc);
	DrawMarkers(bdc);
	DrawBackground(bdc);
    if (!wxIsNaN(m_Bearing)){
      DrawData(bdc, m_Bearing, m_BearingUnit, _T("BRG:%.f"), DIAL_POSITION_TOPLEFT);
      DrawData(bdc, 0, m_ToWpt, _T(""), DIAL_POSITION_TOPRIGHT);
    }
    if (!wxIsNaN(m_CurrSpeed)) DrawData(bdc, m_CurrSpeed, m_CurrSpeedUnit, _T("Curr:%.2f"), DIAL_POSITION_INSIDE);
    if (!wxIsNaN(m_ExtraValueDTW)) DrawData(bdc, m_ExtraValueDTW, m_ExtraValueDTWUnit, _T("DTW:%.1f"), DIAL_POSITION_BOTTOMLEFT);
    if (!wxIsNaN(m_CurrDir) && m_CurrDir >= 0 && m_CurrDir < 360)
		DrawCurrent(bdc);
	DrawForeground(bdc);

	DrawLaylines(bdc);
    if (!wxIsNaN(m_MainValue)) DrawData(bdc, m_MainValue, m_MainValueUnit, _T("%.0f"), DIAL_POSITION_TOPINSIDE);

    if (!wxIsNaN(m_predictedSog)) DrawData(bdc, m_predictedSog, getUsrSpeedUnit_Plugin(g_iDashSpeedUnit), _T("prd.SOG: ~%.1f"), DIAL_POSITION_BOTTOMRIGHT);


}
예제 #8
0
        void Draw(TCanvas *c1, const int &rebin=1, const bool &showErr=true) {

            gStyle->SetOptStat(0);
            c1->cd();
            c1->Clear();

            TPad *pad1;
            pad1 = new TPad("pad1","pad1",0,1-0.614609572,1,1);
            pad1->SetTopMargin(0.0983606557);
            pad1->SetBottomMargin(0.025);
            pad1->Draw();
            pad1->cd();

            RebinHists(rebin);
            THStack *hstack = GetStack(c1->GetLogy());
            TH1F *signal = GetSignalHist();
            TH1F *data   = GetDataHist();

            if(c1->GetLogy()) gPad->SetLogy();
            hstack->GetHistogram()->SetLabelSize(0.00,"X");
            hstack->GetHistogram()->SetLabelSize(0.06,"Y");
            hstack->GetHistogram()->SetTitleSize(0.06,"XY");
            hstack->Draw("hist");
            if(signal && ! _stackSignal) signal->Draw("hist,same");
            if(data)     data->Draw("ep,same");
            DrawLabels();
            pad1->GetFrame()->DrawClone();


            TH1F *summed = GetSummedMCHist();

            TH1F *rdat = (TH1F*)data->Clone("rdat");   
            if(gROOT->FindObject("rref")) gROOT->FindObject("rref")->Delete();
            TH1F *rref = new TH1F("rref","rref",
                summed->GetNbinsX(),
                summed->GetBinLowEdge(1),
                summed->GetBinLowEdge(summed->GetNbinsX()+1)
            );
            for (int i = 1, n = rref->GetNbinsX(); i <= n+1; ++i) {
                rref->SetBinContent(i,summed->GetBinContent(i));
                rref->SetBinError(i,summed->GetBinError(i));
            }
            rref->SetTitle("");
            rref->SetLineWidth(0);
            rref->SetFillColor(kGray+1);
            rref->SetFillStyle(1001);
            double absmax = 0;
            for (int i = 0, n = rdat->GetNbinsX(); i <= n+1; ++i) {
                double scale = rref->GetBinContent(i);
                if (scale == 0) {
                    rdat->SetBinContent(i, 0);
                    rref->SetBinContent(i, 10000);
                    rdat->SetBinError(i, 0);
                    rref->SetBinError(i, 0);
                } else {
                    rdat->SetBinContent(i, rdat->GetBinContent(i)/scale);
                    rref->SetBinContent(i, rref->GetBinContent(i)/scale);
                    rdat->SetBinError(i, rdat->GetBinError(i)/scale);
                    rref->SetBinError(i, rref->GetBinError(i)/scale);
                    double mymax = TMath::Max(1.2*fabs(rdat->GetBinContent(i)-1)+1.4*rdat->GetBinError(i), 2.0*rref->GetBinError(i));
                    absmax = TMath::Max(mymax, absmax);
                }
            }

            c1->cd();
            TPad *pad2 = new TPad("pad2","pad2",0,0,1,1-0.614609572);
            pad2->SetTopMargin(0.0261437908);
            pad2->SetBottomMargin(0.392156863);
            pad2->Draw();
            pad2->cd();

            TLine *line = new TLine(rref->GetXaxis()->GetXmin(), 1.0, rref->GetXaxis()->GetXmax(), 1.0);
            line->SetLineColor(kBlack);
            line->SetLineWidth(1);
            line->SetLineStyle(1);

            if(showErr) {
                rref->GetYaxis()->SetRangeUser(TMath::Max(-1.,1.-absmax), TMath::Min(3.,absmax+1.));
                AxisFonts(rref->GetXaxis(), "x", hstack->GetXaxis()->GetTitle());
                rref->GetYaxis()->SetTitle("data/mc");
                rref->GetYaxis()->SetLabelSize(0.10);
                rref->GetYaxis()->SetTitleSize(0.10);
                rref->GetYaxis()->SetTitleOffset(0.85);
                rref->GetXaxis()->SetLabelSize(0.10);
                rref->GetXaxis()->SetTitleSize(0.10);
                rref->GetXaxis()->SetTitleOffset(1.5);
                rref->Draw("E2"); 
                rdat->SetMarkerStyle(20);
                rdat->Draw("E SAME p");
                line->Draw("SAME"); 
                c1->Update();
                pad2->GetFrame()->DrawClone();

            } else {
                rdat->GetYaxis()->SetRangeUser(TMath::Max(-1.,1.-absmax), TMath::Min(3.,absmax+1.));
                rdat->GetYaxis()->SetTitle("data/mc");
                rdat->GetYaxis()->SetLabelSize(0.10);
                rdat->GetYaxis()->SetTitleSize(0.10);
                rdat->GetYaxis()->SetTitleOffset(0.85);
                AxisFonts(rdat->GetXaxis(), "x", hstack->GetXaxis()->GetTitle());
                rdat->GetXaxis()->SetLabelSize(0.10);
                rdat->GetXaxis()->SetTitleSize(0.10);
                rdat->GetXaxis()->SetTitleOffset(1.5);
                rdat->SetTitle("");
                rdat->SetMarkerStyle(20);
                rdat->Draw("E p");
                line->Draw("SAME"); 
                c1->Update();
                pad2->GetFrame()->DrawClone();
            }

        }