Warning, /graphics/tikzkit/README.md is written in an unsupported language. File is not indexed.

0001 # TikZKit
0002 
0003 Next to being a palindrome, TikZKit is a graphical what-you-see-is-what-you-get
0004 (WYSIWYG) editor for PGF/TikZ. [PGF/TikZ](http://www.texample.net/tikz/examples/all/)
0005 in turn is a markup package that allows to create most beautiful pictures in LaTeX.
0006 The core features of TikZKit are:
0007 1. Exact rendering as if you had generated the picture through LaTeX.
0008 2. TikZ export, obtaining TikZ code that can easily be manipulated.
0009 
0010 Please join tikzkit development to quickly get to a usable state.
0011 
0012 ## Architecture
0013 
0014 TikZKit is written in modern C++ and Qt5.
0015 It is organized in two libraries following the model/view concept, and the application:
0016 1. tikzcore: This library provides the data model. The model entirely defines a
0017    TikZ picture. The model itself is represented by the class tikz::core::Document.
0018 2. tikzui: This library provides the view. It renders the scene by using the
0019    QGraphicsView based on a tikz::core::Document.
0020 3. TikZKit: The application is a thin wrapper around the libraries tikzcore and
0021    tikzui.
0022 
0023 ## TODO List for a first tikzkit 1.0 release (incomplete)
0024 
0025 ### tikzcore
0026 - tikz::core::Document (priority: high)
0027   - makro support: implement Entity::toJsonObject() in all Entity classes. This
0028     way, Entities can by serialized to JSON, and by replaying the JSON makro,
0029     items can be e.g. copy & pasted, or template can be created.
0030   - add tikz::core::Layer: These layers match pgf layers when exported to PGF/TikZ, e.g.
0031     background, nodes, edges, foreground
0032   - add tikz::core::Scope: These scopes match \begin{scope} ... \end{scope} in
0033     PGF/TikZ. These scopes can be used to group items that share a style.
0034 
0035 - Add tikz::core::AbstractProperty
0036   - implement set of required property types (ColorProperty, ValueProperty,
0037     TextProperty, BoolProperty, StringListProperty, DoubleProperty, PosisionProperty)
0038   - allow adding / removing properties at runtime, so that the property system
0039     is extensible e.g. through plugins
0040 
0041 - MetaPos: x und y so trennen, dass es von unterschiedlichen Positions/Anchors kommt.
0042 - TexGenerator verbessern (mehrere jobs parallel, saubere kapselung, QTemporaryDir)
0043 - logo
0044 - class Package? -> tikz package + tikz options
0045 - introduce tikz::Editor: add EntityFactoryInterface similar to
0046   KTE::CommandInterface, add class EntityFactory that returns a list of
0047   QStrings ("node-rectangle", ... ?
0048 - implement pseudo-plugin that uses the EntityFactory
0049 
0050 - tikz::core::Path (priority: high)
0051   - add support for rectangle primitive
0052   - add support for grid primitive
0053   - add support for simple edges (straight, bending, bezier)
0054   - add support for polygonal lines and shapes
0055 
0056 - tikz::core::Node (priority: medium)
0057   - support anchors above, left, below, right and combinations
0058   - support anchoring on other anchors
0059 
0060 - visitors (priority: high)
0061   - fix TikZ export Visitor
0062   - (load visitor, currently unused)
0063   - (save visitor, currently unused)
0064 
0065 ### tikzui
0066 
0067 - property editor:
0068   - show properties of the selected item
0069   - use Transaction to group properties
0070   - add default/reset button
0071   - add support for categories and coloring of categories
0072 
0073 - LaTeX to SVG generator
0074   - proper design of the class with cleanup of the metadata (use QTemporaryDir)
0075   - proper diagnostics, if the dvisvg 
0076 
0077 - shapes
0078   - add more shapes
0079   - add more arrows
0080 
0081 - zoom control: Add widget to display current zoom level
0082 
0083 ### app
0084 - TikZKit
0085 - add icons to actions
0086 
0087 integration test (priority: medium)
0088 - implement testing suite:
0089   - tests are listed in a list view on the left
0090   - ability to add a new test
0091   - test
0092     - user graphically creates scene: add/manipulate nodes/edges
0093     - baseline
0094       - save the scene as TeX/TikZ code and convert to pdf
0095       - use libpoppler-qt4 to render the pdf from the TeX/TikZ code
0096       - save pdf as png
0097       - render TikzScene to png
0098     - use pdiff to check the graphical diff
0099     - fail test only on user specified threshold
0100 
0101 <!--- kate: space-indent on; indent-width 2; -->