Curtis,
     Hmm...first off, the "gerbv_export..." function is using cairo for 
the rendering, so it should be no different from doing it manually with 
cairo calls.  You may want to look into changing some of the settings 
and using that method.
     But, if you want to do it using cairo directly, I'm guessing your 
problem is just centering the display output onto your surface.  Use 
"gerbv_render_zoom_to_fit_display (mainProject, &screenRenderInfo);" to 
load in the correct translation/zoom values into the screenRenderInfo 
struct.  Then use that struct when you call "gerbv_render_all_layers...".

Julian

On 04/01/2011 11:42 AM, Curtis C. Pope wrote:
> Julian,
>
> Thanks for the quick response.  I have tried the scale factor with 0 and
> 1, actually forgot to change it when sending the snippet.  Same result.
>
> I have used the code in example3 successfully, but the rendering isn't
> as sharp as what I get with cairo.  I am converting some code over that
> used another incomplete gerber parsing library and cairo gives me really
> nice control of the final output.
>
> I know the surface is declared properly and works because I can write
> directly to it, example:
>
>          cairo_set_source_rgba (cr, 0,0,0, 1);
>          cairo_paint (cr);
>
> if I change the RBG values, I get a different color background.  What
> doesn't seem to be working is the routine:
>
> gerbv_render_layer_to_cairo_target (cr, mainProject->file[i],
> &screenRenderInfo);
>
> OR
>
> gerbv_render_all_layers_to_cairo_target (mainProject, cr,
> &screenRenderInfo);
>
> Again, any pointers would be helpful.  Perhaps I'm not delcaring
> something else I need to in screenRenderInfo?
>
> Curtis
>
>
> On 4/1/2011 11:34 AM, Julian Lamb wrote:
>> Curtis,
>>      A couple things....first, you have scale factors set to 0 in your
>> snippet.  They will need to be non-zero to show anything (1 is the
>> default).
>>      Have you looked at using the
>> "gerbv_export_png_file_from_project_autoscaled" function?  It's
>> probably the preferred method of outputting a PNG file, since it will
>> handle scaling the board to fit your PNG resolution.  Look at
>> example3.c in the doc/example-code directory within the git tree.  You
>> can avoid ever having to deal with raw cairo surfaces using this
>> function.  Hope this helps.
>>
>> Cheers--
>> Julian
>>
>> On 04/01/2011 11:26 AM, Curtis C. Pope wrote:
>>> Does anyone have a working example of using Cairo Rendering to a PNG
>>> file?  I am converting some existing cairo code and can't seem to get it
>>> to work.  I get it to create the surface and write the file, but none of
>>> the layer info is there.  I'm sure its something simple I am missing
>>> with libgerbv but can't figure it out.
>>>
>>> Here is a code snippet:
>>>
>>> #include "gerbv.h"
>>>
>>> int
>>> main(int argc, char *argv[]) {
>>>        /* create a top level libgerbv structure */
>>>        gerbv_project_t *mainProject = gerbv_create_project();
>>>        gerbv_render_info_t screenRenderInfo;
>>>            screenRenderInfo.renderType =
>>> GERBV_RENDER_TYPE_CAIRO_HIGH_QUALITY;
>>>        screenRenderInfo.displayWidth = 1024;
>>>        screenRenderInfo.displayHeight = 768;
>>>        screenRenderInfo.scaleFactorX = 0;
>>>        screenRenderInfo.scaleFactorY = 0;
>>>
>>>
>>>        /* parse my Gerber Files */
>>>
>>>        gerbv_open_layer_from_filename (mainProject, "Nixie Tube
>>> Breakout.GTO");
>>>        gerbv_open_layer_from_filename (mainProject, "Nixie Tube
>>> Breakout.GTS");
>>>        gerbv_open_layer_from_filename (mainProject, "Nixie Tube
>>> Breakout.TXT");
>>>        gerbv_open_layer_from_filename (mainProject, "Nixie Tube
>>> Breakout.GTL");
>>>
>>>        /* Invert the Solder Mask Layer */
>>>        mainProject->file[1]->transform.inverted = TRUE;
>>>
>>>        /* Create the Cairo Surface */
>>>        cairo_surface_t *surface;
>>>        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
>>> 1024, 768);
>>>           cairo_t *cr = cairo_create (surface);
>>>
>>>           /* render all layers using the simple method */
>>>            gerbv_render_all_layers_to_cairo_target (mainProject, cr,
>>> &screenRenderInfo);
>>>
>>>        /* Write the service to file */
>>>        cairo_surface_write_to_png(surface, "test.png");
>>>
>>>
>>>           cairo_destroy (cr);
>>>
>>>        return 0;
>>> }
>>>
>>> Thanks!
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> Create and publish websites with WebMatrix
>>> Use the most popular FREE web apps or write code yourself;
>>> WebMatrix provides all the features you need to develop and
>>> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
>>> _______________________________________________
>>> Gerbv-devel mailing list
>>> Gerbv-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gerbv-devel
>>
>
> ------------------------------------------------------------------------------
> Create and publish websites with WebMatrix
> Use the most popular FREE web apps or write code yourself;
> WebMatrix provides all the features you need to develop and
> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
> _______________________________________________
> Gerbv-devel mailing list
> Gerbv-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gerbv-devel

------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Gerbv-devel mailing list
Gerbv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gerbv-devel

Reply via email to