[cairo] What is the closure in stream output to file based surfaces for?

David Weiß David.Weiss at ptvgroup.com
Tue Jul 29 02:03:57 PDT 2014


Hey,

I want to implement file output for a rendering application and want to use C++ file streams using the following callback write function:

    cairo_status_t cairo_write_func (void *closure, const unsigned char *data, unsigned int length)
    {
        try
        {
            const std::string s(data, length);
            fout << s;
            fout.flush();
        }
        catch (std::exception &e)
        {
            return CAIRO_STATUS_WRITE_ERROR;
        }

        return CAIRO_STATUS_SUCCESS;
    }

I just can't figure out what the closure is for.
Can anyone explain the concept to me?
Is it comparable to variable capturing in C++11 closures?
Could I just pass nullptr as I do not use it anyway?

Thanks,
--
David Weiß

PTV GROUP
Logistics Software Development

Haid-und-Neu-Str. 15, 76131 Karlsruhe, Germany

david.weiss at ptvgroup.com<mailto:david.weiss at ptvgroup.com>
www.ptvgroup.com<http://www.ptvgroup.com/>

http://ptv.to/facebook

PTV Planung Transport Verkehr AG
Headquarters: Karlsruhe
Executive Board: Vincent Kobesen (CEO)
Chairman of the Supervisory Board: Dr. h.c. Frank-Jürgen Weise
Commercial Register (HRB-Nr): 109262
Local Court: Mannheim

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20140729/7b37e147/attachment.html>


More information about the cairo mailing list