26 July 2014
Development update: Spread Editor and engraving
The spread editor has received a bit of polishing lately. I'm working on a 450-ish page book of old cartoons,
an excellent way to expose terrible bugs and inefficiencies in the program! To aid that, you can now more easily adjust page markers,
to quickly show the status of pages, such as red for trouble spots, or white for done. You can see some of this
in a new booklet making tutorial below. It demonstrates from start to finish how to use Laidout to make a booklet
from source images on your hard drive.
Also, the engraver fill tool can now handle stacks of point groups, which are collections of lines that can have different
settings like direction type (linear, circular, radial), colors, and other settings. This makes it pretty easy to overlay a
white stack on a black stack to simulate dashed lines. I've almost completely redone the
floating control panel to be more adaptable for future settings. For instance you can now set the thickness threshold below which
a point is off, and another threshold below which lines are rendered with true dashed lines. At least supposed to be rendered with
dashed lines. Still to do is actually rendering like that!
13 April 2014
Version 0.094c, another bug fix!
Fixed a couple small bugs in the engraver tool to at least allow it to load properly.
I have a lot of plans for this tool in the next full Laidout release, such as
more accurate block out, image tracing, something like Inkscape's node sculpting tools,
various pressure sensitive enhancements and more.
14 March 2014
Laidout 0.094b, bug fix
Just released a kind of bug fix for version 0.094. In this one:
- Fixed loading bug for tile files for use in the clone tiler
- Added a spiral tiling
- Added ability to define custom page sizes in the Signature Interface. Just click the
numbers next to the paper name to set up custom width and height.
- Added a freehand interface to create lines, "stroked" lines, or mesh along lines.
This is more proof of concept right now, and is only accessible when you run
laidout --experimental. Look for better integration of freehand capability in future releases.
Laidout Version 0.094 is at last
20 February 2014
Laidout version 0.094 released! Yipyip!
Laidout Version 0.094 is at last
available, as source or an
amd64 precompiled deb package, for you to experiment with. As always, Laidout is very much a work in progress.
I finally stopped myself from starting to implement more new tools, in order to squeeze out this release.
Consequently this release is more like a rough draft of many new things. Save often.
I try to fix any bugs people tell me about, so when you find some, you can let me know via the mailing list,
This release has taken so long on account of a lot of under the hood refactoring, and investigating its potential.
Also there are rough implementations of a variety of new tools.
While there is still no native text tool (I really swear I'm working on it), what IS new in this release:
New signature editor. This is the most stable new feature.
Signatures have been very much reworked to be more flexible. Before, you could only
have one type of signature, with only one paper size and one folding pattern. These senseless shackles
have been rent asunder, and now you may stack different kids of signatures together, composed of
different numbers and sizes of sheets of paper. You might want to do this, for instance, if you have resources for only
one color plate, and a lot of black and white plates. You simply define the one color sheet, and insert into
a stack of the black and white sheets. Please note that currently the inserts are individually folded before inserted.
I have plans to be able to tag specific sheets within multi-sheet folds as specific kinds of paper, but it's not
quite implemented yet.
See a demo of the new editor here.
- Unified imposition window. It's now a little easier to switch between various imposition types.
Under the document menu in the upper left, select "Edit Imposition", and it will default to the relevant
editor. Click drop down in the lower left to select a different imposition type. Not necessarily the
cleanest ui, but it's much more adaptable than before, plus it allows impose-only mode to access
all imposition types.
- New color picker. Now if you double click on the mysterious box of color on the bottom of the window, you can
use sliders to choose colors. They operate similar to the brilliant sliders in the Gimp,
where you drag in the top half to set absolutely, and drag in the bottom half to pan the value with more precision.
Clicking and dragging that old mysterious box with left, middle, and right buttons has
always allowed you to set red, green, and blue color components, but it is nice to have less mysterious options.
One caveat, there are sliders for rgb, cmyk, hsv, and alpha, but the cmyk sliders are currently a bit wonky.
- Shortcuts window. You may now define custom shortcuts without editing config files manually. Press F1 to pop up
the shortcut editor, which initializes to the context you are in. Click on the key to redefine. One feature that didn't quite
make it in this release, made possible with the new scripting infrastructure,
will be the ability to run custom scripts mapped to whatever keys you want. This will come in the next release.
- Cloning. You may now clone objects. Similar to Inkscape,
press space while dragging single objects or a selection of objects to create copies (not clones).
If you press control-space, then drop clones of the object(s) you are dragging.
One of the new experimental tools is a recursive cloner. You can
use various predefined clone patterns, currently based on the 17 wallpaper groups,
and 32 different uniform colorings.
The next release will have an editor to create custom configurations of clone clusters to create things like
fractal ferns, as well as define custom transform groups for symmetry cloning!
The controls are a bit minimal, there are many obvious enhancements to be done.
One important consideration is that you shouldn't ever delete your original object. If you do, your clones will
not remember it when you reload your document. This is a big bug, but requires a fair amount of work to
fix, so I delayed the fix till the next release. Perhaps not a user friendly choice, but who said life was fair?
- Engraver Tool. This is a tool that allows you to define fields of engraved lines, such as in printmaking.
It uses the same mesh controls to define general line direction, and lets you manually touch up line width and spacing.
Press 'm' to alternate between mesh editing and a brush to change line thickness. Hold shift and click-drag to change brush size.
Normal drag thickens lines, or control-drag to make lines thinner.
A not quite completed feature will be much more flexible line spacing controls involving merging and splitting lines.
- Alignment rules. This is a very experimental feature, off by default. Enable by running "laidout --experimental".
Using the current path alignment and n-up tools is fun, but it is just a one time alignment. With alignment rules, you may
now define custom rules for alignment of objects to parents, other objects, margin area of pages, or the pages themselves.
Not only can you shift objects to align, the rules are flexible enough to allow using specific anchor points to stretch, resize,
and rotate objects. This makes for fancy adaptive layout that changes automatically upon resizing your pages or objects.
Currently, once you move an object around that others depend on, you have to press control-r to reevaluate the rules.
Some of the rules, ie shearing and sometimes stretching, are proving rather difficult to debug, which is why this is still
even more experimental than the other Laidout tools. No picture, because functionality, for all this hype, is currently not satisfactory.
- Scripting. Scripting has been in the works for a while, and it is kind of solidifying into something useable. It is still a bit rough.
I'm sure there are many bugs with it, but as they are worked out, I'm planning this to streamline the way to easily attach
other scripting languages in a (hopefully) clear, concise manner. Hopefully, some day this backend will also be a very adaptable way to
provide a transportable undo framework that can also be used for version control and multiuser syncing when working on the same document.
- Graphical Shell. Having an internal scripter also helps standardize what tools, views, and objects can do.
This in turns allows an easy graphical shell, a kind of high powered command searcher. It follows
what context you are in, and allows typing commands with on the fly calculations to make things happen.
This has a lot of potential for blending the ease of a gui with the power of the command line.
There still needs to be a lot of glue code written to tie various Laidout objects to scripting. It's getting there slowly.
Expect more refinements in future releases.
Next up in the development road map, aside from debugging and polishing the myriad rough spots of all the new stuff above, is reprogramming the screen renderer!
I'm almost done implementing a cairo based rendering
backend, which will simplify many issues, such as mesh rendering, generally making things look better, and most importantly, text rendering. Once I
can render text in a flexible way, perhaps I can finally get a text tool working. I have 800 or so lines of code and counting, but still
a long way to go to make a proper text tool.
Read old news
What the hell?
Laidout is desktop publishing software, particularly for multipage, cut and folded booklets,
with page sizes that don't even have to be rectangular. Laidout allows editing in the master printing page order, or,
just as easily in reader spreads, as it would appear after the book is assembled. Laidout's approach to imposing pages is broad enough
to allow non-rectangular pages, paving the way for easy creation of, for instance, dodecahedron calendars, or indeed any layout on arbitrary
polyhedral surfaces (sometimes otherwise known as packaging).
See the Laidout Features page for what it can do now, the Roadmap
for what it's supposed to do eventually, and this
(incomplete) comparison to a few other desktop publishing and vector graphics programs.
It is in the "Mostly does what I want on my machine" stage of development.
I try to have a new "stable" release once
in awhile, at least when various other projects
don't eat all my time, which seems to happen a lot lately.
"Stable" in this context means that it is only slightly less buggy then the raw development branch.
I have been using Laidout to lay out my comics into books since 2006.
So, one out of 7 billion people agree that Laidout might actually be useful!
An example of what I use Laidout for is to make small booklets by chopping up
tabloid sized paper (11x17 inches). With a fold, two cuts, and stapling, one can make three cute
little 5.5 x 5.6 inch books.
Many more features are planned, like such non-essentials (to me anyway) as text! Who needs text
when a picture is worth a thousand words?
Laidout is currently built with the Laxkit, an X gui toolkit.
Laidout and the Laxkit are both rough and highly experimental. The main development
aim is to make a well documented, very modular, expandable, and configurable desktop publishing program,
with an emphasis on developing features and interfaces not commonly found in other programs, as long as they are useful.
A side project is to foster some manner of tool plugins in various other software that allows sharing of these
useful interfaces within those other software and vice versa.
Laidout only works on variations of Linux for now. It should work on Macs after a small amount of hacking,
but I don't have access to a Mac to make it so.
The current release is Version 0.094.
Really these are more like development snapshots than anything resembling stability. You can help
turn Laidout into something like stable by posting feedback on your experiences with it to the
Laidout mailing list, or dropping me a line.
In any case, you can get Laidout in source code form, or as a deb package for amd 64bit systems. The main download area is
laidout-0.094c.tar.bz2 (the source code)
laidout_0.094c_amd64.deb (binary, should work on Debian Unstable, and recent Ubuntu)
Compiling the source
If you download the source code form, you must compile and install from the command line. First, as root or with "sudo", install dependencies:
apt-get install g++ libpng12-dev libx11-dev libxi-dev libxft-dev libcups2-dev libimlib2-dev libfontconfig-dev libfreetype6-dev libssl-dev xutils-dev
If you want to use the unstable polyhedron unwrapper, then you need to also do this:
apt-get install libgraphicsmagick++1-dev mesa-common-dev libglu1-mesa-dev libftgl-dev
tar xvfj laidout-0.094c.tar.bz2
If you want to attempt to use the unstable polyhedron unwrapper, then you need add --yesgl to the configure line above,
or try the standalone version in laidout-0.094/src/polyptych.
Alternately, you can build a deb package from the source tar like the following. You'll need to have dpkg-dev and fakeroot packages installed.
This will create an installable deb package! If you try this and it doesn't work, please let me know. It is supposed to work!!
tar xvfj laidout-0.094c.tar.bz2
For the development version, you can browse the subversion repository
or you can grab a copy from the repository with this command:
svn checkout svn://svn.code.sf.net/p/laidout/code/trunk laidout-svn
To compile from svn source, see the further instructions in the README.
If you think you might like to help develop Laidout, please see this page.
Also, go to the
Laidout Sourceforge project page for
mailing lists, project statistics, and other Sourceforge goodies.
There is a general purpose mailing list here.
Currently, the only developer is Tom Lechner,
and he has been hacking away at Laidout to help make his artwork.