Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
laidout/src/LEFT---OFF
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
3334 lines (2979 sloc)
153 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: PDF export does not handle object bleeds | |
bug: severing clone link does some weird things, including crashing | |
bug: clone tool clones do not have proper bounding box | |
bug: gegl nodes, connect sinus to waves and also to displace, freeze! | |
travis is recompiling on non-master branch pushes and it shouldn't | |
crash: Start blank, then open recent doc with an ObjectTree. click on an object, crash! querying wrong viewport? | |
------------ other bugs: | |
ux: if there is a page/file snafu on export, should return to the export dialog after the error | |
bug: back to not maximizing properly on default ubuntu. Seems to work fine on every other window manager I've tried. | |
bug: curve is terrible approximation at end points | |
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, cycle through formats, quit | |
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, open up examples/nodes-asciichart.laidout, then quit. 1 object remains | |
DONE memory hole in calculator | |
DONE memory hole: start blank, exit. 3 remain!! | |
DONE memory hole helpwindow -> probably something to do with ShortcutWindow and ShortcutTreeSelector not refcounting as expected | |
DONE memory hole delaunayinterface | |
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... | |
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 | |
----------------0.098 ROADMAP ITEMS: features and enhancements------------------------ | |
DONE website: Rework download to be easier | |
website: | |
screenshots: | |
half the videos are not linking | |
need to redo screenshots section for mobile friendliness | |
Color fonts | |
Caption tool | |
Text on path tool | |
Image tool | |
Engraver tool | |
How to make booklets | |
Paths | |
Alignment tool | |
Page range interface | |
paper tiler | |
Color patches | |
Viewport/navigation/window arrangements | |
Gradients | |
Nets | |
Warping | |
Spread editor | |
Node tool | |
rename to Tutorials or maybe Media. Inkscape uses "Learn" | |
on index should show version and date | |
for CI, https://github.com/Laidout/laidout-icons.git needs to be updated | |
update fileformat.txt | |
DONE missing Palette/GradientStrip | |
DONE missing LineProfile | |
DONE missing voronoi | |
DONE missing LineStyle | |
DONE missing FillStyle | |
DONE Path: output problem when name - null - non-null-comment | |
DONE incomplete TextOnPath | |
check laidout.1 when time to release | |
DONE update splash image at icons/LaidoutSplash.png | |
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, sync with 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 | |
build: building: build process | |
should be able to specify include directories to configure, to work around hacky existence checks | |
should be able to specify default icon size as a compile option | |
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 | |
DONE make a laxkit.pc from laxkit configure | |
DONE fix hardcoded /usr/include/cups in laxkit/configure | |
DONE laidout ./configure needs to pass on relevant things to laxkit | |
DONE in config.log should show actual configure line for easy duplicating | |
--- 0.099: | |
should be able to do out-of-source builds | |
make "make uninstall" work, and remove coop from installed position | |
remove the lax onamac parts from configure? poorly named, more a bsd issue, not mac | |
modernize debian/rules. See Laidout PR #5, https://github.com/Laidout/laxkit/pull/5 | |
use that laxkit.pc from Laidout and laxkit examples | |
packaging: | |
update CI: https://github.com/Laidout/laidout/pull/28 | |
flatpak: https://github.com/Laidout/laidout/issues/11 | |
--- 0.099 | |
debian (get in to main repository) | |
snapcraft? | |
DONE appimage, see: https://github.com/Laidout/laidout/issues/10 | |
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 | |
global Laidout settings: | |
settings dialog | |
need to be able to set external programs | |
rearrange dir lists | |
rebuild icons | |
set uiscale live | |
resource search directories, per resource | |
remove old palette_dir thing, it should be wrapped into resources | |
need "import settings from..." (but always use hardcoded laidoutrc) | |
color theme | |
icons | |
tooltips | |
per tool default settings | |
thin line width (default 1 pixel, but this is bad for high dpi screens) | |
graphicsmagick: | |
load_image() always loads full, even if ping_only (confirm?) | |
debug inkscape node extension | |
text on path textonpath: TextOnPath | |
bug: crash sometimes when click down for new text on path object | |
bug: offset and baseline handles disappeared for large offset values | |
bug: bezier length resolution inconsistencies making gaps. need solution with consistent approximation | |
bug: visible selected bounds not updating? | |
bug: dragging the offest handle sometimes jumps to really bad | |
bug: when direction is reversed, offset needs to be reversed | |
bug: sometimes path weights don't recache along with glyph positions | |
bug: duplicate isn't always initing the dup properly | |
bug: some problem with paths when link_to_parent | |
handle to remove from current path, and possibly attach it to some other path | |
how to attach to diff path | |
how to attach to any path | |
move mouse around hover over objects, indicate when you can apply text on an existing path | |
envelope: | |
bug: change offset on closed path, flips around envelope size | |
bug: glyph positioning is wrong: position glyphs based on middle of glyph, not start of glyph | |
bug: final letter in envelope size is wrong size | |
vertical position bad | |
horizontal spacing a bit wonky | |
when baseline is from_path, should indicate path, not offsetted path | |
select font, key up/down scrolls uncomfortably SOMETIMES!! | |
dragging size handle with shift|control for precision does not scale properly | |
---0.99: | |
mouse click to position caret | |
size of offset and baseline widgets is not screen space, should they be? | |
cursor behavior and color should match the caption tool | |
halignment options for open paths? | |
need kern control, with kern handles | |
copy and paste text | |
should not add new object with special check for blank on interf exit, should cache add point, but only add if new text pressed | |
rotation handle: glyphs align with path, or orient absolute, or distort with path flow, or distort with absolute angle | |
multiline? | |
option to auto expand line | |
DONE (apparently) bug: convert to path rendering to wrong place and orientation | |
DONE bug: baseline options don't work, seem to all use offset path only. | |
DONE should have menu option to reverse direction on path without actually reversing path itself | |
DONE bug: when you duplicate, it's linking the path | |
DONE (? can't dup anymore) doesn't handle transforms with nested objects properly | |
DONE bug: not setting current color when object entered | |
DONE bug: color not loading and saving | |
DONE how to you actually edit path? ^p.. menu option | |
DONE bug: drag voffset shifts the text start? | |
DONE bug: drag the baseline handle off to the sides, makes huge bad jumps in value <- restrict to mod only baseline | |
you can't control unclick selected directories | |
export/print dialog | |
ux: if files needed == 1, then should not error about not being able to export many pages to single file, like with page atlas | |
DONE bug: for Singles export with non-single impositions, defaults to paper layout PaperGroup, instead of just encasing the single page. | |
DONE pdf | |
DONE svg | |
DONE scribus | |
DONE image | |
DONE image gs | |
DONE html | |
DONE plan | |
DONE ppt | |
DONE ps | |
DONE eps | |
DONE page atlas | |
bug: bleeds: | |
html | |
DONE page atlas | |
---0.099--- | |
what happens about background programs, like opening something in gimp? can't delete temporary files | |
when there is a failing mismatch between multifile/multipage, dialog should warn, then resume the dialog, should not exit dialog | |
maybe flag whether to export limbo with spreads? | |
need proper print dialog.. old ppd cups stuff is deprecated | |
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 | |
double check: export current appears to be broken | |
needs to be ScrolledWindow | |
should convert to use ValueWindow when it's ready | |
DONE Make export dialog optionally have the to command field: | |
DONE [] Send files to command: [ -Print commands- v] | |
DONE load/save external tools config | |
DONE debug validity check | |
DONE after manage commands, list doesn't update from export dialog | |
DONE bug: slider popup shouldn't show item if hide_from_Browse | |
DONE make print button experimental only? --> disable until a real print dialog happens | |
DONE For now remove print button, as it produces incorrect results. All it does is allow "to command" option, not vital | |
file filters: filefilters: | |
multiple export targets, including per object export settings | |
export with custom project files: project export project | |
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", | |
filter_config: { ... }, | |
copy: ["path/to/f1", "path/to/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" } ], | |
eachspread: true | |
}, | |
] | |
config resource load/save | |
need to ensure that when bouncing around filters, Export All sets range properly | |
---0.099: | |
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 | |
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 | |
DONE open with... on export ? combine with command option, which does basically the same thing.. need to decide about tmp files and unlink them | |
DONE export by command needs work, bypasses safeties.. what about multiple files? | |
DONE put command export within export_document() | |
pageatlas: page atlas: | |
double check: export current not selecting the proper spread?? | |
DONE export singles nightlife booklet, everything is small?? | |
DONE file names should be like exported-01-05.jpg not exported-1-5.jpg | |
DONE needs bg color | |
DONE basically n-up page out, lrtb | |
---0.099 | |
should be able to go on a random papergroup, not depend on a doc | |
equirectangular: | |
---0.099--- | |
export: | |
for flat, choose lat/long/rotation | |
for hedron, export projected from hedron | |
export lines | |
import: | |
page clip / object clip | |
0.099: 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: | |
---0.099--- | |
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: | |
bug: not handling bleeds | |
obey object visible | |
---0.099--- | |
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 | |
obey object visible | |
width, height defaults to 0, which is supposed to autocompute correct w,h from dpi.. check! | |
---0.099--- | |
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 | |
DONE should have color select for background color, which would be alternate way to set full transparent | |
laidout export: | |
---0.099--- | |
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: | |
---0.099--- | |
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: | |
bug: pdf export lines has outlines in evince? | |
bug: export clones adds extra ref in resources section | |
bug: text out very broken.. imageout via gs complains about malformed pdf on fonts | |
bug: fonts are not doubled up, each text object is exporting its own | |
---0.099--- | |
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 | |
start using podofo instead of custom? higher quality pdf output, pdf input options. https://github.com/podofo/podofo, soon to be built from https://github.com/pdfmm/pdfmm | |
DONE obey object visible | |
Scribus scribus: | |
bug: objects are not placed properly on papers | |
---0.099--- | |
bug: doesn't cope with different paper sizes | |
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 | |
DONE obey object visible (no hidden objects natively) | |
svg: SVG | |
in: | |
bug: gradient with no p1,p2 defaults to 0,0. should perhaps be 0,1 | |
---0.099--- | |
in units should default to csspoints | |
bug: when stroke+fill presentation atts are not under a "style" att, they are ignored | |
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 locked: sodipodi:insensitive="true" | |
DONE obey object visible: style="display:none;..." | |
DONE in: update StyleToFillAndStroke() calls to extra and react to display:none | |
DONE out | |
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: | |
needs option to not clip by page, or auto to not clip when single page in spread | |
---0.099--- | |
special check for paths with a single gradient child | |
text linespacing.. unclear how Msize/linespacing maps to svg options | |
DONE locked: sodipodi:insensitive="true" | |
text: | |
multiline | |
direction | |
spans | |
DONE color | |
bug: export papers currently not going to correct paper | |
---0.099--- | |
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 | |
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 | |
---0.099--- | |
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? | |
Singles: | |
inset should be per paper in papergroup | |
revamp to be art board centric, based on random PaperGroup | |
what's with the old cached_margin stuff, obsolete now with pagestyles stack? | |
DONE need to cache page margins properly for papergroup GetPageMarginOutline() | |
PageLayout() lines | |
PaperLayout() | |
implement double sided | |
multi page inkscape import needs to assign proper pages | |
freehand tool: | |
should have option to output base weighted path, with custom filter resource to copy onto it | |
keep a stack of lines previously made for fake undo by repeated delete? or just implement undo for object added | |
path simplification needs to be considerably better, both points and weight nodes | |
needs to account for time and speed | |
auto apply line profile | |
gradient select: custom or resource | |
pressure curve | |
mesh outputs should still be Mesh based on path | |
implement Shape Brush? | |
output to either "shape brush" line profile, or flattened path | |
DONE numerical input for brush size | |
DONE brush_size should be real, not screen units | |
DONE need "brush size" controls | |
DONE needs to respond to viewport color change | |
shape brush shapebrush: | |
pathi -> save to shape brush should ask for a name | |
use shape brush should show previews | |
DONE not saving to file | |
PathInterface: pathinterface | |
bug: if path doesn't have linestyle in file, later crashes since it does not fill in | |
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 | |
drag on handle (not point) to resize handle. cntl to scale only it. cntl+shift to rotate it | |
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, have a multi-object widget that lets you: | |
Edit all objects at same time (default) -> box that says [3 objects] click for action menu? | |
Combine to single object (select from menu?) | |
Combine and merge endpoints (select from menu?) | |
cross link linestyle or fillstyle | |
DONE need numerical entry for all weight node characteristics | |
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 | |
---0.099--- | |
investigate Raph Levien's new curve offset method: https://raphlinus.github.io/curves/2022/09/09/parallel-beziers.html | |
that hot new spiro curve from Raph Levien | |
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 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 | |
ObjectFilter objectfilters object filter: objectfilterinterface: | |
debug merge | |
memory hole: going from nodes to filter editor, objects remain on quit | |
bug: muting and unmuting many times causing endless loop | |
bug: muting is not rendered in node view.. and can't toggle in node view | |
DONE bug: object tool up, you can somehow click through to path tool, then crash on escape | |
DONE bug: select filter editor tool, does not use currently selected data | |
DONE need menu options: Apply filters (currently crashes) | |
DONE when jumping between tools, tool icon needs to update | |
DONE if mirror plane is node connected, should ask if you want to edit | |
DONE clicking the eye should only toggle, not select the node | |
DONE bug: 2 mirrors, eye toggle second, apparently no effect until you mess with the other: no PropagateUpdate?? | |
DONE bug: should auto select correct node when you jump to node view | |
DONE bug: won't activate when clicking from node interface | |
DONE need way to go from node interface to interactive | |
---0.099: | |
menu option: Create filtered copy | |
implement unlink if connections locked | |
implement X for get rid of filter | |
implement easy menu driven adding of filters, with possible rearrange order of filters | |
need a way to easily apply one object's filter to another object | |
clean up filefilter.h definition to allow explicit declaration of ObjectFilter in DrawableObject | |
filter to anchor to other objects, migrate the old anchor stuff to nodes | |
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 | |
valgrind: | |
conditional jump on uninit: strlens in newnstr re attributes.cc 2673, 2192, 2206/1007, 2651 | |
DONE mismatch free colorbase.cc 298 | |
node editor node interface NodeInterface nodes: node: interface: | |
bug: duplicating placing at strange place | |
need a way to dissolve reroute or nodes, so we don't break routes | |
bug: multiply v*v after node dup, try to enter a single value, weird things happen | |
DONE bug: vector display, uses 2e+2 for 200 | |
bug: new object, "Net" is actually a "NetImposition" | |
bug: new LineStyle object node, object info has fields, but no data, lists type as "anObject" | |
bug: curve mouse postion is wrong | |
bug: file prop popup not working... sometimes?!? | |
CRASH: Math.flatvector((a+b)/2, (c+d)/2) .. also default (1,2) producing a set, not a vec2 | |
bug: red: Lerp | |
bug: yellow: | |
CSVFile | |
ObjectToFile | |
BBoxPoint | |
DONE Math1 (only on initial add, fine on load in or dup) | |
DONE MapFromRange | |
DONE MapToRange | |
DONE Invert | |
expressions: Math should be imported | |
bug: why is captiondata preview render getting triggered every node update? | |
bug: work on filter, save nodes, switch to object, load nodes, destroys proper in/out of filter | |
SetTransforms if single in, should be single out | |
bug: paths should not clip their children by default | |
need delete frame.. delete objects not deleting frame if empty | |
bug: sporadic, 1st input edit doesn't stick, maybe related to sometimes duplicate is not spawning near original.. not saving last prop? | |
bug: reroute nodes doing weird colors | |
grouped nodes: need to properly propagate MarkMustUpdate() past container node directly to output props | |
check NodeBase::GetStatus() when no outs, but topropproxy | |
memory hole page info? drawableinfo, objectinfo | |
bug: new object caption, attach to object function, crash!! | |
bug: CaptionData is creating a new font every single instantiation | |
bug: Need to make text objects have expected preview orientations | |
bug: trying to open menu for enum with 0 entries should not pop up a window | |
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: transform object is linking, not copying images in an ImageData, need to dup the actual image data | |
bug: height of resizable property not saved | |
bug: duplicating objectfilter does not transfer values 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.. maybe increase width instead? | |
need to figure out safe way to duplicate DrawableObjects that have filters and/or children | |
implement objectfilterinterface/nodeinterface interchange with nested node groups | |
drop files into FileValue properties? | |
drop text/numbers to properties | |
drag on vec2 x/y should shift values | |
---0.099--- | |
would be nice to have a property type PROP_List so you can input "1px,2%,3,4" and have it parse to [1,.02,3,4] automatically | |
GetGlobal needs to use a menu | |
undo redo | |
edit filter nodes for the first time should center nodes in viewport | |
would be nice to have a "Collapse unlinked properties" option | |
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 | |
some people are going to want straight connection lines | |
DONE BBoxPoint | |
DONE Math1 needs transpose | |
DONE CSVFileNode | |
DONE JsonFileNode, by adding or by drag and drop | |
DONE changing node width (like many image ones you drop in): all by same diff, all to same width | |
DONE bug: top filter "out" is outputting data | |
DONE ListOf | |
DONE bug: JoinSets is not loading/saving properly.. variable list props need unique names | |
DONE bug: when in error state, tries again EVERY refresh.. should only try when values change again | |
DONE bug: make circle, link set, dup, now node in error state.. copies set? | |
DONE MakeSet | |
DONE GetElement should be able to access drawable children or dict elements, also either int index or string name | |
DONE SetRotations | |
DONE SetTransforms | |
DONE SetScales | |
DONE (can't duplicate) bug: why are nodes yellow sometimes after load in: PerspectiveFilter, PointsToDots, Affine, Affine2.. DONE: String Circle | |
DONE bug: ObjectInfo if props connected to outs, change object, bad things happen | |
DONE reroute needs click on connection to add (via shift-control) | |
DONE bug: control click on connection for pan traversal not working all the way | |
DONE bug: duplicate reroute doesn't make a new reroute | |
DONE bug: duplicate a caption, goes status 1 | |
DONE bug: node duplicating, reminder default DOES NOT DUP TYPE!! it dups NodeBase.. double check this is fine, might need to imp duplicate() | |
DONE bug: math2 error message not being cleared properly | |
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 | |
DONE execution order: Update() should ONLY update current.. UpdateRecursively() parse backwards Update()ing as necessary | |
DONE bug: TransformAffine using PointSet outputing "out" to file | |
DONE bug: memory hole in objectfilter interface | |
DONE ConvertNumberNode | |
DONE KidsToSetNode | |
DONE concat should support sets | |
DONE bug: expression auto parse parameters not working when unknowns in paretheses | |
DONE need solution for shared interface getting messages for different nodes.. probably need to do one instance per whatever <-(yes) | |
DONE bug: say Vector2, edit value, tab to next, does not save previous value | |
DONE but: Color node only has output, but outputting data of output nodes currently forbidden.. make exception when output is editable? | |
DONE Get document node | |
DONE Number list | |
DONE NumToString | |
DONE bug: color property doesn't show transparency checkerboard | |
DONE Switch: variable in list, index element | |
need: | |
expand list i..j | |
GetFromEach: set in, get specified index from each element of in set, element must be hash, index, or have property with that name | |
multi-input revamp: | |
ExpandVectorNode | |
RectangleNode | |
Affine | |
Invert | |
ConvertNumber | |
make new ExpressionEach node to allow process on each element | |
ImageNode | |
ImageFileNode | |
ImageInfo | |
RandomNode | |
Slice | |
Lerp | |
TransformAffine | |
ModifyObject? ObjectFunction? | |
TextFile | |
ToFile | |
LImageData | |
LImageDataInfo | |
SetOriginBBox | |
RoundedRect | |
PointsToDots | |
DONE MapRange | |
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 | |
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 | |
color list to gradient | |
gradient interpolation type? | |
nodes must receive correct color messages from viewport color box | |
needs a little settings button to pop interpolation or do strip resource selection | |
create radial or linear gradient image | |
missing radial/linear flip, color strip fields in NewObject with GradientData | |
DONE(?) bug: gradient controls broken sometimes | |
DONE check: dereference assign Evaluate extend from Group, not affine | |
DONE double click to call up color box | |
delaunay/point set tool: Vector2 + properties | |
functions: | |
DONE delaunay | |
DONE voronoi | |
path from points | |
polyline, quartic, cubic, spiro, spiro2, lofi curve | |
convex hull | |
tsp | |
relax (optionally within path) | |
sample relax: each iteration sample image/object for value, use that as a size. push based on it | |
conformal relax | |
quadrilateralize and relax -> work Net into a full Drawable? | |
voronoi region centroid replacement relax: strength, iterations | |
pointset | |
stipple from | |
poisson disc | |
create without initial flush to reduce allocations? | |
optionally do set of affine? | |
set from drawables | |
perturb set.. perturb ANY PointCollection | |
DONE double time with path generators | |
DONE grid, hexgrid, random square, random circle | |
DONE apply positions to groups of drawables | |
DONE check: dereference assign Evaluate extend from Group, not affine | |
DONE imp property access for VoronoiData | |
paths | |
intersections | |
generators: | |
generator is flushing path each time, would be better to overwrite when possible | |
DONE need linewidth, stroke, fill | |
DONE squircles | |
rounded rect: | |
needs stroke/fill/line width | |
DONE need variant with rounded per corner -> pass in list | |
DONE at all | |
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: | |
apply LineProfile (along s, not t) | |
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 | |
SampleInterval: | |
offset, step, step is dist, fit step | |
SampleN: n times within path, padstart, padend | |
boolean pathops | |
project onto heightmap? onto mesh? | |
make net then inset | |
merge | |
simplify | |
extrude: | |
bug: when you use another object for the extrude path, no automatic update happens | |
this should probably be a path function | |
needs to check for same tree and transform points before using | |
set line profile from resource | |
apply weights | |
DONE ClosestPoint(s) | |
DONE path length | |
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: | |
from project or doc root, not just from particular drawable? | |
siblings | |
direct parent | |
in whole tree | |
other pages? | |
DONE child of | |
DONE self | |
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 | |
merge | |
filter interface icons crunched when interf has small name (like Mirror) | |
filter interface buttons not working | |
edit with filter interface from node view not working | |
crash on exit after filter interface | |
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 | |
inkscape multipage | |
import new Inkscape margin features | |
pages are defined upside down.. has to scale to viewbox? | |
need to insert pages at load time, and assign objects to proper pages | |
Need to test actual exporting mechanism | |
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 | |
DONE bug: says bad svg path string?? | |
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 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/Debug node, resizable | |
simplex noise node | |
voronoise | |
frames | |
label/comment font size should be adjustable.. draggable size triangle on right? | |
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 | |
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' | |
need to allow sets of numbers as inputs, output set in that case | |
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 for connecting, drop onto a property at all should link, not just on slot | |
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 | |
color fonts issue #6 svg otf svg | |
see this freetype gsoc 2019 project: https://www.mail-archive.com/freetype-devel@nongnu.org/msg11459.html | |
captioninterface CaptionInterface captiondata CaptionData | |
default text size is super small | |
bug: bitstream vera sans, "Text" convert to path puts e correct, but screen render puts it out too far. huh?? | |
---0.099--- | |
should be able access fonts as resources, to preserve links on load/save | |
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 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 | |
toggle for evaluated text? only allow edit on the raw text, run {{expression}} through calcualtor? | |
use selected text as sample when popping up font dialog | |
lorem ipsum | |
markov ipsum | |
DONE right click menu options for insert char and select font | |
DONE bug: why is a font being created and destroyed each refresh?? | |
fontdialog: FontDialog | |
bug: makeinwindow SOMETIMES not working, select one, puts on bottom line | |
ellipseinterface: | |
bug: click down+up with minimal drag makes zero length handles that we can't move. should not make a really tiny new data, should keep old if any | |
bug: input box and you change tool, does not abort the box | |
bug: need fill color response, also line width handle | |
switch between rounded rect and ellipse? | |
incorporate as special mode in path tool so we don't have to duplicate all the weight node interface | |
---0.099: | |
angle drag lapping should preserve large arc | |
need rotate handles | |
del on center cross hair should straighten? | |
DONE bug: drag size movement is not 1:1 | |
DONE better drag indicators | |
DONE bug: double click on ellipse, does not activate controls | |
DONE center cross hair should be slanted when shape is slanted | |
DONE incorporate to mesh tool | |
DONE derive from Value in LEllipseData, needed to make object property i/o work correctly | |
DONE bug: inner radius hint not using center | |
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 patch/mesh controls: Mesh PatchInterface | |
bug: convert path to mesh inserting null patches at each point | |
bug: rotate/scale single or more control points should move attached controls in smooth mode | |
---0.099--- | |
bug: base on path remove/add should try to remember previous weight nodes, scratch only when mod points (not colors) too far off | |
bug: should still be able to edit colors while based on path | |
need ability to rect select points, like for cone gradient, points on overlapping edge can't be selected | |
no ellipse right click options | |
DONE circle warp: | |
DONE bug: circle: non-circle breaks ellipse scan | |
DONE bug: circle: drag center, breaks ellipse scan | |
DONE bug: sets "circle" property, but does not output the data to file | |
DONE bug: render initially displaying in small rect. changing inner radius gets it to sync | |
DONE bug: select whole edge fails when points overlap and select near active | |
DONE when color points overlap like with circle warp, have a way to change all coincident color points -> workaround: auto_select_close | |
DONE selected nodes should probably be more prominent and colored, just gray disappears, hard to work with | |
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. | |
0.099: ImagePatch: | |
abstract to be a filter, with optional stand alone object | |
0.099: 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 | |
0.099: 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?? | |
GroupInterface groupinterface ObjectInterface objectinterface: group: object interface object tool | |
select/unselect all | |
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) | |
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? | |
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 hide/unhide | |
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 | |
voronoi Voronoi delaunay Delaunay: point set pointset | |
stipple sample: | |
pull in the eggbot stippler? results are way better, plus they implement voronoi center relaxing already | |
DONE custom radii | |
need to be able to cache need to recalc shapes | |
bug: coincident points cause weird problems | |
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 | |
boundary: | |
page | |
margin | |
draw outline | |
snapshot current bbox | |
draw area from other object | |
box + padding | |
color per point: | |
color by weight as index into gradient | |
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 delaunay tris to graph | |
less than three points doesn't remap rationally, need to update extra lines to something proper | |
DONE should not recalc shapes that we are not viewing | |
DONE repeat last generator shortcut | |
DONE Number input of random n, grid, hex | |
DONE right click | |
DONE start new object | |
DONE generators | |
DONE toggle delaunay lines | |
DONE toggle voronoi lines | |
DONE toggle points | |
DONE implement show_points | |
overwrite: | |
tab/left/right/enter not doing anything. should be able to control with keys | |
FileDialog filedialog: | |
when on recent, going back should just revert to directory view | |
click on big image/pdf, takes time to generate preview. click on already selected, regenerates preview | |
need a click to generate preview, gen preview in background | |
file dialog, single click should not enter directory, double click should do that | |
bug: layer on a page won't allow collapse/expand | |
bug: sort caseless, other sorts not working | |
should be able to click on column header to sort | |
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 needs click on parent dir to jump to the dir, but still be able to easily return to prev dir | |
implement icon list selector | |
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 implement option for (or just show) directories first | |
DONE bug: saving before asking for overwrite? ..no? | |
DONE bug: overwrite not escapable? | |
DONE enter on file line: if has dir, change dir, else trigger save | |
DONE should probably have a scroll bar | |
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: | |
uiscale option | |
passing in 1 is different than having no uiscale, why??? forcing it to check screen?? | |
should have option to use native icons.. otherwise they render kind of bad. | |
prefs.scale_icons ? | |
DONE don't hardcode for instance thin as 1 | |
DONE check interfaces, make sure everything uses ScreenLine,Threshhold,UIScale: | |
DONE curvemap | |
DONE freehand | |
DONE perspective | |
DONE simplepath | |
DONE textonpath | |
DONE align | |
DONE-ish nup | |
DONE clone | |
DONE object | |
DONE nodes | |
DONE engraver | |
DONE ellipse | |
DONE character | |
DONE caption | |
DONE patch | |
DONE imagepatch | |
DONE colorpatch | |
DONE gradient | |
DONE image | |
DONE path | |
DONE voronoi | |
DONE spread editor | |
check windows, need ThemeUpdate | |
defaultlaxfont | |
DONE overwrite | |
DONE reimpose | |
DONE filedialog | |
DONE export | |
DONE import | |
DONE Import images | |
DONE palette | |
DONE newdoc | |
DONE fontdialog | |
DONE viewport | |
DONE color sliders | |
DONE error message box | |
rebuild icons in app: | |
need to install the source svg | |
detect if scaled icons make fuzzy and ask to rebuild | |
detect if missing icons, ask to build | |
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) | |
accessibility: | |
allow changing theme from command line, config file, or settings window | |
have alternatives whenever a tool expects modifiers + mouse movement | |
themes: | |
option to use different go/don't go colors | |
on ThemeUpdated events, things need to account for: | |
color styling | |
pads | |
font size/type | |
refreshing icons | |
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 | |
... | |
laxkit 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 | |
DONE make DraggedThreshhold an InterfaceManager ui scalable setting | |
DONE laxprofile not working | |
laxkit: | |
resources: | |
resource names should default to object->Id(). Is Name important? refactor with "label" instead of "Name"? | |
should probably go all in on stacks of data, with container pointers to the data.. would help with name collisions | |
migrate the Value system to Laxkit | |
Value whattypes() should just be the type, rather than c++ class name | |
inotify hooks? | |
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 | |
FileDialog, when you instantiate with particular thing, it should be highlighted and shown in file pane | |
need more mechanism so that popup dialogs stay on top of window they are "children" of | |
need better indication of focused/not focused | |
need to make sure the weird stuff with xim/xim_ic in anXApp::CreateXInputContext() still works after not creating new xim_ics | |
need to investigate using ibus | |
should revamp the viewport color events to exclusively use Color objects and handle specials | |
lists need move semantics | |
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 | |
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. | |
having managers as singletons in Laidout seems to make crash on exit.. for some reason manager destructor order matters | |
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 | |
lineedit: | |
seems to be an occasional redo bug, reinserting in wrong position | |
password | |
date | |
time | |
DONE dir | |
for blend modes, maybe place name conversion in Displayer, in case there are a ton of custom blend modes?? | |
rowframe/squishybox would be nice to have aspect preserving squishes | |
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 | |
DONE dlopen seems to be wiping singletons???? -> making them static in files seems to fix | |
TreeSelector: | |
click open jumping current to 0 | |
option to use markup for labels | |
tree display flat option | |
makeinwindow() doesn't account for columns | |
DONE? with text colors, mouse over highlight is off (can't dup?!?) | |
DONE? not showing alternate gray/white bgs (can't dup?!?) | |
DONE left and right need to open and close | |
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: _____ ... | |
implement clobber_protection: "%f~", %f is basename, save in same dir as file (clobber file will be clobbered) | |
TEST THIS | |
saving templates | |
save as | |
save a copy | |
Document::Save | |
make drag and drop selections work dnd | |
bug: seems like errant end of dnd animation after you drop something from nautilus?? | |
implement viewport vector file drop | |
implement image file drop to nodes: | |
drop text onto specific properties | |
gegl file in node | |
DONE csv file | |
DONE json file | |
DONE LaxImage node | |
DONE text file | |
dnd to CaptionInterface | |
dnd to ImageInterface | |
dnd to ImagePatchInterface | |
dnd colors somehow? interpret text "#fff" as a color | |
drag from lax edits to other places (in and outside app) | |
implement proper action querying, like when you press shift, control for copy or replace while dragging.. is it necessary, we always copy? | |
DONE Initiate dnd | |
DONE set up system dnd state | |
DONE send regular updates per protocol | |
DONE send data per protocol on drop if to other process, or internally if drop on ourself | |
DONE accept dnd | |
DONE mouse moves around due to ourself or some other process | |
DONE window needs to decide whether dropping is ok, and choose which window will take the drop | |
DONE handle drop of data | |
DONE LineEdit | |
DONE implement viewport bitmap image drop | |
DONE xlib_dnd->preferred_type not being set?? -> was bad child selection coords | |
DONE do proper translation between screen coords and window coords during acceptance query | |
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: | |
need display object to make visible if truly empty.. display object is not exported | |
DONE need node just for empty.. remembering NewObject->Group is irritating | |
DONE use as targets in, for instance, node alignments | |
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 | |
should be able to snap to spread pages also | |
when reset scale or rotation, preserve relative orientations | |
bug: sometimes clicking around when you have custom papergroup in viewport crashes | |
options to edit order of papers.. drag indices (front or "back") | |
define papergroup, convert papergroup to NetImposition | |
need snap to: | |
margins | |
spread/page borders | |
need to be able to edit margins: edit the art box | |
need an easy toggle for landscape/portrait | |
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 | |
debug papergroup tool in spread editor | |
paperinterface: in spread editor (done), and able to print it out | |
in spread editor (done), and be able to print it out | |
DONE option to show numeric print dimensions.. with the label? with indicator that it is not 1:1, maybe like show "110%" | |
DONE maybebox needs to snap | |
DONE if page is too big, need indicator around mouse that we are placing something | |
DONE space while dragging should dup boxes | |
DONE bug: custom paper size window starts as 0 size window? | |
DONE option for "Sync Physical Sizes when scaling" | |
DONE bug: dash outline is way out of whack | |
DONE drag should not deselect | |
DONE paper name should be within boundary | |
DONE when scaling should try to preserve relative orientations | |
DONE snap to angle | |
DONE show paper numbers | |
DONE indices should be underlined | |
---0.099 | |
maybe need to be able to edge drag custom paper to resize, maybe with grid snapping | |
when you add gray bars/reg marks, center on paper? | |
buff out the paper interface to be the net builder? | |
PaperSize/PaperGroup as resource: | |
papersize names are not translated. Should they be?? | |
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 | |
need reusable resource [ name ][load][save][dup][delete] | |
papergroups: | |
renaming.. resources should default to obj->Id()? | |
Load(DONE), save(DONE), add(DONE), delete paper groups.. | |
PaperGroup should be a Value | |
work out scheme for resource ownership: they can be owned by: | |
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 | |
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 | |
nup: | |
bug: not showing highlight on rectangle | |
bug: drag rect turns off scale handles until you click down again | |
need gap around arrows | |
need numerical input | |
need gap adjustments | |
what is "sized grid" supposed to be doing?? perhaps auto size rect when this? | |
doesn't appear to update random target area when you resize area | |
implement 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: drag outline of object to new position (when you enter another object, assume you want to slide to that place | |
scale panel should allow control zoom around point | |
show flow with numbers and arrows? | |
DONE fill in box | |
calculator/scripting | |
bug: string output not escaping things to display correctly | |
bug: dump_out_atts should output raw toStr things.. Strings currently return "str" which is output "\"str\"" | |
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: for loops broken | |
bug: var a if a already exists in current scope should fail. currently just says ok, but keeps old value | |
test heavily nested assignments like a.v.x = 5 | |
showing defined functions should show the code | |
showing variables should show name = value and the class def (such as laidout.globals) | |
---0.099: | |
set dump_out_atts should do full atts if any subattribute has full atts, else output "set": "{1,2,3}" | |
security restrictions? | |
need multiple assignment | |
debug generic with operators, doesn't seem to be working | |
debug operator definitions | |
debug using and import... maybe remove using, use import Math.* instead | |
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 bug: function a(b,c) = b+c fails, says unknown name b | |
DONE bug: number deref: var a={1,2}.. out of bounds not returning cannot deref.. returning "Ok" | |
DONE bug: explicit var a=flatvector() fails with unknown name flatvector <- using Vector2 now | |
DONE bug: Math.oeuaeou does not produce an error, Math.aoeeou+3 crashes | |
DONE do string*int or int*string to duplicate string | |
DONE bug: ln(3) -> cannot compute with given values | |
DONE bug: var x =0; x^3 -> "cannot compute 0^x" | |
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 | |
image import: ImportImagesDialog | |
bug: import all to one page with scale up/scale down doesn't scale properly | |
bug: cancel button is white and no mouseover?? | |
bug: cannot import images directly from recents | |
SelectFile should update file/path.. right now only updates filelist | |
---0.099--- | |
ImageImport dialog: (actually, needs a total redesign) import images importimage | |
need thumbnail preview of images in directories | |
when you have a filter, should still show directories(?) | |
Import image list: default previews | |
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? a template of rect regions (2-d guides)? maybe use custom papergroups? | |
would also implement the dump into Limbo | |
dump into any chain 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 | |
DONE need drag and drop from system for multi-image import | |
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 | |
signature editor Signature editor Signature Editor signatureeditor | |
bug: edit imp from viewport, change page number, should it insert pages?? | |
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 | |
---------------- 0.099 ROADMAP ITEMS: features and enhancements ------------------------ | |
external tools: external commands: | |
need to be able to rearrange order, first in list is default or select one for default | |
need access anywhere an object links to a file | |
use in image importer | |
use to import to objects | |
associate (laidout object type) <-> (external editor) | |
properties: | |
DONE command_name, ie "lp" | |
DONE binary_path "/usr/bin/lp" | |
DONE description "Print" | |
DONE doc_website "https://somewhere.com/sometime" | |
DONE parameters: $f {files} {file} {dirname} {basename} | |
DONE function to verify file is executable | |
extra config: additional context that may be used for templates? | |
glob for expected output files (so that we can import generated images, for instance) | |
command structure "command {file} --stuff {extra.stuff} {{laidout.globals.frame}} {extra3}" | |
DONE Image editor (gimp, krita) | |
DONE plain text editor (gvim, console vim, command, etc) | |
DONE figure out a way to standardize verifying that tool exists: command name: search in $PATH, check if executable | |
layers palette Layers ObjectTree | |
need to update tree list, not flush and repopulate which wrecks selection and open/closed | |
should have document list at top, showing current doc | |
need icons for object types | |
hidden/locked objects should grey out contained objects | |
visible gray out non-visible | |
drag change flags | |
selectable flag | |
key controls for navigation within menu: | |
space/enter toggle open and closed submenu | |
move | |
filter by: | |
type | |
name | |
rename in place | |
implement buttons | |
new empty | |
move up .. maybe do away with the button, and just implement drag and drop? | |
move down | |
duplicate | |
delete | |
copy item path? | |
object clipping: | |
menu should bold the object names.. hard to read as is | |
clip path shouldn't have to be a path.. be able to be text, or whatever provides an Area path | |
clip-path export: pdf(done), image(done), svg(done), scribus | |
page object overlap export: DONE pdf, DONE image, DONE svg, scribus | |
generate default clip path for editing from area path or bounding box | |
Label widget: | |
harfbuzzed, fribidi | |
abstract to form base of both widgets and CaptionData | |
replace all MessageBar with these | |
make editable one replace LineEdit/MultiLineEdit | |
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. | |
plugin config window should list which file corresponds to the plugin | |
if there is a plugin conflict, should say which one is actually loaded | |
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) | |
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 | |
DONE SomeData should derive from DumpUtility | |
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 | |
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 | |
Find interface: findinterface: | |
bug: key presses aren't propagating up to viewport? | |
bug: FindWindow is not remembering placement | |
iconselector needs: click-select, drag rect to select, shift to add to selection | |
iconselector needs to scroll | |
____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 | |
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 | |
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 | |
from big import: | |
bug: delete discontinous range of pages doesn't delete all sometimes | |
---0.099--- | |
thumbs refreshing a lot unnecessarily | |
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 | |
undo extremely necessary | |
for images, need edit image feature, with watch for changes, or "reload 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 | |
MirrorInterface: LineGuideInterface | |
should be able to mirror non-paths: arbitrary objects | |
---0.099: | |
merge widget, near and outside p1. show merge distance as max(actual, th/2) | |
label editing | |
colors | |
double click to force p1 or p2 to be under mouse when p1 or p2 way off screen? | |
Gradients: gradientinterface | |
---0.99: | |
constrain to x/y/45 dragging end points | |
dragging around color points from inside to outside should allow going out of bounds | |
DONE linear | |
radial | |
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 | |
do dithering to reduce banding | |
color interpolation: render to image, then use that as color source | |
linear (current default and only option) | |
constant | |
auto bez | |
curve editor rgba | |
gradient data should be able to use resource GradientStrip | |
owner: file/user global/system global | |
name | |
tags | |
color strip: | |
stops | |
position | |
r1, r2 | |
pagemarkerinterface: | |
option to lock label size to real space? make export contact sheets a little prettier in some cases | |
right click option to turn off? sometimes it overrides other interface clicks, mouseovers are confusing | |
page thumbnail should be rational, ie image should be whole page, not just contents+transform, | |
and thumb transform makes image dims to page coords | |
global resources: | |
build use case of setting a global var for current language, then have objects update according to it | |
need a Revert option | |
Reconfigure text edits. Need something that works in interface land, with harfbuzz, that integrates with lax fontmanager | |
lgm 2019 feedback and ideas: | |
path tool: | |
hard to see helper graphics, needs haloing | |
press space to dup weight node while dragging | |
method to fix all broken images at once | |
mass image edit, need to remap dirs for old files!! | |
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 (at least loading, saving is stretch goal) | |
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 | |
ViewWindow: | |
maybe drawaxes should show dotted line from origin to bbox? | |
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 | |
WATCH OUT for when preview file is OLDER than original file!! | |
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 | |
object content selector menu to more easily flip between tools for object-content-streams-otherSpecials | |
need a better file preview system | |
need to wrap laidout_preview_maker(), which previews EPS with the help of gs | |
createlaidoutrc() should migrate to a LaidoutPrefs::CreateLaidoutrc(), not a direct LaidoutApp func | |
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 | |
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 | |
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 | |
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? | |
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 | |
dataobjects/datafactory should somehow combine with stylemanager.. seems redundant as is | |
raster paint layers, mypaint? | |
newdoc: | |
open on image should create a new singles with default paper and image centered | |
Units: | |
page units should be adjustible so that node enthusiasts don't have to use inches.. maybe make page layer transforms scale by a units conversion | |
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 | |
Nudge tool nudgeinterface nudge interface: | |
break off from engraver tool, to operate on any PointCollection | |
build net interface graph | |
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 | |
optionally show numbers, click to edit | |
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 | |
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 | |
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 | |
DONE bug: text is not showing at correct size at first | |
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) | |
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 | |
straigt lines at any angle | |
grids | |
polar grids | |
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 | |
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? | |
Convert impose-only to be based on feeding it an ExportConfig | |
clarify how locks, visible, selectable works. base in Laxkit? | |
overlays should get first pick of input, BUT if another has a button lock, it shouldn't mouse move update | |
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 | |
option to 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? | |
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 documents without their own directory | |
should be resources: | |
Palette | |
Linestyle | |
Fillstyle | |
PaperStyle | |
DONE PaperGroups | |
DONE PlainTextObject | |
when closing a document window, decide whether this removes access to it, or just the view to it | |
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 | |
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? https://gss.github.io/ | |
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 | |
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 | |
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 | |
ImageProperties image properties imageinfo image info: | |
click for file should show preview... there are two "..." !! | |
select file, not updating view? | |
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 | |
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 | |
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 | |
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. | |
templates Templates: | |
partial templates, fill in non defined, like use booklet but manually define paper size | |
DONE save as default, or just save as. | |
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 | |
escape doesn't let you go back to object tool | |
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 | |
should have option to map cell size to cell objects for easier tiling | |
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 | |
DONE 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 | |
spiral needs: | |
number of spirals: color different for each | |
direction of spiral | |
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 | |
einstein's hat: https://cs.uwaterloo.ca/~csk/hat/ | |
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: | |
DONE 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: ref count 2 remain on exit | |
bug: not loading text when stored as file | |
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? | |
animationinterface animation interface: | |
way to set start, end | |
way to set fps | |
DONE be able to move strip | |
DONE make strip an overlay that can trigger filter updates | |
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 | |
ebook conversion, such as by importing from Project Gutenberg | |
spell checker.. aspell (oldest, lgpl 2.1)? hunspell (used by libreoffice, firefox, lgpl 2.1)? nuspell (c++, lgpl 3.0)? | |
============== 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 | |
too many complex custom systems is not attractive to new devs | |
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 | |
- gegl already can access hardware acceleration for many things | |
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 | |
DONE bug: edit singles imposition, change portrait to landscape, apply, ok, now back to portrait, doesn't change! | |
DONE bug: initial warning about could not load ?? not showing the ?? | |
DONE bug: freehand tool, press any key, crash!! | |
DONE bug: lax: slight hitch, about 1/4 sec on every button down, XCreateIC() in app->CreateXInputContext() takes forever | |
DONE bug: scrollbars drawing extra line in bottom half | |
DONE bug: caption mouse controls don't work on first object?? | |
DONE bug: new doc, pop up spread editor with f3, close the window: crash! | |
DONE when you try to open something bad with control-o, fails silently.. should show error log | |
DONE bug: imported white images are not white, very slightly gray. gm load problem? (255) becomes 254 -> LaxCairoImage::createFromData_ARGB8 | |
DONE bug: SliderPopup: select something that has SLIDER_IGNORE_ON_BROWSE, now it isn't ignored anymore | |
DONE make lax templates be only .h includes, since gcc complains when .cc isn't included anyway... | |
DONE need to do compile speed tests -> marginally faster as separate, makes binary ~1mb larger for some reason?! dup funcs not optimized out? | |
DONE BBoxValue: needs width and height functions for convenience in scripting | |
DONE turning off overlays should revert icon to current tool | |
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? | |
DONE a built in global variable: current frame/time | |
DONE bug: ImagePatch doing anything with it causes crash.. before crash, image distorts incorrectly | |
DONE get splash image working.. | |
DONE have an actual splash image shown | |
DONE bug: expressions are broken again!! | |
DONE bug: export, switch off current target then back on: error: missing export source! | |
DONE bug: home and end throw selection bounds out of whack.. try with gradient tool for instance, controls bad until reselect | |
DONE should not be able to group select an object and another object nested within | |
DONE utf8string: move semantics to be more efficient | |
DONE Gradients: gradientinterface | |
DONE check svg export of gradients with new spread method | |
DONE should have menu option for radial/linear | |
DONE bug: radial gradient not loading | |
DONE SHOWCOLORS should be off by default | |
DONE bug: Engraver fill, just moving mouse around is rerendering to buffer for preview | |
DONE bug: Initial zoom for new doc bad. space to center only sporadically works | |
DONE in singles view, spread number in box should be page label instead of spread number | |
DONE FindInterface: | |
DONE pressing enter should trigger last search type (next/prev/all) | |