예제 #1
0
void ChartSymbols::ProcessColorTables( TiXmlElement* colortableNodes )
{

    for( TiXmlNode *childNode = colortableNodes->FirstChild(); childNode;
            childNode = childNode->NextSibling() ) {
        TiXmlElement *child = childNode->ToElement();
        colTable *colortable = new colTable;

        const char *pName = child->Attribute( "name" );
        colortable->tableName = new wxString( pName, wxConvUTF8 );

        TiXmlElement* colorNode = child->FirstChild()->ToElement();

        while( colorNode ) {
            S52color color;
            wxString propVal;
            long numVal;

            if( wxString( colorNode->Value(), wxConvUTF8 ) == _T("graphics-file") ) {
                colortable->rasterFileName = wxString( colorNode->Attribute( "name" ), wxConvUTF8 );
                goto next;
            } else {
                TGET_INT_PROPERTY_VALUE( colorNode, "r", color.R )
                TGET_INT_PROPERTY_VALUE( colorNode, "g", color.G )
                TGET_INT_PROPERTY_VALUE( colorNode, "b", color.B )

                wxString key( colorNode->Attribute( "name" ), wxConvUTF8 );
                strncpy( color.colName, key.char_str(), 5 );
                color.colName[5] = 0;

                colortable->colors[key] = color;

                wxColour wxcolor( color.R, color.G, color.B );
                colortable->wxColors[key] = wxcolor;
            }

            next: colorNode = colorNode->NextSiblingElement();
        }

        colorTables->Add( (void *) colortable );

    }
}
예제 #2
0
void ChartSymbols::ProcessColorTables( wxXmlNode* colortableNodes ) {

	wxXmlNode* tableNode = colortableNodes->GetChildren();

	while(tableNode) {
		colTable *colortable = new colTable;
		colortable->tableName = new wxString( tableNode->GetPropVal( _("name"), _("<void>")));

		wxXmlNode* colorNode = tableNode->GetChildren();

		while( colorNode ) {
			S52color color;
			wxString propVal;
			long numVal;

			if( colorNode->GetName() == _("graphics-file") ) {
				colortable->rasterFileName = colorNode->GetPropVal( _("name"), _("<void>") );
				goto next;
			}
			else {
				GET_INT_PROPERTY_VALUE( colorNode, "r", color.R )
				GET_INT_PROPERTY_VALUE( colorNode, "g", color.G )
				GET_INT_PROPERTY_VALUE( colorNode, "b", color.B )

				wxString key = colorNode->GetPropVal( _("name"), _("<N/A>"));
				strncpy( color.colName, key.char_str(), 5 );
				color.colName[5] = 0;

				colortable->colors[key] = color;

				wxColour wxcolor ( color.R, color.G, color.B );
				colortable->wxColors[key] = wxcolor;
			}

			next: colorNode = colorNode->GetNext();
		}

		colorTables->Add( (void *) colortable );
		tableNode = tableNode->GetNext();
	}
}
예제 #3
0
int RazdsParser::ParseCOLS( FILE *fp )
{
    int ret;
    colTable *ct = new colTable;

    // get color table name
    ChopS52Line( pBuf, '\0' );

    ct->tableName = new wxString( pBuf + 19, wxConvUTF8 );

    ColorTableArray->Add( (void *) ct );

    // read color
    ret = ReadS52Line( pBuf, NEWLN, 0, fp );
    while( 0 != strncmp( pBuf, "****", 4 ) ) {
        double x, y, L;

        S52color c;

        ChopS52Line( pBuf, ' ' );
        strncpy( c.colName, pBuf + 9, 5 );
        c.colName[5] = 0;

        sscanf( pBuf + 14, "%lf %lf %lf", &x, &y, &L );

        _CIE2RGB( &c, x, y, L );

        wxString colorName( c.colName, wxConvUTF8 );
        ct->colors[colorName] = c;
        wxColour wxcolor( c.R, c.G, c.B );
        ct->wxColors[colorName] = wxcolor;

        ret = ReadS52Line( pBuf, NEWLN, 0, fp );
    }
    return ret;
}