[cairo] Qahirah: A High-Level Cairo API Binding For Python 3

Dan Raymond draymond at foxvalley.net
Fri Mar 6 18:18:57 PST 2015


On 3/6/2015 6:53 PM, Lawrence D'Oliveiro wrote:
> On Fri, 06 Mar 2015 18:34:51 -0700, Dan Raymond wrote:
>
>>> Being done in Python, I can go beyond the language limitations of C,
>>> which constrain Cairo itself.
>> Huh?  Higher level languages like Python are always more limiting
>> than C.
> From
> <https://github.com/ldo/qahirah_examples/blob/master/alhambra_tiles>:
>
>      # construct triwing pattern
>      curve_factor = .7
>      tilt = 30 / deg
>      c0 = Matrix.rotate(30 / deg).map(Vector(1, 0))
>      c3 = Matrix.rotate(- 120 / deg).map(c0)
>      c1 = c0 + (c3 - c0).rotate(tilt) * curve_factor
>      c2 = c3 + (c0 - c3).rotate(tilt) * curve_factor
>      # actually centre part should be thinner, but that would require another curve segment
>
>      elts = [Path.MoveTo(c0)]
>      tips = []
>      for i in range(3) :
>          mat = Matrix.rotate(- i / 3 * 360 / deg)
>          tips.append(mat.map(c0))
>          elts.append(Path.CurveTo(c1, c2, c3).transform(mat))
>      #end for
>      elts.append(Path.Close())
>      triwing = Path(elts)
>
> How much C code would it take to do the same?

I could do it in one line of C code.  That is what functions are for.


More information about the cairo mailing list