📄 parameter_data.cpp
字号:
: CSG_Parameter_Data(pOwner, Constraint)
{
m_pFont = new wxFont(10, wxSWISS, wxNORMAL, wxNORMAL);
m_Color = 0;
}
CSG_Parameter_Font::~CSG_Parameter_Font(void)
{
delete(m_pFont);
}
//---------------------------------------------------------
bool CSG_Parameter_Font::Set_Value(int Value)
{
if( m_Color != Value )
{
m_Color = Value;
return( true );
}
return( false );
}
bool CSG_Parameter_Font::Set_Value(void *Value)
{
if( Value )
{
*m_pFont = *((class wxFont *)Value);
return( true );
}
return( false );
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Font::asString(void)
{
m_String.Printf(SG_T("%s, %dpt"), m_pFont->GetFaceName().c_str(), m_pFont->GetPointSize());
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_Font::On_Assign(CSG_Parameter_Data *pSource)
{
Set_Value(pSource->asPointer());
Set_Value(pSource->asInt());
}
//---------------------------------------------------------
bool CSG_Parameter_Font::On_Serialize(CSG_File &Stream, bool bSave)
{
if( bSave )
{
// GetNativeFontInfoDesc
// fwrite(&logFont , 1, sizeof(API_LOGFONT), Stream);
Stream.Write(&m_Color , sizeof(m_Color));
Stream.Printf(SG_T("\n"));
}
else
{
// SetNativeFontInfo
// fread(&logFont , 1, sizeof(API_LOGFONT), Stream);
Stream.Read(&m_Color , sizeof(m_Color));
}
return( true );
}
///////////////////////////////////////////////////////////
// //
// Color //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Color::CSG_Parameter_Color(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Int(pOwner, Constraint)
{}
CSG_Parameter_Color::~CSG_Parameter_Color(void)
{}
///////////////////////////////////////////////////////////
// //
// Colors //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Colors::CSG_Parameter_Colors(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{}
CSG_Parameter_Colors::~CSG_Parameter_Colors(void)
{}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Colors::asString(void)
{
m_String.Printf(SG_T("%d %s"), m_Colors.Get_Count(), LNG("colors"));
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_Colors::On_Assign(CSG_Parameter_Data *pSource)
{
m_Colors.Assign(&((CSG_Parameter_Colors *)pSource)->m_Colors);
}
//---------------------------------------------------------
bool CSG_Parameter_Colors::On_Serialize(CSG_File &Stream, bool bSave)
{
return( m_Colors.Serialize(Stream, bSave, false) );
}
///////////////////////////////////////////////////////////
// //
// FixedTable //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Fixed_Table::CSG_Parameter_Fixed_Table(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{
m_Table.Set_Name(LNG("Table"));
}
CSG_Parameter_Fixed_Table::~CSG_Parameter_Fixed_Table(void)
{}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Fixed_Table::asString(void)
{
m_String.Printf(SG_T("%s (%s: %d, %s: %d)"), m_Table.Get_Name(), LNG("columns"), m_Table.Get_Field_Count(), LNG("rows"), m_Table.Get_Record_Count());
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_Fixed_Table::On_Assign(CSG_Parameter_Data *pSource)
{
m_Table.Assign(&((CSG_Parameter_Fixed_Table *)pSource)->m_Table);
}
//---------------------------------------------------------
bool CSG_Parameter_Fixed_Table::On_Serialize(CSG_File &Stream, bool bSave)
{
if( bSave )
{
return( m_Table.Serialize(Stream, bSave) );
}
else
{
CSG_Table t;
if( t.Serialize(Stream, bSave) )
{
m_Table.Assign_Values(&t);
return( true );
}
}
return( false );
}
///////////////////////////////////////////////////////////
// //
// Grid_System //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Grid_System::CSG_Parameter_Grid_System(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{}
CSG_Parameter_Grid_System::~CSG_Parameter_Grid_System(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Grid_System::Set_Value(void *Value)
{
int i, j;
CSG_Grid *pGrid;
CSG_Grid_System Invalid;
CSG_Parameters *pParameters;
CSG_Parameter_Grid_List *pGrids;
//-----------------------------------------------------
if( Value == NULL )
{
Value = &Invalid;
}
//-----------------------------------------------------
if( !m_System.is_Equal(*((CSG_Grid_System *)Value)) )
{
m_System.Assign(*((CSG_Grid_System *)Value));
//-------------------------------------------------
pParameters = m_pOwner->Get_Owner();
for(i=0; i<pParameters->Get_Count(); i++)
{
if( pParameters->Get_Parameter(i)->Get_Parent() == m_pOwner )
{
switch( pParameters->Get_Parameter(i)->Get_Type() )
{
default:
break;
case PARAMETER_TYPE_Grid:
pGrid = pParameters->Get_Parameter(i)->asGrid();
if( !SG_UI_DataObject_Check(pGrid, DATAOBJECT_TYPE_Grid) || (pGrid != DATAOBJECT_NOTSET && pGrid != DATAOBJECT_CREATE && !m_System.is_Equal(pGrid->Get_System())) )
{
pParameters->Get_Parameter(i)->Set_Value(DATAOBJECT_NOTSET);
}
break;
case PARAMETER_TYPE_Grid_List:
pGrids = (CSG_Parameter_Grid_List *)pParameters->Get_Parameter(i)->Get_Data();
for(j=pGrids->Get_Count()-1; j>=0; j--)
{
if( !SG_UI_DataObject_Check(pGrids->asGrid(j), DATAOBJECT_TYPE_Grid) || m_System.is_Equal(pGrids->asGrid(j)->Get_System()) == false )
{
pGrids->Del_Item(j);
}
}
break;
}
}
}
//-------------------------------------------------
return( true );
}
return( false );
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Grid_System::asString(void)
{
return( m_System.Get_Name() );
}
//---------------------------------------------------------
void CSG_Parameter_Grid_System::On_Assign(CSG_Parameter_Data *pSource)
{
m_System = ((CSG_Parameter_Grid_System *)pSource)->m_System;
}
//---------------------------------------------------------
bool CSG_Parameter_Grid_System::On_Serialize(CSG_File &Stream, bool bSave)
{
double Cellsize;
TSG_Rect Extent;
if( bSave )
{
Cellsize = m_System.Get_Cellsize();
Extent = m_System.Get_Extent().m_rect;
Stream.Write(&Cellsize, sizeof(Cellsize));
Stream.Write(&Extent , sizeof(Extent));
Stream.Printf(SG_T("\n"));
}
else
{
Stream.Read(&Cellsize, sizeof(Cellsize));
Stream.Read(&Extent , sizeof(Extent));
m_System.Assign(Cellsize, CSG_Rect(Extent));
}
return( true );
}
///////////////////////////////////////////////////////////
// //
// Table Field //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Table_Field::CSG_Parameter_Table_Field(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Int(pOwner, Constraint)
{
}
CSG_Parameter_Table_Field::~CSG_Parameter_Table_Field(void)
{
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Table_Field::asString(void)
{
CSG_Table *pTable;
if( (pTable = Get_Table()) != NULL )
{
if( m_Value >= 0 && m_Value < pTable->Get_Field_Count() )
{
return( pTable->Get_Field_Name(m_Value) );
}
return( LNG("[VAL] [not set]") );
}
return( LNG("[VAL] [no fields]") );
}
//---------------------------------------------------------
bool CSG_Parameter_Table_Field::Set_Value(int Value)
{
bool bChanged;
CSG_Table *pTable;
bChanged = false;
if( (pTable = Get_Table()) != NULL )
{
if( !m_pOwner->is_Optional() )
{
if( Value < 0 )
{
Value = 0;
}
else if( Value >= pTable->Get_Field_Count() )
{
Value = pTable->Get_Field_Count() - 1;
}
}
else if( Value < 0 || Value >= pTable->Get_Field_Count() )
{
Value = -1;
}
}
else
{
Value = -1;
}
if( m_Value != Value )
{
m_Value = Value;
bChanged = true;
}
return( bChanged );
}
//---------------------------------------------------------
CSG_Table * CSG_Parameter_Table_Field::Get_Table(void)
{
CSG_Table *pTable;
CSG_Parameter *pParent;
pTable = NULL;
if( (pParent = m_pOwner->Get_Parent()) != NULL )
{
switch( m_pOwner->Get_Parent()->Get_Type() )
{
default:
break;
case PARAMETER_TYPE_Table:
pTable = pParent->asTable();
break;
case PARAMETER_TYPE_Shapes:
pTable = pParent->asShapes() ? &pParent->asShapes()->Get_Table() : NULL;
break;
case PARAMETER_TYPE_TIN:
pTable = pParent->asTIN() ? &pParent->asTIN() ->Get_Table() : NULL;
break;
}
}
return( pTable && pTable->Get_Field_Count() > 0 ? pTable : NULL );
}
///////////////////////////////////////////////////////////
// //
// DataObject //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Data_Object::CSG_Parameter_Data_Object(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data(pOwner, Constraint)
{
m_pDataObject = NULL;
}
CSG_Parameter_Data_Object::~CSG_Parameter_Data_Object(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Data_Object::is_Valid(void)
{
return( m_pOwner->is_Optional() || (m_pDataObject && m_pDataObject->is_Valid()) );
}
//---------------------------------------------------------
bool CSG_Parameter_Data_Object::Set_Value(void *Value)
{
if( m_pDataObject != Value )
{
m_pDataObject = (CSG_Data_Object *)Value;
return( true );
}
return( false );
}
//---------------------------------------------------------
const SG_Char * CSG_Parameter_Data_Object::asString(void)
{
if( m_pDataObject == DATAOBJECT_NOTSET )
{
m_String = m_pOwner->is_Output() && !m_pOwner->is_Optional()
? LNG("[VAL] [create]")
: LNG("[VAL] [not set]");
}
else if( m_pDataObject == DATAOBJECT_CREATE )
{
m_String = LNG("[VAL] [create]");
}
else
{
m_String = m_pDataObject->Get_Name();
}
return( m_String );
}
//---------------------------------------------------------
void CSG_Parameter_Data_Object::On_Assign(CSG_Parameter_Data *pSource)
{
m_pDataObject = ((CSG_Parameter_Data_Object *)pSource)->m_pDataObject;
}
//---------------------------------------------------------
bool CSG_Parameter_Data_Object::On_Serialize(CSG_File &Stream, bool bSave)
{
if( bSave )
{
if( m_pDataObject == DATAOBJECT_CREATE )
{
Stream.Printf(SG_T("%s\n"), ENTRY_DATAOBJECT_CREATE);
}
else if( m_pDataObject != DATAOBJECT_NOTSET && m_pDataObject->Get_File_Name() )
{
Stream.Printf(SG_T("%s\n"), m_pDataObject->Get_File_Name());
}
else
{
Stream.Printf(SG_T("\n"));
}
}
else
{
CSG_String sLine;
if( Stream.Read_Line(sLine) )
{
if( !sLine.Cmp(ENTRY_DATAOBJECT_CREATE) )
{
Set_Value(DATAOBJECT_CREATE);
}
else
{
Set_Value(SG_UI_DataObject_Find(sLine, -1));
}
}
}
return( true );
}
///////////////////////////////////////////////////////////
// //
// DataObject_Output //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CSG_Parameter_Data_Object_Output::CSG_Parameter_Data_Object_Output(CSG_Parameter *pOwner, long Constraint)
: CSG_Parameter_Data_Object(pOwner, Constraint)
{
m_Type = DATAOBJECT_TYPE_Undefined;
}
CSG_Parameter_Data_Object_Output::~CSG_Parameter_Data_Object_Output(void)
{}
//---------------------------------------------------------
bool CSG_Parameter_Data_Object_Output::Set_Value(void *Value)
{
CSG_Data_Object *pDataObject = (CSG_Data_Object *)Value;
if( m_pDataObject != pDataObject && (!pDataObject || (pDataObject && pDataObject->Get_ObjectType() == m_Type)) )
{
m_pDataObject = pDataObject;
SG_UI_DataObject_Add(m_pDataObject, false);
return( true );
}
return( false );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -