Pre-Version 0.5
Post date: Nov 9, 2011 6:46:54 PM
Version 0.4.1, 07 Jun 2004:
The graph element's dataBox and border attributes were eliminated. Now the graph's axis ranges map to the bounding box of the graph itself, which no longer clips its children. This simplifies graph layout, since there's one less "container" to worry about. The graph axes are positioned outside the graph's bounding box in accordance with the graph type, layout, and axis spacers.
The boundBox attribute on the figure and graph elements was replaced by three attributes: loc defines the bounding rectangle's bottom-left corner, while its dimensions are specified by separate width and height attributes.
Miscellaneous changes: Default stroke width set to 0.01in instead of 0.005in.... Default border width for a figure is 0.01in instead of 0in (so that something is rendered when the author initially creates a figure).... Non-negative values for certain "measured" attributes (such as width, height, and symbolSize) are now enforced when a Phyplot document is opened.... Fixed minor problem regarding the alignment/joining of axes in the single quadrant layouts of a graph element.
Version 0.4.0, 02 Jun 2004:
Introduced support for special characters that are not available on a typical US-language keyboard, such as Greek letters, arrows, and various mathematical symbols. The character set is currently restricted to characters that are readily available in most Postscript printer fonts (including the omnipresent Symbol font). This set may expand depending upon decisions we make regarding support for Postscript printing. If Phyplot reads in a file with text elements containing an unsupported character, that character will be replaced by a question mark ('?'). Special character support is limited to the label element, the only Phyplot element that renders arbitrary text content. The text label editor panel includes a character map that displays the set of characters available in the currently selected font. Double-clicking on any character in the map will automatically insert that character at the caret position in the edit field that displays the text label.
Introduced rudimentary printing support. Users can select File|Print page... to print the currently selected page in the open document. The native platform's printer dialog is displayed, allowing the user to select a printer and change certain settings. The user can print to both Postscript and non-Postscript printers, or print to a file, as long as the necessary print services are available on the host machine. Still, printing support is a work in progress.
Developed a custom Postscript generator for exporting Phyplot pages as Postscript files via the File|Export page to PS... command. The Phyplot-generated Postscript files are MUCH SMALLER than those generated using the host machine's Postscript driver via the File|Print page... command. However, WYSIWYG performance suffers, since many of the TrueType fonts that can be used to render the page onscreen are not available on a typical Postscript printer. A typical Postscript driver gets around this problem by rendering all text with low-level Postscript moveto and curveto commands -- which is why such files are SO big. Currently, the Phyplot-generated Postscript files can render any characters in the Postscript Standard Latin Character Set and the Symbol Character Set, but it only uses the generic Times and Symbol fonts. Postscript support is also a work in progress.
Miscellaneous: Added command to export the current Phyplot page as a JPEG image. Changed attributes for specifying the font.
Version 0.3.0, 05 Apr 2004:
Introduced a generic line element, representing a "decorated" line that may have various adornments placed at the endpoints and midpoint of the line. Attributes specify the locations of the line's endpoints, the types and sizes of the adornments at each endpoint and the midpoint. May contain any number of line and label elements as children.
Introduced two new graph-specific elements: legend displays an "automated" legend with the graph's bounding box, while calib defines a horizontal or vertical calibration bar. Both of these elements can be manually created using a combination of line and label elements. The advantage of legend and calib is that they are automatically updated in response to most typical changes to the parent graph.
The cartesian element has been replaced by a more generic graph element, which supports six different graph types -- cartesian, semilogX, semilogY, loglog, polar, and semilogR (polar with logarithmic radial axis). Letting the user switch among these disparate types introduces some validity issues. For example, a non-positive axis range endpoint makes no sense when the axis is logarithmic. In this case, Phyplot auto-corrects the endpoint when rendering the graph -- but it does not attempt to change the corresponding attribute. Similarly, a data point with a negative-valued coordinate cannot be plotted if the corresponding axis is logarithmic. In such cases, Phyplot considers the data point "ill-defined" and skips it -- leaving a gap in the polyline that renders the set of data points to emphasize the fact that a data point was invalid..... Implementation of graph and its axis children was completely revised. Axis layout is now specified as a first- through fourth-quadrant view, or a full four-quadrant view. An optional grid was introduced -- the grid is particularly important for polar plots.
Added two additional data set elements, both of which may be children of a graph. The series element is used to represent sampled data series such as time series, frequency spectra, and histograms. The element can be displayed in three different forms: points (data points connected by a polyline with optional symbols and error bars); trace (data points are connected by a polyline, and two additional polylines are rendered that bracket +/-1 standard deviation about the measured trace); or histogram. The function element represents a mathematical function such as 10*sin(x)/cos(x) and will typically be used to display curve fits to measured data. The defining function string is parsed and, if valid, plotted on the parent graph as a simple polyline. The range over which the function is plotted and the interval between points in the polyline are all set by attributes of the function element.
Version 0.2.1, 09 Feb 2004:
Modified startup to display a splash screen before loading the main application class. While this does not reduce startup time, it gives the user an indication that the program is starting normally.
In previous versions, we have observed an extra delay the first time a page is rendered on the SVG canvas (the right side panel). This might be due to additional class loading that occurs the first time Batik's rendering framework is used. To "front-load" this delay at startup rather than later on, Phyplot now renders a "test page" on the canvas at startup, displaying the Phyplot logo and an set of x-y axes. However, tests on a WinXP 2.3GHz 512MB machine indicated that the first time delay is still present -- so this remains an open issue.
A new Rendering menu has been temporarily added to the menu bar, permitting the user to adjust certain rendering hints which might significantly affect rendering speed on the SVG canvas: Batik double-buffering, antialiased graphics, antialiased text, and optimizing rendering for quality (vs speed). This will be removed in a later version.
Version 0.2.0, 20 Jan 2004:
An element's boundBox attribute is now defined by the coordinates of its bottom-left and top-right corners, instead of the top-left corner, width, and height. This definition is more in line with our traditional view of a coordinate system, with the origin at the bottom-left corner of the page, the x-axis increasing to the right, and the y-axis increasing upward.
A new valign attribute was introduced to permit vertical alignment of a text label. The possible values for this attribute are top, bottom, and center. Unfortunately, the vertical alignment of a horizontal line of text is not well-supported in SVG. The SVG specification places the baseline of an SVG <text> element IAW its "y" attribute. This corresponds to bottom alignment. To achieve center and top alignment, we offset the baseline by -33% and -67% of the current font's line height. These values appear to work well for most Latin-based fonts. We may have to revisit this issue in the future.
Simplified font selection: Text style attribute fontFamily was renamed fontName and is now a simple enumerated attribute. The user chooses a single font type name from an available list, rather than choosing up to three different fonts in order of preference. The default font is now Helvetica instead of Arial. When rendered to SVG, up to two additional font names may be added automatically in the SVG/CSS font-family attribute: Symbol (for rendering typical symbols that may not be available in the chosen font), and the generic font family to which the chosen font belongs.
Added menu command File|Export page to SVG... The currently displayed page is saved as an SVG file. In this form it may be viewed within a web browser equipped with a suitable plugin such as Adobe's SVG viewer. We can also test how well the SVG file imports into popular graphics programs like Adobe Illustrator.
Changes to the Point Set editor tab pane: Added support for drawing error bars on the data points within a pointSet element. Users can now load the data points from a plain-text file -- use the Load File button to invoke a file chooser to select the desired text file. Once loaded, the data point tuples are persisted within the text content of the pointSet element of the Phyplot XML document. Required format: Each line of the text file contains a separate data point tuple of the form x y [ye ye_pos xe xe_pos], excluding the brackets. The brackets surround optional information. Here (x, y) are the coordinates of the data points, (xe, ye) are the horizontal and vertical standard deviations, and (xe_pos, ye_pos) are three-state flags defining the position of the horizontal and vertical error bars. Error bars are drawn only for non-zero standard deviations. If ye_pos == 0, the error bar extends one standard deviation above and below the data point. Otherwise, the error bar is one-sided, starting at the data point and extending one standard deviation above (ye_pos>0) or below (ye_pos<0) it. Analogously for the horizontal error bar's position.
Version 0.1.0, 17 Dec 2003: Initial version. Not public. Supports composing cartesian graphs within figures on a "page", with any number of pages in a Phyplot XML document. Only data element is a pointSet, in which the data points are listed in the XML file itself. Supports up to two tick sets per axis, tick labels, and other arbitrary labels. Supports a variety of hollow and filled symbols. Many other features yet to be implemented, including print support! Tested on Windows XP and Mac OS X 10.2. Runs rather slow on OS X.