On one of the iterations through this code, styleChars is: 'vegetation_low: BRUSH(fc:#A0F0A0); LABEL(c:#004000,s:18pt,t:{title})'
So perhaps the inclusion of the style name is the problem? This was read into a style table from a text file using 'OGR_STBL_LoadStyleTable()'. I had assumed that a similar format to .ofs was suitable. If this is not the case, how should I read a style table from a text file in such a way that I can distinguish the various styles by name? In guess my more general question is: What is the correct way to read styles from an arbitrary text file into a style table, and then use a style manager to get the various parts/tools? On 3 Aug 2014, at 8:26 pm, Even Rouault <even.roua...@mines-paris.org> wrote: > Le dimanche 03 août 2014 12:11:42, Nik Sands a écrit : >> I'm just starting out using the styles features of OGR (using the C API) >> but at struggling with a few elements of it. >> >> My code (copied below) fails to get any OGRStyleToolH. Ie, the "if ( tool >> )" block never gets run, because 'tool' is always NULL at the point >> indicated by the comment. But the execution does reach that point in the >> code which indicates that the OGRStyleMrgH does in fact include at least >> one part (tool). >> >> I'd be grateful if somebody could point out what I'm doing wrong. > > Nothing strikes me as wrong. A potential explanation is that styleChars > doesn't contain a valid OGR Feature Style string. > GetPartCount() counts the number of ";" separating style parts, but it > doens't > check that each style part actually begins by a recognized tool name (PEN, > BRUSH, SYMBOL, LABEL). OGR_SM_GetPart() does this check however and if it > cannot recognize it it returns a NULL tool. > >> >> Thanks, >> Nik. >> >> >> ------------------------------------------- >> const char *styleChars = OGR_STBL_GetNextStyle(table) ) ) >> NSString *styleName = [NSString >> stringWithUTF8String:OGR_STBL_GetLastStyleName(table)]; OGRStyleMgrH >> styleMgr = OGR_SM_Create(NULL); >> OGR_SM_InitStyleString(styleMgr, styleChars); >> >> >> for ( int i = 0; i < OGR_SM_GetPartCount(styleMgr, NULL); i++ ) >> { >> OGRStyleToolH tool = OGR_SM_GetPart(styleMgr, i, NULL); >> >> if ( tool ) // 'tool' always NULL here >> { >> switch ( OGR_ST_GetType(tool) ) >> { >> case OGRSTCPen: >> self.pen = tool; >> break; >> >> case OGRSTCBrush: >> self.brush = tool; >> break; >> >> case OGRSTCSymbol: >> self.symbol = tool; >> break; >> >> case OGRSTCLabel: >> self.label = tool; >> break; >> >> default: >> NSLog(@"Unknown style tool type!"); >> break; >> } >> } >> } >> ------------------------------------------- >> >> >> _______________________________________________ >> gdal-dev mailing list >> gdal-dev@lists.osgeo.org >> http://lists.osgeo.org/mailman/listinfo/gdal-dev > > -- > Geospatial professional services > http://even.rouault.free.fr/services.html _______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev