summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorBryce Harrington <bryce@bryceharrington.org>2006-12-07 04:41:04 +0000
committerbryce <bryce@users.sourceforge.net>2006-12-07 04:41:04 +0000
commit429ffadb6856d4af7e385fe45fcb4c066978998f (patch)
tree4164774ab041d2b9837e07493a5e8995b187a0db /doc
parentCompleting rename (diff)
downloadinkscape-429ffadb6856d4af7e385fe45fcb4c066978998f.tar.gz
inkscape-429ffadb6856d4af7e385fe45fcb4c066978998f.zip
Marker menus now display custom markers in a document that are present
when the document is loaded. The menus won't update with new markers, though, and there's a couple other issues that need to be addressed before its 100% reliable. (bzr r2080)
Diffstat (limited to 'doc')
-rw-r--r--doc/markers_design.txt98
1 files changed, 98 insertions, 0 deletions
diff --git a/doc/markers_design.txt b/doc/markers_design.txt
new file mode 100644
index 000000000..f41eaa8e4
--- /dev/null
+++ b/doc/markers_design.txt
@@ -0,0 +1,98 @@
+ Markers Design
+ Bryce W. Harrington
+ -----------
+
+Markers (or "arrowheads") are drawing elements specified by the SVG
+standard that can be placed on lines at one of three positions: Start,
+End, or Midpoints. This document isn't intended to be an exhaustive
+guide to Markers, but rather to simply capture notes about the
+implementation of them within Inkscape.
+
+History
+=======
+The marker code was originally developed by Lauris for Sodipodi, but due
+to various issues, the code was not hooked to the interface. Thus
+there was no way for users to actually put markers on lines.
+
+Early in Inkscape, I dug through the code and reactivated the markers
+function, and then hammered on a few of the main issues to get markers
+to (mostly) work. There were a variety of remaining issues (e.g., you
+couldn't change marker colors, updates didn't work very well, and snap
+points were messed up.) But at least they no longer crashed when you
+used them. ;-)
+
+Simarilius and others did the work of getting the UI hooked up for
+markers, and other assorted fixes. A set of stock markers were created
+and distributed with Inkscape.
+
+Since then, though, the code has sat mostly idle, as no one has had
+time/inclination to put more work on it. Despite this, the remaining
+marker issues (color setting in particular) remain popular requests
+among users.
+
+I'm hoping this document assists anyone wishing to work on markers to
+come up to speed with the code more easily than otherwise.
+
+Implementation Files
+====================
+The following files contain code of relevance to markers:
+
+marker.h: tbd
+
+marker.cpp: Implements the sp_marker class, providing functionality for
+ managing the relationship of markers to lines or other objects they've
+ been applied to. Updates reprs and properties as the marker's
+ definition changes. Handles updates/changes to marker views as well.
+
+sp-shape.cpp: tbd
+
+selection-chemistry.cpp: tbd
+
+sp-marker-loc.h: tbd
+
+display/nr-arena-shape.cpp: tbd
+
+stock-items.cpp: tbd
+
+dialogs/stroke-style.h: tbd
+
+dialogs/stroke-style.cpp: Implements the stroke style dialog, which
+includes the widgets for displaying stock markers that can be applied to
+lines.
+
+
+Marker Architecture
+===================
+A marker is a distinct drawing element that exists in the <defs> section
+of an SVG document. Markers often appear multiple places in a document
+- for instance, you might have a diagram with dozens of lines, each
+tipped by a copy of the same arrow. Rather than paste a copy of the
+arrowhead in at each point it's used, a single definition is made, and a
+reference, or 'href', is attached at each place its used.
+
+In Inkscape, the marker definition is implemented as a 'SPMarker'
+object, and each reference is a 'SPMarkerView' object. Each SPMarker
+has a listing of all its SPMarkerViews, which it can use for update
+purposes when it changes.
+
+
+
+Stroke Dialog
+=============
+In the stroke style dialog, several routines allow for setting and
+interacting with the stroke markers. Most of these routines are already
+documented, but a few are worth some additional attention.
+
+sp_marker_prev_new(): Generates the preview images of markers for
+display in the marker menu.
+
+sp_marker_list_from_doc(): Generates a listing of non-stock markers in
+the document. Generates preview and label for the marker.
+
+ink_markers_preview_doc(): Returns a new document containing default
+start, mid, and end markers by creating the SVG text and running it
+through sp_document_new_from_mem. I'm not entirely sure why this
+exists, but it's called from sp_stroke_style_line_widget_new() so
+presumably is needed.
+
+ink_marker_menu(): Generates the marker menu.