[swift-users] Need Help with C-to-Swift (finally)

Gage Morgan gagemorgan at outlook.com
Fri Dec 11 15:28:09 CST 2015


Could you put some comments explaining what you did in that code? I wouldn't mind learning to write some wrappers...it's inevitable in the end anyways.
Subject: Re: [swift-users] Need Help with C-to-Swift (finally)
From: harlan at harlanhaskins.com
Date: Fri, 11 Dec 2015 15:46:21 -0500
CC: jason.dusek at gmail.com; swift-users at swift.org
To: gagemorgan at outlook.com

It’s deceptively simple!
Using just the functions exposed by cairo will be a piece of cake. The code will look almost exactly the same and work just as fast/well.
However, bridging the C has some nasty effects to the types of your Swift code. For example, surface is of type COpaquePointer which is really unhelpful.
It’d probably be a great exercise for you and the community to make nice, Swifty wrappers around Cairo to allow people to write beautiful, Cairo-using code.
Like this, except with an actual understanding of libcairo: https://gist.github.com/6b96a1e0ec1ef838b5ea
Best,Harlan

On Dec 11, 2015, at 3:31 PM, Gage Morgan <gagemorgan at outlook.com> wrote:Sir, you've just made my day. So it's really that simple?

Subject: Re: [swift-users] Need Help with C-to-Swift (finally)
From: harlan at harlanhaskins.com
Date: Fri, 11 Dec 2015 15:24:48 -0500
CC: jason.dusek at gmail.com; swift-users at swift.org
To: gagemorgan at outlook.com

So, it’s a very simple almost one-to-one translation of that C code block to Swift.You have to make sure to import CCairo at the beginning of the file, and change the variable declarations to use let instead of the C declaration.
This works for me, as is.

import CCairo
let surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 240, 80)let cr = cairo_create (surface);
cairo_select_font_face(cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD)cairo_set_font_size(cr, 32.0)cairo_set_source_rgb(cr, 0.0, 0.0, 1.0)cairo_move_to(cr, 10.0, 50.0)cairo_show_text(cr, "Hello, world")
cairo_destroy(cr)cairo_surface_write_to_png(surface, "hello.png")cairo_surface_destroy(surface)
On Dec 11, 2015, at 3:21 PM, Gage Morgan <gagemorgan at outlook.com> wrote:Do so here in a few. Want a bug report for that?

Sent from Outlook Mobile



On Fri, Dec 11, 2015 at 12:08 PM -0800, "Harlan Haskins" <harlan at harlanhaskins.com> wrote:

Mind sending your CCairo modulemap?
I’d love to help you get this translated to Swift.
On Dec 11, 2015, at 2:44 PM, Gage Morgan via swift-users <swift-users at swift.org> wrote:I want to call PNG surfaces from Swift, as well as use cairo_line_to() and cairo_move_to() in Swift. Thing is, I need an example of cairo used in Swift so I can apply it to the rest of cairo. 
My goal is to generate an executable that outputs *.png images using swift. 
Thanks for the support,--MGage--

Sent from Outlook Mobile



On Thu, Dec 10, 2015 at 10:40 PM -0800, "Jason Dusek" <jason.dusek at gmail.com> wrote:

When you say, output to Swift, do you mean, call it from Swift? Return the PNG or surface to Swift?
On Thu, 10 Dec 2015 at 22:39 Gage Morgan via swift-users <swift-users at swift.org> wrote:
So, if I had this code written in C:
int
main (int argc, char *argv[])
{
        cairo_surface_t *surface =
            cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 80);
        cairo_t *cr =
            cairo_create (surface);

        cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
        cairo_set_font_size (cr, 32.0);
        cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
        cairo_move_to (cr, 10.0, 50.0);
        cairo_show_text (cr, "Hello, world");

        cairo_destroy (cr);
        cairo_surface_write_to_png (surface, "hello.png");
        cairo_surface_destroy (surface);
        return 0;
}
how would I output to Swift? If I can get one or two examples, I'll be closer to finished with using Cairo in Swift.
_______________________________________________
swift-users mailing list
swift-users at swift.org
https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
swift-users at swift.org
https://lists.swift.org/mailman/listinfo/swift-users
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151211/b90bddb0/attachment.html>


More information about the swift-users mailing list