Sorry, my mistake... I had my logging in the wrong place.  styleChars is 
actually of the form (including the leading space):

        ' PEN(c:#A08080,w:2pt); LABEL(c:#000000,s:18pt,t:{title})'


On 3 Aug 2014, at 8:35 pm, Nik Sands <nix...@nixanz.com> wrote:

> 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

_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to