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

Lawrence D'Oliveiro ldo at geek-central.gen.nz
Wed Mar 11 00:33:36 PDT 2015

On Wed, 11 Mar 2015 07:13:48 +0100, Olaf Schmidt wrote:

> But since you insist - here you can look at the entire
> VB6-Form-Code...
> http://vbRichClient.com/Downloads/AlhambraTiles_FormCode.txt

I see a number of limitations. You hard code the size of the pattern,
rather than deriving it from the size of the design elements. Then I
see things like

  For j = 0 To 3: For i = 0 To 3 + j

So you have to make 22 separate copies of the pattern in order to
ensure there are no gaps. A bit excessive, don’t you think?

> And I wasn't trying "to show up deficiencies in Python" (generally) -
> just pointing out inefficient (overcomplicated, if you like that
> better) coding of your Tile-Pattern-generator-routines.

> Anyways, the facts are, that the VB6-Code in the link above:
> - has about factor 2.5 less lines of code than your Python-based
>    Alhambra-Routines at:
>    https://github.com/ldo/qahirah_examples/blob/master/alhambra_tiles
> - is able to produce all kind of variations of the two patterns as
> well

My code is more general than yours.

> - is more near the cairo-base-API (and thus nearly 1:1 portable to C)

Which is something I thought I made clear I was trying to get away from.

> The last point above I've made, since your latest Alhambra-Tiles-
> Revision is producing artefacts with certain angle-arguments...
> Here's the PNG-output, your revised Python-code produced:
> http://vbRichClient.com/Downloads/alhambra_tiles2.py.png
> ...please have a look at the two last images in the Top-Row.

I think you are looking at a version which is already several hours old.
I was able to do complete coverage of the triwing tiling with just 7
copies of the pattern. Unlike your version.

> What I've also noticed (I'm mentioning it only, since you didn't
> label your wrapper as "experimental") ... it broke existing code -
> meaning, that your older alhambra.py-example doesn't work with
> your latest quahira.py anymore

You *did* see this in the README, did you not:

	**WARNING:** This Python binding is still to be considered in a
	state of flux for now, subject to whatever reorganization looks
	to be necessary as experience is gained with using it.

More information about the cairo mailing list