A new gtk-fortran-extra example: Peter Saville's color code

While waiting for gtk-fortran 4.4, a new example has been added in the gtk-fortran-extra repository (MIT license) : Peter Saville’s color code. It was a personal pretext to learn the basics of object-oriented programming in Fortran. The display uses the Cairo library (vector graphics) of GTK, and among the widgets are: GtkButton, GtkToggleButton, GtkLinkButton, GtkSpinButton, GtkEntry, GtkLabel, GtkStatusbar…

Manchester graphic designer Peter Saville used this code on four record sleeves, the first being the 12" Blue Monday in March 1983. The idea was to underline the modernity of the music track with a color code evoking a computer-readable code (barcode scanners were still a novelty). The cover is also famous for its cut-out in the shape of a 5.25" floppy disk (a modern medium at the time, typically holding 360 kB).

1983 is also :

  • the adoption of the TCP/IP protocol by the ARPANET network on January 1.
  • The release on January 19 of the Apple Lisa, the ancestor of the Macintosh released the following year.
  • The release on March 2 of the Compact Disc in Europe and North America (1982 in Japan).
  • The publication of the MIDI protocol (Musical Instrument Digital Interface) in August.

Amusingly, the Apple Lisa and Blue Monday are both considered milestones in their respective domains and are both commercial failures. The Lisa was too expensive (US$9,995). Although the best selling 12" single of all time, the sleeve of Blue Monday was too expensive too, with its die cut floppy shape and the precise colors asked by Saville for its color code. Money was lost on each copy sold.


I have just added a new functionality in saville_code: the image is now saved both as a PNG file and a SVG file. In fact, the same drawing is made two times, once on screen, once on a SVG surface.

The cairo-basics.f90 gtk-fortran example has also been updated with that same feature (SVG file), plus a PDF file.

The vector graphics Cairo \chi \rho library can render to many surfaces:

Updated: I could probably simplify the process with a recording surface, and replay it two times. It will be the next step…

1 Like