void CWKSP_Shapes::_Edit_Shape_Draw_Point(wxDC &dc, int x, int y, bool bSelected) { dc.SetPen (wxPen(m_Edit_Color)); dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawCircle(x, y, 2); Draw_Edge(dc, EDGE_STYLE_SIMPLE, x - EDIT_TICKMARK_SIZE - 1, y - EDIT_TICKMARK_SIZE - 1, x + EDIT_TICKMARK_SIZE, y + EDIT_TICKMARK_SIZE ); if( bSelected ) { dc.SetPen(*wxRED_PEN); Draw_Edge(dc, EDGE_STYLE_SIMPLE, x - EDIT_TICKMARK_SIZE - 2, y - EDIT_TICKMARK_SIZE - 2, x + EDIT_TICKMARK_SIZE + 1, y + EDIT_TICKMARK_SIZE + 1 ); } }
//--------------------------------------------------------- void CVIEW_ScatterPlot::_Draw_Frame(wxDC &dc, wxRect r) { //----------------------------------------------------- Draw_Edge(dc, EDGE_STYLE_SIMPLE, r); //------------------------------------------------- Draw_Scale(dc, wxRect(r.GetLeft(), r.GetBottom(), r.GetWidth(), 20), m_Trend.Get_Data_XMin(), m_Trend.Get_Data_XMax(), true , true , true ); Draw_Scale(dc, wxRect(r.GetLeft() - 20, r.GetTop(), 20, r.GetHeight()), m_Trend.Get_Data_YMin(), m_Trend.Get_Data_YMax(), false, false, false ); Draw_Text(dc, TEXTALIGN_BOTTOMCENTER, r.GetLeft() - 25, r.GetTop() + r.GetHeight() / 2, 90.0, m_sY.c_str() ); Draw_Text(dc, TEXTALIGN_TOPCENTER, r.GetLeft() + r.GetWidth() / 2, r.GetBottom() + 20, m_sX.c_str() ); //------------------------------------------------- if( m_Options("REG_SHOW")->asBool() ) { _Draw_Regression(dc, r); } }
//--------------------------------------------------------- void CWKSP_Data_Button::On_Paint(wxPaintEvent &event) { if( m_pItem ) { if( !GetToolTip() || GetToolTip()->GetTip().Cmp(m_pItem->Get_Name()) ) { SetToolTip(m_pItem->Get_Name()); } //------------------------------------------------- wxPaintDC dc(this); if( is_Manager() ) { dc.DrawText(m_pItem->Get_Name(), 2, 2); } //------------------------------------------------- else { wxRect r(GetClientRect()); if( m_pItem->Get_Type() == WKSP_ITEM_Table ) { dc.DrawBitmap(wxBitmap(IMG_Get_Bitmap(ID_IMG_WKSP_TABLE, r.GetWidth() - 1)), r.GetLeft(), r.GetTop(), true ); } else { dc.DrawBitmap(((CWKSP_Layer *)m_pItem)->Get_Thumbnail(r.GetWidth() - 1, r.GetHeight() - 1), r.GetLeft(), r.GetTop(), true ); } //--------------------------------------------- if( m_pItem->is_Selected() ) { dc.SetPen(wxPen(Get_Color_asWX(g_pData->Get_Parameter("THUMBNAIL_SELCOLOR")->asColor()))); Draw_Edge(dc, EDGE_STYLE_SIMPLE, r); r.Deflate(1); Draw_Edge(dc, EDGE_STYLE_SIMPLE, r); r.Deflate(1); Draw_Edge(dc, EDGE_STYLE_SIMPLE, r); } } } }
//--------------------------------------------------------- void CVIEW_ScatterPlot::On_Paint(wxPaintEvent &event) { wxPaintDC dc(this); wxRect r(wxPoint(0, 0), GetClientSize()); Draw_Edge(dc, EDGE_STYLE_SUNKEN, r); _Draw(dc, r); }
//--------------------------------------------------------- void CDLG_Colors_Control::On_Paint(wxPaintEvent &event) { wxPaintDC dc(this); Draw_Edge(dc, EDGE_STYLE_STATIC, wxRect(wxPoint(0, 0), GetClientSize())); Draw_Box(dc, 0); Draw_Box(dc, 1); Draw_Box(dc, 2); Draw_Box(dc, 3); Draw_Box(dc, 4); }
//--------------------------------------------------------- void CVIEW_ScatterPlot::_Draw_Legend(wxDC &dc, wxRect r) { CSG_Colors Colors(*m_Options("DENSITY_PAL")->asColors()); Colors.Set_Count(r.GetHeight()); for(int i=0, y=r.GetBottom(); i<Colors.Get_Count(); i++, y--) { Draw_FillRect(dc, Get_Color_asWX(Colors.Get_Color(i)), r.GetLeft(), y, r.GetRight(), y + 1); } // r.Offset(0, -r.GetHeight()); Draw_Edge(dc, EDGE_STYLE_SIMPLE, r); Draw_Text(dc, TEXTALIGN_BOTTOMLEFT, 2 + r.GetRight(), r.GetBottom(), "0"); Draw_Text(dc, TEXTALIGN_TOPLEFT , 2 + r.GetRight(), r.GetTop (), wxString::Format("%d", (int)m_Count.Get_Max())); }
//--------------------------------------------------------- void CWKSP_Layer_Legend::_Draw_Box_Image(wxDC &dc, int ay, CSG_Grid *pGrid) { int x, y, nx, ny, Color; double d, dx, dy; wxImage img; //----------------------------------------------------- if( pGrid->Get_NX() > pGrid->Get_NY() ) { nx = m_dxBox; d = (int)(pGrid->Get_NX() / nx); ny = (int)(pGrid->Get_NY() / d); } else { ny = m_dxBox; d = (int)(pGrid->Get_NY() / ny); nx = (int)(pGrid->Get_NX() / d); } img.Create(nx, ny); for(y=0, dy=0.0; y<ny; y++, dy+=d) { for(x=0, dx=0.0; x<nx; x++, dx+=d) { Color = m_pClassify->Get_Class_Color_byValue(pGrid->asDouble((int)dx, (int)dy)); img.SetRGB(x, ny - 1 - y, SG_GET_R(Color), SG_GET_G(Color), SG_GET_B(Color)); } } dc.DrawBitmap(wxBitmap(img), m_xBox, ay, false); Draw_Edge(dc, EDGE_STYLE_SIMPLE, m_xBox, ay, m_xBox + nx, ay + ny); //----------------------------------------------------- _Set_Size(0, ny); ny += BOX_SPACE; }
//--------------------------------------------------------- void CWKSP_Layer_Legend::_Draw_Continuum_H(wxDC &dc, int y, double yToDC, double zMin, double zMax, double zFactor, double dz, int dyFont) { int i, iy, jy, yTick, yText, sx, sy; double z; wxString s; yTick = y + m_dxBox; yText = y + m_dxBox + m_dxTick; //----------------------------------------------------- for(i=0, z=m_xBox; i<m_pClassify->Get_Class_Count(); i++, z+=yToDC) { Draw_FillRect(dc, Get_Color_asWX(m_pClassify->Get_Class_Color(i)), (int)(z), y, (int)(z + yToDC), yTick); } Draw_Edge(dc, EDGE_STYLE_SIMPLE, m_xBox, y, m_xBox + METRIC_HEIGHT, yTick); //----------------------------------------------------- switch( m_pClassify->Get_Metric_Mode() ) { case METRIC_MODE_NORMAL: default: jy = METRIC_POS_H(zMin) - METRIC_HEIGHT; z = dz * floor(zMin / dz); if( z < zMin ) z += dz; for(; z<=zMax; z+=dz) { iy = METRIC_POS_H(z); dc.DrawLine(iy, yTick, iy, yText); s = METRIC_GET_STRING(z, dz); dc.GetTextExtent(s, &sx, &sy); if( abs(jy - iy) >= (int)(1.25 * sx) ) { jy = iy; Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s); } } break; case METRIC_MODE_LOGUP: jy = METRIC_POS_H(zMax) + METRIC_HEIGHT; z = dz * floor(zMax / dz); if( z > zMax ) z -= dz; for(; z>=zMin; z-=dz) { iy = METRIC_POS_H(z); dc.DrawLine(iy, yTick, iy, yText); s = METRIC_GET_STRING(z, dz); dc.GetTextExtent(s, &sx, &sy); if( abs(jy - iy) >= (int)(1.25 * sx) ) { jy = iy; Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s); } while( abs(iy - METRIC_POS_H(z - dz)) > 2 * sx ) dz *= 0.1; } break; case METRIC_MODE_LOGDOWN: jy = METRIC_POS_H(zMin) - METRIC_HEIGHT; z = dz * floor(zMin / dz); if( z < zMin ) z += dz; for(; z<=zMax; z+=dz) { iy = METRIC_POS_H(z); dc.DrawLine(iy, yTick, iy, yText); s = METRIC_GET_STRING(z, dz); dc.GetTextExtent(s, &sx, &sy); if( abs(jy - iy) >= (int)(1.25 * sx) ) { jy = iy; Draw_Text(dc, TEXTALIGN_TOPCENTER, iy, yText, s); } while( abs(iy - METRIC_POS_H(z + dz)) > 2 * sx ) dz *= 0.1; } break; } //----------------------------------------------------- _Set_Size(METRIC_HEIGHT, yText + dyFont); }
//--------------------------------------------------------- void CWKSP_Layer_Legend::_Draw_Continuum_V(wxDC &dc, int y, double yToDC, double zMin, double zMax, double zFactor, double dz, int dyFont) { int i, iy, jy; double z; //----------------------------------------------------- for(i=0, z=y+METRIC_HEIGHT; i<m_pClassify->Get_Class_Count(); i++, z-=yToDC) { Draw_FillRect(dc, Get_Color_asWX(m_pClassify->Get_Class_Color(i)), m_xBox, (int)(z), m_xTick, (int)(z - yToDC)); } Draw_Edge(dc, EDGE_STYLE_SIMPLE, m_xBox, y, m_xTick, y + METRIC_HEIGHT); //----------------------------------------------------- switch( m_pClassify->Get_Metric_Mode() ) { case METRIC_MODE_NORMAL: default: z = dz * floor(zMin / dz); if( z < zMin ) z += dz; for(; z<=zMax; z+=dz) { iy = METRIC_POS_V(z); dc.DrawLine(m_xTick, iy, m_xText, iy); _Draw_Label(dc, iy, METRIC_GET_STRING(z, dz), TEXTALIGN_YCENTER); } break; case METRIC_MODE_LOGUP: jy = METRIC_POS_V(zMax) + (1 + dyFont); z = dz * floor(zMax / dz); if( z > zMax ) z -= dz; for(; z>=zMin; z-=dz) { iy = METRIC_POS_V(z); dc.DrawLine(m_xTick, iy, m_xText, iy); if( abs(jy - iy) >= (int)(0.75 * dyFont) ) { jy = iy; _Draw_Label(dc, iy, METRIC_GET_STRING(z, dz), TEXTALIGN_YCENTER); } while( abs(iy - METRIC_POS_V(z - dz)) > 2 * dyFont ) dz *= 0.1; } break; case METRIC_MODE_LOGDOWN: jy = METRIC_POS_V(zMin) - (1 + dyFont); z = dz * floor(zMin / dz); if( z < zMin ) z += dz; for(; z<=zMax; z+=dz) { iy = METRIC_POS_V(z); dc.DrawLine(m_xTick, iy, m_xText, iy); if( abs(jy - iy) >= (int)(0.75 * dyFont) ) { jy = iy; _Draw_Label(dc, iy, METRIC_GET_STRING(z, dz), TEXTALIGN_YCENTER); } while( abs(iy - METRIC_POS_V(z + dz)) > 2 * dyFont ) dz *= 0.1; } break; } //----------------------------------------------------- _Set_Size(0, METRIC_HEIGHT + dc.GetFont().GetPointSize()); }
//--------------------------------------------------------- void CDLG_Colors_Control::Draw_Box(wxDC &dc, int BoxID) { int i, r, g, b, s, ax, ay, bx, by; double xStep, yStep; wxRect rBox; //----------------------------------------------------- Get_BoxRect(rBox, BoxID); rBox.Inflate(1); Draw_FillRect(dc, SYS_Get_Color(wxSYS_COLOUR_WINDOW), rBox); Draw_Edge(dc, EDGE_STYLE_SUNKEN, rBox); rBox.Deflate(1); //----------------------------------------------------- xStep = (double)rBox.GetWidth() / (double)m_pColors->Get_Count(); yStep = (double)rBox.GetHeight() / 255.0; ax = rBox.GetLeft(); ay = rBox.GetBottom() + 1; r = g = b = 0; s = 255; //----------------------------------------------------- for(i=0; i<m_pColors->Get_Count(); i++) { switch( BoxID ) { case 0: r = s = m_pColors->Get_Red (i); break; case 1: g = s = m_pColors->Get_Green(i); break; case 2: b = s = m_pColors->Get_Blue (i); break; case 3: r = m_pColors->Get_Red (i); g = m_pColors->Get_Green(i); b = m_pColors->Get_Blue (i); s = (r + g + b) / 3; break; case 4: r = m_pColors->Get_Red (i); g = m_pColors->Get_Green(i); b = m_pColors->Get_Blue (i); break; } bx = ax; ax = rBox.GetLeft() + (int)(xStep * (i + 1.0)); by = ay - (int)(yStep * (double)s); Draw_FillRect(dc, wxColour(r, g, b), ax, ay, bx, by); } }