(Fix) Aligning label icon and label text correctly handles align angles just below 360 degrees (the last half-sector).
The preview in the style dialog automatically sets its background color to that of the component window.
The style dialog allows altering lists of bitmaps using a context menu (right-click a bitmap or a blank space in the grid). The context menu includes commands to add new bitmaps, delete all bitmaps, delete the clicked bitmap. The number of bitmaps in the grid is limited by 1024. Switching to a grid with bitmaps only starts adding new bitmaps if the grid is empty.
The style dialog caches bitmaps used for point and area styles for the duration of the session. If the style dialog is launched on a style that already uses a bitmap, that bitmap is shown in the separate readonly group named 'Current'.
(Fix) Bitmap point styles keep bitmap proportions for shadow and halo.
There are new point styles for basic shapes: diamond, pentagon, hexagon, octagon, plus variants with inserts. Diamond is different from rectangle in that rectangle fills the entire size x size box, while the corners of the diamond are on the circle of radius size.
There are new boxes for basic shapes: diamond, pentagon, hexagon, octagon.
Point styles with inserts are adjusted to allow insert color to be transparent. (Previously, setting insert color to be transparent was rendering insert using background color.)
Point styles with inserts allow specifying insert size (default is 30%) and insert type (default is auto = same as the main shape, other choices are to fix the insert to use a different shape = circle / rectangle / rectangle rd / triangle / diamond / pentagon / hexagon / octagon).
There are new point styles for basic shapes with dividers splitting the shape into two parts. One of the parts is filled using background color. The other part is filled using foreground color by default and the color can be overridden. All basic shapes use three types of dividers: diagonal, horizontal, vertical.
There are new point styles for flags with dividers.
Reducing width of rounded rectangle shapes converts circle arcs in corners into ellipse arcs.
There are new point styles for arrows: arrow triangle, arrow wing, and several others.
The style dialog for lines allows specifying begin cap and end cap. The caps are applied to each line branch. Available cap styles include basic point shapes (centered on the begin / end coordinate) as well as arrows (the tip ends on the begin / end coordinate). Placing caps automatically adjusts line metric near the begin / end coordinates to produce a correct arrow direction (this is different from, say, Manifold 8, which could take a mostly horizontal line and produce a vertical arrow because at the very end the line changed its direction and walked down for a couple of pixels). If the line is too short, caps are not drawn.
There are new line styles for repeats for basic shapes: circle, rectangle, rectangle rd, triangle, diamond, pentagon, hexagon, octagon. Repeats are specified as a pattern of <size>, <space>, ..., similar to the pattern used for line dashes. A negative size rotates relevant shapes 180 degrees. If the repeat pattern is empty, the style assumes '300%,300%', which is a sequence of 300% shapes with 300% spaces. There is an option to turn the base line on or off.
Left / right lines are oriented to proceed in the same direction as the line whenever possible. (This synchronizes repeats on left / right lines to start at the same logical position on the line and makes the orientation of repeats on left / right lines way more predictable.)
The query engine supports new options for ordering criteria on text fields (used in CREATE TABLE / ALTER TABLE as well as in ORDER):
- KANATYPE / NOKANATYPE - use or ignore kana type for Asian languages, default is KANATYPE (two instances of the same character in, say, hiragana and katakana, are considered to be different),
- WIDTH / NOWIDTH - use or ignore character widths for Asian languages, default is WIDTH (two instances of the same character which only vary in width are considered to be different),
- WORDSORT / NOWORDSORT - use or ignore space between words, default is NOWORDSORT (space between words matters).
Dataports for databases expose all text fields as NVARCHAR (Unicode) even if they are stored as VARCHAR. Attempting to create a VARCHAR field will create it as VARCHAR on the database, but the field will look as NVARCHAR in Manifold.
(The intent here is to preserve data because what VARCHAR means varies between data sources and converting between different meanings frequently loses data. Example: in Manifold VARCHAR means 'characters in the currently active codepage, whatever it is', and on databases VARCHAR usually means 'characters in the codepage associated with the field / table / database'. If we connect to a database, we can ask it to return data as VARCHAR, and it might return data in a German codepage. If we then try to use that data as VARCHAR in Manifold, on an English system, the characters will be interpreted wrongly - this affects both display as well as comparisons and orderings. In Manifold 8, we used to allow setting a codepage for the field. However the end result was always just to convert the data in all codepages different from the default one to Unicode and handle data as Unicode - so we went one step further and moved the conversion to be as close to the data as possible.)
SQL Server indexes on text fields honor field collates.
(Previously, all database dataports were assuming that indexes on text fields sort values using binary order plus / minus case. This works reasonably well for field values with English-only characters, but starts breaking when field values start having non-English characters and when the query engine starts offloading searches to the database - which we started doing more aggressively lately. We are going to go through all database dataports and make sure that all indexes on text fields that we recognize and report in the schema work without any limitations on what characters the text values may contain.)
(Fix) CASE NULL WHEN ... ELSE ... END correctly goes into ELSE. (Was previously returning NULL.)
(Fix) Exporting a drawing to SHP no longer sometimes writes incorrect record lengths making it hard to read any record after the first (this was a regression in the previous build, apologies).
Exporting a drawing to SHP writes points with a single coordinate and points with multiple coordinates into separate files.
(Very early on we were reducing multipoints to points, throwing the extra coordinates away. This was losing data and we wanted to fix it. We tried multiple different things, from just writing multipoints into the SHP for points even though the SHP spec requires all shapes in the file to have the same type, to, in the last cutting edge build, marking all points as multipoints. All of those solutions were producing issues in third-party software, including in ESRI products. So we have gradually came to just separating points and multipoints into different files. This does avoid all issues with third-party software that cannot handle multipoints that can realistically be avoided - if a particular product cannot handle multipoints, the user will not be able to work with them, but he will be able to work with the rest of the objects.)
There is a new dataport for ICO files (also loads CUR files), useful for loading bitmaps for styles. If a file contains multiple images, the dataport loads them all (and the style dialog chooses the biggest image with the highest number of colors).
End of list.
We are going to take a couple of days off for the holidays and then we will be back with more builds.
Happy New Year!