Permalink
Cannot retrieve contributors at this time
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 ../features.md. | |
--------------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, https://github.com/Laidout/laidout-icons.git needs to be updated | |
update fileformat.txt | |
missing Palette/GradientStrip | |
missing voronoi | |
missing LineStyle | |
missing FillStyle | |
DONE incomplete TextOnPath | |
should be resources: | |
PlainTextObject | |
Palette | |
Linestyle | |
Fillstyle | |
PaperGroups | |
PaperStyle | |
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 features.md: sweep LEFT-OFF to DONE, edit major items to features.md | |
update dev page | |
document pull request process on dev.html page, also in repo readme.md | |
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 | |
test: | |
./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 | |
laxkit: | |
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 | |
icons | |
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: | |
spread/pagestack/0/*/ | |
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: _____ ... | |
ViewWindow: | |
maybe drawaxes should show dotted line from origin to bbox? | |
Gradients: | |
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 | |
radial | |
radial: | |
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 | |
name | |
tags | |
color strip: | |
stops | |
position | |
r1, r2 | |
Palettes: | |
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: | |
flatpak: https://github.com/Laidout/laidout/issues/11 | |
debian (get in to main repository) | |
snapcraft | |
DONE appimage, see: https://github.com/Laidout/laidout/issues/10 | |
panel editing: | |
selecting objects really sucks | |
data-data- | |
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 | |
Unparent | |
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 | |
valuewindow: | |
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] | |
[miny] | |
AffineValue: [xx] [xy] {scale x} {rotation} | |
[yx] [yy] {scale y} {shear} | |
[x0] [y0] | |
setvalue | |
ValueHash | |
rearrange set elements | |
delete elements of list | |
when you quit, does not remember from open windows | |
lax: | |
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: | |
cairo image save should use importer to do non-file creation? | |
cairo render has color problems with gradients | |
cairo development is dead? investigate alternatives | |
utf8string: | |
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!! | |
envelope: | |
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 < context.page.maxy/2"__ ] | |
[next] [prev] [all] | |
[ 5 found: (found object thumbnail list) ] | |
search: | |
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 | |
move | |
rename in place | |
implement buttons | |
locked | |
visible | |
selectable | |
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 | |
LaxCairoImage: | |
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: http://www.graphicsmagick.org/api/api.html | |
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 | |
export.config | |
filter: "Html Gallery" | |
copy: [f1, f2, "**/*.png", { from: "here.txt", to: "to/there.txt" } ] | |
templates: | |
[ | |
{ 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 | |
equirectangular: | |
export: | |
for flat, choose lat/long/rotation | |
for hedron, export projected from hedron | |
export lines | |
import: | |
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: | |
parallax | |
auto gyrate | |
control over parallax point | |
autoplay repeating parallax elements | |
follow mouse | |
video objects as mystery data? | |
path follow | |
scrolling object: speed direction | |
shake | |
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 | |
image | |
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: | |
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 | |
out: | |
special check for paths with a single gradient child | |
text linespacing.. unclear how Msize/linespacing maps to svg options | |
text: | |
multiline | |
direction | |
spans | |
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 | |
plan: | |
need an In() | |
implement paper rotation for out | |
ppt (passepartout): DEPRECATE | |
implement crop | |
implement paper rotation | |
ps: DEPRECATE | |
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 | |
eps: DEPRECATE | |
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 | |
interfs.cc: 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 | |
markers: | |
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 | |
mid | |
at specific intervals, or n per line | |
simplepathinterface: | |
make circle green when manual, gray when auto | |
snap: | |
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 | |
multiobject: | |
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?? | |
orient: | |
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 | |
tracing: | |
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/path: | |
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 | |
direction: | |
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 | |
grow | |
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 | |
undo/redo | |
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 | |
copy | |
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 | |
multiline? | |
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: | |
ColorPatchData | |
ImagePatchData | |
PatchData | |
EngraverFillData | |
VoronoiData | |
Caption (convert to path first) | |
text on path (convert to path first) | |
ImageData | |
Refs and groups of any combination of the above | |
DONE bug: chained filter nodes make context wrong, thus bad Refresh | |
BBoxValue: | |
needs width and height functions for convenience in scripting | |
valgrind: | |
DONE mismatch free colorbase.cc 298 | |
conditional jump on uninit: strlens in newnstr re attributes.cc 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 | |
need | |
buttons: | |
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 | |
font | |
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 | |
somedataref | |
DONE check: dereference assign Evaluate extend from Group, not affine | |
gradient | |
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 | |
functions: | |
delauney | |
voronoi | |
convex hull | |
tsp | |
relax (optionally within path) | |
conformal relax | |
quadrilateralize and relax -> work Net into a full Drawable? | |
voronoi region centroid replacement relax: strength, iterations | |
pointset | |
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 | |
paths | |
generators: | |
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 | |
merge | |
simplify | |
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 | |
engraving | |
dashes | |
spacing | |
tracing | |
direction | |
DONE check: dereference assign Evaluate extend from Group, not affine | |
mesh | |
color | |
DONE check: dereference assign Evaluate extend from Group, not affine | |
transform | |
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 | |
properties | |
DONE dereference assign Evaluate extend from Group, not affine | |
object/resource management nodes: | |
find drawable: | |
DONE child of | |
DONE self | |
siblings | |
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 | |
regex | |
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 | |
groups | |
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 https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent 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: https://github.com/awwbees/BespokeSynth | |
praxis-live? | |
proprietary import like substance, houdini, archimatix, Photo Reactor? | |
any crossover with mypaint brushes or krita??? | |
viewer node, resizable | |
simplex noise node | |
voronoise | |
frames | |
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: | |
printf | |
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: | |
---two-arg--- | |
+ - * / % ^ | |
< > != == | |
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 | |
plugins: | |
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 | |
DrawableObject: | |
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: https://www.mail-archive.com/freetype-devel@nongnu.org/msg11459.html | |
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 | |
ellipseinterface: | |
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. | |
ImagePatch: | |
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 | |
PatchData: | |
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? | |
newdoc: | |
when change number of named paper, make it "custom" | |
open on image should create a new singles with default paper and image centered | |
TreeSelector: | |
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 | |
Units: | |
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 | |
else | |
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? | |
anchors: | |
need to be able to control click outside box to create? currenty you must click inside, then drag it out | |
world / local transforms: | |
screen | |
world | |
object | |
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 | |
Reparenting: | |
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 | |
autosave | |
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__ ...ms 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 | |
Colors: | |
color picker that previews text? | |
convert to using Color objects instead of all ScreenColor: | |
gradient | |
color patch gradient | |
image patch | |
caption | |
linestyle | |
fillstyle | |
path | |
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 | |
path | |
gradient | |
patch | |
imagepatch | |
colorpatch | |
voronoi | |
caption | |
character | |
curvemap | |
ellipse | |
engraver | |
freehand | |
object | |
perspective | |
simplepath | |
textonpath | |
align | |
nup | |
clone | |
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 | |
affected: | |
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) | |
themes: | |
on ThemeUpdated events, things need to account for: | |
color styling | |
pads | |
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: | |
theme | |
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 http://benpaulthurstonblog.blogspot.com/2015/12/parameterized-quadratic-conformal.html | |
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.. | |
guides: | |
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 | |
snapping: | |
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 | |
empties: | |
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 | |
papergroups: | |
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 | |
curves: | |
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? | |
lineedit: | |
seems to be an occasional redo bug, reinserting in wrong position | |
password | |
date | |
time | |
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?? | |
nup: | |
fill in box | |
bug: not showing highlight on rectangle | |
doesn't appear to update random target area when you resize area | |
flowed | |
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: | |
MysteryData | |
transform/bounds | |
title (shown in screen) | |
description | |
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.. | |
viewport: | |
allow multiple, positionable spread views visible on same viewport | |
resources: | |
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: | |
Laidout | |
Project | |
Document | |
Page | |
Group | |
draw objects: Image, ImagePatch, Paths, Path, LinearGradient, RadialGradient, PatchGradient | |
PaperGroup | |
PaperType | |
Imposition: Singles, DSS, Booklet, Signature, Net:Box, Dod, etc... | |
ImageImportFilter | |
ImportFilter:svg,ppt,sla,ps,eps,odraw | |
ExportFilter | |
-->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 | |
code | |
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 | |
calculator/scripting | |
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 | |
destructors | |
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? | |
gshell: | |
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: | |
scripted | |
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) | |
binary_path | |
doc_website | |
expected_file_ext | |
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 | |
examples: | |
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 | |
pagerangeinterface: | |
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 | |
numberpadmask? | |
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: https://www.youtube.com/watch?v=__9_KZi_tpE | |
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 | |
pagemarkerinterface: | |
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 | |
icons | |
tooltips | |
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 | |
Convert: | |
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 | |
collected/ | |
images/ | |
fonts/ | |
resources/ <- that were laidout resources linked in | |
file.laidout with proper links to new dirs | |
collect.log <- what was collected / rasterized? | |
preflighting: | |
steps: | |
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.doc.page.layer.obj.obj / project.papergroup | |
message | |
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 | |
options: | |
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 | |
config: | |
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 https://en.wikipedia.org/wiki/Pentagonal_tiling | |
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 | |
moebius | |
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: 1.net files or 2.OFF files(done) | |
polyptych: | |
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 | |
tutorial | |
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 | |
nodes | |
image | |
gradients | |
paths | |
meshes | |
color | |
image | |
engraver | |
inside curve editors | |
paper interface | |
spread editor | |
reimpose | |
unwrapper | |
metadata stuff | |
cloner | |
during scripting?! | |
saveable? | |
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 # | |
indent/unindent | |
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: | |
undo/redo | |
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 | |
snapping: | |
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 | |
guides | |
text | |
Grouping: | |
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 ================ | |
Goals: | |
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 | |
Considerations: | |
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 https://rhollick.wordpress.com/2017/06/12/duodecimo/ | |
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: http://projects.haskell.org/diagrams/doc/manual.html | |
======================================DONE================================================= | |
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, | |
output_dir="TEST_ICON_BUILD") | |
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 |