Skip to main content

Simple vector graphics in Python

Project description

Gizeh - Cairo for tourists
===========================

Python has a fast and powerful vector graphics library called PyCairo, but its is difficult to learn and use. Gizeh implements a few classes on top of Cairo that make it easier to use:
::
# Let's draw a red circle !
import gizeh
surface = gizeh.Surface(width=320, height=260) # in pixels
circle = gizeh.circle(r=30, xy= [40,40], fill_color=(1,1,1))
circle.draw(surface)
surface.write_to_png("circle.png")

Gizeh is an open-source software written by Zulko and released under the MIT licence. Everyone is welcome to contribute !
Keep in mind that it is a very basic package, by someone who hasn't read half of the Cairo manual.

Installation
--------------

gizeh can be installed by unzipping the source code in one directory and using this command:
::
(sudo) python setup.py install

You can also install it directly from the Python Package Index with this command:
::
(sudo) pip install gizeh


Gizeh depends on the Python packages PyCairo and Numpy. They will both be automatically installed (if they aren't already) during the installation of Gizeh.

User Guide
-------------

Surfaces
~~~~~~~~

A Surface is a rectangle of fixed dimensions (in pixels), on which you will draw elements, and that you can save as an image:
::
import gizeh

# initialize surface
surface = gizeh.Surface(width=320, height=260) # in pixels

# Now make a shape and draw it on the surface
circle = gizeh.circle(r=30, xy= [40,40], fill_color=(1,1,1))
circle.draw(surface)

# No export the surface
surface.write_to_png("circle.png") # saves as an image.
surface.get_npimage() # returns a (width x height x 3) numpy array


Elements
~~~~~~~~~

Basic elements are circles, rectangles, etc., that you can draw on a surface using `my_element.draw(surface)`. You can specify the properties and coordinates of these elements at creation time:

- `xy` : coordinates of the center of the object. (0,0), which is the defaut, corresponds to the upper left corner of the final picture.
- `angle` : angle (in radians) of the rotation of the element around it its center `xy`.
- `fill_color` : the color with which the element will be filled. Default (None) is no fill. The colors are represented by tuples (a,b,c) (for (red, green, blue) where a,b,c are comprised between 0 and 1. For instance (0,0,0) is black, (1,1,1) is white.
- `stroke_color` : the color of the element's contour.
- `stroke_width` : the width (in pixels) of the element's contour. Default is 0 (no stroke).

Examples:
::
Pi = 3.14
circ = gizeh.circle(r=30, xy=30, fill_color=(1,1,1))
rect = gizeh.rectangle(lx=60.3, ly=45, xy=30, fill_color=(0,1,0), angle=Pi/8)
sqr = gizeh.square(l=20, stroke_color=(1,1,1), stroke_width= 1.5)
arc = gizeh.arc(r=20, a1=Pi/4, a2=3*Pi/4, fill_color=(1,1,1))


Transformations
~~~~~~~~~~~~~~~~

Any element can be tranformed (translated, rotated or scaled). All transformations are *outplace*: they do not modify the original element, they create a modified version of it.

Examples:
::
square_1 = gizeh.square(l=20, xy = [30,35], fill_color=(1,0,0))
square_2 = square_1.rotate(Pi/8) # rotation around [0,0] by default
square_3 = square_2.rotate(Pi/4, center=[10,15]) # rotation around a center
square_4 = square_1.scale(2) # two times bigger
square_5 = square1.scale(sx=2, sy=3) # width times 2, height times 3
square_6 = square_1.scale(2, center=[30,30]) # zoom: scales around a center
square_7 = square_1.translate(xy=[5,15]) # translation

Groups
~~~~~~~

A Group is a collection of elements which will be transformed and drawn together. The elements can be a basic element (square, circle...) or even groups.

Examples:
::
square = gizeh.square(l=20, fill_color=(1,0,0), xy=(40,40))
circle = gizeh.circle(r=20, fill_color=(1,2,0), xy=(50,30))
group = gizeh.Group([square, circle])

gsurface = gizeh.Surface(width=300,height=200)
group.draw(surface)
group_2 = group.translate(xy=[30,30]).rotate(Pi/4)
group_2.draw(surface)

That's all folks !
~~~~~~~~~~~~~~~~~~~
To go further, see the examples in the `examples` folder or (wishful thinking) on the Web.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gizeh-0.1.0.tar.gz (5.1 kB view details)

Uploaded Source

File details

Details for the file gizeh-0.1.0.tar.gz.

File metadata

  • Download URL: gizeh-0.1.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gizeh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 95ba30e703f180bac968f8851bfb897bac2fc2d5ffe115bf2094c451bddf4036
MD5 1702206a13dbe1528f074e5bb83261ff
BLAKE2b-256 fb1dce74bf1c0179fdc108e7e3fb13d8a7f2c921ba08194b955b0f0f29e997cb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page