本文整理汇总了C++中OGRStyleTool::GetRGBFromString方法的典型用法代码示例。如果您正苦于以下问题:C++ OGRStyleTool::GetRGBFromString方法的具体用法?C++ OGRStyleTool::GetRGBFromString怎么用?C++ OGRStyleTool::GetRGBFromString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OGRStyleTool
的用法示例。
在下文中一共展示了OGRStyleTool::GetRGBFromString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addstylestring2kml
void addstylestring2kml (
const char *pszStyleString,
StylePtr poKmlStyle,
KmlFactory * poKmlFactory,
PlacemarkPtr poKmlPlacemark,
OGRFeature * poOgrFeat )
{
LineStylePtr poKmlLineStyle = NULL;
PolyStylePtr poKmlPolyStyle = NULL;
IconStylePtr poKmlIconStyle = NULL;
LabelStylePtr poKmlLabelStyle = NULL;
/***** just bail now if stylestring is empty *****/
if ( !pszStyleString || !*pszStyleString ) {
return;
}
/***** create and init a style mamager with the style string *****/
OGRStyleMgr *poOgrSM = new OGRStyleMgr;
poOgrSM->InitStyleString ( pszStyleString );
/***** loop though the style parts *****/
int i;
for ( i = 0; i < poOgrSM->GetPartCount ( NULL ); i++ ) {
OGRStyleTool *poOgrST = poOgrSM->GetPart ( i, NULL );
if ( !poOgrST ) {
continue;
}
switch ( poOgrST->GetType ( ) ) {
case OGRSTCPen:
{
GBool nullcheck;
poKmlLineStyle = poKmlFactory->CreateLineStyle ( );
OGRStylePen *poStylePen = ( OGRStylePen * ) poOgrST;
/***** pen color *****/
int nR,
nG,
nB,
nA;
const char *pszcolor = poStylePen->Color ( nullcheck );
if ( !nullcheck
&& poStylePen->GetRGBFromString ( pszcolor, nR, nG, nB, nA ) ) {
poKmlLineStyle->set_color ( Color32 ( nA, nB, nG, nR ) );
}
double dfWidth = poStylePen->Width ( nullcheck );
if ( nullcheck )
dfWidth = 1.0;
poKmlLineStyle->set_width ( dfWidth );
break;
}
case OGRSTCBrush:
{
GBool nullcheck;
poKmlPolyStyle = poKmlFactory->CreatePolyStyle ( );
OGRStyleBrush *poStyleBrush = ( OGRStyleBrush * ) poOgrST;
/***** brush color *****/
int nR,
nG,
nB,
nA;
const char *pszcolor = poStyleBrush->ForeColor ( nullcheck );
if ( !nullcheck
&& poStyleBrush->GetRGBFromString ( pszcolor, nR, nG, nB, nA ) ) {
poKmlPolyStyle->set_color ( Color32 ( nA, nB, nG, nR ) );
}
break;
}
case OGRSTCSymbol:
{
GBool nullcheck;
GBool nullcheck2;
OGRStyleSymbol *poStyleSymbol = ( OGRStyleSymbol * ) poOgrST;
/***** id (kml icon) *****/
//.........这里部分代码省略.........
示例2: ICreateFeature
//.........这里部分代码省略.........
if( nOffset < 0 )
{
VSIFPrintfL(fp, "-" );
nHours = ABS(nHours);
}
else
VSIFPrintfL(fp, "+" );
VSIFPrintfL(fp, "%02d%02d", nHours, nMinutes );
}
}
else
{
VSIFPrintfL(fp, "%s", poFeature->GetFieldAsString(i));
}
}
if( bClassicGML )
VSIFPrintfL(fp, "</%s>\n", pszName);
else
VSIFPrintfL(fp, "</property>\n");
CPLFree(pszName);
}
/* Add OGR_STYLE from feature style string (if asked) */
if( bAddOGRStyleField && poFeatureDefn->GetFieldIndex("OGR_STYLE") < 0 )
{
if( bClassicGML )
VSIFPrintfL(fp, " <OGR_STYLE>");
else
VSIFPrintfL(fp, " <property name=\"%s\">", "OGR_STYLE");
if( poFeature->GetStyleString() != NULL )
{
char* pszValue = OGRGetXML_UTF8_EscapedString( poFeature->GetStyleString() );
VSIFPrintfL(fp, "%s", pszValue);
CPLFree(pszValue);
}
if( bClassicGML )
VSIFPrintfL(fp, "</OGR_STYLE>\n");
else
VSIFPrintfL(fp, "</property>\n");
}
/* Derive R_G_B field from feature style string */
if( bAddRGBField && poFeatureDefn->GetFieldIndex("R_G_B") < 0 )
{
if( bClassicGML )
VSIFPrintfL(fp, " <R_G_B>");
else
VSIFPrintfL(fp, " <property name=\"%s\">", "R_G_B");
if( poFeature->GetStyleString() != NULL )
{
OGRGeometry* poGeom = poFeature->GetGeometryRef();
OGRwkbGeometryType eGeomType =
poGeom ? wkbFlatten(poGeom->getGeometryType()) : wkbUnknown;
OGRStyleMgr oMgr;
oMgr.InitFromFeature(poFeature);
for(int i=0;i<oMgr.GetPartCount();i++)
{
OGRStyleTool* poTool = oMgr.GetPart(i);
if( poTool != NULL )
{
const char* pszColor = NULL;
if( poTool->GetType() == OGRSTCPen &&
eGeomType != wkbPolygon && eGeomType != wkbMultiPolygon )
{
GBool bIsNull;
pszColor = ((OGRStylePen*)poTool)->Color(bIsNull);
if( bIsNull ) pszColor = NULL;
}
else if( poTool->GetType() == OGRSTCBrush )
{
GBool bIsNull;
pszColor = ((OGRStyleBrush*)poTool)->ForeColor(bIsNull);
if( bIsNull ) pszColor = NULL;
}
int R, G, B, A;
if( pszColor != NULL &&
poTool->GetRGBFromString(pszColor, R, G, B, A) && A != 0 )
{
VSIFPrintfL(fp, "%02X%02X%02X", R, G, B);
}
delete poTool;
}
}
}
if( bClassicGML )
VSIFPrintfL(fp, "</R_G_B>\n");
else
VSIFPrintfL(fp, "</property>\n");
}
VSIFPrintfL(fp, " </feature>\n");
if( bClassicGML )
VSIFPrintfL(fp, " </featureMember>\n");
poFeature->SetFID(nNextFID ++);
return OGRERR_NONE;
}