//--------------------------------------------------------- void CWKSP_TIN::_Draw_Triangles(CWKSP_Map_DC &dc_Map) { if( m_Parameters("DISPLAY_TRIANGES")->asBool() && dc_Map.IMG_Draw_Begin(m_Parameters("DISPLAY_TRANSPARENCY")->asDouble() / 100.0) ) { for(int iTriangle=0; iTriangle<Get_TIN()->Get_Triangle_Count(); iTriangle++) { CSG_TIN_Triangle *pTriangle = Get_TIN()->Get_Triangle(iTriangle); if( dc_Map.m_rWorld.Intersects(pTriangle->Get_Extent()) != INTERSECTION_None ) { TPoint p[3]; for(int iNode=0; iNode<3; iNode++) { CSG_TIN_Node *pNode = pTriangle->Get_Node(iNode); TSG_Point_Int Point = dc_Map.World2DC(pNode->Get_Point()); p[iNode].x = Point.x; p[iNode].y = Point.y; p[iNode].z = pNode->asDouble(m_Color_Field); } _Draw_Triangle(dc_Map, p); } } dc_Map.IMG_Draw_End(); } }
//--------------------------------------------------------- void CWKSP_TIN::_Draw_Points(CWKSP_Map_DC &dc_Map) { for(int i=0; i<Get_TIN()->Get_Node_Count(); i++) { TSG_Point_Int Point = dc_Map.World2DC(Get_TIN()->Get_Node(i)->Get_Point()); dc_Map.dc.DrawCircle(Point.x, Point.y, 5); } }
//--------------------------------------------------------- CWKSP_TIN * CWKSP_TIN_Manager::Get_TIN(CSG_TIN *pTIN) { for(int i=0; i<Get_Count(); i++) { if( pTIN == Get_TIN(i)->Get_TIN() ) { return( Get_TIN(i) ); } } return( NULL ); }
//--------------------------------------------------------- void CWKSP_TIN::_Draw_Edges(CWKSP_Map_DC &dc_Map) { for(int i=0; i<Get_TIN()->Get_Edge_Count(); i++) { TSG_Point_Int Point[2]; CSG_TIN_Edge *pEdge = Get_TIN()->Get_Edge(i); Point[0] = dc_Map.World2DC(pEdge->Get_Node(0)->Get_Point()); Point[1] = dc_Map.World2DC(pEdge->Get_Node(1)->Get_Point()); dc_Map.dc.DrawLine(Point[0].x, Point[0].y, Point[1].x, Point[1].y); } }
//--------------------------------------------------------- void CWKSP_TIN::On_DataObject_Changed(void) { CWKSP_Layer::On_DataObject_Changed(); wxString sChoices; for(int i=0; i<Get_TIN()->Get_Field_Count(); i++) { sChoices.Append(wxString::Format(wxT("%s|"), Get_TIN()->Get_Field_Name(i))); } m_Parameters("METRIC_ATTRIB")->asChoice()->Set_Items(sChoices); }
//--------------------------------------------------------- wxString CWKSP_TIN::Get_Description(void) { wxString s; //----------------------------------------------------- s += wxString::Format(wxT("<b>%s</b><table border=\"0\">"), _TL("TIN")); s += wxT("<table border=\"0\">"); DESC_ADD_STR(_TL("Name") , m_pObject->Get_Name()); DESC_ADD_STR(_TL("Description") , m_pObject->Get_Description()); DESC_ADD_STR(_TL("File") , SG_File_Exists(m_pObject->Get_File_Name()) ? m_pObject->Get_File_Name() : _TL("memory")); DESC_ADD_STR(_TL("Modified") , m_pObject->is_Modified() ? _TL("yes") : _TL("no")); DESC_ADD_STR(_TL("Projection") , m_pObject->Get_Projection().Get_Description().c_str()); DESC_ADD_FLT(_TL("West") , Get_TIN()->Get_Extent().Get_XMin()); DESC_ADD_FLT(_TL("East") , Get_TIN()->Get_Extent().Get_XMax()); DESC_ADD_FLT(_TL("West-East") , Get_TIN()->Get_Extent().Get_XRange()); DESC_ADD_FLT(_TL("South") , Get_TIN()->Get_Extent().Get_YMin()); DESC_ADD_FLT(_TL("North") , Get_TIN()->Get_Extent().Get_YMax()); DESC_ADD_FLT(_TL("South-North") , Get_TIN()->Get_Extent().Get_YRange()); DESC_ADD_INT(_TL("Number of Points"), Get_TIN()->Get_Node_Count()); s += wxT("</table>"); s += Get_TableInfo_asHTML(Get_TIN()); //----------------------------------------------------- // s += wxString::Format(wxT("<hr><b>%s</b><font size=\"-1\">"), _TL("Data History")); // s += Get_TIN()->Get_History().Get_HTML(); // s += wxString::Format(wxT("</font")); //----------------------------------------------------- return( s ); }
//--------------------------------------------------------- CSG_TIN * CWKSP_TIN_Manager::Get_byFileName(const wxChar *File_Name) { CSG_String s(File_Name); for(int i=0; i<Get_Count(); i++) { if( !s.Cmp(Get_TIN(i)->Get_TIN()->Get_File_Name()) ) { return( Get_TIN(i)->Get_TIN() ); } } return( NULL ); }
//--------------------------------------------------------- int CWKSP_TIN::On_Parameter_Changed(CSG_Parameters *pParameters, CSG_Parameter *pParameter, int Flags) { if( Flags & PARAMETER_CHECK_VALUES ) { if( !SG_STR_CMP(pParameter->Get_Identifier(), wxT("METRIC_ATTRIB")) ) { int zField = pParameter->asInt(); pParameters->Get_Parameter("METRIC_ZRANGE")->asRange()->Set_Range( Get_TIN()->Get_Minimum(zField), Get_TIN()->Get_Maximum(zField) ); } } return( CWKSP_Layer::On_Parameter_Changed(pParameters, pParameter, Flags) ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Get_Colors(CSG_TIN *pTIN, CSG_Colors *pColors) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { return( pItem->Get_Colors(pColors) ); } return( false ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::asImage(CSG_TIN *pTIN, CSG_Grid *pImage) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { return( pItem->asImage(pImage) ); } return( false ); }
//--------------------------------------------------------- void CWKSP_TIN::On_Parameters_Changed(void) { CWKSP_Layer::On_Parameters_Changed(); if( (m_Color_Field = m_Parameters("METRIC_ATTRIB")->asInt()) >= Get_TIN()->Get_Field_Count() ) { m_Color_Field = -1; } long DefColor = m_Parameters("UNISYMBOL_COLOR")->asColor(); m_Color_Pen = wxColour(SG_GET_R(DefColor), SG_GET_G(DefColor), SG_GET_B(DefColor)); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Set_Colors(CSG_TIN *pTIN, CSG_Colors *pColors) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { pItem->DataObject_Changed(pColors); return( true ); } return( false ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Update_Views(CSG_TIN *pTIN) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { pItem->Update_Views(false); return( true ); } return( false ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Update(CSG_TIN *pTIN, CSG_Parameters *pParameters) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { pItem->DataObject_Changed(pParameters); return( true ); } return( false ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Show(CSG_TIN *pTIN, int Map_Mode) { CWKSP_TIN *pItem; if( (pItem = Get_TIN(pTIN)) != NULL ) { switch( Map_Mode ) { case SG_UI_DATAOBJECT_SHOW: return( pItem->Show() ); case SG_UI_DATAOBJECT_SHOW_NEW_MAP: g_pMaps->Add(pItem, NULL); case SG_UI_DATAOBJECT_SHOW_LAST_MAP: return( pItem->Show(g_pMaps->Get_Map(g_pMaps->Get_Count() - 1)) ); } } return( false ); }
//--------------------------------------------------------- bool CWKSP_TIN_Manager::Exists(CSG_TIN *pTIN) { return( Get_TIN(pTIN) != NULL ); }
//--------------------------------------------------------- wxString CWKSP_TIN::Get_Name_Attribute(void) { return( m_Color_Field < 0 || m_pClassify->Get_Mode() == CLASSIFY_UNIQUE ? SG_T("") : Get_TIN()->Get_Field_Name(m_Color_Field) ); }
//--------------------------------------------------------- double CWKSP_TIN::Get_Value_Range(void) { return( m_Color_Field >= 0 ? Get_TIN()->Get_Range(m_Color_Field) : 0.0 ); }
//--------------------------------------------------------- TSG_Rect CWKSP_TIN::Edit_Get_Extent(void) { return( Get_TIN()->Get_Extent() ); }