<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Valerievk</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Valerievk"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Valerievk"/>
	<updated>2026-04-08T17:45:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Active_guide_proposals&amp;diff=84194</id>
		<title>Active guide proposals</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Active_guide_proposals&amp;diff=84194"/>
		<updated>2012-05-14T05:34:40Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Proposals for new guide types and features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Some proposals for active guides == &lt;br /&gt;
&lt;br /&gt;
Moreso than with raster programs, guides are a major asset in illustration programs as line precision for technical drawing and other fields.&lt;br /&gt;
&lt;br /&gt;
This page discusses possible future guide features. I name these active guides, &lt;br /&gt;
because they do more than serve as snapping references. The exact GUIs still need to be discussed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Symmetry guides == &lt;br /&gt;
&lt;br /&gt;
[[File:Symmetry_guides.png|Proposal for active symmetry guides]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note: Shouldn't symmetry be a sub-case of tiling? Although this is technically true, the uses tend to be very different. Symmetries are everywhere, so users would benefit from being able to access them easily. Also, it is more important for symmetry to be visualised in real-time (though real-time preview could be available for basic tilings).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Convergence points == &lt;br /&gt;
&lt;br /&gt;
[[File:Convergence_points.png|Proposal for convergence points]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note: Instead of convergence points, why didn't I just come up with a perspective guide? This is related to how objects are drawn in perspective:&lt;br /&gt;
* Although all parallel objects have lines converging to the same vanishing points, non-parallel objects will have lines converging to Other vanishing points on the same horizon line.&lt;br /&gt;
* Objects who aren't parallel to the ground will even have their own horizon lines.&lt;br /&gt;
&lt;br /&gt;
So, for more complex perspective drawings, the user can make his reference horizon line(s), add all necessary vanishing points, and toggle them on and off as needed.&lt;br /&gt;
&lt;br /&gt;
This does not exclude the possibility of actual perspective guides. A perspective grid for example would be useful for buildings (evenly spaced windows). Their vanishing points could then be snapped to existing convergence points. When using the 3D box tool, or any other future 3D shapes, the user can similarly snap their vanishing points to existing convergence points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kinematic templates == &lt;br /&gt;
&lt;br /&gt;
[[File:Kinematic_templates.png|Proposal for kinematic templates in Inkscape]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For more information on kinematic templates, see:&lt;br /&gt;
* [http://hci.uwaterloo.ca/research/kinematic Kinematic templates page]&lt;br /&gt;
* [http://www.youtube.com/watch?v=5lseh9ghhJ4 Demonstration of Kinematic templates]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GUI discussion ==&lt;br /&gt;
&lt;br /&gt;
As the examples above have shown, there are many useful possibilities for guides.&lt;br /&gt;
&lt;br /&gt;
More discussion is needed on how these features could be accessed. Possibilities include:&lt;br /&gt;
* '''Separate tools?''' This is the case for tiling, for example, and is justified by the complicated mechanisms behind it. This could also be the case for kinematic templates, who need some value inputs.&lt;br /&gt;
* '''Separate guide types?''' Obviously, passive composition guides such as Rule of Thirds will be their own guide type. Some features could be tacked onto existing guides types however. Should features like perspective grids, though, be a sub-option of a general grid guide, or a separate guide?&lt;br /&gt;
* '''Options to existing guide types?''' Users could take an existing guideline, and activate a &amp;quot;symmetry&amp;quot; feature for example, or &amp;quot;snap line directions to parallel&amp;quot;, or &amp;quot;snap line directions to orthogonal.&amp;quot; Where would such functions be located?&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Kinematic_templates.png&amp;diff=84188</id>
		<title>File:Kinematic templates.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Kinematic_templates.png&amp;diff=84188"/>
		<updated>2012-05-14T05:29:40Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Proposal for kinematic templates in Inkscape&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proposal for kinematic templates in Inkscape&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Convergence_points.png&amp;diff=84182</id>
		<title>File:Convergence points.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Convergence_points.png&amp;diff=84182"/>
		<updated>2012-05-14T05:28:29Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Proposal for convergence points, a type of guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proposal for convergence points, a type of guide&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Symmetry_guides.png&amp;diff=84176</id>
		<title>File:Symmetry guides.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Symmetry_guides.png&amp;diff=84176"/>
		<updated>2012-05-14T05:26:59Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Proposal for active symmetry guides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proposal for active symmetry guides&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81326</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81326"/>
		<updated>2012-04-09T07:54:30Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Implementation */ Changes to make more sense from programming POV? (though I may be saying nonsense)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are (as well as comments about coding):&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient (multi-stop dynamics)&lt;br /&gt;
| Valerie: Such a mechanism would require reworking the entire tiling mechanism. The only bright side is that Inkscape doesn't store any tiling information, so changing the mechanism won't break backwards compatibility. See Jasper's detailed comment in &amp;quot;Implementation.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: Looking at Jasper's explanation below, symmetrical dynamics around a central tile basically aren't supported by the current mechanism.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation comments'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Comments&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient&lt;br /&gt;
| Jasper (mail from mailing list): All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index. It then computes all the transforms required for that position and combines them. As far as I can tell it combines them in such a way that first a scaling is applied, then a rotation and finally a translation. If you select a different symmetry group then the translation can become a more complicated transform. &lt;br /&gt;
&lt;br /&gt;
The scheme we talked about earlier that would interpolate transforms is not necessarily compatible. This is because in the latter the case the entire transform would be interpolated, while what Inkscape does is essentially interpolating per kind of transform. That this is not the same can be seen by realizing that rotate(50)translate(1)rotate(50)translate(1) is not the same as rotate(100)translate(2). The former is more or less what we talked about (or at least what I had in mind during that discussion), the latter is what Inkscape does.&lt;br /&gt;
&lt;br /&gt;
However, Inkscape currently seems to store almost nothing about the tiling in the file. So it would be relatively benign to change behaviour. Existing files would not be affected in any way, users would only be affected when trying to change a tiling or create a new one. (This is not to say that it's necessarily a good idea to make it impossible to achieve the current behaviour, just that if we cannot reconcile the two, there is some room for change.)&lt;br /&gt;
&lt;br /&gt;
Note that it would be possible to emulate Inkscape's current behaviour through interpolation of transforms, but only if we would allow &amp;quot;stacking&amp;quot; transforms. I'm not sure how this would have to be supported UI-wise though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core feature: addition of an on-canvas base tile or render frame ===&lt;br /&gt;
&lt;br /&gt;
Jasper explains where the tiling code is located:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
As a first step, the programmer could program a &amp;quot;base tile&amp;quot; or &amp;quot;render frame&amp;quot; object as a separate file, that can be tested independently from the tiling code. This object:&lt;br /&gt;
* Provides a different base tile shape depending on the chosen transformation type&lt;br /&gt;
* Allows to visualize extra rows and columns on-canvas (not necessary in a first step, but quite desirable). Unless the user wants to tweak the tiling code itself, this step currently does not allow adding or removing individual tiles&lt;br /&gt;
* Creates a set of coordinates to be used by the existing tiling mechanism&lt;br /&gt;
* The tool icon and toolbar can be created from the start for testing or added later&lt;br /&gt;
&lt;br /&gt;
Testing would basically be to ensure that the on-canvas behaviour is consistent with what the user expects, and the output values are correct.&lt;br /&gt;
&lt;br /&gt;
Once this object works as expected, it can then be &amp;quot;connected&amp;quot; to the tiling mechanism by calling it up and sending it the correct values. Basically, the tiling code itself would not need too many adjustments at this phase. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is basically the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a render frame or just render tile (if the programmer hasn't programmed the ability to visualize extra rows and columns yet) of the chosen type.&lt;br /&gt;
* Choose the pattern to tile and the guide&lt;br /&gt;
* Click &amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== II. More features to the render frame ===&lt;br /&gt;
 &lt;br /&gt;
These are features that can be added to the render frame object without changing the tiling code too much.&lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another.&lt;br /&gt;
# Users can be now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; Previews are moved to this pop-up. Since the simple rectangle is the most commonly used tile shape, this default should be acceptable (and less confusing than &amp;quot;P1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
''' 2. On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This converts on-canvas cues to percentage values that are then fed to the tiling code.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points? ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping.&lt;br /&gt;
&lt;br /&gt;
''' 4. Radial tiling cheat? ''' &lt;br /&gt;
&lt;br /&gt;
A &amp;quot;radial tiling&amp;quot; guide form may be created on top of the existing mechanism. It's basically a P1 operation made to output radial tiling results. The render frame shsape allows users to more easily visualize radial tiling on-canvas. Any on-canvas dynamics manipulations also converts these values into settings appropriate for a &amp;quot;rows and columns&amp;quot; transformation.&lt;br /&gt;
&lt;br /&gt;
By building this on top of the existing tiling mechanism, the programmer removes the need to create a dynamics system specific to radial tiling. On the down side, a user who wants to input values manually will have to deal with the rows and columns settings, which in this case would be less intuitive than &amp;quot;angular and radial&amp;quot; settings.&lt;br /&gt;
&lt;br /&gt;
=== III. More tiling features ===&lt;br /&gt;
&lt;br /&gt;
'''  1. Fuse mode ''' &lt;br /&gt;
&lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
This feature requires adding two additional phases to the tiling code:&lt;br /&gt;
* A cut operation: the programmer must find a way to define which way the base tile is to be cut&lt;br /&gt;
* Fuse operation at the very end &lt;br /&gt;
&lt;br /&gt;
''' 2. Allow adding and removing individual tiles to the render frame '''&lt;br /&gt;
&lt;br /&gt;
The biggest work here is reworking the tiling code so that not all tiles are rendered. Combining this and &amp;quot;fuse path&amp;quot; will take some work.&lt;br /&gt;
&lt;br /&gt;
''' 3. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
As Jasper noted, this may require a whole rework of the tiling mechanism.&lt;br /&gt;
&lt;br /&gt;
=== IV. Line tiling ===&lt;br /&gt;
&lt;br /&gt;
Line tiling requires a whole new mechanism combining dynamics and &amp;quot;pattern along path.&amp;quot; A possible behaviour is:&lt;br /&gt;
* The programmer adapts the tiling code to the Frieze groups&lt;br /&gt;
* Clones are first generated in a straight line according to number and size inputs from the target path&lt;br /&gt;
* They are then set along the target path using &amp;quot;pattern along path&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81308</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81308"/>
		<updated>2012-04-09T07:31:33Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* I. Core features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are (as well as comments about coding):&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient (multi-stop dynamics)&lt;br /&gt;
| Valerie: Such a mechanism would require reworking the entire tiling mechanism. The only bright side is that Inkscape doesn't store any tiling information, so changing the mechanism won't break backwards compatibility. See Jasper's detailed comment in &amp;quot;Implementation.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: Looking at Jasper's explanation below, symmetrical dynamics around a central tile basically aren't supported by the current mechanism.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation comments'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Comments&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient&lt;br /&gt;
| Jasper (mail from mailing list): All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index. It then computes all the transforms required for that position and combines them. As far as I can tell it combines them in such a way that first a scaling is applied, then a rotation and finally a translation. If you select a different symmetry group then the translation can become a more complicated transform. &lt;br /&gt;
&lt;br /&gt;
The scheme we talked about earlier that would interpolate transforms is not necessarily compatible. This is because in the latter the case the entire transform would be interpolated, while what Inkscape does is essentially interpolating per kind of transform. That this is not the same can be seen by realizing that rotate(50)translate(1)rotate(50)translate(1) is not the same as rotate(100)translate(2). The former is more or less what we talked about (or at least what I had in mind during that discussion), the latter is what Inkscape does.&lt;br /&gt;
&lt;br /&gt;
However, Inkscape currently seems to store almost nothing about the tiling in the file. So it would be relatively benign to change behaviour. Existing files would not be affected in any way, users would only be affected when trying to change a tiling or create a new one. (This is not to say that it's necessarily a good idea to make it impossible to achieve the current behaviour, just that if we cannot reconcile the two, there is some room for change.)&lt;br /&gt;
&lt;br /&gt;
Note that it would be possible to emulate Inkscape's current behaviour through interpolation of transforms, but only if we would allow &amp;quot;stacking&amp;quot; transforms. I'm not sure how this would have to be supported UI-wise though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core feature: addition of an on-canvas base tile or render frame ===&lt;br /&gt;
&lt;br /&gt;
Jasper explains where the tiling code is located:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
As a first step, the programmer could program a &amp;quot;base tile&amp;quot; or &amp;quot;render frame&amp;quot; object as a separate file, that can be tested independently from the tiling code. This object:&lt;br /&gt;
* Provides a different base tile shape depending on the chosen transformation type&lt;br /&gt;
* Allows to visualize extra rows and columns on-canvas (not necessary in a first step, but quite desirable). Unless the user wants to tweak the tiling code itself, this step currently does not allow adding or removing individual tiles&lt;br /&gt;
* Creates a set of coordinates to be used by the existing tiling mechanism&lt;br /&gt;
* The tool icon and toolbar can be created from the start for testing or added later&lt;br /&gt;
&lt;br /&gt;
Testing would basically be to ensure that the on-canvas behaviour is consistent with what the user expects, and the output values are correct.&lt;br /&gt;
&lt;br /&gt;
Once this object works as expected, it can then be &amp;quot;connected&amp;quot; to the tiling mechanism by calling it up and sending it the correct values. Basically, the tiling code itself would not need too many adjustments at this phase. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is basically the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a render frame or just render tile (if the programmer hasn't programmed the ability to visualize extra rows and columns yet) of the chosen type.&lt;br /&gt;
* Choose the pattern to tile and the guide&lt;br /&gt;
* Click &amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81296</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81296"/>
		<updated>2012-04-09T06:42:53Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* I. Core features */ Clean-up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are (as well as comments about coding):&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient (multi-stop dynamics)&lt;br /&gt;
| Valerie: Such a mechanism would require reworking the entire tiling mechanism. The only bright side is that Inkscape doesn't store any tiling information, so changing the mechanism won't break backwards compatibility. See Jasper's detailed comment in &amp;quot;Implementation.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: Looking at Jasper's explanation below, symmetrical dynamics around a central tile basically aren't supported by the current mechanism.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation comments'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Comments&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient&lt;br /&gt;
| Jasper (mail from mailing list): All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index. It then computes all the transforms required for that position and combines them. As far as I can tell it combines them in such a way that first a scaling is applied, then a rotation and finally a translation. If you select a different symmetry group then the translation can become a more complicated transform. &lt;br /&gt;
&lt;br /&gt;
The scheme we talked about earlier that would interpolate transforms is not necessarily compatible. This is because in the latter the case the entire transform would be interpolated, while what Inkscape does is essentially interpolating per kind of transform. That this is not the same can be seen by realizing that rotate(50)translate(1)rotate(50)translate(1) is not the same as rotate(100)translate(2). The former is more or less what we talked about (or at least what I had in mind during that discussion), the latter is what Inkscape does.&lt;br /&gt;
&lt;br /&gt;
However, Inkscape currently seems to store almost nothing about the tiling in the file. So it would be relatively benign to change behaviour. Existing files would not be affected in any way, users would only be affected when trying to change a tiling or create a new one. (This is not to say that it's necessarily a good idea to make it impossible to achieve the current behaviour, just that if we cannot reconcile the two, there is some room for change.)&lt;br /&gt;
&lt;br /&gt;
Note that it would be possible to emulate Inkscape's current behaviour through interpolation of transforms, but only if we would allow &amp;quot;stacking&amp;quot; transforms. I'm not sure how this would have to be supported UI-wise though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
Jasper explains where the tiling code is located:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
As a first step, the programmer could program a &amp;quot;render base tile&amp;quot; or &amp;quot;render frame&amp;quot; object as a separate file, that can be tested independently from the tiling code. This object:&lt;br /&gt;
* Provides a different base tile shape depending on the chosen transformation type&lt;br /&gt;
* Allows to visualize extra rows and columns on-canvas (not necessary in a first step, but quite desirable). Unless the user wants to tweak the tiling code itself, this step currently does not allow adding or removing individual tiles&lt;br /&gt;
* Creates a set of coordinates to be used by the existing tiling mechanism&lt;br /&gt;
* The tool icon and toolbar can be created from the start for testing or added later&lt;br /&gt;
&lt;br /&gt;
Testing would basically be to ensure that the on-canvas behaviour is consistent with what the user expects, and the output values are correct.&lt;br /&gt;
&lt;br /&gt;
Once this object works as expected, it can then be &amp;quot;connected&amp;quot; to the tiling mechanism by calling it up and sending it the correct values. Basically, the tiling code itself would not need too many adjustments at this phase. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is basically the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a render frame or just render tile (if the programmer hasn't programmed the ability to visualize extra rows and columns yet) of the chosen type.&lt;br /&gt;
* Choose the pattern to tile and the guide&lt;br /&gt;
* Click &amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81290</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81290"/>
		<updated>2012-04-09T06:25:51Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* UI design status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are (as well as comments about coding):&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient (multi-stop dynamics)&lt;br /&gt;
| Valerie: Such a mechanism would require reworking the entire tiling mechanism. The only bright side is that Inkscape doesn't store any tiling information, so changing the mechanism won't break backwards compatibility. See Jasper's detailed comment in &amp;quot;Implementation.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: Looking at Jasper's explanation below, symmetrical dynamics around a central tile basically aren't supported by the current mechanism.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation comments'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Comments&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient&lt;br /&gt;
| Jasper (mail from mailing list): All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index. It then computes all the transforms required for that position and combines them. As far as I can tell it combines them in such a way that first a scaling is applied, then a rotation and finally a translation. If you select a different symmetry group then the translation can become a more complicated transform. &lt;br /&gt;
&lt;br /&gt;
The scheme we talked about earlier that would interpolate transforms is not necessarily compatible. This is because in the latter the case the entire transform would be interpolated, while what Inkscape does is essentially interpolating per kind of transform. That this is not the same can be seen by realizing that rotate(50)translate(1)rotate(50)translate(1) is not the same as rotate(100)translate(2). The former is more or less what we talked about (or at least what I had in mind during that discussion), the latter is what Inkscape does.&lt;br /&gt;
&lt;br /&gt;
However, Inkscape currently seems to store almost nothing about the tiling in the file. So it would be relatively benign to change behaviour. Existing files would not be affected in any way, users would only be affected when trying to change a tiling or create a new one. (This is not to say that it's necessarily a good idea to make it impossible to achieve the current behaviour, just that if we cannot reconcile the two, there is some room for change.)&lt;br /&gt;
&lt;br /&gt;
Note that it would be possible to emulate Inkscape's current behaviour through interpolation of transforms, but only if we would allow &amp;quot;stacking&amp;quot; transforms. I'm not sure how this would have to be supported UI-wise though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81284</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81284"/>
		<updated>2012-04-09T06:25:20Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* UI design status */ Added Jasper's comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are (as well as comments about coding):&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient (multi-stop dynamics)&lt;br /&gt;
| Valerie: Such a mechanism would require reworking the entire tiling mechanism. The only bright side is that Inkscape doesn't store any tiling information, so changing the mechanism won't break backwards compatibility. See Jasper's detailed comment in &amp;quot;Implementation.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: Looking at Jasper's explanation below, symmetrical dynamics around a central tile basically aren't supported by the current mechanism.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation comments'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Multi-Stop Interpolation Gradient&lt;br /&gt;
| Jasper (mail from mailing list): All the code is in src/ui/dialog/clonetiler.cpp. The main function is CloneTiler::clonetiler_get_transform. This function essentially gets all info, as well as a row and column index. It then computes all the transforms required for that position and combines them. As far as I can tell it combines them in such a way that first a scaling is applied, then a rotation and finally a translation. If you select a different symmetry group then the translation can become a more complicated transform. &lt;br /&gt;
&lt;br /&gt;
The scheme we talked about earlier that would interpolate transforms is not necessarily compatible. This is because in the latter the case the entire transform would be interpolated, while what Inkscape does is essentially interpolating per kind of transform. That this is not the same can be seen by realizing that rotate(50)translate(1)rotate(50)translate(1) is not the same as rotate(100)translate(2). The former is more or less what we talked about (or at least what I had in mind during that discussion), the latter is what Inkscape does.&lt;br /&gt;
&lt;br /&gt;
However, Inkscape currently seems to store almost nothing about the tiling in the file. So it would be relatively benign to change behaviour. Existing files would not be affected in any way, users would only be affected when trying to change a tiling or create a new one. (This is not to say that it's necessarily a good idea to make it impossible to achieve the current behaviour, just that if we cannot reconcile the two, there is some room for change.)&lt;br /&gt;
&lt;br /&gt;
Note that it would be possible to emulate Inkscape's current behaviour through interpolation of transforms, but only if we would allow &amp;quot;stacking&amp;quot; transforms. I'm not sure how this would have to be supported UI-wise though.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81206</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81206"/>
		<updated>2012-04-02T16:50:19Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* III. Super fancy wallpaper features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are:&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: The one major objection to this is that the existing tiling mechanism doesn't handle it this way, so implementing the feature would be more difficult.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-stop on-canvas handling of dynamics&lt;br /&gt;
| Valerie: The main difficulty is that the current tiling mechanism does not support this feature, so a coder would have to study the feasibility of extending the current tiling mechanism before deciding if multi-stops will be allowed.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Order of implementation&lt;br /&gt;
| Not much input yet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81182</id>
		<title>File:Tiling tool line tiling.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81182"/>
		<updated>2012-04-02T16:31:45Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling tool line tiling.png&amp;amp;quot;: A few fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for line tiling in the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81176</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81176"/>
		<updated>2012-04-02T16:22:16Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* UI design status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are:&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Symmetrical dynamics output around base tile&lt;br /&gt;
| Valerie: The one major objection to this is that the existing tiling mechanism doesn't handle it this way, so implementing the feature would be more difficult.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-stop on-canvas handling of dynamics&lt;br /&gt;
| Valerie: The main difficulty is that the current tiling mechanism does not support this feature, so a coder would have to study the feasibility of extending the current tiling mechanism before deciding if multi-stops will be allowed.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Order of implementation&lt;br /&gt;
| Not much input yet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81170</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81170"/>
		<updated>2012-04-02T16:21:36Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* UI design status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are:&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dynamics output symmetrical around base tile&lt;br /&gt;
| Valerie: The one major objection to this is that the existing tiling mechanism doesn't handle it this way, so implementing the feature would be more difficult.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Tom Lechner has a proposal that will allow to visualize most elements, but more work is needed to establish a mechanism for visualizing and controlling jitter as well.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-stop on-canvas handling of dynamics&lt;br /&gt;
| Valerie: The main difficulty is that the current tiling mechanism does not support this feature, so a coder would have to study the feasibility of extending the current tiling mechanism before deciding if multi-stops will be allowed.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Order of implementation&lt;br /&gt;
| Not much input yet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81164</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81164"/>
		<updated>2012-04-02T16:17:16Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* On-canvas dynamics editing */  Added part for on-canvas dynamics editing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
Currently the two following approaches to on-canvas dynamics editing have been considered:&lt;br /&gt;
# Edit a tile of the render frame (rotate and resize for example), all other tiles in the render frame are updated dynamically to give you an idea of the result. &lt;br /&gt;
#* Pros: high preview value, as the outline of the tiles by themselves should give an idea as to the output of the whole tiling.&lt;br /&gt;
#* Cons: forcing live update of tiles may be slow, and big displacements of tiles are distracting from the editing process. Worse if jitters are also visualized on-canvas.&lt;br /&gt;
# Edit only one or two &amp;quot;reference&amp;quot; tiles. None of the other tiles change. Inkscape deduces transformation values from there and converts them into values for the existing tiling mechanism.&lt;br /&gt;
#* Pros: less taxing on the interface.&lt;br /&gt;
#* Cons: Less preview value.&lt;br /&gt;
&lt;br /&gt;
Tom Lechner made a possible mock-up for the second option: [http://www.tomlechner.com/randompics/finishing.png Mock-up for on-canvas tile dynamics editing]&lt;br /&gt;
&lt;br /&gt;
It could be possible to combine the best of both worlds with a &amp;quot;Dynamics preview&amp;quot; mode (so it's a preview of the dynamics, not of the pattern getting tiled):&lt;br /&gt;
* When preview mode is on, Inkscape generates a preview of the render frame's tiles with dynamics applied, including jitters.&lt;br /&gt;
* Editing is not allowed. You have to exit the preview mode to make other adjustments.&lt;br /&gt;
* The idea is that some complex tilings will probably take a long time to render. This preview mode gives a quick idea about the outcome without having to do a full render, then undo, adjust and re-render again.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Dynamics Preview Mode.png|Preview mode for dynamics for the Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are:&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dynamics output symmetrical around base tile&lt;br /&gt;
| Valerie: The one major objection to this is that the existing tiling mechanism doesn't handle it this way, so implementing the feature would be more difficult.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Valerie: concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Although this needs further work, it will likely also be one of the last steps towards implementing and improving a tiling tool.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-stop on-canvas handling of dynamics&lt;br /&gt;
| Valerie: The main difficulty is that the current tiling mechanism does not support this feature, so a coder would have to study the feasibility of extending the current tiling mechanism before deciding if multi-stops will be allowed.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Order of implementation&lt;br /&gt;
| Not much input yet.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Dynamics_Preview_Mode.png&amp;diff=81158</id>
		<title>File:Tiling Tool Dynamics Preview Mode.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Dynamics_Preview_Mode.png&amp;diff=81158"/>
		<updated>2012-04-02T16:13:16Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Preview mode for dynamics for the Tiling Tool proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Preview mode for dynamics for the Tiling Tool proposal&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81146</id>
		<title>File:Tiling tool line tiling.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81146"/>
		<updated>2012-04-02T15:08:04Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling tool line tiling.png&amp;amp;quot;: A few additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for line tiling in the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81134</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81134"/>
		<updated>2012-04-02T09:06:11Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Added table of comments for UI readiness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UI design status ==&lt;br /&gt;
&lt;br /&gt;
This section is a summary of how ready the UI proposal for the various features are:&lt;br /&gt;
&lt;br /&gt;
'''General concept and tiling methods:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! General concept&lt;br /&gt;
| Valerie: The current interface is the result of exploring several very different concepts with inputs and criticism by a number of people. The &amp;quot;On-canvas editable central tile + render frame&amp;quot; concept is currently the first of these concepts to have encountered no major objections as to its usability, so it should be safe to consider this an acceptable general direction unless a better proposal comes along.&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Valerie: The general proposal (base tile, handles + render frame) doesn't seem to generate many objections. The exact form of the handles and the details about manipulation could still be refined.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| Valerie: Not much input yet.&lt;br /&gt;
|-&lt;br /&gt;
! Line tiling&lt;br /&gt;
| Valerie: Not much input yet. There should be, as this is a potentially very powerful feature for designers, though also hard to implement.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Specific features (all tiling methods)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Fuse mode &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Guide points &lt;br /&gt;
| Valerie: General input seems to be that this is a &amp;quot;good idea.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dynamics output symmetrical around base tile&lt;br /&gt;
| Valerie: The one major objection to this is that the existing tiling mechanism doesn't handle it this way, so implementing the feature would be more difficult.&lt;br /&gt;
|-&lt;br /&gt;
! Tile stacking and line pattern management&lt;br /&gt;
| Valerie: At this point both are just suggestions, as Inkscape has neither the mechanisms in place nor an UI.&lt;br /&gt;
|-&lt;br /&gt;
! On-canvas handling of dynamics&lt;br /&gt;
| Valerie: Valerie: concensus is that on-canvas manipulation of dynamics is very desirable. However, the exact form is still up to debate. Although this needs further work, it will likely also be one of the last steps towards implementing and improving a tiling tool.&lt;br /&gt;
|-&lt;br /&gt;
! Multi-stop on-canvas handling of dynamics&lt;br /&gt;
| Valerie: The main difficulty is that the current tiling mechanism does not support this feature, so a coder would have to study the feasibility of extending the current tiling mechanism before deciding if multi-stops will be allowed.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
'''Implementation'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;600&amp;quot; | Status&lt;br /&gt;
|-&lt;br /&gt;
! Order of implementation&lt;br /&gt;
| Not much input yet.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81110</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81110"/>
		<updated>2012-04-01T17:31:37Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Added UI for radial and line tiling, re-added proposal for dynamics symmetry around base tile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Media:WallpaperTransformations.png | Transformation images for wallpaper groups]]&lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Option for dynamics Symmetry around base tile? ==&lt;br /&gt;
&lt;br /&gt;
Proposal: option for all dynamics to be rendered in a symmetry around the base tile. This proposal is because users may want tiles to fade around a central tile. Rendering the frame in just one direction is easy, but achieving the symmetry otherwise is not.&lt;br /&gt;
&lt;br /&gt;
The main difficulty is that the current dynamics mechanism is linear, so adjustments would be needed.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Symmetry.png|Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
In theory, radial tiling could use the same mechanism as rows and columns tiling, by converting all input into X, Y input. Although users can also use rows and columns tiling to achieve radial tiling, doing so would not be very intuitive.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Radial Tiling.png|UI proposal for radial tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
Implementing line tiling would be more complicated that implementing radial tiling, because it is an extension of the Pattern Along Path function rather than of the existing tiled clones mechanism. So, the programer would have to figure out a way to combine Pattern Along Path and the dynamics for Tiled Clones, all the while implementing the proper render guide. If he achieves it though, it'd be an amazingly powerful and versatile tool for designers of all kinds.&lt;br /&gt;
&lt;br /&gt;
Line tiling actually comes in two sets of guides:&lt;br /&gt;
* A pattern guide.&lt;br /&gt;
* A target guide. This target guide appears over the target path, which has to be copied first to the clipboard.&lt;br /&gt;
&lt;br /&gt;
The pattern guide can actually be edited independently of a target path, but unless a target path is copied to the clipboard, the user cannot render the line tiling. So, the user can first adjust the pattern design and tiling properties, then copy a path, adjust and apply.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling tool line tiling.png|UI proposal for line tiling in the tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Symmetry.png&amp;diff=81098</id>
		<title>File:Tiling Tool Symmetry.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Symmetry.png&amp;diff=81098"/>
		<updated>2012-04-01T17:27:07Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proposal for dynamics to occur in a symmetry around the base tile for the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81092</id>
		<title>File:Tiling tool line tiling.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_tool_line_tiling.png&amp;diff=81092"/>
		<updated>2012-04-01T17:22:05Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for line tiling in the tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for line tiling in the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Radial_Tiling.png&amp;diff=81086</id>
		<title>File:Tiling Tool Radial Tiling.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Radial_Tiling.png&amp;diff=81086"/>
		<updated>2012-04-01T17:20:15Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for radial tiling in the tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for radial tiling in the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81020</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81020"/>
		<updated>2012-03-31T14:13:30Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* III. Super fancy wallpaper features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* They can be dragged and deformed. Inkscape takes the resulting values and converts them into numerical values in the current tiling back-end.&lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked.&lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81014</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81014"/>
		<updated>2012-03-31T13:45:07Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* I. Core features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - mostly static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to add a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
# Of course, this means the programmer must also figure out a way to tell Inkscape which grids to render and which ones to not&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81008</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=81008"/>
		<updated>2012-03-31T13:13:35Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to implement a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
 &lt;br /&gt;
''' 3. Minor Dynamics interface rework? '''&lt;br /&gt;
&lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent basic tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although handling of dynamics should have an on-canvas interface, programming it would likely be the most complicated part of this tool, so although this interface is temporary, it's also just a relatively minor cosmetics rework that will make it more user-friendly.&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
# Handles are added to the base tiles, making it possible to switch from one tiling to another. Implementing this feature also means that the programmer can no longer &amp;quot;cheat&amp;quot; by dropping more or less regular objects, as the guides have properties.&lt;br /&gt;
# Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed.&lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
* Changing symmetries should be the priority. &lt;br /&gt;
* Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
&lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operations (specifically &amp;quot;cut&amp;quot;) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however&lt;br /&gt;
Alternatively, the programmer can make Inkscape render a shape over the tile and perform a union operation, but one that leaves resulting nodes instead of joining them.&lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may use the existing dynamics mechanism, and serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80996</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80996"/>
		<updated>2012-03-31T13:04:57Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Implementation */ Some edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See [https://blueprints.launchpad.net/inkscape/+spec/guides-improvement Existing blueprint]. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== I. Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is a mere front-end to the current interface. This is the minimum interface that would allow users to make basic tiling without opening the current tiling dialogue. Sequence:&lt;br /&gt;
* Clicking the + button &amp;quot;adds&amp;quot; a tile guide of the chosen type. However, you can render without adding a guide first (Inkscape will then use the object's own bounds)&lt;br /&gt;
* Choose the pattern to tile and the guide and click &amp;quot;create.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should program guides for all 17 wallpaper groups. Actually, they're mostly just rectangles and triangles. Since guides don't do much at this point, users can drop a P1 guide and use it for say... P2 without too much problem (since they're both just rectangles).&lt;br /&gt;
# The tiling interface is forced to take bound coordinates from these guides&lt;br /&gt;
# The render buttons and the Rows, Columns fields (or the Width, Height field) must be moved from the dialogue to the toolbar. This is to guarantee a minimum interface that doesn't require opening the full dialogue (which will then just be used for dynamics). The other option may have to be removed then, or also stuffed in the toolbar.&lt;br /&gt;
# The &amp;quot;remove&amp;quot; button could be removed. Instead, the &amp;quot;create&amp;quot; button stays pushed in when the rendering is done. By choosing the output with the tiling tool again, you can just click again to uncreate.&lt;br /&gt;
&lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. Proper guides will be nice though, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards (which I only found out myself recently).  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to implement a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames). One tile in this render frame will be indicated as the base tile.&lt;br /&gt;
# It should be possible to add and remove frames to this frame (see render frame description).&lt;br /&gt;
 &lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent tiling tool. I propose also re-arranging the dialogue to make it easier to use:  &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Temp Dynamics panel.png|Temp UI rework for the Dynamics panel of the tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== II. More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Tiling handles '''&lt;br /&gt;
 &lt;br /&gt;
Handles are added to the base tiles, making it possible to switch from one tiling to another. &lt;br /&gt;
# Changing symmetries should be the priority. &lt;br /&gt;
# Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
# Before, tiles and tiling type are treated separately, since the same rectangle tile for example can be used for several different type of transformations. Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed. &lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up.&lt;br /&gt;
  &lt;br /&gt;
'''  2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operation (specifically cut) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however &lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== III. Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may require use the existing dynamics mechanism, and instead serve as a front-end for inputing values.&lt;br /&gt;
* Two tiles or some other handles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
Under discussion: Visual representation of the mechanism?&lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms may have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== IV. Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented.&lt;br /&gt;
&lt;br /&gt;
''' 1. Radial tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
''' 2. Line tiling '''&lt;br /&gt;
&lt;br /&gt;
To-do.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Temp_Dynamics_panel.png&amp;diff=80990</id>
		<title>File:Tiling Tool Temp Dynamics panel.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Temp_Dynamics_panel.png&amp;diff=80990"/>
		<updated>2012-03-31T12:57:55Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Temp UI rework for the Dynamics panel of the tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Temp UI rework for the Dynamics panel of the tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80978</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80978"/>
		<updated>2012-03-31T11:21:51Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Guide points and other guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See blueprint. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*This step is a mere front-end to the current interface. It allows you to place a single guide tile for a given wallpaper group. &lt;br /&gt;
*Select that tile, select your pattern, input some tile values, and render. &lt;br /&gt;
*To add dynamics, you have to open the old Tiling dialogue. &lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should guide tiles for all 17 wallpaper groups. Many can share tiles, so can be grouped into &amp;quot;Rectangle, P3, P4 etc.&amp;quot; &lt;br /&gt;
# The tiling interface is forced to take bound coordinates from this tile. &lt;br /&gt;
# Preview in the dialogue: Veronica has already done previews. They need to be added for users to be informed about what is being used. &lt;br /&gt;
 &lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. But honestly, let's have some proper guides, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards.  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to implement a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames) around the base tile object. &lt;br /&gt;
# It should be possible to add to this grid just by dragging on the edges. Shift-drag to increase in all directions.  &lt;br /&gt;
#* Additional features: add/remove tiles by Alt-clicking individual frames, by Alt-dragging (touch-create) and by Ctrl-Alt-dragging (lasso around an area to create or remove)(hold down shift for the last two to remove instead).  &lt;br /&gt;
# Once this feature has been implemented, the &amp;quot;Rows, Columns&amp;quot; and &amp;quot;Width, Height&amp;quot; fields of the tiling dialogue can be removed completely. &lt;br /&gt;
 &lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent tiling tool. I propose also re-arranging the dialogue to make it easier to use: &lt;br /&gt;
* Symmetry and render buttons could potentially be moved from the dialogue to the tool. &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
 &lt;br /&gt;
=== More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Base tile handles '''&lt;br /&gt;
 &lt;br /&gt;
Handles are added to the base tiles, making it possible to switch from one tiling to another. &lt;br /&gt;
# Changing symmetries should be the priority. &lt;br /&gt;
# Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
# Before, tiles and tiling type are treated separately, since the same rectangle tile for example can be used for several different type of transformations. Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed. &lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up. &lt;br /&gt;
 &lt;br /&gt;
Note: P1 tiles can be skewed, but certain handle transformations may snap it straight. &lt;br /&gt;
 &lt;br /&gt;
'''  II.2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operation (specifically cut) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however &lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
Again, the tricky part is how to define guide points and implement them as a separate object (how does the code for object rotation centers work?). On the other hand, point object are useful for other tools and features (such as serving as guides for connectors, etc.) The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may require reworking the dynamics mechanism.  &lt;br /&gt;
* Two tiles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
In-progress: mechanism for adding and previewing jitters? &lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms thus have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented. &lt;br /&gt;
IV.1. Radial tiling &lt;br /&gt;
&lt;br /&gt;
IV.2. Line tiling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80972</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80972"/>
		<updated>2012-03-31T11:21:26Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See blueprint. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*This step is a mere front-end to the current interface. It allows you to place a single guide tile for a given wallpaper group. &lt;br /&gt;
*Select that tile, select your pattern, input some tile values, and render. &lt;br /&gt;
*To add dynamics, you have to open the old Tiling dialogue. &lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should guide tiles for all 17 wallpaper groups. Many can share tiles, so can be grouped into &amp;quot;Rectangle, P3, P4 etc.&amp;quot; &lt;br /&gt;
# The tiling interface is forced to take bound coordinates from this tile. &lt;br /&gt;
# Preview in the dialogue: Veronica has already done previews. They need to be added for users to be informed about what is being used. &lt;br /&gt;
 &lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. But honestly, let's have some proper guides, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards.  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to implement a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames) around the base tile object. &lt;br /&gt;
# It should be possible to add to this grid just by dragging on the edges. Shift-drag to increase in all directions.  &lt;br /&gt;
#* Additional features: add/remove tiles by Alt-clicking individual frames, by Alt-dragging (touch-create) and by Ctrl-Alt-dragging (lasso around an area to create or remove)(hold down shift for the last two to remove instead).  &lt;br /&gt;
# Once this feature has been implemented, the &amp;quot;Rows, Columns&amp;quot; and &amp;quot;Width, Height&amp;quot; fields of the tiling dialogue can be removed completely. &lt;br /&gt;
 &lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent tiling tool. I propose also re-arranging the dialogue to make it easier to use: &lt;br /&gt;
* Symmetry and render buttons could potentially be moved from the dialogue to the tool. &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
 &lt;br /&gt;
=== More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Base tile handles '''&lt;br /&gt;
 &lt;br /&gt;
Handles are added to the base tiles, making it possible to switch from one tiling to another. &lt;br /&gt;
# Changing symmetries should be the priority. &lt;br /&gt;
# Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
# Before, tiles and tiling type are treated separately, since the same rectangle tile for example can be used for several different type of transformations. Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed. &lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up. &lt;br /&gt;
 &lt;br /&gt;
Note: P1 tiles can be skewed, but certain handle transformations may snap it straight. &lt;br /&gt;
 &lt;br /&gt;
'''  II.2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operation (specifically cut) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however &lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
Again, the tricky part is how to define guide points and implement them as a separate object (how does the code for object rotation centers work?). On the other hand, point object are useful for other tools and features (such as serving as guides for connectors, etc.) The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may require reworking the dynamics mechanism.  &lt;br /&gt;
* Two tiles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
In-progress: mechanism for adding and previewing jitters? &lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms thus have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented. &lt;br /&gt;
IV.1. Radial tiling &lt;br /&gt;
&lt;br /&gt;
IV.2. Line tiling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80966</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80966"/>
		<updated>2012-03-31T11:20:19Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Another major overhaul&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current interface attempts to make the process more user friendly through the use of a tool that creates a &amp;quot;render frame&amp;quot;, which consists of two parts:&lt;br /&gt;
* A base tile, where the pattern is supposed to be&lt;br /&gt;
* A more general render frame, showing the location of the output&lt;br /&gt;
* Both can be edited on-canvas&lt;br /&gt;
&lt;br /&gt;
The tiling process is simply:&lt;br /&gt;
# Create a frame&lt;br /&gt;
# Select a pattern and a frame&lt;br /&gt;
# Click &amp;quot;Render&amp;quot; from the tiling tool&lt;br /&gt;
&lt;br /&gt;
* By default the frame becomes invisible after a render, and becomes &amp;quot;implied&amp;quot; in the generated output (a bit like clipping?). &lt;br /&gt;
* Undoing the render makes the frame appear again. &lt;br /&gt;
* The user can choose to drop a copy of the frame after a render for re-use however, or make a copy before applying.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation. (thus covering the Rosetta patterns as well)&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Toolbar.png|UI Proposal for tiling tool]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render modes ==&lt;br /&gt;
&lt;br /&gt;
There are two modes:&lt;br /&gt;
* Create clones: This is the current rendering mode&lt;br /&gt;
* Fuse: This mode first cuts excess for &amp;quot;inner&amp;quot; sides, then performs a &amp;quot;fuse&amp;quot; operation on the whole output.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Render frame ==&lt;br /&gt;
&lt;br /&gt;
The render frame is made up of:&lt;br /&gt;
* A central tile, which defines the location of the pattern to copy&lt;br /&gt;
* A more general render grid&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|UI Proposal for the Render frame of the Tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== On-canvas transformation handles ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Transformation_Handles.png|UI proposal for on-canvas handles for the tiling tool proposal]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Guide points are there to serve as reference point when creating tile designs. &lt;br /&gt;
* When you add a guide point, &amp;quot;counterparts&amp;quot; are generated in all the other tiles&lt;br /&gt;
* Ctrl-drag to drag out a segment. &lt;br /&gt;
* The idea is that users can snap guide points along tile edges, snap a node of the pattern to that guide and snap the node handle to the end of the guide segment, then repeat with the guide point's counterparts. This should help easily create seamless transitions.&lt;br /&gt;
&lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== On-canvas dynamics editing ==&lt;br /&gt;
&lt;br /&gt;
(in progress)&lt;br /&gt;
&lt;br /&gt;
== Radial tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Line tiling ==&lt;br /&gt;
&lt;br /&gt;
(to-do)&lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Proposed implementation steps:&lt;br /&gt;
&lt;br /&gt;
=== 0. Very desirable: Guide management ===&lt;br /&gt;
&lt;br /&gt;
See blueprint. Rather, what is needed here is not a full guide management system, but rather how to &amp;quot;define&amp;quot; a guide, as the guides here have properties very different from &amp;quot;normal&amp;quot; objects. &lt;br /&gt;
&lt;br /&gt;
=== Core features ===&lt;br /&gt;
&lt;br /&gt;
'''1. The glorified clone and distribute tool '''&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling Tool Step1.png|UI Proposal for first step of tiling tool implementation]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*This step is a mere front-end to the current interface. It allows you to place a single guide tile for a given wallpaper group. &lt;br /&gt;
*Select that tile, select your pattern, input some tile values, and render. &lt;br /&gt;
*To add dynamics, you have to open the old Tiling dialogue. &lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The programer should guide tiles for all 17 wallpaper groups. Many can share tiles, so can be grouped into &amp;quot;Rectangle, P3, P4 etc.&amp;quot; &lt;br /&gt;
# The tiling interface is forced to take bound coordinates from this tile. &lt;br /&gt;
# Preview in the dialogue: Veronica has already done previews. They need to be added for users to be informed about what is being used. &lt;br /&gt;
 &lt;br /&gt;
If guide management isn't available yet, the interface could drop a normal object of the right shape. By default, Inkscape will then use the top object's bounds to render the tile. But honestly, let's have some proper guides, they'll be needed for the other features. &lt;br /&gt;
 &lt;br /&gt;
Why it's an improvement over the past interface: &lt;br /&gt;
* Better visibility. Many users likely don't know the tiling dialogue exists. &lt;br /&gt;
* And they run away as soon as they do find it. I know I did. &lt;br /&gt;
* Make a rectangle. Apply a P3 transformation. Any idea what happened? Me neither. At least with tiles, users will know what the heck is being transformed, so they can actually create proper patterns. &lt;br /&gt;
* Also, users don't need to resort to the trick of grouping the pattern they want with a rectangle first, and deleting that rectangle afterwards.  &lt;br /&gt;
 &lt;br /&gt;
''' 2. The render frame - static '''&lt;br /&gt;
 &lt;br /&gt;
What needs to be done: &lt;br /&gt;
# The user needs to be able to implement a grid object (&amp;quot;render frame&amp;quot;) for all 17 wallpaper groups (again, many wallpaper groups use the same types of render frames) around the base tile object. &lt;br /&gt;
# It should be possible to add to this grid just by dragging on the edges. Shift-drag to increase in all directions.  &lt;br /&gt;
#* Additional features: add/remove tiles by Alt-clicking individual frames, by Alt-dragging (touch-create) and by Ctrl-Alt-dragging (lasso around an area to create or remove)(hold down shift for the last two to remove instead).  &lt;br /&gt;
# Once this feature has been implemented, the &amp;quot;Rows, Columns&amp;quot; and &amp;quot;Width, Height&amp;quot; fields of the tiling dialogue can be removed completely. &lt;br /&gt;
 &lt;br /&gt;
Once I.1. and I.2. are implemented, we'll have a decent tiling tool. I propose also re-arranging the dialogue to make it easier to use: &lt;br /&gt;
* Symmetry and render buttons could potentially be moved from the dialogue to the tool. &lt;br /&gt;
* Presets for dynamics &lt;br /&gt;
* Dynamics get listed vertically, with checkboxes, so Inkscape can have default usable values that users can access by just checking the box. &lt;br /&gt;
 &lt;br /&gt;
=== More advanced wallpaper tiling features ===&lt;br /&gt;
 &lt;br /&gt;
These can now be implemented separately. &lt;br /&gt;
 &lt;br /&gt;
''' 1. Base tile handles '''&lt;br /&gt;
 &lt;br /&gt;
Handles are added to the base tiles, making it possible to switch from one tiling to another. &lt;br /&gt;
# Changing symmetries should be the priority. &lt;br /&gt;
# Eventually controls for angles could be added too, though this is lower priority, as not many users absolutely need to change from one tile shape to another. &lt;br /&gt;
# Before, tiles and tiling type are treated separately, since the same rectangle tile for example can be used for several different type of transformations. Now that the tiling can be visualized and edited on-canvas, the tiling type should now be linked directly to the guide tile, so the tiling type drop-down can be removed. &lt;br /&gt;
# Users are now offered to create a &amp;quot;Wallpaper&amp;quot; tile by default. Other transformation types are accessed via a pop-up when choosing &amp;quot;others.&amp;quot; All previews are moved to this pop-up. &lt;br /&gt;
 &lt;br /&gt;
Note: P1 tiles can be skewed, but certain handle transformations may snap it straight. &lt;br /&gt;
 &lt;br /&gt;
'''  II.2. Fuse mode ''' &lt;br /&gt;
 &lt;br /&gt;
As noted, this is a cut + fuse operation. The programmer needs to implement the following features: &lt;br /&gt;
# Boolean operation (specifically cut) on groups &lt;br /&gt;
# This also means fixing the cut operation, which is currently rather buggy... &lt;br /&gt;
# The guides must be extended, and for each wallpaper group, the ways to &amp;quot;cut&amp;quot; the tiles must be defined &lt;br /&gt;
# The programmer must then find the way to define the zone to be delete &lt;br /&gt;
# &amp;quot;Fuse&amp;quot; uses the existing group node join operation however &lt;br /&gt;
 &lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
&lt;br /&gt;
''' 3. Guide points ''' &lt;br /&gt;
 &lt;br /&gt;
Again, the tricky part is how to define guide points and implement them as a separate object (how does the code for object rotation centers work?). On the other hand, point object are useful for other tools and features (such as serving as guides for connectors, etc.) The programmer must: &lt;br /&gt;
# Define/create guide points. This object can be snapped to objects and guides. &lt;br /&gt;
# Program it so that iterations of it appear and are rendered correctly in each tile of the render frame according to the chosen transformation mode. If the transformation type is changed, they must also update automatically. &lt;br /&gt;
# Additional feature: Ctrl-drag to create a segment from the point: this helps make transformations in each tile more obvious, and helps for handle-snapping. &lt;br /&gt;
 &lt;br /&gt;
=== Super fancy wallpaper features ===&lt;br /&gt;
&lt;br /&gt;
''' On-canvas dynamics editing '''&lt;br /&gt;
 &lt;br /&gt;
This may require reworking the dynamics mechanism.  &lt;br /&gt;
* Two tiles are chosen as reference frames, for row and column respectively.  &lt;br /&gt;
* Deformations are propagated live along the other types. &lt;br /&gt;
* Colors can be added to the reference tile for HSL interpolation. &lt;br /&gt;
 &lt;br /&gt;
The programmer must basically: &lt;br /&gt;
# Change the static render frame into a dynamic one that updates dynamically by propating values across all tiles. Good luck. &lt;br /&gt;
# The old dynamics dialogue can probably be replaced with a leaner interface restricted to row for one, and columns for the other. The core mechanism is still more or less the same. &lt;br /&gt;
 &lt;br /&gt;
In-progress: mechanism for adding and previewing jitters? &lt;br /&gt;
 &lt;br /&gt;
''' 2. Interpolation gradients? '''&lt;br /&gt;
&lt;br /&gt;
This takes the previous a step further. You can now add multiple stops. The current internal mechanisms thus have to be reworked. &lt;br /&gt;
&lt;br /&gt;
=== Other tiling types ===&lt;br /&gt;
&lt;br /&gt;
Two other desirable tilings are Radial and Line tiling. Implementation can probably start once the features in I. Core features are implemented. &lt;br /&gt;
IV.1. Radial tiling &lt;br /&gt;
&lt;br /&gt;
IV.2. Line tiling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Step1.png&amp;diff=80960</id>
		<title>File:Tiling Tool Step1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Step1.png&amp;diff=80960"/>
		<updated>2012-03-31T11:19:28Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI Proposal for first step of tiling tool implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI Proposal for first step of tiling tool implementation&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Guides.png&amp;diff=80954</id>
		<title>File:Tiling Tool Guides.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Guides.png&amp;diff=80954"/>
		<updated>2012-03-31T11:11:30Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling Tool Guides.png&amp;amp;quot;: Changed to fit changes to the tiling tool proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for guide points feature for Tiling Tool.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Transformation_Handles.png&amp;diff=80948</id>
		<title>File:Tiling Tool Transformation Handles.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Transformation_Handles.png&amp;diff=80948"/>
		<updated>2012-03-31T11:06:33Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for on-canvas handles for the tiling tool proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for on-canvas handles for the tiling tool proposal&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Frame.png&amp;diff=80942</id>
		<title>File:Tiling Tool Render Frame.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Frame.png&amp;diff=80942"/>
		<updated>2012-03-31T11:04:35Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling Tool Render Frame.png&amp;amp;quot;: UI Proposal for the Render frame of the Tiling tool proposal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Render frame feature for the tiling tool proposal&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Toolbar.png&amp;diff=80936</id>
		<title>File:Tiling Tool Toolbar.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Toolbar.png&amp;diff=80936"/>
		<updated>2012-03-31T11:00:26Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI Proposal for tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI Proposal for tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80570</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80570"/>
		<updated>2012-03-27T14:50:45Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Tile edit mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Veronica made a nice list of tiles for wallpapers and corresponding output previews here:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/DMCvU.png Full list of wallpaper tiles and previews]&lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dialogue.png|UI proposal for tiling tool dialogue]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80564</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80564"/>
		<updated>2012-03-27T14:36:10Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Minor edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dialogue.png|UI proposal for tiling tool dialogue]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80558</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80558"/>
		<updated>2012-03-27T14:34:35Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Moved some things around&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dialogue.png|UI proposal for tiling tool dialogue]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80552</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80552"/>
		<updated>2012-03-27T14:33:51Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Moved some things around&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately. &lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dialogue.png|UI proposal for tiling tool dialogue]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80546</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80546"/>
		<updated>2012-03-27T14:32:23Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: /* Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately. &lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dialogue.png|UI proposal for tiling tool dialogue]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Dialogue.png&amp;diff=80540</id>
		<title>File:Tiling Tool Dialogue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Dialogue.png&amp;diff=80540"/>
		<updated>2012-03-27T14:31:28Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for tiling tool dialogue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for tiling tool dialogue&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80534</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80534"/>
		<updated>2012-03-27T14:09:27Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Moved Tile Edit Mode section higher , added line patterns&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling tool == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frills, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately. &lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[to-redo] &lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
&lt;br /&gt;
== Tile stacking == &lt;br /&gt;
&lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;br /&gt;
&lt;br /&gt;
== Line patterns == &lt;br /&gt;
&lt;br /&gt;
And why not &amp;quot;line patterns&amp;quot; while we're at it?&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling line patterns.png|UI proposal for line pattern choosing]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_line_patterns.png&amp;diff=80528</id>
		<title>File:Tiling line patterns.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_line_patterns.png&amp;diff=80528"/>
		<updated>2012-03-27T14:07:29Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for line pattern&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for line pattern&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Tile_Edit_Mode.png&amp;diff=80522</id>
		<title>File:Tiling Tool Tile Edit Mode.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Tile_Edit_Mode.png&amp;diff=80522"/>
		<updated>2012-03-27T13:52:49Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling Tool Tile Edit Mode.png&amp;amp;quot;: Small fixes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI proposal for the tile Edit mode for the Tiling Tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Mode.png&amp;diff=80516</id>
		<title>File:Tiling Tool Render Mode.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Mode.png&amp;diff=80516"/>
		<updated>2012-03-27T13:50:41Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling Tool Render Mode.png&amp;amp;quot;: An addition.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI proposal for the Render mode of the Tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80510</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80510"/>
		<updated>2012-03-27T13:48:21Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Added image for Guides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling guide and dialogue == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frill designs, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately. &lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[to-redo] &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
== Tile types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Guides.png|UI proposal for guide points feature for Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart. To create seamless designs, just make sure that all lines going in and out of a tile are connected to guide points.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
== Tile stacking == &lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Guides.png&amp;diff=80504</id>
		<title>File:Tiling Tool Guides.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Guides.png&amp;diff=80504"/>
		<updated>2012-03-27T13:45:36Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: UI proposal for guide points feature for Tiling Tool.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI proposal for guide points feature for Tiling Tool.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Targets.png&amp;diff=80498</id>
		<title>File:Tiling Tool Targets.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Targets.png&amp;diff=80498"/>
		<updated>2012-03-27T13:37:12Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling Tool Targets.png&amp;amp;quot;: Smaller version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Possible &amp;quot;target&amp;quot; types for tiling tool proposal&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_interface_examples.png&amp;diff=80492</id>
		<title>File:Tiling interface examples.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_interface_examples.png&amp;diff=80492"/>
		<updated>2012-03-27T13:35:44Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: uploaded a new version of &amp;amp;quot;File:Tiling interface examples.png&amp;amp;quot;: Smaller version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Examples of the newly proposed tiling interface, showing off its seamless tiling feature (combination of cutting off areas beyond the guide and fusing the resulting nodes with the next tile)&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80486</id>
		<title>Tiling tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Tiling_tool&amp;diff=80486"/>
		<updated>2012-03-27T11:15:47Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: Yet another complete re-design&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tiling guide and dialogue == &lt;br /&gt;
The current tiling interface is hard to use. The current Tiling Tool proposal attempts to resolve part of that issue through the use of on-canvas guides called “Tiles.” This feature also expands the tiling to radial tiling and line tiling (currently known as Pattern Along Path). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;700&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Wallpaper tiling&lt;br /&gt;
| Allows users to use the 17 wallpaper types.&lt;br /&gt;
|-&lt;br /&gt;
! Radial tiling&lt;br /&gt;
| &lt;br /&gt;
* This is for radial designs, and allows both angular clones and radial clones. &lt;br /&gt;
* For angular clones, users can choose between simple rotation or symmetry + rotation.&lt;br /&gt;
* For radial clones, users can choose between same direction and alternating directions.&lt;br /&gt;
|-&lt;br /&gt;
! Path tiling&lt;br /&gt;
| &lt;br /&gt;
* Clones are generated along a path. This can be used to create a string of decorations, for repeating frill designs, for page borders etc.&lt;br /&gt;
* Users can choose from all 7 Frieze groups.&lt;br /&gt;
|} &lt;br /&gt;
The tile creation process: &lt;br /&gt;
# Create a base pattern.&lt;br /&gt;
# From the tiling mode, add a “Tile.”&lt;br /&gt;
#* Edit the tile as needed. Double-clicking a tile enters a tile edit mode. Double-click elsewhere to exit.&lt;br /&gt;
#* Make additional changes to the base pattern as needed.&lt;br /&gt;
# Select a base pattern and a tile. Switch to tiling tool again.&lt;br /&gt;
#* Before selecting the base pattern and tile, copy a target to render over if needed.&lt;br /&gt;
#* Choose tiling options.&lt;br /&gt;
# Click render. &lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* '''Tile:''' A tile is defined here a guide used to mark the boundaries of the base tiling, as well as define the tiling type. It defines the “unit” of the tiling. For example, it is a rectangle for a “P1: Simple translation” tiling. Tiles can be moved, rotated or scaled. In tile edit mode, the type of tile can be modified through the use of handles or from a drop-down list. When rendering a tiling, Inkscape automatically detects the type of tile being used to select the tiling type.&lt;br /&gt;
* '''Base pattern:''' Defined here as the pattern that needs to be repeated.&lt;br /&gt;
* '''Tiling tool:''' This tool. Used to render tilings.&lt;br /&gt;
* '''Render mode:''' The main mode of the tiling tool. From here you can create a new tile, and if you have a tile and based pattern selected, you can “render” the appropriate tiling.&lt;br /&gt;
* '''Tile edit mode:''' Double-clicking on a tile enters the tile edit mode. Double-clicking elsewhere leaves it. In tile edit mode, the toolbar changes to one appropriate for that tiling operation (wallpaper, radial or line tiling). Additional features proposed:&lt;br /&gt;
** '''Guides:''' In tiling mode, the user can add additional guides (points or lines) to help design their pattern. These additional guides are just visual references and don’t perform additional actions.&lt;br /&gt;
** '''Render frame:''' A render frame shows an outline of frames to render. Users can add or delete frames with the mouse. The whole frame can also be moved, rotated and resized.&lt;br /&gt;
* '''Tiling dialogue:''' A dialogue with additional options, behaving like an LPE dialogue. Users can also see the stacking of tilings from here.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
This proposal contains a lot of features, but it is also very modular, so features can be added separately. &lt;br /&gt;
* The base version of this tool would be a version only for wallpaper tiling, with only simple rectangular tile from which Inkscape will take coordinates. The base version could be a mere front-end to the old dialogue, with the difference being that the rectangular tile will be used to calculate coordinates.&lt;br /&gt;
* The different types of tiles and the Tile Edit Mode can be added separately. Users can first choose from a drop-down. Handles can also be programmed separately.&lt;br /&gt;
* In tile edit mode, additional &amp;quot;guides&amp;quot; (guide points etc.) can also be implemented separately.&lt;br /&gt;
* &amp;quot;Render frame&amp;quot; feature can also be implemented separately.&lt;br /&gt;
* All tiling modes can be implemented separately (clip, fuse and fuse cut). Note: the Fuse Cut operation requires the ability to perform Boolean operations (specifically “cut”) on a group of objects:&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/166302 Bug #166302: Cut Path looses some segments ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/171379 Bug #171379: Boolean Operations on Groups ]&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/701819 Bug #701819: Copy/Cut a Part of a Grouped Object ] (scenario of above)&lt;br /&gt;
** [https://bugs.launchpad.net/inkscape/+bug/408551 Bug #408551: Cut Path with a grouped object does nothing ]&lt;br /&gt;
* Dynamics drop-down and presets for dynamics can be implemented separately. The dialogue for dynamics can also be re-arranged independently.&lt;br /&gt;
* Most “target” options can be implemented separately.&lt;br /&gt;
* The above describes the tiling tool for just wallpaper tiling. All features can be expanded to radial tiling and line tiling separately. &lt;br /&gt;
&lt;br /&gt;
== Tiling tool: Render mode == &lt;br /&gt;
&lt;br /&gt;
The toolbar looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Render_Mode.png|GUI proposal for the Render mode of the Tiling tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tiling modes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_modes.png|Render modes for the tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
There are 4 modes in the current proposal: &lt;br /&gt;
* Plain: this is a normal tiling&lt;br /&gt;
* Clip: through clipping, only the part within the tile is shown. This is to avoid overlapping.&lt;br /&gt;
* Fuse: a “join node” operation is then conducted on all the nodes in the output. If the user designed the tiles to be seamless, then the lines should join up to create a seamless output.&lt;br /&gt;
* Fuse cut: this is, in fact, a “cut” and “delete” operation followed by a “join nodes” operation. Inkscape will cut along certain lines and delete parts for “inner” tiles. This last mode allows the user to create seamless tiles with “edge” scenarios from a single base pattern: &lt;br /&gt;
&lt;br /&gt;
== More explanations of the &amp;quot;fuse cut&amp;quot; mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_cut_excess.png|Explanation of &amp;quot;Fuse cut&amp;quot; feature for tiling proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_interface_examples.png|More examples of the possible outputs for the “Fuse Cut” mode]] &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Dynamics ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Dynamics.png|GUI and presets for Dynamics presets for Tiling Tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
Simple dynamics presets could be accessible from the tiling tool. A separate “Dynamics” panel corresponding to the current tiling operation pops up when choosing the Edit option. Major differences are:&lt;br /&gt;
* Vertical listing&lt;br /&gt;
* Checkbox next to every transformation type, so users can easily remove all of them while retaining some values.&lt;br /&gt;
* Radial Clones use Polar coordinates.&lt;br /&gt;
* Tiling along Path use orthogonal coordinates (normal and orthogonal).&lt;br /&gt;
* Users can save and use presets. This includes a &amp;quot;No dynamics&amp;quot; option. &lt;br /&gt;
&lt;br /&gt;
== Target ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Targets.png|Possible &amp;quot;target&amp;quot; types for tiling tool proposal]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;quot;Target&amp;quot; determines where you render your tiling. &lt;br /&gt;
&lt;br /&gt;
For wallpaper tiling:&lt;br /&gt;
* By numbers: A pop-up asks you to input the number of tiles to make (example: 3 x 5), or the size of a rectangular area to render over&lt;br /&gt;
* Render frame: See guide description. After adding a render frame, Inkscape will render tiles according to that frame.&lt;br /&gt;
* Over copied: If you have a copied object, Inkscape will render over the copy.&lt;br /&gt;
* Border to copy: easy page borders? Makes a border.&lt;br /&gt;
* Clip to copied: Same as above, except clipped to the target. Use for clothes etc.&lt;br /&gt;
* Pattern to copy: (if allowed by .svg standards) The tiling is converted to a pattern and applied to the copied object. This pattern can be manually adjusted with the Pattern edit tool.&lt;br /&gt;
* New pattern: (if allowed by .svg standards) A pop-asks asks you to name and save the new pattern for later use. &lt;br /&gt;
For radial tiling:&lt;br /&gt;
* By number: A pop-up asks you to input the number of radial and angular copies. You can choose to input by angle and by radial distance instead. &lt;br /&gt;
* Render frame: see render frame description.&lt;br /&gt;
* No &amp;quot;to copied&amp;quot; option, because I think people usually want to define a radial tile just where the base tile is, but I could be wrong. &lt;br /&gt;
For Tiling along path:&lt;br /&gt;
* On selected Path. Note: this can be a closed path. A pop-up allows you to choose additional options and values.&lt;br /&gt;
* As selected path's line pattern: takes the selected path and makes the Tiling along path its new pattern.&lt;br /&gt;
* As new line pattern: if clone patterns can somehow be saved somewhere. &lt;br /&gt;
Alternatively, the &amp;quot;target&amp;quot; field could be excluded from the toolbar, and appear as options in a pop-up when clicking &amp;quot;Render.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add tile ==&lt;br /&gt;
&lt;br /&gt;
This adds a tile to the canvas: wallpaper, radial or line. See Tile edit mode for more. &lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
Opens a Tiling dialogue. From here you can see what options have been applied to an existing tiling, change them and toggle tile stacking. &lt;br /&gt;
&lt;br /&gt;
[to-redo] &lt;br /&gt;
&lt;br /&gt;
== Tile edit mode == &lt;br /&gt;
&lt;br /&gt;
== Tile types ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;180&amp;quot;| Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Wallpaper tiling&lt;br /&gt;
| These guides corresponds to the different wallpaper categories&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Radial tiling&lt;br /&gt;
| These are to create radial patterns. They're basically arc segments with a  direction.&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Tiling along Path&lt;br /&gt;
| This is defined by a central axis, an attach point and 2 tile bounds. The central axis represents the path to which the tile will attach, basically a visual normal offset. The tile attaches to a specific node (say, the first node of the path) from the attach point, basically a visual tangential offset. The two bounds decide where the tile cuts off save for edge scenarios.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
To enter Tile Edit mode, double-click on a tile. Exit by double-clicking elsewhere. The tile can be moved, resized and rotated using just the Transform (F1) tool, just like how rectangles and ellipses can be edited outside of their respective tools.&lt;br /&gt;
&lt;br /&gt;
[[File:Tiling_Tool_Tile_Edit_Mode.png|GUI proposal for the tile Edit mode for the Tiling Tool]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Advanced users can then change the type of the base tile (example: from P1 to P2) in tile edit mode through the use of handles or drop-downs. These handles are not visible nor editable outside the tile edit mode (to avoid getting in the way). &lt;br /&gt;
&lt;br /&gt;
(Veronica made a nice list of tiles for wallpapers and corresponding output previews, but the link died….) &lt;br /&gt;
&lt;br /&gt;
== Guide points and other guides ==&lt;br /&gt;
&lt;br /&gt;
These features are there to help you design your tile pattern. Specifically, they're there to help design seamless tiles. &lt;br /&gt;
* Guide points: When a guide point is created on one side of a guide, counterparts are automatically created on all other sides of the basic guide. All changes to the original will be reflected onto counterpart.&lt;br /&gt;
* Guide segment: clicking and dragging on a guide point creates a guide segment, which also shows on all of the guide point's counterparts. The idea is to place a node on a guide point, snap its handle to the end of the segment, then repeat with the guide point's counterparts. When a &amp;quot;fuse&amp;quot; operation is applied, the result will be a perfectly smooth transition from one tile to the next. &lt;br /&gt;
See this [http://www.cgl.uwaterloo.ca/~csk/software/penrose/ javascript program] for an approximate idea of how it'd behave. &lt;br /&gt;
Note: programming-wise, the guide points don't actually do anything, they're just visual references. When Inkscape creates a &amp;quot;Fuse path&amp;quot; tiling, it just joins the nearest nodes. This means you can introduce slight dynamics and still have lines link up, though Inkscape can't guarantee the results in this case. &lt;br /&gt;
Depending on the guide type, other types of guides are available (parallel lines, arcs etc.) &lt;br /&gt;
== Render frame == &lt;br /&gt;
[[File:Tiling_Tool_Render_Frame.png|Render frame feature for the tiling tool proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A render frame is a tiling outline allowing the user to manually choose which frames to render. This is made up of a &amp;quot;central&amp;quot; tile and additional tiles (so when dynamics are applied, they start with the central tile). By default the frame is rendered over the original tile, but is a separate object that can be moved around, rotated and resized. &lt;br /&gt;
== Tile stacking == &lt;br /&gt;
You can easily stack different tilings! &lt;br /&gt;
[[File:Tiling stacking.png|Explanation of tile stacking feature for my tiling proposal]] &amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inkscape will likely have an Effects stacking mechanism in the future. Whatever it is, tiling would also fit right into it.&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Mode.png&amp;diff=80480</id>
		<title>File:Tiling Tool Render Mode.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Tiling_Tool_Render_Mode.png&amp;diff=80480"/>
		<updated>2012-03-27T11:11:07Z</updated>

		<summary type="html">&lt;p&gt;Valerievk: GUI proposal for the Render mode of the Tiling tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI proposal for the Render mode of the Tiling tool&lt;/div&gt;</summary>
		<author><name>Valerievk</name></author>
	</entry>
</feed>