FWIW, here are the code fragments I added (to my copy of GDAL 1.4.0), though I have subsequently changed my strategy and don't use it any longer. This makes it possible to use the styles in a GUI, where you can list available styles and have the user select one.

The DataSource/Layer/Feature hierarchy would definitely be useful (to me!) But, long-term, wouldn't a more standards-based system (including GDAL and OGR) like SLD be a better idea?

regards
Tim



*******************************************************************************************************



In ogrfeaturestyle.cpp:

/* = = ====================================================================== */ /* OGRStyleMgr */ /* = = ====================================================================== */

...

/ ****************************************************************************/ /* const char **OGRStyleMgr::GetStyleCount() */ / * */ / ****************************************************************************/
int OGRStyleMgr::GetStyleCount()
{
    if (m_poDataSetStyleTable)
    {
        return  m_poDataSetStyleTable->Count();
    }
    return NULL;
}

/ ****************************************************************************/ /* const char **OGRStyleMgr::GetStyleNames() */ / * */ / ****************************************************************************/
char **OGRStyleMgr::GetStyleNames()
{
    if (m_poDataSetStyleTable)
    {
        return  m_poDataSetStyleTable->GetStyleNames();
    }
    return NULL;
}

...

/* = = ====================================================================== */ /* OGRStyleTable */ /* Object Used to manage and store a styletable */ /* = = ====================================================================== */

...

/ ****************************************************************************/ /* int OGRStyleTable::Count() */ / * */ /* return the number of styles in the table otherwise return -1 */ / ****************************************************************************/
int OGRStyleTable::Count()
{
return (m_papszStyleTable == NULL) ? -1 : CSLCount(m_papszStyleTable);
}

/ ****************************************************************************/ /* int OGRStyleTable::GetStyleNames() */ / * */ /* return a index of the style in the table otherwise return -1 */ / ****************************************************************************/
char **OGRStyleTable::GetStyleNames()
{
    static char **pszNameList = NULL;
    const char *pszName = NULL;
    const char *pszStyleStringBegin = NULL;
    char *pszTmp;

    if (pszNameList)
        CSLDestroy(pszNameList);

    pszNameList = NULL;
    for (int i=0; i<Count(); i++)
    {
        pszStyleStringBegin = strstr(m_papszStyleTable[i],":");

        if (pszStyleStringBegin)
        {
            pszName = CPLStrdup(m_papszStyleTable[i]);
            pszTmp = strstr(pszName,":");
            if (pszTmp)
            {
                pszTmp[0] = '\0';
                pszNameList = CSLAddString(pszNameList, pszName);
            }
        }
    }

    return pszNameList;
}

...


In ogr_featurestyle.h:

class CPL_DLL OGRStyleMgr
{
...

    int GetStyleCount();
    char **GetStyleNames();

...
};

class CPL_DLL OGRStyleTable
{
...
    int   Count();
    char **GetStyleNames();
...
};


*******************************************************************************************************




On Sep 13, 2008, at 12:14 AM, Mateusz Łoskot wrote:

Daniel Morissette pisze:
Mateusz Łoskot wrote:

Now I've got what's the problem.
Yes, looks like this part of API is missing or for some reasons not planned. Perhaps Daniel or Frank will explain.

Style tables were part of the initial design, but were never implemented for any driver as far as I know. That's why the API may still be incomplete.

Daniel,

Thanks for clarifying it. OGR styling stuff is still a new beast to me.

OTOH, if you have implemented drivers that support style tables then you're invited to contribute tickets, patches, or perhaps a RFC describing what you consider is missing to the API to make it really useful.

Yes, I think it's reasonable approach.

Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to