<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>All,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'> I have discovered the basic problem that I am running into with this application. The PNG files were created for 600 dpi and I want the PS output created for 600 dpi, but it appears the PS output is getting created for something like 72 dpi. Is it possible to tell the psSurface that it should be rendering the image data for a particular resolution? I have tried cairo_surface_set_fallback_resolution on the psSurface, but it had no effect.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Tom R.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> cairo-bounces+tom.richenderfer=xerox.com@cairographics.org [mailto:cairo-bounces+tom.richenderfer=xerox.com@cairographics.org] <b>On Behalf Of </b>Richenderfer, Tom<br><b>Sent:</b> Thursday, February 02, 2012 11:15 AM<br><b>To:</b> cairo@cairographics.org<br><b>Subject:</b> [cairo] Copying from one surface to another<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hello,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> I am new to using Cairo and I am having a problem getting my code to work correctly. I have a set of PNG files that I want Cairo to read in and copy to a PS surface (doing a PNG -> PS conversion). The code seems to work except that all of the PS pages in the resulting PS file are blank. I am following the example given in the Cairo FAQ about copying surfaces. Any ideas on what I am doing wrong? The basic code is:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // create Cairo PS surface<o:p></o:p></p><p class=MsoNormal> psSurface = cairo_ps_surface_create("/var/tmp/PNG2PSPlugin.ps", 864, 1584);<o:p></o:p></p><p class=MsoNormal> if(cairo_surface_status(psSurface) != CAIRO_STATUS_SUCCESS)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> return(false);<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // create context<o:p></o:p></p><p class=MsoNormal> psTarget = cairo_create(psSurface);<o:p></o:p></p><p class=MsoNormal> if(cairo_status(psTarget) != CAIRO_STATUS_SUCCESS)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // could not create context, abort<o:p></o:p></p><p class=MsoNormal> return(false);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // loop to read the page png files into a PNG surface and paint into a PS surface<o:p></o:p></p><p class=MsoNormal> for(pageNum = 1; ; pageNum++)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // build the file name<o:p></o:p></p><p class=MsoNormal> sprintf(pageFileName, "/var/tmp/PNGFile%d.png", pageNum);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // try to open the file<o:p></o:p></p><p class=MsoNormal> dataFileHandle.open(pageFileName, ios::in | ios::binary);<o:p></o:p></p><p class=MsoNormal> if(!dataFileHandle.is_open())<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // at end of file set<o:p></o:p></p><p class=MsoNormal> break;<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> else<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> dataFileHandle.close();<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // create the png surface with the file<o:p></o:p></p><p class=MsoNormal> pngSurface = cairo_image_surface_create_from_png((const char*)pageFileName);<o:p></o:p></p><p class=MsoNormal> if(cairo_surface_status(pngSurface) != CAIRO_STATUS_SUCCESS)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // could not create png surface, abort<o:p></o:p></p><p class=MsoNormal> return(false);<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // paint the png surface to the ps surface<o:p></o:p></p><p class=MsoNormal> cairo_set_source_surface(psTarget, pngSurface, 0.0, 0.0);<o:p></o:p></p><p class=MsoNormal> cairo_paint(psTarget);<o:p></o:p></p><p class=MsoNormal> cairo_surface_show_page(psSurface);<o:p></o:p></p><p class=MsoNormal> cairo_surface_destroy(pngSurface);<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // check on the context<o:p></o:p></p><p class=MsoNormal> if(cairo_status(psTarget) != CAIRO_STATUS_SUCCESS)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // something went wrong, abort<o:p></o:p></p><p class=MsoNormal> return(false);<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // delete the context<o:p></o:p></p><p class=MsoNormal> cairo_destroy(psTarget);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // close out drawing to the ps surface<o:p></o:p></p><p class=MsoNormal> cairo_surface_finish(psSurface);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // check the status of the ps surface<o:p></o:p></p><p class=MsoNormal> if(cairo_surface_status(psSurface) != CAIRO_STATUS_SUCCESS)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> // something went wrong, abort<o:p></o:p></p><p class=MsoNormal> return(false);<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // done with the ps surface<o:p></o:p></p><p class=MsoNormal> cairo_surface_destroy(psSurface);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Tom R.<o:p></o:p></p></div></body></html>