// Convert units in tends of a millimetre to device units int wxRichTextStyleListBox::ConvertTenthsMMToPixels(wxDC& dc, int units) const { int ppi = dc.GetPPI().x; // There are ppi pixels in 254.1 "1/10 mm" double pixels = ((double) units * (double)ppi) / 254.1; return (int) pixels; }
double wxGISMapView::GetScaleRatio(OGREnvelope& Bounds, wxDC& dc) { wxCHECK(m_pGISDisplay, 0); wxRect rc = m_pGISDisplay->GetDeviceFrame(); wxSize ppi = dc.GetPPI(); double screen_w = (double)rc.GetWidth() / ppi.GetWidth() * UNITS_IN_INCH; double screen_h = (double)rc.GetHeight() / ppi.GetHeight() * UNITS_IN_INCH; double w_w = fabs(Bounds.MaxX - Bounds.MinX); double w_h = fabs(Bounds.MaxY - Bounds.MinY); if(m_SpatialReference && m_SpatialReference->IsGeographic()) { w_w = w_w * PIDEG * m_SpatialReference->GetSemiMajor(); w_h = w_h * PIDEG * m_SpatialReference->GetSemiMinor(); } double screen = std::min(screen_w, screen_h); double world = std::min(w_w, w_h); return (world * 100) / screen; }
void RawDataVisualizeFrame::DrawIndividualRawDensityPlot(wxDC& dc){ //PrepareDC(dc); //SetUpDC(dc); int w,h; dc.GetSize(&w, &h); /* labeledplotAxes myAxes(wxPoint(80,80), wxPoint(w-30*5,h-30*5), wxRealPoint(0.0,1000.0), wxRealPoint(50.0,4000.0), true); */ int min_x = min((int)(pltarea_min_x*(double)w),(int)(160*(double)(dc.GetPPI().x)/(double)72)); int min_y = min((int)(pltarea_min_y*(double)h),(int)(165*(double)(dc.GetPPI().x)/(double)72)); int max_x = max((int)((pltarea_max_x-pltarea_min_x)*(double)w),(int)(w - 100*(double)(dc.GetPPI().x)/(double)72 - min_x)); int max_y = max((int)((pltarea_max_y-pltarea_min_y)*(double)h),(int)(h-160*(double)(dc.GetPPI().x)/(double)72 - min_y)); labeledplotAxes myAxes(dc, wxPoint(min_x,min_y), wxPoint(max_x,max_y), wxRealPoint(3.0,0.0), wxRealPoint(15.5,1.0), true); dc.Clear(); myAxes.setBackgroundColor(*wxWHITE_BRUSH); myAxes.setupDCforPlot(dc); // myAxes.addGrid(2, 0.2); wxArrayDouble xtickpoints; wxArrayDouble ytickpoints; int i,j; wxArrayString x_tick_labels; wxArrayString y_tick_labels; for (i=3; i <= 15; i++){ xtickpoints.Add((double)i); x_tick_labels.Add(wxString::Format(_T("%d"), i)); } for (i =0; i <= 10; i++){ ytickpoints.Add((double)i/10.0); y_tick_labels.Add(wxString::Format(_T("%.2f"), i/10.0)); } myAxes.setTickLocationX(xtickpoints); myAxes.setTickLocationY(ytickpoints); myAxes.setTickLabelsX(x_tick_labels); myAxes.setTickLabelsY(y_tick_labels); wxString x_label = wxT("log2 PM"); wxString y_label = wxT("Density"); myAxes.setAxisLabelX(x_label); myAxes.setAxisLabelY(y_label); myAxes.setTitle(MyRawData->GetArrayNames()[whichdensity]); wxPoint xsq[512]; j = whichdensity; for (i =0; i < 512; i++){ xsq[i] = myAxes.FindPoint(wxRealPoint((*DensityPlotStatistics_x)[j*512 + i], (*DensityPlotStatistics_y)[j*512 + i])); } dc.DrawSpline(WXSIZEOF(xsq),xsq); dc.DestroyClippingRegion(); myAxes.Draw(dc); }
int SurfaceImpl::LogPixelsY() { return hdc->GetPPI().y; }
void RawDataVisualizeFrame::DrawRawBoxplot(wxDC &dc){ int i,j; int w,h; dc.GetSize(&w, &h); int min_x = min((int)(pltarea_min_x*(double)w),(int)(160*(double)(dc.GetPPI().x)/(double)72)); int min_y = min((int)(pltarea_min_y*(double)h),(int)(165*(double)(dc.GetPPI().x)/(double)72)); int max_x = max((int)((pltarea_max_x-pltarea_min_x)*(double)w),(int)(w - 100*(double)(dc.GetPPI().x)/(double)72 - min_x)); int max_y = max((int)((pltarea_max_y-pltarea_min_y)*(double)h),(int)(h-160*(double)(dc.GetPPI().x)/(double)72 - min_y)); labeledplotAxes myAxes(dc,wxPoint(min_x,min_y), wxPoint(max_x,max_y), wxRealPoint(0.5,3.5), wxRealPoint((double)MyRawData->count_arrays()+ 0.5 ,15.5), true, wxPoint(0,0),true,10); //dc.SetClippingRegion(80,30*5-80 ,w-30*5,h-30*5); //dc.SetBackground(*wxGREY_BRUSH); //dc.Clear(); //SetUpDC(dc); //dc.Clear(); myAxes.setupDCforPlot(dc); wxArrayDouble xtickpoints; wxArrayDouble ytickpoints; wxArrayString x_tick_labels; wxArrayString y_tick_labels; wxString temp; for (i =1; i <= MyRawData->count_arrays();i++){ xtickpoints.Add((double)i); wxString mynewstring = wxString::Format(_T("%d"), i); x_tick_labels.Add(mynewstring); } x_tick_labels = MyRawData->GetArrayNames(); // Strip the ".CEL" from the labels for (i =0; i < MyRawData->count_arrays();i++){ temp = wxString(x_tick_labels[i]); x_tick_labels[i] = temp.Remove(temp.Len() - 4); } for (i=2; i <= 15; i++){ ytickpoints.Add((double)i); y_tick_labels.Add(wxString::Format(_T("%d"), i)); } myAxes.setTickLocationX(xtickpoints); myAxes.setTickLocationY(ytickpoints); myAxes.setTickLabelsX(x_tick_labels); myAxes.setTickLabelsY(y_tick_labels); myAxes.setTickLabelsPerpendicular(true); wxString x_label = wxT(""); wxString y_label = wxT("log2 PM"); myAxes.setAxisLabelX(x_label); myAxes.setAxisLabelY(y_label); myAxes.setTitle(wxT("log2 PM by array for raw data")); wxColor tempColor = wxColor(100,100,255); for (j =0; j < MyRawData->count_arrays();j++){ Draw_Single_Boxplot(dc, myAxes.FindPoint(wxRealPoint(1.0,max(log((*BoxplotStatistics)[j*5 + 0])/log(2.0),3.5))).y, myAxes.FindPoint(wxRealPoint(1.0,log((*BoxplotStatistics)[j*5 + 1])/log(2.0))).y, myAxes.FindPoint(wxRealPoint(1.0,log((*BoxplotStatistics)[j*5 + 2])/log(2.0))).y, myAxes.FindPoint(wxRealPoint(1.0,log((*BoxplotStatistics)[j*5 + 3])/log(2.0))).y, myAxes.FindPoint(wxRealPoint(1.0,min(log((*BoxplotStatistics)[j*5 + 4])/log(2.0),15.5))).y, myAxes.FindPoint(wxRealPoint((double)(j+1),0)).x, myAxes.FindPoint(wxRealPoint(3.4,0)).x - myAxes.FindPoint(wxRealPoint(2.6,0)).x,&tempColor); } dc.DestroyClippingRegion(); myAxes.Draw(dc); }