Пример #1
0
//---------------------------------------------------------
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();
	}
}
Пример #2
0
//---------------------------------------------------------
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);
	}
}
Пример #3
0
//---------------------------------------------------------
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 );
}
Пример #4
0
//---------------------------------------------------------
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);
	}
}
Пример #5
0
//---------------------------------------------------------
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);
}
Пример #6
0
//---------------------------------------------------------
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 );
}
Пример #7
0
//---------------------------------------------------------
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 );
}
Пример #8
0
//---------------------------------------------------------
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) );
}
Пример #9
0
//---------------------------------------------------------
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 );
}
Пример #10
0
//---------------------------------------------------------
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 );
}
Пример #11
0
//---------------------------------------------------------
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));
}
Пример #12
0
//---------------------------------------------------------
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 );
}
Пример #13
0
//---------------------------------------------------------
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 );
}
Пример #14
0
//---------------------------------------------------------
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 );
}
Пример #15
0
//---------------------------------------------------------
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 );
}
Пример #16
0
//---------------------------------------------------------
bool CWKSP_TIN_Manager::Exists(CSG_TIN *pTIN)
{
	return( Get_TIN(pTIN) != NULL );
}
Пример #17
0
//---------------------------------------------------------
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) );
}
Пример #18
0
//---------------------------------------------------------
double CWKSP_TIN::Get_Value_Range(void)
{
	return( m_Color_Field >= 0 ? Get_TIN()->Get_Range(m_Color_Field) : 0.0 );
}
Пример #19
0
//---------------------------------------------------------
TSG_Rect CWKSP_TIN::Edit_Get_Extent(void)
{
	return( Get_TIN()->Get_Extent() );
}