Sylvain BERTRAND wrote:
> Unfortunately, the C toolkits over there are turning very bad:
> GTK+ and the EFL do depend on harfbuzz for their font layout
> computation which is an *really* ugly c++ object-oriented
> brainfuckage (uglier that the glib SDK dependencies!). I did a C
> port of harfbuzz (drop-in replacement), but for basic text layout
> (roman style). Then to keep your GUI suckless, you should package
> a version of a toolkit to allow trashing harfbuzz, or avoid crazy
> SDK deps...  This is unfortunately more work.

Hello,

For a proof-of-concept, SDL (or X) is enough.  The editor needs this
functionality:

- Draw shapes.
- Change curves of existing shapes.
- Change properties of existing shapes:
  stroke width, stroke color, and fill color
- Load (paint[1] lets the user type 'rFILE' to load FILE)
- Save (paint[1] lets the user type 'wFILE' to save FILE)
- Nest/reference other files, like "symbols" in Adobe Flash.

SVG and Asymptote both look very complicated...  PostScript is a good
output language but not a good source-file language.  Maybe we need a
new source-file format.  See the attached proposal.

How about a trio of programs like this?

vectorrender - render a file and forbid circular dependencies.
vectoredit - graphically edit a single file.  fork()s to `vectorrender`
vector2ps - convert a file to PostScript.

[1]: http://man.cat-v.org/9front/1/paint

Start a new shape like this:

        $ stroke-width stroke fill

For example...

        $ 1.0 0x000000ff 0xff0000ff

Then give a list of curves in the form:

        x y x2 y2 x3 y3

... where (x2, y2) and (x3, y3) are control points on the curve.
To close the shape, use a period (.) on a line by itself.

        .

So, a full shape description looks like this:

        $ 1 0x000000ff 0xff0000ff
        0 0 0 0 0 0
        100 0 100 0 100 0
        100 100 100 100 100 100
        0 100 0 100 0 100
        .

Import and transform another file like this:

        < filename sx rx tx ry sy ty

Where sx, rx, tx, ry, sy, and ty are the first two rows in a linear
transformation matrix.  The file will be transformed by this matrix.

sx      rx      tx
ry      sx      ty
0       0       1

To import without transforming, just use these values:

        < filename 1 0 0 0 1 0

Reply via email to