Skip to content
Go to file
Cannot retrieve contributors at this time
2864 lines (2500 sloc) 130 KB
This file is for random notes and specific coding tasks that need to be done
to meet various goals. This includes Roadmap items as well as fixing bugs.
List bug tracker number if any.
When an item is satisfied, put it in the DONE section at bottom of file.
With each release, that section is transfered to the DONE file, and edited
down to major items in ../
--------------bugs: things that do not work like they are already allegedly designed to---------------------
------------ serious bugs to fix right now:
bug: ImagePatch doing anything with it causes double free crash
bug: home and end through selection bounds out of whack.. try with gradient tool for instance, controls bad until reselect
bug: Engraver fill, just moving mouse around is rerendering to buffer for preview
bug: imported white images are not white, very slightly gray. gm load problem?
bug: severing clone link does some weird things, including crashing
bug: clone tool clones do not have proper bounding box
bug: curve is terrible approximation at end points
bug: back to not maximizing properly on default ubuntu. Seems to work fine on every other window manager I've tried.
bug: gegl nodes, connect sinus to waves and also to displace, freeze!
------------ other bugs:
bug: popup menus: submenus spawning on wrong side on far right monitors
bug: command prompt window cursor often invisible
bug: command prompt window input sometimes unrecoverably locks if cursor not at very end
DONE bug: command prompt window missing Laidout module
bug: lineedit cursor is leaving artifacts
Overwrite dialog box and other centering boxes should center over calling window, or current screen if no specified owner
drag off page, space to duplicate, copy is not in limbo!
duplicate does not duplicate clip_path
packaging woes: update deb/control to have more of the dependencies
booklet, use paper group tool, default paper group no longer displays
evince on ubuntu 14.04, pdf export won't load, says Syntax Error... Dictionary key must be a name object
configure should check for libreadline-dev? apparently not pkg-config ready <- half fix of listing in package requirements
needs to use the new extra_cppflags thing
memory hole in ExportDialog.. open export, cylce through formats, quit
memory hole in calculator
memory hole in reimpose .. reimposed 5 page booklet
memory hole when graphical shell activated
memory hole do laidout -n letter, split a window, then quit. undeleted Objects remain!
DONE memory hole helpwindow -> probably something to do with ShortcutWindow and ShortcutTreeSelector not refcounting as expected
DONE memory hole delauneyinterface
DONE memory hole objectfilters with interface
DONE memory hole ./laidout -n letter then quit
DONE memory hole paper interface, activate tool, lay down one paper, quit, 3 objects remain
DONE memory hole cairo backend (can't duplicate)
"edit imposition", then escape.. removes window, but not the frame!
lineinput not propagating escapable
clones of images scale not like images.. should also snap aspect to start of drag, not when control key pressed
select no doc, select doc, viewport jumps around... it should stay the same area
switch to None document, and units change to unreasonable
shearing or scaling produces null axes occasionally when crossing over opposite edge, borking the display
--> seems to be only when needing to draw images on close to parallel axes, doesn't seem do it with paths
bug: page progress popup is wrong place, and mouse maps at wrong scale ONLY OCCASIONALLY, hard to reproduce
sometimes crash at insert page before (?? can't duplicate)
saving window positions doesn't take into account window decorations, makes pos slide downward each time
_NET_FRAME_EXTENTS? _KDE_NET_WM_FRAME_STRUT? how to get before mapping a window?
scribus plugin: if directory of executable script is not writable, it fails!
-> should find one that is writable
scribus plugin needs a proper dealing with temporary files
object reordering (with home/end) produces outline of unrelated objects on top
cloning, change original, not triggering bbox update in clone
ubuntu maximize window failing (but not on today's debian unstable gnome), resize seems to work now
gnome "application" does one per window, not one per app. this is not a bad thing imnsho, but should be easy to conform to desktop application spec properly
icon needs to be bigger.. is fuzzy on ubuntu alt-tab
DONE App/window icon in window manager not showing..
DONE??? need to implement scale pages to new imposition when reimposing (enable in doc settings dialog)
splitwindow SplitWindow:
create new pane should dup old pane.. currently divide viewport, removes document focus
viewwindow, change to spreadview, change back to view.. Horizontal ruler origin is REALLY off
splitwindow cursors existing in subwindows
create new window, defaults to no doc. should select doc of last pane
headwindow swapping is now REALLY messed up
pane swapping/dropto on maximized, swapping in general...
svg out, EquivalentObject doesn't play nice with defs.. only accessed once.. how to upkeep clones in this case?
-> when equiv objects are composed of groups, what happens?
svg coord numpoints==0???? numpoints doesn't really serve any purpose other than debugging, but....
svg to coord incomplete: arcs needs testing
memory hole in svg in? test svg import, svg path import must be done
object deleting funky, import svg images, select one, hit delete, doesn't delete!!
svg not exporting images when they are children of other non-group objects
place 3 images, object select, must press delete twice...!?!?!?!
sigimp fail for multiple stacks with no folds!!
make sure all imposition types are available in interpreter
resource impositions not showing description when selected
fold indicator foldprogress just at crossover points incorrectly indicating affected folds
object tool shift-control for rotate does not allow positioning on drag bars
'g' for color sample changes cursor to cancel now, and changes on border cross!!!
Need better mouse shape support
possible modifier-pairing error with multiple mice...
should not be able to group select an object and another object nested within
file previewer not updating preview when using arrow keys
shrink image lets you go immeasurably small
stackframe seems to be ignoring window borders on layout
bug: window sizes seem to all be off a few pixels (?? on what measure? can't reproduce)
----------------0.098 ROADMAP ITEMS: features and enhancements------------------------
website: explain a bit more how to install dev versions, and place side by side with "stable"
website: need to redo screenshots section for mobile friendliness
for CI, needs to be updated
update fileformat.txt
missing Palette/GradientStrip
missing voronoi
missing LineStyle
missing FillStyle
DONE incomplete TextOnPath
should be resources:
check laidout.1 when time to release
update docs to have new release number
update translation base files
update screenshots, sync with features
some of the old youtube embedding doesn't work any more
update links page
update help page
update quickref.html
update dtpcompare.html
update sweep LEFT-OFF to DONE, edit major items to
update dev page
document pull request process on dev.html page, also in repo
comment out cairo_debug_reset_static_data before release, since it usually means crash, interferes with pipeout
run through "valgrind --leak-check=full --error-limit=no ./laidout" and fix anything that can be nailed down to laidout
DONE XIQueryPointer? buttons->mask = malloc(buttons->mask_len); needs freeing
./laidout ../examples/test-all-objects.laidout
each export filter (via command line in new script in examples.. ignoring problems in eps)
each window type: about palette view spread command text
help: window pane does funky stuff
test in different window managers
make some test scripts for command line testing
save dialog should probably ignore clobber safety and allow enter key in edit to be "save". also auto focus file edit on start and on ^l
if you enter a new location in file edit, first go to that place. else save with that file name
make lax templates be only .h includes, since gcc complains when .cc isn't included anyway...
need to do compile speed tests -> marginally faster as separate, makes binary ~1mb larger for some reason?! dup funcs not optimized out?
Reconfigure text edits. Need something that works in interface land, with harfbuzz
lists need move semantics
DONE interfs example has memory hole: interfaces are not being destroyed
DONE shortcutmanager should be singleton
DONE unitmanager should be singleton
DONE interfacemanager should be singleton
having managers as singletons in Laidout seems to make crash on exit.. for some reason manager destructor order matters
DONE dlopen seems to be wiping singletons???? -> making them static in files seems to fix
if no png icons detected, try to autogenerate
test how fast, have autogenerate as option on startup
image batch export: ...wrap this into general Selection export
id pattern:
0: [A-Z].*
1: *-s*
padding: [by grid] [l r t b]
unit size: .5 in
output unit size: 24px
from files:
- icons.svg
- icons-tiling.svg
- lax-icons.svg
output directory: _____ ...
maybe drawaxes should show dotted line from origin to bbox?
check svg export of gradients with new spread method
DONE SHOWCOLORS should be off by default
dragging around color points from inside to outside should allow going out of bounds
DONE linear
default on r1,r2 should be change radius, not move
perhaps split radial and linear gradients to different tools? makes more sense
tool: drag define gradients ala substance
tool: sketch define gradient fields ala sketch studio
bug: on start, colors get zapped to window origin ?? can't duplicate
gradient and gradientstrip resources
owner: file/user global/system global
color strip:
r1, r2
load palette should have a preview: file dialog preview function
allow editing palette strips, import those to gradient tools
custom palettes
if height < 2*textheight, then hide name info
wheel between loaded palettes?
have a none color
right click for:
load palette
select palette
save palette
dup palette
New from a generator (like rainbow)
Soup up the color box so one can recall previous colors, and/or integration with palette window
-->delay until proper color implementation in place
interface manager interfacemanager:
touch threshholds:
near point: default 5 px ? try to find a real world measure based on monitors?
draw point sizes:
normal bez point, for instance
hovered size
WATCH OUT for when preview file is OLDER than original file!!
get splash image working.. better label class?
lgm 2019 feedback and ideas:
path tool:
hard to see helper graphics, needs haloing
should have space to dup weight node
method to fix all broken images at once
option: do just this one, or fix all
old path: _____ new path: _____
method to collect all used resources of a doc for distribution
be able to load old docs
from here on out, ensure backwards compatibility of files still works
enhance mystery data to work with laidout data too?
some kind of graphicsmagick LoadToMemory bug.. could be only on loading old file, bad config translation?
out clicking from a dialog should probably destroy that dialog.. too easy to get buried confusedly in windows
make connecting to online information easy: click to open web browser, xdg-open?
from talk: diffusion curves, "local mod" mesh manipulation
DONEish configure still sucks:
DONE laidout configure needs to drive laxkit configure more thoroughly.
DONE automate default laxkit detection, or git download of laxkit if missing
DONE mageia: makedepend trouble? replace with custom script to get rid of x11-dev dependency?
alternate packaging:
debian (get in to main repository)
DONE appimage, see:
panel editing:
selecting objects really sucks
bulk assign meta
meta edit:
should allow both name+value for new
parenting and unparenting really sucks
options should be:
Jump to parent --hover to show what is the parent
Parent under first --hover to show potential parent
Parent under last --hover to show potential parent
need something like laximages->Save(file, format, native_save_only), in case object doesn't know how to save to that format.. maybe default to something like static ImageLoader::Save
need ability to show "reprocessing.." or "progress.." indicator in different thread to what is actually processing
must multithread long operations
in singles view, spread number in box should be page label instead of spread number
export current appears to be broken
object content selector menu to more easily flip between tools for object-content-streams-otherSpecials
object clipping:
menu should bold the object names.. hard to read as is
applying clip path should not destroy path's style settings
clip path shouldn't have to be a path.. be able to be text, or whatever provides an Area path
generate default clip path for editing from area path or bounding box
clip-path export: pdf(done), image(done), svg(done), scribus
page object bleed export: DONE pdf, DONE image, DONE svg, scribus
DONE page previewer in spread editor doesn't use bleeds.. need to refresh thumbs if has bleeds
DONE in place editing
DONE apply, remove, extract clip path
need a better file preview system
need to wrap laidout_preview_maker(), which previews EPS with the help of gs
need a Revert option
bug: When scrollers come on, does not trigger an inset of widgets
bug: shrink for scroller, scroll to bottom, resize big.. window is still scrolled to bottom!!
FileValue needs a directory hint.. currently turning red on any change
ui hints:
DoubleRectangle [maxy]
[minx] [maxx]
AffineValue: [xx] [xy] {scale x} {rotation}
[yx] [yy] {scale y} {shear}
[x0] [y0]
rearrange set elements
delete elements of list
when you quit, does not remember from open windows
CheckDirs / check_dirs is confusing
when resizing viewportwindow and a temp_input window active, make sure it stays on screen?
instead of _LAX_PLATFORM_MAC, do relevant check with _LAX_ON_NON_GNU instead? currently only place this is necessary is where getline is used
remove imlib/"xlib" font, image, and render backends, replace with GraphicsMagick and cairo, keep imlib loader but load to cairo image only
remove displayer-xlib
remove fontmanager-xlib
image loaders:
implement loader priorities
some way to prioritize image saving
cairo image save should use importer to do non-file creation?
cairo render has color problems with gradients
cairo development is dead? investigate alternatives
move semantics to be more efficient
pdf export lines has outlines in evince?
debug inkscape node extension
text on path textonpath: TextOnPath
convert to path rendering to wrong place and orientation
doesn't handle transforms with nested objects properly
dragging size handle with shift|control does not scale properly
convert to path: not respecting transform, putting upside down(done)
select font, key up/down scrolls uncomfortably SOMETIMES!!
vertical position bad
horizontal spacing a bit wonky
bug: drag the baseline handle off to the sides, makes huge bad jumps in value
bug: dragging the offest handle sometimes jumps to really bad
handle to remove from current path, and possibly attach it to some other path
glyph positioning is wrong
position glyphs based on middle of glyph, not start of glyph
Find interface: findinterface:
iconselector needs: click-select, drag rect to select, shift to add to selection
iconselector needs to scroll
bug: FindWindow is not remembering placement
bug: key presses aren't propagating up to viewport?
memory hole
DONE iconselector needs pad + highlight hover + highlight selected option
DONE send to viewport and update actually selected
DONE toggle list vs icon view
DONE bug: dragging suddenly all messed up??!?!? ... worked around, not really fixed: maybe race condition with resizing?
____pattern_____ .* Aa all (is regex, case sensitive)
Criteria: [dropdown of predefined criteria] [ ___type:"Image", brokenimages, expr:"obj.maxy <"__ ]
[next] [prev] [all]
[ 5 found: (found object thumbnail list) ]
id desc other-meta
broken images
empty groups
empty text
by type
scriptable pre-flighty conditions
current view only | in current selection | everywhere
foreach: scriptable action
sort found by: modtime, name, page, size, type
iconselector should have force image to particular size option so we could use object preview directly
DONE on pressing cntl-f, must focus on pattern lineedit
DONE need draggable window frame
layers palette Layers
key controls for navigation within menu:
space/enter toggle open and closed submenu
edit colors not highlighting every other
rename in place
implement buttons
should have document list at top, showing current doc
have an actual splash image shown
you can't control unclick selected directories
build: building: build process
should update faq with details about graphicsmagick, harfbuzz, and gegl versioning
update configure message about try installing packages.. when fail on gegl, it's not listed
should be able to do out-of-source builds
DONE laidout ./configure needs to pass on relevant things to laxkit
DONE in config.log should show actual configure line for easy duplicating
rework ui to be programmable. Perhaps an ui builder
make sure image counters are ok, such as in new Crop()
gif flipbooks:
mod to center trims in sig editor
need a revert to last save option
for one offs, need to implement progressive repeat imposing
auto format partition so final page size has same aspect as image
sig editor needs number input
gif exporter:
use graphicsmagick? C example:
set custom timing in page properties
file filters: filefilters:
multiple export targets, including per object export settings
export with custom project files:
like html gallery, has project config in coop/
some files templated
project defined by:
directory with project files to copy
export config to create files that go along with copied project files
template vars to replace in set of copied project files
filter: "Html Gallery"
copy: [f1, f2, "**/*.png", { from: "here.txt", to: "to/there.txt" } ]
{ pass_id: "template1",
file: "f1.tmpl",
export_as: "%f###.png"
vars: [ { name:"{{FRAME_NUMBER}}", value:"laidout.globals.frame" } ]
config resource load/save
need to ensure that when bouncing around filters, Export All sets range properly
would be nice to standardize viewport render/obj-traverse so each exporter doesn't have to implement everything themselves
like define an iterator to walk over the view
fix when filtered object has children.. currently skips children
open with... on export ? combine with command option, which does basically the same thing.. need to decide about tmp files and unlink them
export by command needs work, bypasses safeties.. what about multiple files?
DONE put command export within export_document()
need createImportConfig/createExportConfig to make ImportConfig/DocumentExportConfig objects from parameters for all filters....
selecting out should auto select tofile | tofiles, depending on how many spreads selected for out
export range should optionally allow label not spread indices? labels are only valid for pages.. by name "iii - iv", export preview better?
perhaps switch export/import objects to new cascading Style as base..
standardize basic load such that non-laidout files create new document of proper size then import
todo: electric zine maker export/import?
When there are errors or warnings in exporting, should be able to have the error log such that
you can just jump to the offending bit easily. This would also be used for preflight verifiers,
and maybe also mass edit things, like edit all images..
- have ViewWindow::JumpToObject(&place, objectid);
DONE need to preserve last settings per filter, remember full export settings
pageatlas: page atlas:
needs bg color
DONE basically n-up page out, lrtb
for flat, choose lat/long/rotation
for hedron, export projected from hedron
export lines
page clip / object clip
export textured gltf / Godot based 3d viewer project?
export godot book project
show animation of book folding up
book page turner
importdialog ImportDialog import dialog:
be able to choose importer
should show filename as red if don't know how to import
import option to preserve broken links
importing should not spawn new windows
importing should sort out duplicate names
would be nice to show preview of what is to be imported
html: htmlgallery: html out htmlout:
webcomic features:
auto gyrate
control over parallax point
autoplay repeating parallax elements
follow mouse
video objects as mystery data?
path follow
scrolling object: speed direction
clip paths
css 3d transforms
specify image file name, also preview file name "###-s.png"
DONE embedded page svg
DONE implement save and load template vars
DONE include scrim in coop/html
DONE figure out template scheme
DONE standardize save to directory or file, not just assume file
width, height defaults to 0, which is supposed to autocompute correct w,h from dpi.. check!
should have color select for background color, which would be alternate way to set full transparent
export depth map based on metadata z
export format should be an enum. need to extract possible save formats from Laxkit
for gs, make sure temp file is removed, should probably locate in user space maybe? or make sure perms set reasonably
laidout export:
need a Laidout out! for partial exports, or conversions between nets/papergroup lines/etc
implement crop
save option to force path data into svg d style instead of default laidout style
save option to not output line caches
laidout import:
pops up spurious windows
maybe option to create new layers, or insert to existing layers?
option to insert new pages, or merge onto existing pages
need to center within new margin area, as compared to previous margin area
partial import of page ranges
selective import, like blender has:
import of resources
import of master pages
import of limbos
pdf: PDF:
export clones adds extra ref in resources section
text out very broken.. imageout via gs complains about malformed pdf on fonts
fonts are not doubled up, each text object is exporting its own
export complex engraving is really, really slow. probably all the string reallocation?
pdf optimize jpg dump, compress image data
still true? pdf export if a path has null linestyle/fillstyle it buffers until next path drawn
instead of drawing with some default style
pdf out needs clone deref.. needs clone deref still?
graphicsmagick for import? subimage and subrange of image_info passed to ReadImage
page labels?
implement crop
Scribus scribus:
needs better error return: use try/catch
outputting with settings that result in 0 pages result in scribus crash
caption as path flips
implement equivalent object
caption export centering
export paths fails on compound paths. scribus has dichotomy Polyline|Polygon
scribus export should show actual version export
make sure it works for 1.5.2
check for updates in file format for 1.5
export color meshes, for recent versions of Scribus
page clipping
import/export color meshes, for recent versions of Scribus
font size confusion
import/export linear and radial gradients
scribus in/out: font sizes, stroke widths
import should try to apply the Scribus layout correctly, at least for 2 page spreads
import should do something meaningful with original Scribus page bleed values
scribus import: need to read page sizes from actual page attributes, as it may well be different than in document attributes
-> this necessitates revamp of singles to use more than one paper type
implement crop
svg: SVG
in units should default to csspoints
bug: when stroke+fill presentation atts are not under a "style" att, they are ignored
bug: gradient with no p1,p2 defaults to 0,0
stroke fill
fill/stroke for text
any clipping
grid guides
sometimes path endpoint spikes
dotted line style
for new docs, should set rulers to use some reasonable units, from either width="100px", or namedview.document-units
DONE monkey.doc, export then import:
DONE radial gradients not importing
DONE not putting in page bounds even though width/height are fine..
DONE try to open exported svg, says cannot load with no further explanation
DONE finish debugging mesh svg 2.0 out/in, svg-mesh-polyfill/testfiles
DONE test import, then visual similarity of export
DONE conical.svg FAIL! needs check for translatable fill object
DONE mesh1x2.svg
DONE mesh2.svg
DONE mesh2x1.svg
DONE mesh_objectbb.svg
DONE mesh_opacity.svg
DONE mesh.svg
DONE mesh_test.svg
DONE mesh_transform.svg
DONE pepper.svg
DONE bug: bad colors when style atts occur before path in meshpatch
DONE unless fill/stroke is specifically given a color, it should be noop
DONE mesh out
DONE finish debugging powerstroke out/in
DONE try actually implementing powerstroke in
DONE zero width caps not working
DONE width="512px" is mapping to 7.11111 inches (72 dpi)..
DONE images with xlink:href need to be read in relative to the svg file, not cwd
DONE problem with transform sometimes, see icons-tiling.svg
DONE non-1 scale problem
DONE seems like children screw up -> problem with x,y in: rotate(angle, x,y)
DONE "use" transforms not compounding
DONE text placement and size
DONE width/height makes scale 0 when after viewBox
DONE gradient clipping
DONE gradient filling past minimum definition bounds
DONE in needs to account for viewBox
DONE linear gradients
DONE radial gradients
DONE in needs to parse "use" elements and other "#" refs
special check for paths with a single gradient child
text linespacing.. unclear how Msize/linespacing maps to svg options
DONE color
see conical2.svg mesh test (filling text), need to implement text fill/stroke
need more comprehensive parenting handling.. how to output object children and also handle fills properly
test arcs in/out
export papers currently not going to correct paper
text on path without path conversion
dump_in svg filter to nodes optionally, once those are renderable
radial: transparent inner circle, patch edges
DONE need to parse units
need an In()
implement paper rotation for out
ppt (passepartout): DEPRECATE
implement crop
implement paper rotation
implement paper rotation
for plain postscript, there's bitmask, but no transparency. maybe optionally do simulation with dithered bitmask..
a lot of work for a deprecated format, but could have other uses, like for PDF/X-1a
paths not filling correctly
engraver no out, equiv object problem?
implement crop
implement crop
export seems to be rather broken
command line export file name defaults to "output#.eps"
implement paper rotation
xtg from quark?
idml from indesign?
freehand tool:
path simplification needs to be considerably better, both points and weight nodes
need "brush size" controls
implement Shape Brush?
output to either "shape brush" line profile, or flattened path
PathInterface: pathinterface
bug: width handle has bit of a hitch when handle near a vertex.. extra temp width node being added?
bug: seems to be possible to move nodes out of order, only occassionally
bug: shift click down then up on a point selects then deselects.. control can toggle
bug: problems for non-bez-controlled corners at endpoint. Also variable offset causes weird connections
bug: applyoffset, the bez part at joins is messed up when no offset, suspect problem in FlatpointToCoordinate, mismatch with bez join next to sample points
bug: should not create new control points by pressing cntl, unless there is movement
bug: delete last weight node, sometimes width is wrong
bug: make new line with freehand tool, cannot move weight nodes in a rational way
when you delete a point, curvertex should go to go to nearest previous
need an easier way to edit gradient fills, like child tool edit for fill items, auto add filler types
need simplify option on point delete to adjust control point lengths
need option for bbox to include line width, not just centerline
need stroke fill
need path combine:
with more than one object selected, turn to path tool, pop a menu that asks:
Edit both objects at same time
Combine to single object
Combine and merge endpoints
DONE not show every single handle. only ones associated with active vertices
DONE impliment flip curpoints horizontally or vertically
DONE need invert selection: ^i for total invert, +^i for invert within current paths?
DONE offset handle instead of mystery shift press
DONE shift over endpoint needs add point hint
DONE shift(?) over segment should allow cutting the segment, draw a big red x? highlight whole segment in red?
DONE need to show hints for when new points will be placed
DONE implement open at any point to possibly break into separate subpaths
DONE need way to turn off selectability of path points (thus leaving only width nodes selectable)
DONE if background is green or red, hard to see the direction indicator
that hot new spiro curve
boolean ops
mirror, array, with join (akin to blender modifiers)
dup path object links the path style, but save and load, it is not linked... need to sort out line/fill style inheritance/linking
needs input boxes for width nodes
compound paths, change width only changes one. no way to affect all
need a way to work on multiple weight nodes:
shift all
width multiply all
set width
need input boxes for weight node info
zero tips not working on mesh edit? with import test-engrave.laidout
debug cache sample point distribution, the interpolator is really bad as is
powerstroke export requires apply offset.. else weight nodes are all messed up
clarify export for weighted paths, use outlinecache and areacache as needed, check all filetypes exporters: svg pdf scribus image/ps/eps
finish implementing joins. need to clarify weight behavior at corner joins
weight computation is currently done based on even t spacing, but probably should be mapped based on distance weights not being shown unless '_'
be able to pull points back along path near endpoints
debug extrapolate
need numerical entry for all weight node characteristics
need to protect against reentrants at corner joins.. makes holes unless nonzero rule, and sometimes sticks out the other side
sliding around the nodes is really annoying.. should do according to proximity to center line
inkscape has multiple interpolators, we should too!
actions to implement:
need arbitrary cut
need better apply offset: not simplifying offset path
need path combine (combine path stacks of multiple PathsData)
need break apart (make new PathsData from each in paths stack)
need special break apart to make new PathsData, but preserve totally enclosed paths as intential holes
need mechanism to be able to add custom path actions to context menu
implement work on multiple path objects at once
ApplyTransform() and MatchTransform() should adjust scaling of width nodes?
custom caps.. define cap to a horizontal line, take endpoints and endpoint tangents, return the cap warped to fit the tangents
custom dashes, with custom start/end dash caps
so called vector brushes, that allow sweeping out an area with a whole shape
need some kind of extrema fill in for angled paths, so it matches sweep of whole segment, not just endpoint sweep lines
should have shortcut to offset ALL weight nodes, or angle ALL nodes
how to deal with bbox when using wacky weights?? -> use bbox of outlinecache (or centercache), non-weighted (optional): use flat bbox + linewidth
need something like path->PointInfo(t, &pp, &vprev_ret, &vnext_ret).. done is GetWeight(t, &width, &offset, &angle)
maybe should revisit PathOperator stuff, such as for spiro paths
per vertex join type?
linestyles are always output independently, can't currently cascade with current code
line join round should add extra point for really wide angles to make them more circular
copy and paste
maybe control when on vertex will create whichever handle does not exist, control nearest drag point determines which is created
align nodes -> create temp set of data to pass to AlignInterface?
transform handles for selected points, including flip
subdivide, repeat key press restores old segment, then adds 1 more point to num of points from last press
toggle between add points / select points?
finish new path/pathoperator/pathsubinterface/pathinterface structure
resource drawables with extra "origin" and "direction", maybe stored as properties?
they need to respond to object color.. marker is a SomeDataRef with filter to respond to obj.marker_color ?
start, end
at specific intervals, or n per line
make circle green when manual, gray when auto
toggle auto snap (control will reverse)
auto snap to h and v when holding down control
debug first point corner issue
implement quadratic
implement cubic
engraving tool: Engraving engraver
bug: trace object opacity is not working for non-image trace objects.. stroke and fill needs mask integration!!
bug: 'z' zaps mesh, but does not change cache border or point mapping
cairo render NEEDS VAST IMPROVEMENT.. the clunky xlib approximation was fast, but not transferrable to cairo
object lines in group list needs eye per object, affect actual object visibility
need to enforce resource unique names
need ability to store overall styles of a patch, not just each individually
on resource menus, should check mark if current matches a resource??
should adjust all linked
with test-engrave-trace2.laidout, do the quick adjust, does not preserve width the first time, using old value of thickness?
option to remember old values while adjusting position, rotation, spacing
-> when manual tweaking of spacing, need to produce value reference so that future line orienting preserves line thicknesses
seems to be grabbing spurious tracing values outside of the tracing object, and at borders of trace object
tracing object, lines abort just inside the image, maybe should just go one off the edge?
trace object needs flip, at least h and v, not really needing the whole affine thing
need option to export trace object in same position as the traced lines, so it can be further processed elsewhere
custom sample of channels
sharp edge detection in tracing
snapshot should be for all in selection
shift-drag (or drag anything not covered by trace object) should drag ANY of the meshes in selection, not just current
when multi objects, the traceobject is interweaved, based on draw order, only under current object, should be under all?
make gradient interface work in trace mode
freehand not being interpreted correctly: non-equal smooth is adding erroneous extra mesh column
drawing custom freehand (with width) lines within the mesh area
mesh path:
'a' not selecting all in line
curvemap needs predefined ramp profiles, remember last, load/save (per context?)
-> options to insert various predefined patterns
need magnify do dads for easy expanding of countour without having to place each and every node
need accuracy modifiers for dragging controls around
only when at endpoints, lineprofile not producing smooth results at random spots inside
should be able to adjust number of sample points to match up well enough for points in lineprofile
random end point sliders should inc or dec according to which side mouse clicked down on compared to absolute end point
spiral spacing computation bad when spokes are nearer radial
save the opensimplex line displacement from line/point randomness, to be used to also adjust a spacing map to preserve value when viewed at a distance
be able to trigger a reline on load in
be able to set a 3-d parameter for noise? useful for animated noise
option for "adjust for spacing", making weight reflect the spacing, either for constant width or trace
line profiles: (done) linear, circular, radial, spiral?
be able to edit and create new profiles
spiral arm count makes poor resolution
line generation:
grow: implement custom line merge and break to preserve spacing across mesh contraction
grow: edge abutment when generating
sample point generation should be based on lines per mesh square, not total mesh field
finish implementing spacing section -> spacing map
add special group: half offset, perpendicular
need stroke+fill options?
need convert to path object ability
current blockout is not very precise, needs approximation between existing point samples
fully implement resolution adjustments for auto lines -> needs resolution tool
single group (not group list) view is too old, doesn't do link circle, and can only select from current object groups.. remove it entirely?
export doesn't work for: nothing for scribus, eps, ps
edit brush ramp as symmetric ramp
resolution tool: click to add between points within brush, control to destroy points in brush
need merge group
screen view, need option for Fast|Accurate
no writability check on exportsnapshot
allow temp override of linked to adjust only current?
establish path needs better smoothness assignments
keys being caught in patch, not in child path
test: bez cache needs updating when points are moved around
test: dash cache needs updating when points are moved OR thickness changed
always brings current object to front (normal refresh in place, and then interface draw on top).. should be very optional, as it blocks out white overlays
don't warp, move points, then warp, almost always has bad points: PatchData::getPointReverse() is too inaccurate
finish implement making the circle lines be closed circles
need some kind of smooth out: smooth out width, and smooth out path
hover over mode icons should show text of what you are hovering over (verbose mode?).. hard to remember, annoying to look at status bar otherwise
should be able to draw a line and have that be a baseline for dash division
option: either drop out of bounds points, or zap mesh to point bounds
numsliders should have click on arrows for single increase, and a dismiss x for input box
should probably abstract control panel creation so we don't have to hardcode everything all the time
sampling could be more sophisticated, currently just grabs pixels, could downsample the image based on current spacing
Danger! coons patch produces discontinuous contours within multiblock meshes!! who knew!?
perhaps allow path objects to be adjusted with engrave tool for custom outlier lines not part of mesh?
must implement mode based shortcuts in Laxkit. currently all mesh shortcuts are active
stippling/decal mode, each sample is either a point, or map on an arbitary object, or sampled object?
per stipple, adjust rotation, scale, color, morph
text (see also src/text/text.txt):
need options per font on export to: convert to path, subset, embed
need standard way to have default font, apart from defaultlaxfont, as well as default color/other visual attributes
global font list, finish implementing uniquinizing font names, need final step of some kind of file name diff
freetype/fribidi/harfbuzz all over everything?
interface base for utf8 based editing.. share this with window edits somehow
maybe fonts should point to their creators to make duplication more reliable if there are more than just default fontmanager
need support for font substitution
harfbuzz support
math mode
track bookmarks
inline graphics
css import/export
tabs on arbitrary paths
google font import
text on path textonpath: TextOnPath
need kern control
kern handles
mouse click to position caret
need to do proper coordinate finding for mouseposition when paste into a nested group
offset from stroke or from path
click for new, then save, saves a blank one! probably issue in captioninterface also
need to only add to the document only after there is non-null text, like add_on_change flag
bbox should be better.. currently is a wide approximation
option to auto expand line
stretch envelope
rotation handle
drag out line to define chain connection
from big import:
load in seems to wholely load images, instead of only grabbing info
need some kind of "loading" indication when loading in large images
load in of many images needs threaded load
need image path mass reassign
spread editor:
need a force thumb refresh, or actually make modified propagation work
there should be a paper view for previewing purposes
select all for current marker type
arrange in rows at current scale not scaling and placing correctly
crash during thumbnail generation if you delete pages while there are still some to render
auto-arrange not consistent.. doesn't really respect the screen aspect
should be able to save from any window
delete discontinous range of pages doesn't delete all sometimes
undo extremely necessary
thumbs refreshing a lot unnecessarily
for images, need edit image feature, with watch for changes, or "reload image"
image dialog, select new image, hangs on imlib complain about null image
save as should have sample file names: from directory name with ".laidout", incremented from any *.laidout
large images all being loaded in, need way to ask about creating proxy images. only img info is supposed to be read in until img data is actually needed
need better ui for selecting templates
load in autosave should ask if you want to save as the original
spread editor needs edge dragging
DONE export directory should default to last loaded file
DONE selecting ranges
common property editor tool: ..overlay and put editor box in a corner?
- select a bunch of objects
- tool determines properties in common:
name + type
whether properties are equal
if not equal provide menu to select from existing to apply to all
- Provides widgets to change those properties all at once
maybe other mode, where you can copy certain properties, then apply those to other objects?
ObjectFilter objectfilters object filter:
bug: did something that made object filter totally disappear.. not sure what
need a way to easily apply one object's filter to another object
need menu options:
Create filtered copy
Apply filters
clean up filefilter.h definition to allow explicit declaration of ObjectFilter in DrawableObject
anchoring to other objects
DONE need way to go from node interface to interactive
Perspective perspective:
map() should be able to map from a different base
bug: deleting path points makes transformed path faulty on updates sometimes
perspective interface needs to allow changing pos of in points, not just use bbox
path transform should transform line widths accurately
finish debugging update path object without reallocating each time
optimize the image mapping
filtering paths needs to detect big distortions and add points, as simply transforming bez points is not enough
implement transform for:
vector transform should be through PointCollection for:
Caption (convert to path first)
text on path (convert to path first)
Refs and groups of any combination of the above
DONE bug: chained filter nodes make context wrong, thus bad Refresh
needs width and height functions for convenience in scripting
DONE mismatch free 298
conditional jump on uninit: strlens in newnstr re 2673, 2192, 2206/1007, 2651
node editor node interface NodeInterface nodes: node: interface:
bug: node duplicating, reminder default DOES NOT DUP TYPE!! it dups NodeBase.. double check this is fine, might need to imp duplicate()
bug: math2 error message not being cleared properly
bug maybe: dup math1 or math2 copies label.. if label actually blank should leave blank
DONE bug: empty reroute, click no drag on prop slot, crash!
DONE bug: expression node broken, won't update expression
DONE drag value, doesn't trigger update, but click and input does
DONE if you take away a variable that was connected, bad things happen
bug: sporadic, 1st input edit doesn't stick
bug: reroute nodes doing weird colors
grouped nodes: need to properly propagate MarkMustUpdate() past container node directly to output props
check NodeBase::GetSatus() when no outs, but topropproxy
memory hole page info? drawableinfo, objectinfo
execution order: Update() should ONLY update current.. UpdateRecursively() parse backwards Update()ing as necessary
bug: should be able to turn off update when loading in.. takes A LOT of time otherwise
bug: top filter "out" is outputting data
bug: JoinSets is not loading/saving properly.. variable list props need unique names
bug: new object caption, attach to object function, crash!!
bug: CaptionData is creating a new font every single instantiation
undo redo
bug: file prop popup not working
bug: trying to open menu for enum with 0 entries should not pop up a window
bug: control click on connection for pan traversal not working all the way
bug: ObjectInfo should reset id and type on disconnection or null object, but keep any props that are connected
bug: adaptive nodes need to cache previous in and check that rather than just update on connection change, since could change upstream
bug: load in recovery: should ensure only one connection to input, and only one to exec_out
bug: seems like node names can sometimes erroneously get duplicate names? this messes up load in/connecting
bug: transform object isn't copying images in an ImageData
bug: height of resizable property not saved
bug: why are nodes yellow sometimes after load in: PerspectiveFilter, PointsToDots, Affine, Affine2.. DONE: String Circle
bug: duplicating objectfilter does not transfer values for the most part for the most part
bug: when loading in, need to force update nodes in Resources
bug: gegl to image, disconnect, it is still updating the image, because LaxImage is linked through
bug: memory hole TransformAffineNode??
if a node is in error state, error color overrides the selected highlight.. it shouldn't
need to figure out safe way to duplicate DrawableObjects that have filters and/or children
implement objectfilterinterface/nodeinterface interchange with nested node groups
reroute needs double click on connection to add node
edit filter nodes for the first time should center nodes in viewport
would be nice to have a "Collapse unlinked properties" option
bug: load and connect needs to trigger an Update, but it doesn't always?
need option to turn off main viewport render while tool up, since sometimes that render takes a long time
some people are going to want grid snapping
DONE bug: TransformAffine using PointSet outputing "out" to file
DONE bug: memory hole in objectfilter interface
DONE ConvertNumberNode
DONE KidsToSetNode
DONE concat should support sets
DONE bug: expression auto parse parameters not working when unknowns in paretheses
DONE need solution for shared interface getting messages for different nodes.. probably need to do one instance per whatever <-(yes)
DONE bug: say Vector2, edit value, tab to next, does not save previous value
DONE but: Color node only has output, but outputting data of output nodes currently forbidden.. make exception when output is editable?
DONE Get document node
DONE Number list
DONE NumToString
DONE bug: color property doesn't show transparency checkerboard
DONE mouse down/up
greyed out depending on properties
adaptive text balloons:
tail point + direction
tail attach point + direction
text -> get extent from CaptionData bbox
target rect to fit in if possible
data node types:
how to systematize read only field overrides (like minx,maxx,...), also "const" functions for sanity re duping before ObjectFunction returns
fit obj in rectangle, with alignment
EditDrawable: bring up appropriate interface to edit
Reparent? restrict to particular top object? otherwise you will mess things up terribly
Perturb: random point/rotation/scale shifting, from rng or sample from NumberField?
RandomColors,RandomFill,RandomStroke: select from gradient, or array of colors
anchor nodes (double up with revamped AnchorInterface):
in anchor: object local space, or parent space
out anchor: other object point (of non-parent), page, spread
type: x,y
2 point anchor: change position + scale|rotation
DONE create clones: make array of clones
DONE NewObject/ModifyObject based on an ObjectDef.
DONE need to make sure all types have dump_out_atts defined, otherwise the paltry Value::dump_out_atts gets used in data out
DONE each need to double check: dereference, assign, Evaluate, extend from Group, not affine
DONE LCaptionData from array of text
DONE need a "text is escaped" option
image (double check objdef setup)
DONE check: dereference assign Evaluate extend from Group, not affine
DONE check: dereference assign Evaluate extend from Group, not affine
nodes must receive correct color messages from viewport color box
needs a little settings button to pop interpolation or do strip resource selection
DONE(?) bug: gradient controls broken sometimes
DONE check: dereference assign Evaluate extend from Group, not affine
DONE double click to call up color box
delauney/point set tool: Vector2 + properties
convex hull
relax (optionally within path)
conformal relax
quadrilateralize and relax -> work Net into a full Drawable?
voronoi region centroid replacement relax: strength, iterations
optionally do set of affine?
set from drawables
perturb set
DONE double time with path generators
DONE grid, hexgrid, random square, random circle
DONE apply positions to groups of drawables
DONE check: dereference assign Evaluate extend from Group, not affine
DONE need linewidth, stroke, fill
stroke should accept color, gradient, or LineStyle.. LineStyle overrides line width
fill should accept color, gradient, FillStyle.. or other path object?
weight controls:
weight edit: index: width, offset, angle
weights set: t[], width[], offset[], angle[]
present as line profile?
DONE path corners: points past a certain angle threshhold
DONE path endpoints
DONE path extrema
path ops:
path morph
path from points: linear or smooth
sample path to points, optionally with transforms. sample at t OR s by step OR by n points OR squishy step
SampleAt: t | t[], t is dist
SampleEvery: step, step is dist, fit step
boolean pathops
project onto heightmap? onto mesh?
make net then inset
extrude (this should probably be a path function)
needs to check for same tree and transform points before using
when you use another object for the extrude path, no automatic update happens
set line profile from resource
apply weights
DONE combine
DONE break apart
DONE fill and stroke controls (by using ModifyObjectNode)
DONE check: dereference assign Evaluate extend from Group, not affine
DONE check: dereference assign Evaluate extend from Group, not affine
DONE check: dereference assign Evaluate extend from Group, not affine
DONE check: dereference assign Evaluate extend from Group, not affine
caption text
DONE needs color property
DONE check: dereference assign Evaluate extend from Group, not affine
text on a path
DONE dereference assign Evaluate extend from Group, not affine
object/resource management nodes:
find drawable:
DONE child of
DONE self
direct parent
in whole tree
other pages?
DONE resources?
DONE SetParent: take list of objs, and just put as kids
alignment nodes:
align to page (with page type)
access to alignment/nup tool config?
anchor nodes to mostly replace alignment rules
anchor point transforms
mirror node
boolean pathops node
"Object Properties".. maybe have a string field with list of desired properties? Array of props that show enum but output value?
have a dangerous "Object Function" node? needs to dup in, then run function
ref other object
clone tool access
nup tool access
DONE create clones for further manipulation, like apply point set origins
DONE inverse affine transform.. also invert number, vector, or quaternion
DONE rename "Object Info" to "Drawable Info"
DONE ALL ObjectDef data types need to be installed on startup, or at least when node tool starts up
group nodes, connect to (new in) or (new out):
should take names from props.
doesn't update the parent props
curve node needs y expand ability
should probably bring forward any selected
load/save custom properties needs to preserve name, label, tooltip, types, custom info
check for double linking
control drag on slot to reconnect all connections
duplicate linked nodes needs to preserve connections
find node:
by label(done), name, or type
search node or property name, or data contents
stack of last searches
search in child groups
find all
gegl nodes:
maybe have gegl node preview gen be in different thread, as they can be quite lengthy
not responding to curve updates
reload file, load node out of sync or something, not showing preview after file load in
need browser buttons on "path" properties of IsSaveNode()s
need needtoupdate caching or force work on small proxy images.. gegl with big images takes a long time
scale-size has runaway render for undefined rect
make sure deleting/rearranging nodes correctly removes gegl connections
inkscape filter read in, set up as gegl nodes internally
make sure input/outputs can translate from other data types
need protection against unknown gegl ops, like when "gpl" is toggled
some process actions bog everything down like overlay a crop with a non-cropped input.. need a check for unbounded nodes before process
some nodes define a particular extent, like gradients. preview should detect
need a gegl <-> Value converter to allow interacting with Get/SetVariableNode
do something decent with property types: GeglCurve GeglPath. ignore these for now: GeglAudioFragment GeglBuffer GdkPixbuf GeglNode
DONE Gegl to LaxImage
DONE LaxImage to Gegl
svg/inkscape specific filter interface, io passthrough
svg color properties are strings, but there should be button for color select
need full "length" readin, not just floats, ie "100%", "15in"
feTurbulence->baseFrequency is TWO numbers, not one, need data[] support
handle child groups
handle chaining full filter group nodes
Embossed Leather fails
Plastify has an orphan feFlood node
nodes with children, loading in puts the child properties at the end
for memory saving, need to determine what is a "final" node, since intermediate nodes can free data, or pass it on
node browser
tooltips for operation, not just properties
in menu, so many nodes, need way to classify favorites, maybe custom arrangements of menu
progressive search
need a way to collect custom property types, so they can be added to custom nodes
for connecting, drop onto a property at all should link, not just on slot
for preview resizer, shouldn't have it when preview is too tiny, since then usually you want to move the node, not resize
save needs to remember file name per loader, plus default file
no overlap needs to stack siblings as nicely as possible
image object creation node, tie node output to a custom LaxImage importer (the proof of concept node for 0.097)
load something already loaded makes dups of everything.. need to check for name collision!!
extensibility: need easy way to extend functionality, both menu actions and new nodes
ideally whole node core codebase should not explicitly depend on laidout
allow editable labels for input props
add dummy prop on in/out to hot link data (only from within group)
linked vs appended node groups, to allow mass changing of particular effects
GroupRef : NodeGroup, with some sort of relay to actual group internals
node libraries: nodes as resources
need to check for cyclic dependency in resources (and disallow)
auto shift placement on connection
auto connect when dragging nodes.. needs parsing of compatible properties
view area things:
node magnifier for easier browsing when otherwise zoomed way out
toggle show only selected nodes?
exec paths
events for ui tool construction?
exec tick speed control for debugging
make sure entire nodes don't go totally offscreen
deferred update when massive operations, maybe highlight nodes in yellow?
color code pipes by value type, color: yellow, number: gray, vector: purple
need better styling.. too much is hardcoded. problems later with high dpi screens
finish implementing no cycle check: on load in could be a crash magnet currently if constructed with loops
other node systems:
examine imgflo for compatibility
imgflo lets you compile and load new operations on the fly
css named filter: brightness(1) contrast(67%) saturate(250%) grayscale(0%) invert(0%) hue-rotate(330deg) sepia(40%) blur(0px)
see for svg filter equivalents
gmic nodes
graphicsmagick nodes
antiprism nodes
examine blender for compatibility -> animation node addon seems fuller for general data processing, everything/geometry nodes
examine godot for compatibility -> does full scripting execution
examine Natron for compatibility
examine pure data for compatibility
examine BespokeSynth for compatibility:
proprietary import like substance, houdini, archimatix, Photo Reactor?
any crossover with mypaint brushes or krita???
viewer node, resizable
simplex noise node
changeable color:
DONE receive bg color messages from viewport color box
receive fg color messages from viewport color box (stalled pending impl of fg+bg colorbox in viewerwindow)
grouping framed objects have complications
DONE frames need to be moveable
DONE nodes within frames need to be moveable
DONE pressing f: any selected objs in any frame, then unframe. Else group selected objects into frame
DONE drag and drop nodes to insert into frame
DONE shift-drag to remove from frame
DONE selecting frame needs to update viewer current color
bug: wrap sizes are different start up vs move frame
implement comment
label/comment font size should be adjustable.. draggable size triangle on right?
have visible/togglable comment
convert frame to panel
expression node:
DONE any number of inputs (pulled from expression)
scriptify nodes
nodify script
use PlainText objects.. ScriptNode ?
edit text externally or in different text editor frame
string ops:
nested node group resources:
implement NodeBase.proxy to point to a resource NodeGroup, which relays changes
list nodes
set range [start,end] = value, optionally linked
create list [type, number]
ScriptForeach in list, create new list with transformed elements
sort with function
DONE concat
DONE subset [start, end], neg nums for from end
DONE element [index]
math nodes
function nodes need a smooth option, not just polyline
should always be 'using Math'
more math:
interpolate with easing
select from panel:
+ - * / % ^
< > != ==
min max avg
and or xor not << >>
---one arg---
abs neg sqrt sgn
sin cos tan asin acos atan
sinh cosh tanh asinh acosh atanh
DONE foreach thread processor
DONE need reroute node
DONE file properties need browser button
DONE basic path creation nodes, including math function plotting
DONE resize preview broken
DONE image from file node
DONE (using Name) idea seen in anim nodes: collapsing math shows expression as label
large files:
note that most object dump_out routines now use Attribute intermediary rather that write directly to file.
if this becomes a problem with large files, need to revert that, or update so less heap thrashing
page range file refs, so you can make massive docs without the whole thing in memory at once?
Whenever there's a byte read in, like with read_in_whole_file to string, really should do some minimal string validation before using it?
resource manager needs to store unknown objects as Attribute trees, so they can still be preserved
for future processing. for instance, be able to recover from when a plugin is missing
need to implement DRAW_Hires for all interfaces that default to preview renders. needed for proper image out
includes at least image(done), path, engraver
mousemove decorations shouldn't change when an interface absorbs one
need more automatic way to install:
mechanism for plugin config files
plugins maybe have plugin.conf resources/
beef up the config window, to allow toggling plugins.
figure out proper de-loading.. have to restart?
check for already loaded
think through plugin infrastructure better, and from external perspective
need to beef out the plugin readme
usually, a plugin dev downloads an sdk that might just have selected headers, and .so file
how to specify plugin is built at all
how to specify plugin is compiled in, or exists as .so
plugins (c++) vs extensions (scripted)
captioninterface CaptionInterface captiondata CaptionData
should be able access fonts as resources, to preserve links on load/save
bug: bitstream vera sans, "Text" convert to path puts e correct, but screen render puts it out too far. huh??
implement proper pdf export
color fonts: consider native otf:
Mozilla and Adobe’s svg table, microsoft's colr/cpal, Google’s PNG images (CBDT/CBLC tables), Apple’s PNG images (SBIX table)
freetype dev branch maybe supports colr/cpal and google's way?
implement the different layout modes: rtl ttb
debug for rtl and vertical as returned by hb, or set explicitly with direction
right to left (figure out how to do with harfbuzz)
need to do proper coordinate finding for mouseposition when paste into a nested group
text to path:
option to do all one path,
or separate objects per character (or glyph), but clones of a resourced group of glyphs
need handy option to mirror, instead of escaping to object tool
need handling when opening a file and the font is not found!!!!!!! options for substitution
opentype variations
select, copy
for overstretched alignment, bounding box not updating correctly
should adapt from multiline edit, since it already has cut/paste, selections, and is mostly debugged??
control-u hack for poweruser unicode character insertion
use selected text as sample when popping up font dialog
lorem ipsum
markov ipsum
DONE bug: why is a font being created and destroyed each refresh??
export/print dialog
need better print dialog.. old ppd cups stuff is deprecated
make print button experimental only?
vital to debug send to printer
export should have a preview of what is actually going out, flip through spreads
in papergroups with multiple papers and double sided impositions, need to ensure front and back are output properly for printer
bbox and aabb need to build in kids?
should transplant child to SomeData? would simplify making new objects considerably. or do (parenting shell)-data like blender
SomeData should derive from DumpUtility?
color fonts issue #6 svg otf svg
see this freetype gsoc 2019 project:
fontdialog: FontDialog
need a way to remember layered fonts, to easily activate and deactivate
read from standard fonts places, like .config/laidout/(version)/fonts
favorites: tag and column
user tags, not just fontmatrix tags, option to update fontmatrix?
should be able to access list of font favorites, and a user's preferred organization of fonts..
need to implement load specific file for a font
makeinwindow SOMETIMES not working, select one, puts on bottom line
font->SetFromFile() should do more fontconfig checking to grab propper file+family+style+size
FindFont() is faulty, as it only lookes up family/style.. should search by the unique file name
sometimes family+style is not unique, but has different languages.. should detect this
use postscriptname: "DroidSansHebrew-Bold" --> "Droid Sans Hebrew"/"Bold"
bookman font style names getting chopped off: due to name collision and using psname as reported by fontconfig
this is unreliable! need to have proper unique font naming
sample block should be multiline
need support for svg fonts.. useful for pure svg fonts, and opentype svg, see cairo user fonts
pgup and down doesn't select a reasonable one
fontconfig directory config options
should REALLY have a LayerFont head containing the whole list, not a stand alone list which causes too many problems
figure out why some color fonts are not scanned by fontconfig
needs line spacing slider
option to search by spacing, ie monospace, see fontconfig: FC_PROPORTIONAL, FC_DUAL, FC_MONO, FC_CHARCELL
vague search via fontconfig matching, to find a match for something like a "sans"
font preview column in list, custom sample
language coverage search
select default language/script
select opentype features
optional common font finishers? like centering, underline, color, highlight, fg/bg, etc
incorporate to mesh tool
incorporate as special mode in path tool
angle drag lapping should preserve large arc
if you click and release without dragging, should not make a really tiny new data, should keep old if any
DONE memory hole
DONE implement minimal fill:color, stroke:color+width
DONE should have menu options for wedge and toggle circle
DONE debug wedge hover
DONE draw dotted for wedge edge?
DONE click or drag to/away from origin on open arc edge to toggle wedge, open, chord
DONE render with inner bad since drawfocusellipse ignores inner
DONE drag radii, toggle control, original center point should also be remembered
DONE angles mess up when foci flip
DONE snap angles with control
DONE control drag on x or y should move center, keep opposite
DONE inner radius
DONE snap closed if drag start to end near enough (multiple of 2*pi)
DONE outer, inner, center hover need indicators
DONE need numerical entry
DONE implement angles.. bug with bez_ellipse, not spanning start to end properly
DONE shift, control down up to toggle hover
DONE Remove old rect interface stuff, debug basic render and new object creation
Clean up mesh/patch controls: Mesh PatchInterface
bug: base on path remove/add should try to remember previous weight nodes, scratch only when mod points (not colors) too far off
bug: convert path to mesh inserting null patches at each point
bug: should still be able to edit colors while based on path
when color points overlap like with circle warp, have a way to change all coincident color points
selected nodes should probably be more prominent and colored, just gray disappears, hard to work with
rotate/scale single or more control points should move attached controls in smooth mode
circle warp needs a proper circle/ellipse interface
DONE bug: can't change point types with menu... path is not getting any menu messages
DONE maybe should not be able to escape off path tool when editing as path, since that breaks path connection
DONE bug: when edit as path, path is below the mesh, so can't see path
DONE bug: subdividing is broken beyond 1st subdivide on anything other than outer patches
DONE bug: selected points, hover over edge, try to drag deselects then moves whole mesh. Should select for hovered and move that
DONE bug: when on edge, it highlights, but if you are outside of mesh, it will switch to other object
DONE bug: smooth edit fails along edges
DONE add new patches should smoothify joins when in smooth edit
DONE smooth edit not working when more than one square
DONE just as moving edges, should be able to move any vert column or horizontal row of points
DONE implement more right button config options to make the settings more discoverable
DONE smooth edit mode should be default.
abstract to be a filter, with optional stand alone object
ColorPatch / MeshGradient:
need bicubic color interpolation, as just cairo bilinear is pretty ugly
need sampling from beneath
convert from/to linear/radial gradient as possible
DONE flip colors vertically or horizontally
smooth edit needs to adjust for interior point smoothness
reverse lookup is not very precise: need to warp back and forth ONLY when necessary, as when
switching to different, non-point-distort mode
perspective arrangement: approximate transform controls through perspective grid
maybe have status message say how many points are selected
need bez path to mesh, and extract bez from mesh
krita mesh tool has "uv preserving" move edge, yowza!
edit multi objects in mesh tool.. should be able to move around many nodes?
rect select nodes
coons are not really smooth at internal edges? try with engraver, makes corners with current inner interpolation
tracing infrastructure should be part of base mesh class.. would make easy for color mesh to use
nudge mode with shift + arrow keys?
See that lgm talk about "local mod" to do subdivided mesh modifications that reduces control point clutter
make base path dump_out as Path, not PathsData? make it easier to read file removing the unnecessary??
dataobjects/datafactory should somehow combine with stylemanager.. seems redundant as is
raster paint layers, mypaint?
when change number of named paper, make it "custom"
open on image should create a new singles with default paper and image centered
click open jumping current to 0
with text colors, mouse over highlight is off (can't dup?!?)
not showing alternate gray/white bgs (can't dup?!?)
option to use markup for labels
tree display flat option
makeinwindow() doesn't account for columns
need something like Convert(value, units_from, units_to, &error, overrides), where overrides is
something like: list of [units_id, newscaling], like for temp redefining "Em" or "px"
selecting in viewwindow
on limbo, and spread/page, papergroup, select first object it finds
if curobj, select only siblings of currently selected
if no curobj, select only children of current context
if you click on something, then single click again, search for anything else under
double click group to descend into group
double click or enter non-group to edit content
cntl-double click or cntl-enter to descend into non-groups' kids
currently on selected object, click not on handles:
C left click drag: scale around mouse
S+C Left drag: rotate
Left drag: move object
C left click: place/remove anchor points
GroupInterface groupinterface ObjectInterface objectinterface: group: object interface
new drag/scale/rotate behavior:
anchor point drag should use the new widgets as appropriate
DONE rotation circle, inner: number +-/absolute, mid: free rotate, outer: snap rotate
DONE scale slide bar, go above or below, allow number input
DONE drag with shift lock to nearest drag axis
constrain aspect for corner scale handles should do so from drag start, not moment of mod press
control-move flip line to snap to horizontal, vertical, 45 deg, or common gravity points
maybe show flip and 90 deg rotate handles only when mouse outside the selection area?
need to be able to control click outside box to create? currenty you must click inside, then drag it out
world / local transforms:
object parent
object parent parent (etc)
parent options colors don't really make sense
real menuify the clone options
need consistent system to coordinate selection changes between any tools or windows that need to be in sync
viewport should fully utilize Selection::CurrentObject(), keep curobj in sync
implement move to "Some other page..." when 'm' in groupinterface
things to allow editing of wrap, inset, clip paths(done), and chains
DONE default hide draggable flip, but have as right click option
DONE menuify parent options
the label hint should have "Parent: ItsId" and "Child:Id"
need option to select parent from current selected, like Parent to > (list)
ObjectIndicator objectindicator:
current should be bold
clicking around in hierarchy should remember children we just clicked from
need ability to click on object to select that object. Rename only when already selected
allow drag reparenting
hover over parents to pop list of alternate children to reparent to
show (root) at bottom of stack
Nudge tool nudgeinterface nudge interface:
break off from engraver tool, to operate on any PointCollection
build net interface graph
voronoi Voronoi delauney Delauney: point set pointset
be able to control inset shapes
is double rendering when object is selected
importing raw points or data without matrix should map so that it all appears on screen
intersect with page bounds? or other custom boundary? default bounding box + padding?
color per point:
auto fill with randomized colors
sample point color from background?
merge different voronoi objects
multiple point select
separate selection to new object
convert voronoi or delauney tris to graph
less than three points doesn't remap rationally, need to update extra lines to something proper
DONE right click
DONE start new object
DONE generators
DONE toggle delauney lines
DONE toggle voronoi lines
DONE toggle points
DONE implement show_points
FileDialog filedialog:
bug: sort caseless, other sorts not working
focus should start on file line
^l should shift focus to file line
when something is not openable or saveable, buttons should be greyed out
file dialog, single click should not enter directory, double click should do that
file dialog needs click on parent dir to jump to the dir, but still be able to easily return to prev dir
implement icon list selector
implement option for (or just show) directories first
Resizing zaps view to top, should preserve 1st in window
need laidout only bookmarks file
edits color style: bg alternating isn't highlighting
tooltip to show full path of bookmarks
need drag and drop bookmarking
when you change directories, it should indicate if it corresponds to a bookmark
DONE should probably have a scroll bar
start fresh doc, autosaves which may be saving into confusing location. maybe save in config dir?
autorecover.. -> when an autosave is newer than the file we are opening
option to choose how many to save near original file, and how to remove old
[ ] Backup on save to: __%f~__ ___%f#~___ <-- use '#' to signal increment save
%f=filename, %b=basename (without extension), %e=extension, # for numbered autosave
[ ] Autosave.
Time between autosaves:___5_minute__ millisecond s sec seconds second m minute min hr hour h
Naming for autosaves: __%f-autosave#____
Number of different autosaves: ___1___
need option for always write relative links.. now defaults to absolute
file button expansion:
Collect... <- gather all refd files into one place. ask to specifically not collect per file
Commit (git) <- ensure file is git tracked.. add if necssary before commit
double check that other files refd by this one are tracked in same repo as well?
maintain list of what to collect, what to ignore when committing?
Commit settings... <- choose or set up repository, how to handle passwords?? libgit?
Revert... <- show log, select old
open from template:
needs to be incorporated in newdoc dialog
get template list:
scan all template dirs: ~/.config/laidout/version/templates, or SHAREDIR/templates
name -- file path -- basic info about file
really thin objects should still be selectable, need to add a slight grab area outside bounding box
should be able to click within selection box to move all and not click right down on one of them
need to implement image cache clearing on low memory, to substitute for cairo not doing it like imlib did
minimum dp size is not small enough
anInterface::PreRefresh(), for instance to get engraver trace object to render below all selected objects
need to clarify what happens when you open and close documents.
open and close docs always leaves limbos behind
open already open pops new window
not sure if it should also record ownership of limbos
open doc: limbo->SetResourceOwner(document);
close doc: if (limbo->ObjectOwner() == doc) limbo->SetResourceOwner(nullptr);
colorbox color box:
hsv slide, configurable clicks
color slider popup: colorpicker color picker colorsliders
bug: text is not showing at correct size at first
color strips for full transparent should show checkers in all strips, not just the alpha strip
have a "Done"/"Dismiss" button
be able to choose which color sets are visible
make color slider box be able to be a pane
would be nice to enter number values in any color format
need palette selection tab
click without dragging select color
click and drag shifts, but DOES not set value under mouse
out click on hex edit is picking color
optionally show clickable numbers
clicking anywher in the new/old should swap
show numbers to click on: 255, 65535, float
toggle sets of sliders: rgb, cmyk, alpha, cielab, hsl
color picker that previews text?
convert to using Color objects instead of all ScreenColor:
color patch gradient
image patch
DONE images (doesn't use color per se)
dual monitors: multi monitor multimonitor
centering windows should center on monitor of originating window
open in same screen as mouse
when you open a new window, ensure that it is always on screen
DONE Menus should respect actual screen borders, not just full virtual screen
high dpi hidpi:
don't hardcode for instance thin as 1
check interfaces, make sure everything uses ScreenLine,Threshhold,UIScale:
DONE image
DONE spread editor
rebuild icons in app
global UI scale adjustment
need in app themeeditor to easily adjust things that are off
per monitor ui scaling:
xrandr only gives monitor names like DP-5 DP-0
xrandr --verbose lists EDID hex block that usually contains monitor model somehow
auto scale by detected pixel density
perhaps respond to GDK_SCALE or QT_SCREEN_SCALE_FACTOR (or maybe only QT_SCALE_FACTOR)
update all widgets accordingly
font sizes
window bevel, padding
thin line in interfaces
various interface threshholds, like path node indicator size, touch distance
DONE supply a "default" ppi? for instance xlib thinks: 94.1467h or 94.0741v of multisync lcd2490wiki2 (specs say 94)
on ThemeUpdated events, things need to account for:
color styling
font size/type
refreshing icons
DONE laxprofile not working
should be able to access theme files/directories, instead of define all in laidoutrc
should be all cascading, bare minimum font size should be defaultable
so like a common style is loaded FIRST, then particulars dumped in afterward:
windowstyle common
category common
make drag and drop selections work
implement proper action querying
do proper translation between screen coords and window coords during acceptance query
Initiate dnd
set up system dnd state
send regular updates per protocol
send data per protocol on drop if to other process, or internally if drop on ourself
accept dnd
mouse moves around due to ourself or some other process
window needs to decide whether dropping is ok, and choose which window will take the drop
handle drop of data
need more mechanism so that popup dialogs stay on top of window they are "children" of
need a global Laidout method of making unique ids
-> update in Engraver tool, and object indicator overlay
plugin for easy antiprism import for net creation
for purely command line execution, should be able to make a binary totally not X dependent.
externally saved pages, for long documents
save "page" files? reference from Document?
and/or save "object" files, with layers in the file, have special DrawableObject flag to save its contents externally
conformal mapping option instead of mesh? see
command prompt window: command line
bug: delete at pos 1 deletes space after prompt, then does not allow any input
option to record/save/load whole session of prompt window
up/down should traverse history
control-up/down, break out so you can go anywhere
load document, should load images on display only(done), or create previews in background..
snap guides to objects
snap objects edges to various things
align tool: aligninterface AlignInterface align:
needs polishing, the lines and indicators get a bit lost
context menu seems to be the group interface menu
need way to specify center of rotation per object
need to make discoverable, not just as key shortcuts
-> make as standalone tools, now that viewport stores selection?
endpoints should be oriented triangle, not circles which make it look like path nodes
explode in normal align
should be able to scale and rotate a non-line path when not in path mode
need manual mode.. drag grid marks to position manually... have that option available on others, auto transform to auto
gap looks ugly.. have indicator highlight path itself, drag that around
would be VERY handy to be able to recall previous arrangements, so you can partially redo
final layout options: unoverlap -> possibly snap to path, then spread out on path to not overlap
extra custom finishing per object?
reorder on layouts? -> how to handle reorder in gap and unoverlap?
trace out order path... show with numbers
drag out path, order of intersection is new object order?
maybe grid drag control to reorder
snap to page middle, left, right, top, bottom
snap to original selection bounds
snap to first bounds
snap to last bounds
snapping to 0/50/100
number box while dragging, goes away after a second, or click on it to edit
if inc/dec arrows, have it inc or dec the decimal place cursor is on
default presets: inkscape crossover
use as targets in, for instance, node alignments
need display object to make visible if truly empty.. display object is not exported
Spread Editor:
need to make pagelocation ref count pages, or (need to anyway) check all known views for errant page refs after delete pages
would be nice if apply and reset should be grayed as relevant
adjust page preview resolution
after an insert, have temp wheelable number indicator, update on screen?
need to be able to move empty spreads
need to remove hidden pages from pagemarker
debug select spreads with rectangle -> need real box intersect? do we?
modify page range gui, click on a page label, where ever it might be... select pages in spread editor
debug spread limbo threads and page groups
implement render
debug drag and drop
create new document from spread view?
hide should collapse into a single thing so you can arrange more simply, instead of still having to sift through many
need infrastructure to propagate and save tool settings
Tools should remember their settings
remember tool settings: double click on tool icon? right click...
remember tool settings
figure out which settings need to be remembered, and install as resource.. what happens when diff
windows are using diff tools? which settings are remembered? have tool styles that are saved, as
well as the running tool use settings
paperinterface: papergroupinterface papergroup interface
need to be able to edge drag paper to resize, maybe with grid snapping
when scaling should try to preserve relative orientations
when reset scale or rotation, preserve relative orientations
option for "Sync Physical Scale"
bug: sometimes clicking around when you have custom papergroup in viewport crashes
papergroup tool needs custom paper input
maybebox needs to snap
DONE snap to angle
DONE show paper numbers
DONE indices should be underlined
options to edit order of papers.. drag indices
if page is too big, need indicator around mouse that we are placing something
define papergroup, convert papergroup to Singles pages?
print all of one size paper first? auto sort order by size?
define papergroup, convert papergroup to new Net doc?
menu options:
fit to selection
fit to page
fit to spread
center on selection
center on page
center on spread
orient viewport to paper
export options:
meta name
export settings
more that one settings per paper
when you add gray bars/reg marks, center on paper?
PaperSize/PaperGroup as resource:
implement paper favorites:
be able to nest favorites, item->favorite = "submenu/23", item2->favorite="2", final element is number?
laidoutrc needs list of custom paper sizes
Load, save, add, delete paper groups..
work out scheme for resource ownership: they can be owned by:
need reusable resource [ name ][load][save][dup][delete]
1.DONE Document: if no project, save with document by default
2.DONE Project: save in project file
3.or Global resource: save in ~/.laidout/version/papergroups
class FileRef
papergroup->owner=Document, Project, or FileRef
debug papergroup tool in spread editor
paperinterface: in spread editor (done), and able to print it out, don't forget to remove DBG for release!
in spread editor (done), and be able to print it out
papersize names are not translated. Should they be??
buff out the paper interface to be the net builder?
more versatile size control per box type per paper: edit window? should be edit on screen....
Name: default single letter
Paper: Letter, 8.5/11, landscape
Box: Media [v] Box: Clip [v]
[ ] None
0 0 8.5 11 X: 0 Y: 0
W: 8.5 H: 11
[delete paper type][new paper type]
DONE Use new custom paper size window
DONE rotate paper shortcut should be around paper center, not origin
DONE snap other papers to various boxes
DONE bug: maybebox zooming off on mouse move
DONE need a paper size editor stand alone window, entering numbers should convert name to custom
new PaperSizeWindow:
bug: rowframe WrapToExtent() doesn't work
DONE integrate with:
DONE signature interface
DONE singles editor
DONE newdoc
DONE paper interface
DONE from gimp: in either field, input aspect like 1:2 or 16:9 and it autocomputes value
should take precautions so that dialogs do not get buried, would need to respond to circulate events
in laxkit, key and mouse state should already be filtered to only contain laxkit modifiers,
reserve names for CommandMask (macs), and a few other custom masks for other weird keyboards
mass image edit, need to remap dirs for old files!!
option to use different go/don't go colors
animated beacons for anchor points to make them visible
curvemap needs predefined ramp profiles, remember last, load/save
curvemap needs brush ramp mode to show symmetric graph
clip wrap render to graph rect
brush ramp edit mode: incompatible with wrap? or just have editor move points symmetrically?
seems to be an occasional redo bug, reinserting in wrong position
DONE dir
Convert impose-only to be based on feeding it an ExportConfig
clarify how locks, visible, selectable works. base in Laxkit?
object select, 'a' toggle select or not, select all in current selection area (ie page or layer base)
'm' should be able to move whole groups, means must be in object tool?
For objects that appear very small, the drag handles should not be operable.. shift only
For objects that are really skinny, it is not practical to have the handles be a percentage of the skinny
part.. should have minimum drag areas?
for blend modes, maybe place name conversion in Displayer, in case there are a ton of custom blend modes??
fill in box
bug: not showing highlight on rectangle
doesn't appear to update random target area when you resize area
unclump. Lloyds algo? voronoi of points, move original point to centroid
unoverlap -> define strategy, either shift H, Vert, along v, or shift on axes between objects
object reorder
scale panel should allow mpx and control zoom around point
overlays should get first pick of input, BUT if another has a button lock, it shouldn't mouse move update
need a way to tell rect interface to enter move mode with lbdown, as when initialize a child interface
standardize new Impositions: convert to new ResourceManager system. each has:
interface OR window editor
class type
default resources
possible to define other editors for any imposition type
make "make uninstall" work, and remove coop from installed position
select region by intersect, not by corner inclusion...
When importing from an image list file, should be able to say if and when to auto-make previews
new option in file, should be easy
mystery data enhancement: import as placeholder objects: if convertible to laidout elements, do not actually
expose them as such. Keep source in external location, current laidout only rearranges.
---> this is same as import as image, but using laidout objects to render them with, not bitmap images
---> this is useful to have a standard object indicator built from laidout objects, but
do not let them be editable
when importing, have MysteryData, which has special attributes "@file-pos" which says
where in the original file the attribute starts:
title (shown in screen)
file format the data is from
attribute style listing of the object? or straight from file
in: convert file to attributes, or provide method to tailor to an output format (eps, pdf objs, raster image),
and provide a preview image or object to stand in for the file..
allow multiple, positionable spread views visible on same viewport
should have a way to narrow down what resources are saved when you save a single document.. right now, if you
have multiple docs open, the resources are mixed
really should have option to separate or merge resources when multiple documents open, rather than always merge?
how best to integrate Styles, Attributes, and Values???
various object types:
draw objects: Image, ImagePatch, Paths, Path, LinearGradient, RadialGradient, PatchGradient
Imposition: Singles, DSS, Booklet, Signature, Net:Box, Dod, etc...
-->Styles are Values that can be cascaded from other Styles
Values by themselves cannot be cascaded
-->C++ classes represent data that can be accessed and modified through:
onscreen: compels direct c++ access
file saved to disk: uses Laxkit::Attribute as intermediary for disk i/o
interpreter: parses input using Value objects which have ObjectDefs defined at runtime
would be advantageous to write a single object def, and output options and documention to each of the 3 targets
each class:Value potentially has:
- "internal" variables/funcs that don't correspond to ObjectDef entries which are all "public"
- scriptable variables/funcs defined in ObjectDef
these are vaguely compatible, but it is not a 1 to 1 match
some kind of preprocessor (ugg!!) to convert the header file to object def
when closing a document window, decide whether this removes access to it, or just the view to it
from laxkit: clear up focus handling which currently REALLY SUCKS especially when dialogs are up
focus off a dialog, then refocus, must manually set control focus. should store which subwindow
gets the focus when autofocused.
pointin should check to visual boundary, not bounding box (? maybe just optionally)
customizable object child relationships to parent, rather than simple transform
this needs to be reworked to be an object filter instead of special anchor properties
incorporate gss!!
DONE scale x
scale y
scale free
stretch, proxy displays ok, but after install stretch doesn't work
shear *** seems to be off from point, need shear protection, produces null axes sometimes
DONE scale
DONE rotate
DONE scale+rotate
DONE move
add page target anchor
add parent target anchor
add object anchor
margin area not working
implement rules list click remove
implement click rule, update display, watch for offset
anchor names should not have quotes in them, because disk i/o is easier and I'm lazy
problems when anchors are on a page that is not at origin?
check for only align objects that are on pages
margin area anchors not staying when margins change
transform relative to alignment point of parent (50,50) for center, for instance
edge magnet
when trying to move an anchor when you still need to select invariants, flash the invariants
need edge indicators for more convenient snapping
bug: var x =0; x^3 -> "cannot compute 0^x"
bug: string output not escaping things to display correctly
make ArrayValue be MatrixValue, make SetValue be ArrayValue
bug: run command with BuildIcons, error is not propagating up to cout
bug: function calls, assigning named parameters, checks for '=', but only single char, fails when it's actually a ==
bug: Math.oeuaeou does not produce an error
bug: number deref: var a={1,2}.. out of bounds not returning cannot deref.. returning "Ok"
bug: for loops broken
bug: explicit var a=flatvector() fails with unknown name flatvector
test heavily nested assignments
need multiple assignment
security restrictions?
showing defined functions should show the code
showing variables should show name = value and the class def (such as laidout.globals)
set dump_out_atts should do full atts if any subattribute has full atts, else output "set": "{1,2,3}"
dump_out_atts should output raw toStr things.. Strings currently return "str" which is output "\"str\""
debug generic with operators, doesn't seem to be working
debug operator definitions
debug using and import... maybe remove using, use import Math.* instead
var a if a already exists in current scope should fail. currently just says ok, but keeps old value
error reporting up function calls doesn't say pos/line for each expression
overloading does not handle parameter mapping per overloaded, it is scanning only the first, and using that
print string plus any non string should stringify the thing and append to string
curline not getting incremented properly when there is skipping or looping going on
allow if statements on single line without curly braces
inputting lines when open {"( maybe prompt "... " to wait for closure?
how best to allow created object defs to be referenced as parameter, variable, or set types, it is a mess right now
show overloaded entries
DONE implement a PaperSizes object that recognizes all the names, or maybe a set somewhere with all names? -> Paper.SetFromName(str)
DONE need special Parse(expression, &unknown_names) to assist expression node
DONE bug: a={a:1,b:2}; a.a -> crash! ..sometimes.. a.b crash other times
DONE bug: var a={a:1,b:2}; a["a"]=3 -> cannot assign like a["b"] = c or a.b = c
DONE bug: can't remove dict elements
DONE bug: var a={a:1,b:2}, cannot add to dict, like a.c = 234; a["d"] = 5655
privacy/security gotchas to watch out for:
autolaidoutrc with export settings can potentially save user data in templatevars..
maybe have special project/autolaidoutrc to save such things?
file system access in scripts?
needs massive testing
type "tool." (for instance), you can highlight choice with mouse, but does not insert into edit, only inserts when nothing had been typed
*** not getting options for all tool and object!!
searching seems to be messed up, improper matches when mid stream
mid stream search is messing up match names
completion should be worked into the edit.. "object.|" then tab is replacing all text with field name
when in function, search among parameter names also
need to search for context names before searching for calculator names
search within area, not total tree
text delete to nothing should only show the top areas in search results
thoroughly test object access
object.translate((1,0)) -> MapParameters should map the flatvector to p, not to x
shift up/down for showing completion
reposition cursor to error
for parameters, facility for special edit dodads
custom tools:
normal tools, but jump to special settings for those tools..
implement marks
bleed marks
color bars from a palette
spread info: spread type, current date and time, creator, spread number/total number of spreads
turning off overlays should revert icon to current tool
maybe flag whether to export limbo with spreads?
action/shortcut selector overlay
templates Templates:
partial templates, fill in non defined, like use booklet but manually define paper size
DONE save as default, or just save as.
image import:
need drag and drop from system for multi-image import
cannot import images directly from recents
need thumbnail preview of images in directories
when you have a filter, should still show directories(?)
Import image list: default previews
ImageImport dialog: (actually, needs a total redesign) import images importimage
should have preview for alignment options.. grab destination page to show preview
auto bookmarks, one for examples, or save as template
Choose/Review tabbed window
horizontal stack frame between choose/review and preview window
fancier path selector
for preview field, show green or something and change tooltip if preview will get generated
click on file to preview file, preview to preview preview
generate image previews progress box...
autogenerate should do special check for ~/.thumbnails to conform to freedesktop spec size and type...
importimages-> eps --> they are fit into boxes!! they should maybe be inserted into a stream..
importimages: remember last settings
DumpImages within Arrangements, which are sort of a template of rect regions (2-d guides)
would also implement the dump into Limbo
dump into any string of objects, this is really the same thing as laying out a stream, maybe merge this?
a "Place" tool like indesign?? preview images and place by dragging out one by one, as well
as optionally into Arrangements
external tools:
figure out a way to standardize verifying that tool exists and is executable
to image renderers
to object renderers
Image editor (gimp, krita)
plain text editor (gvim, console vim, command, etc)
associate (object type) <-> (external editor)
function to verify file
extra config
command structure "command %f --stuff {extra1} {extra2} {extra3}"
dynamic objects (generated images, dynamic images, rendered images)
eps objects to pdf: export as image, plant in PDF as image
group objects with laidout elements, updateable with script
image objects using ImageImportFilters
perhaps add TEX_BIN, LATEX_BIN, and text editor to quickly add stuff like that!!
external commands:
website to recommend learn more
needs what type of file
needs how many files
needs what other info
In image properties dialog, have the popup list of potential previews
preview style needs debugging and testing so as not to fry the freedesktop ones
if you change an eps to a non eps with the insert file, it still thinks it is an eps..
image objects should auto change between the available image formats:
bitmap--eps--embedded svg--dynamic
Dynamic Content:
displayed as images, or displayed as group of laidout objects
possibly multiple images or objects in linked list:
one source creates multipage ps, for instance, each page gets its own object
controller source object:
generator command + context
ps/tex/pdf/etc to eps files, import the eps files
broken down equirect panorama to net
Image import chain:
1. eps|EPS: Laidout builtin
2. svg|SVG: inkscape command line export
3. other external renderer: asymptote, structure synth, sunflow, pov-ray, lilypond, latex, graphviz, gnuplot
3. * images: graphicsmagick
4. jpg, png, gif, tiff: Imlib2
move Value and FieldPlace to laxkit? ValueHash would be very useful to ease configs
soft masking
mask object optionally converted to grayscale
incorporate IndexRange?
drag off screen should toggle off
need overlay close box?
edit base in place
should remember old label format strings, to easily select back to them
shortcut dialog: shortcuts: shortcut manager shortcutmanager
bug: ObjectInterface Duplicate objects has key u0000 ???
bug: on pulling up window, action list shows current tool, but that is not highlighted in area list
bug: keyboard display stretched way too much, general window arrangement is really bad
bug: sort by columns is not sorting by anything rational
saving keys for first time should default to config directory
need to be able to delete keys
layout needs to save
need mode column, mode based shortcuts have no display capability
area heads need to have human titles, _("Image Tool") instead of "ImageInterface"
mode for shortcut check not quite working, such as ' ' with button to duplicate
need hierarchy overlap features... it is easy to get lost in different zones
panning f'd up, close but incorrect bounds checking when drag
needs to make in window for cursor moving
char names for wacky xf86 codes.. accept 0x*
implement search
svg keyboard out
DONE need ability to add multiple keys for same action
have option to specify language from command line
reimpose option: center images, but not rescale?
improve split window
control wheel to expand bevel
load/save split bevel settings
debug mouse cursor change when over gap
simplify pane customization, docking
signature editor Signature editor Signature Editor signatureeditor
bug: background colors are wrong now.. supposed to be gray background
mouse roll on paper size is confusing
number input for everything
symmetric trim
be able to enter final size, and adjust trim to match
should be able to drag and drop stacks
making new paper size should try to find matching paper name for a given size
fold replay should start showing FRONT page of stack, not back. THIS IS A BUG
if start from whichever, should show inverse of folds to normal as necessary
scale pages preview needs to use margin area, not page area
needs indicator of number of groups, show 3/10 for current sheet in little box above stack, allow numerical input
show margin, trim, binding when not totally folded
for large page counts, need number entry in stacks
would be nice to indicate when there is a centerfold of any signature
mixing different page sizes mixes up the PageLayout at boundaries. alignment should be either always centered, or custom
after you add stack, the added one should be selected
must implement dragging around instance blocks...
helper controls to adjust inset to match up final size for sigs of different size
indicators for different signature instances when viewing page spreads
need to be able to designate particular sheets with properties (like color),
as current insert mechanism assumes folds happen before insert
tab to cycle through handles for numerical input
mouse over and drag show numbers on canvas
export pdf or lo doc template
implement work and turn, work and tumble interface
should probably be some kind of tooltip to say shift for fold under.
binding edge must be same orientation for all stacks and inserts
need a paper size editor stand alone window, entering numbers should convert name to custom
paper select should give hints as to whether paper size can hold actual final size
detect non staplable binding edge, show red rather than green
test impose-only for all imposition types
be able to specify single sided.. allows bound accordian foldings?
implement creep
accordion folds:
map style
various pamphlet types
wacky minimal origami:
maze books / meander scrapbook
cootie catcher
explodion books with cross folds on pages
Make extension to be able to use Inkscape live path effects (lpe)!! Then run on svg snippets, so should be somewhat
straightforward to call externally.. BUT have optional tool overlay. Figure out how to reverse implement to also
run within Inkscape.
printer mark rendering default to a single color? editing of net outline allowed, but
then changes not stored
probably should decide how to handle making windows based on interfaces.. it is a more productive route than window dominant
DONE make a laxkit.pc from laxkit configure
use that laxkit.pc from Laidout and laxkit examples
option to lock label size to real space? make export contact sheets a little prettier in some cases
page thumbnail should be rational, ie image should be whole page, not just contents+transform,
and thumb transform makes image dims to page coords
in number edit boxes, wheel should allow changing numbers, change on digit mouse is over?
is it better to wheel at curpos?? probably.. select that digit, must track after changes!!!
global resources:
current frame/time
current language, for conditional text
global Laidout settings:
settings dialog
color theme
per tool default settings
thin line width (default 1 pixel, but this is bad for high dpi screens)
textobjects,limbos,papergroups should maybe be able to be stored per document, not just file, project, or temp
either that, or do away with whole project/document difference, and use only
projects with their own directory, and projects without their own directory
Selected region out to image(s), regions optionally remembered
rectangle or path?
import/export styledefs should use the extendsdef mechanism!!!
views with multiple spreads
messages to the status line should have priorities? so once mouse over messages are cleared, it would revert
back to a lower priority message
WhateverImposition, to only have limbos, but extra handling for exporting
all at once imposition... this would allow mapping of scribus layout without fuss. that
could be a special case of n-up, where you specify n to be infinity, with m number of
columns, not necessarily aligned, as scribus does.
Master Pages master pages / template pages:
have objects be tagged with ref object, so you can create a page with a master page
that has a "text frame" for instance, but different properties per page
ProxyObjects : public SomeDataRef
SomeData *proxy_of; // <- object on master page, for instance, but the real ref object is editable
option to revert edited object to base proxy
need option to import master pages from scribus docs
some kind of grease pencil?
Saving: multiple documents open, save only the headwindows that refer only to that doc,
OR save no window configs (saved with project), OR save custom configs
need conversions: gradient->color patch
image -> imagepatch <- do with image filters rather than specific object type
imagepatch -> image
colorpatch -> image?
engraver -> path
path -> engraver
text -> path
bool reversible;
char *from;
char *to;
int support; //like how reliable it is to convert, warnings for what is lost
CanConvert(object, from, to, warnings_ret);
newobject = Convert(object, to);
file format prettification --file-format
dump should differentiate between DrawableObject and pure resource objects... right now, all lumped together
adapt the scribus xml/att convertor to parse the output of laidout --file-format into something meaningful...
#-------blah-------- <- mark a new section
thing #thing's docs
subthing #subthing's docs
#docs for following atts indented same as previous atts
next_att #(one or more) next_att docs
DONE make names/values/comments all kind of line up for those that use dump_out_atts
export with limbo, and no doc or papergroup, means use bounding box for limbo?
measure tool.. configure measurements to be:
displayer units
object units
units mapped to either type of units, so can use light years for units that are actually inch physical paper units
have arrows, and write on screen what the size is...
collect for out:
define directory to pull all files and external resources in
write out new .laidout file linked for the new system
define map of oldfile -> newfile
name mangling as necessary to prevent clobbering
need limited collect for only resources used by exported items
resources/ <- that were laidout resources linked in
file.laidout with proper links to new dirs
collect.log <- what was collected / rasterized?
specify layout and spread range
specify checking functions
step through each object
run checking function(s) on object
append trouble spots to error log
needs path to object: project.limbo / / project.papergroup
possible remedy
show window with list of offenders, offer remedies
check for empty groups
check for broken images
check for transparency
check for bad fonts/missing chars
compatibility should be determined by file type managers, not individual objects
return if object is currently compatible with some standard,
like "PS LL3", "EPS 3.0", "SVG 1.2", "PDF 1.3", "PDF 1.4" "HTML/CSS2"
1==yes, straight out
2==yes, but needs rasterizing
this would simplify preflight checking
maybe expand the page label system to have some kind of to-do markup.. this could be combined with preflight verifiers
or other search activities as work-in-progress annotations
cloning: convert to master: make a clone be the original..
means swapping the actual master with the clone
..if an object is cloned, maybe just have them all be clones, and original becomes a remote "data block"
to be dumped to file in a defs section? if all refs gone but one, then it takes place of clone?
for clones, it would be easier to have a "defs" group or something, so deleting the original of a ref will
not cause problems. When deleting objects, must then take care to update parent, so it is immediately known
if an object is without a home.
tiling cloner: clone tiler CloneInterface
show/not-show base + source_clones
embed origin in pattern
embed pattern in final
should have option to apply clones as an object filter, not as actual clones
default should be use lines only when there is no source object.
new tiling should update viewport color per basecells
should not assume preview has I transform
memory hole back, third time!!!
radial needs wind scale input
fill out the Tiling objectdef
DONE bug: Tiling doesn't save, need to make Tiling be a Value so it can be io with drawable->properties
DONE various source refs should take names from ref'd objects
need path morphing
need more distinction between what is a base object, and grabbing a copy of existing object.. too easy to confuse the two!
copies should be selectable, at least so you can adjust the colors: gave current_base, current_copy
should have z order controls for base cell stuff
clipping options when source images overlap in final layout
maybe be able to modify base cell outline, use that as clip? autocorrect for overlapping?
snap sources to fit/fill in base cell areas
implement proper shear/aspect protection for:
allow shear of p1, p2
allow non-locked aspect of p1,p2,pm,pg,pmm,pmg,pgg,cm,cmm
highlighting in selection box should draw name next to the thing on hover
making new id names needs to make unique
1m and mg do not seem to work: need a final transform to apply, NOT repeatX/YDir().. those shift without rotate
bug: not showing orientation arrows correctly when outline cuts through middle of bounding box
really need undo
save color hints of base cells with Tiling object
change color of boundary, and outline preview
select objects, wrap base cell around it
implement circular interface
need rudimentary editor
need flag for ok for cell to shear, ok for cell to scale x/y independently, and have it apply as it should afterwards
default line/fill render style (if any)
boundary outline style
base cell outline styles
should have a render preview to show actual grid coverage
need finishing tool
design interface for clone on path
Hirschhorn Medallion, and other pentagon tilings
truchet tiling
penrose/heesch/net clone interface
penrose p1: pentagons, pentagrams, rhombus, sliced pentagram
penrose p2: kite and dart
penrose p3: 2 rhombs
need progressive search when mouse over box
autocreate seamless tile image
autofit source objects/images to the pattern to minimize gaps
map to inkscape tiling clone on export?
Imposition use cases:
for sig editor, need paper partitioner, then stack sections
for same document, have stack of impostions, each with its own page set? would make docs with body pages and
cover easier, without having to implement full "project"
booklet contains two threads, read one way, flip book over, read the other way
remember custom views, to swap rotated display, for instance
booklet but each paper is trimmed differently, like for tabs
need cutting marks for posterizing for lining up different sheets
impose only needs access to papergroups
maybe any spread setup temporarily to another imposition on export?
Net imposition
create from papergroup: one papergroup used as page spreads, another used as actual paper group?
net extra scaling non-functional
NetImposition needs import/export net,
export svg
convert to/from laidout elements
interactive unwrapper and build net interface figure out bleeding and connectivity infrastructure
figure out more efficient clipping of Imlib images
finish implementing double sided nets
saving when net is internal is not proper.. does not distinguish between diff. nets and whole
import/export cff2?
export pdf 1.6?
save different setups: papertile AND net layout
load save nets from: files or 2.OFF files(done)
bug: won't set custom net/paper after edit imposition with polyptych
can't seem to save new bookmarks or use old ones in polyptych, but it's ok in Laidout
hedron window:
opengl impl needs a modern refresh
send imp
receive imp
remember net and paper placement
sometimes paper disappears
auto generate equirectangular -> flat
reverse project net onto an equirect for export
highlight paper when dragging will move it
need to draw other nets in outline (at least) in paper view
need to preview sides on hedron
memory hole in polyptych
file open, preview hedra
file open, preview equirects
need to implement more options for polyhedron connections, to allow mobius strips...
DONE proper units for papers
implement undo.. ideally use same code for both undo and recordable/assignable actions
object interface
need to account for:
dragging matrix changes
key flip, or non-dragging changes
object deletion
inside curve editors
paper interface
spread editor
metadata stuff
during scripting?!
PlainTextWindow plaintextwindow PlainText plain text window:
bug: doesn't handle tabs
need control zoom to change font size
clicking around doesn't properly update caret drawing
plain text edit window specify interpreter to process the text with
DONE PlainTextObjects should be resources
move selected lines up/down
regex searching
jump to line
jump to previous/next edit (in stack)
bookmark spots
option to show line numbers
indent/unindent selected lines
toggle expandtab
comment/uncomment: // or /**/ or #
multicursor edit
some day should have syntax highlighting in Laxkit::MultiLineEdit
pixels units should be set as per document dpi
CharacterInterface characterinterface
should show unicode number/glyph name if available
implement recent
implement suggestions
alternate glyphs
Spread editor: SpreadEditor spread editor spreadeditor
should have border drag to move, not middle drag
python plugin:
need python implementation of Attribute and class structure in/out to help file importers in other python based environments
need headless, no-x compile option to allow minimal usage as python plugins for Scribus
limbo transform should be obeyed. It can be moved, scaled, etc,
page layers should be simplified, each layer behaves according to its transform, and more controls inserted to handle layer maneuvering
configurable command buttons to automate certain things with minimal window clutter....
dump OUT an image list? Scribus has "review images" feature.. can jump to location, edit print/view, etc
repeater tool on path: could be adapted to help animation tweening
animation: real time
animation interface can set laidout->globals.frame, but how best to add callbacks when a Value is modified?
anything even remotely real time needs serious rewrite of rendering, and use compute shaders opengl? vulcan?
how to keep track of class hierarchy? impositions are now listed by resource instance, what is
best way of keeping track of base imposition classes? this is needed for file format description output
polish: ux:
when you save, also save a preview of current spread in freedesktop thumbs?
resizeable ui
should be able to mass disconnect clones
current page should be highlighted
in menus, click down, then drag, will return what is under mouse.. should default to not do anything but stay in menu
page navigator should allow type in shortcuts like "end" or "-2" for second from last
General design usability
to be a decent editing platform, Laidout needs:
viewport rendering needs to be far,far better
master pages with auto page number is important.. for image based page numbers, dynamic objects important!!
would be convenient to send to gimp for editing, update later live
when delete/add pages, need option to reposition to same orientation in margin area
selection snapping: select a bunch of stuff, mark as snap sources, next selection tries to snap against those in old sel, not in new sel
rotation, maybe drag handle with control?
snap to bbox vs aabb
drag constraints more accessible in only y or x direction
per object visibility
per object opacity
better key shortcut edits, right click on menu items to ch key
select only within group zone
easy selection of proper group zone
remove 'i' from common shortcuts for all tools to let it be used for ObjectIndicator
DONE more specific control over transform.. numerical specification
DONE clipping
============== Future of Laidout ================
2D Vector graphics editor built for multiple output types, such as multi-page physical prints, html, or image files
While 2D focused, has some limited capabilities to lay out on 3d surfaces made out of flat but bent or folded surfaces
Current deficiencies:
Render update is way too slow
Too many bugs/quirks in object management, resource coordiation
undo/redo barely implemented
cairo is only 8 bit, limits use for animation
Way too hard to have user created tools
internal object system is flexible, but not without a huge amount of boilerplate-like code to tie to scripter
Being Linux only limits user base, and thus also limits user testing
no color management
raster/paint/editable image layers, or stroke based on non-destructive vector paths would help
Pure svg/pdf vector graphics is limiting, current custom format is very flexible
Game engine-esque, real time animation and 3d tools are rising in importance as everyone aquires powerful cheap devices
Compute shader/ graphics shaders are very powerful and should be used for speed and image effects
Ways forward:
maybe gegl-ify everything?
- fixes 8 bit limit
- babl flexibility
- cross code with gimp/gegl has long term benefits
consider gigantic revamp so that ui is all made with python..
- essentially the blender route
- makes tool development way more accessible to new users
===================Consider anything below here food for thought, not active dev notes================
for translations, there is a difference between locale translations and language translations!
not sure if it is worth paying attention to... need to investigate if locale as it affects keyboard input
is separate from what locale we read in translations from. If it is distinguishable, that is fabulous, in that
we can maintain the current locale key input, but change the language translation at will...
investigate pdfcreator as method to reduce file size
historical impositions:
Name Abbr. Folds Leaves Pages
Folio fo, f 1 2 4
Quarto 4to 2 4 8
Sexto, Sixmo 6to, 6mo 3 6 12
Octavo 8vo 3 8 16
Duodecimo, Twelvemo 12mo 4 12 24
Sextodecimo, Sixteenmo 16mo 4 16 32
On duodecimo: 3x4 on a side, cut off the bottom 4, fold, use as insert into more traditional 2x4
food for thought:
haskell envelope function:
When releasing new version, combine these with ROADMAP items for release notes.
These must be moved to the DONE file at each release.
DONE freetype-config is deprecated
DONE object indicator should show actual page label in it's description
DONE Page Clip: clip in viewer
DONE Page Clip: svg .. set clip-path on each page layer to page outline
DONE Remove old laxutils based drawing calls in favor of Displayer based drawing.
DONE website: make twitterable
DONE make sure gegl points to 0.4, and no freetype-config
DONE bug: input edit cursor placement is wrong now
DONE Meta window for doc meta
DONE Meta window for html out
DONE html out
DONE bug: text selection and highlighting is really out of whack.. int/float troubles? <-- dp->textextent is NOT returning same as font->Extent!!
DONE skip pages (at regular intervals) on multi-image import.
DONE animated gif import
DONE Remove obsolete HelpWindow code?
DONE finish phasing out MenuSelector
DONE laidout settings option to always load last file on startup
DONE added rudimentary plugin list window
DONE when using static SingletonKeeper in ColorManager, dlopen would wipe its object. wuuuuh? <-- something about dlopen process wipes some non-statics in some files
DONE ftgl problem in polyptych... font not rendering <-- just needed ftgl update
DONE Gradient:
DONE dragging colors in radial is still really bad
DONE sliding radial colors not 1:1
DONE p1, p2 need little indicator nugget
DONE resize inner circle, make small past a threshhold makes circle go away
DONE double click to call up color selector
DONE dragging p1/2 bars should not rotate
DONE spread modes
DONE change object, curpoints still selected
DONE clipping path is double applying parent path transform
DONE bug: NONE of the interfaces are initializing shortcuts
DONE bug: DocumentExportConfig subclasses need duplicate()
DONE directory reorganization
DONE ui/ <-- purely ui elements
DONE core/ <-- implies isolating core functions
DONE etc
DONE save as should default to same directory as existing file
DONE save as should change save/import/export/current directory to that directory
DONE bug: crash! import images, select image. boom!
DONE bug: switching export types in export dialog not clearing extra fields
DONE icon generation trouble spots: LaidoutIcon.png has wrong bounds, cut in half p3m1 p6 circular_rm 101 icons in main icons.svg:
DONE old, Inkscape .92: 8.5 minutes
DONE new, Laidout: 39 seconds !!!
DONE new new: 3.1 seconds!!!!
DONE all images: 203 icons, 39 seconds!
DONE still to optimize: render to single image, image subset, save that
DONE laidout shell command: Laidout.BuildIcons(["icons/icons.svg","icons/icons-tiling.svg","../laxkit/lax/icons/icons.svg"],
grid_cell_size = .5,
output_px_size = 24,
DONE bug: patchinterface point select when object transform not identify broken
DONE detect when a resource section is ONLY built in ones, and don't output that section on save
DONE export ranges should accept "1-4, 6, 20-25" and "5-1"
DONE for range on import/export, should have a range parser that accepts unconnected ranges, ie "2,4, 5-10"
DONE perhaps laidout configure should call laxkit configure if it thinks laxkit is not configured yet
DONE Be able to create empties
DONE bug: filters repeatedly writing \"\"\"\" reading in quoted names?
DONE don't allow reparent to a child!! or reparent as appropriate
DONE bug: ImagePatchData crashes in preview generation
DONE add FontValue
DONE bug: experimental in laidoutrc is ignored
DONE MenuInfo AddItem functions are really terrible overload nightmare, need something simpler like, with no menu combined:
DONE AddItem (const char *name, int id = 0, int info = 0, int where = -1);
DONE AddIconItem (const char *name, LaxImage *icon, int id = 0, int info = 0, int where = -1);
DONE AddToggleItem(const char *name, LaxImage *icon, int id, int info, int state, int where = -1);
DONE bug: tabframe not showing tabs, such as in help window
DONE bug: spread editor, selected pages have almost not noticeable selected emphasis.. line width problem?
DONE (? can't duplicate) bug: svg out, select to files, often the first time goes to file, not files
DONE exportdialog export dialog: incorporate IndexRange
DONE bug: debug registration, cut marks, trim marks
DONE custom papergroup, add registration/bars/, can't move it
DONE can't add cut marks to signatures
DONE bug: menus, left click down, drag to other item, lbup then selects other, but initial still highlighted
DONE object indicator: click on object, does not update selection
DONE bug: space bar for centering not working anymore.. shift-space seems to... fixed somehow
DONE scroll bar zoom handles don't appear to work ?? can't duplicate
DONE bug: calculator: using Math; 1*2*pi -> "Cannot compute with those values"
DONE bug: laxkit, spelled Delaunay wrong
DONE bug: Gradient load in not reading one of the two points
DONE Implement passing on configure options to Laxkit configure
DONE bug: can't duplicate gradient nodes.. causes seg fault
DONE bug: gradients always loading as linear instead of radial
You can’t perform that action at this time.