 I guess if you missed my kind of intro the other day, Laid Out is a program that I've made to layout cartoon books and I've kind of used it as an experimental platform to mess around with various tools. What do you mean I talk fast? I don't know what you're talking about. So I guess this presentation is about specific tools that I've been working on in Laid Out. The biggest thing is that I've implemented scripting within Laid Out in something very similar to JavaScript, but it's not quite like JavaScript. So for instance, in PaperJS and the related paper script, you can have points that are defined by x and y vectors or x, y, z. But you can't access it like you could just like when you do math problems with vectors. So for instance, if you want, you can say in PaperJSA project B to get something like this. If you want to frequently in vector manipulations, you want to be able to take a portion of a vector that's aligned with another vector and the perpendicular part. And you can't really define operators in a convenient way. So the script that I've come up with, which I actually made in 1997 because I used to do a lot of mathematical woodwork, so I computed. There's endless computations you have to do with vectors, and I needed something fast and easy that looked pleasant that was pleasant to work with. So once you have the scripting, that opens up many other doors. It's easier to encapsulate things if you want to export to other scripting languages or create libraries that can be accessed in various ways. It makes batch processing easier, and you might be able to actually undo in Laid Out. So you can't really do that before, unfortunately. But soon, there will be a method to do that. Let's see, then the next new thing, or another new thing enabled by the scripting is a graphical shell. Sort of inspired by the LGRU and Pierre Marchand's graphical shell. So most of these things that I'm going to try to demo right now are spell Laid Out correctly, OK? Are sort of half implemented. You never quite have enough time to get things ready, so let's see how this goes. So for instance, you select an object, and then if you press the forward slash, it brings up this line down at the bottom where you can type in various things, and it gives you this list on the side of things that you can do in various ways. For instance, if you say you want to zoom in, that's one of the functions defined on the viewport. So you can just do that, and then tab through everything that has the double O, and you can, just like on the command line in Bash or whatever, you can do up and down to preview or go to previous commands. Also for objects, you can, if you want to quickly find data about it, you can just do that, and it gives you it down below. Or if you want to flip things, then you can type in where you want it to flip. So there's an example of just writing a vector right in the script, and it interprets that two things in parentheses, two real numbers in parentheses as a vector. Let's see if this works right. I was having trouble with it earlier. So this is going to tell it you want to flip across a line that's at 0 and 4, which is here, and 5 and 4. Will it work? Will it work? Yes. And it's not, you don't have the option to use object coordinates right now. So right now it's in the page coordinates, but you'll be able to define that. And then when you're typing the commands down here, you can, you will be able to, when you're entering a function, have the list on the side, the possible parameter values, plus little drag out things. Like if you need to enter a color, then there would be a little color bubble that you can drag and things like that. So other things that I've been working on are enhancements to an object tool. So like if you select two objects, something that's, I find really annoying in many programs is once you have complicated nesting, it's very difficult to remember how they're actually nested. So let's see. There's a couple of things to deal with that. In Inkscape, there's the XML viewer, so you can kind of see a tree there, but it exists in that style that takes up a lot of space. So I've just made a quick object indicator, so it's just a light overlay. So you can see kind of where things are. And if you parent an object, you select it, and there's this little triangular knob over here, and the reparent's hover over it, and it draws this gigantic arrow, so there's no question about who's being parented to what. And it shouldn't jump like that, that's a bug. So just so you know. Another bug, my God. So now that the object is parented, but if you're in a child and you want to go to the parent, you just jump to the parent. And I'm planning on implementing various ways to anchor children to parents, so you can do it just normal transformation or selecting anchors. You can define arbitrary anchors. These black dots are just the common midpoints and centers. And then there's my alignment gadget thing. So it's not quite functional at the moment, but you would be able to move this around to hover over the one you want and then move these things up to determine how it centers on those points. So in the future, you would also be able to, the liquid layout is, that's pretty interesting. I hadn't really thought about that, but it would be nice if you hover over this edge, for instance, and it highlights green or something and then just drag it to an anchor and then it would anchor that edge to there and assign different anchors for all four edges so you could stretch things in a very simple way. So it's something to come, hopefully someday. Then I guess, let's see, cloning. Often in clones, you can't really tell where the clones are or what's a clone or anything like that. So let's see, that's a duplicate. All right, so when you have a clone, there's a circular knob and it brings up some things. If you wanna see right where it is, you can just jump to the original and it selects it. If it happens to be on a different page, then it'll select that page. Hopefully, will it work? Yes. Then if you wanna sever that link, you can disassociate it from there. Another thing I've been playing with, which I'm not totally satisfied, but there's these flip controls. They're too easy to press at the moment. I'm not quite sure what to do about that. So you can flip things. It's when you flip the sun over, you can't really tell that it's flipped over, so let's, if you flip that. So then if you don't wanna flip just that orientation, if you click and drag, you can drag out a line that you flip across and then you just hit the bar to perform the flip. So I don't really like dialogue, so it's figuring out these little controls. It's a lot of fun. So that's all the implemented and half-implemented stuff I've done. I eventually wanna do other little things next to the side of objects for selecting the clip path or soft mask or constraints for aligning and stuff like that. Other shape aligning possibilities to drag shapes and have them connect to other anchors and then have that point be constant and then rotate so you lie in objects straight onto other objects. The inkscape tiling is pretty impressive. You would be nice to define custom groups so that you can do recursive layout that actually Femke mentioned like a year ago. I thought that was quite interesting. And someday, if I ever have time, I'll have a text tool also open. Who knows? And that's it. So one question for Tom. So there's a text tool coming. That's very good. And we're working on the t-shirt. So that's Tom very much, very many thanks for coming here and hope to see more soon.