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; -->