Changes between Version 7 and Version 8 of MapGuideRfc29


Ignore:
Timestamp:
Aug 24, 2007, 5:41:13 AM (17 years ago)
Author:
waltweltonlair
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc29

    v7 v8  
    2828== Motivation ==
    2929
    30 === Legend Labels for Multi-Variate Theming ===
     30===== Legend Labels for Multi-Variate Theming =====
    3131In the new symbolization we have symbol definitions which define parameters, and symbol instances which define overrides - constant values or expressions - for these parameters.  For !MapGuide 1.3 we will be introducing new expression functions which can be used to specify themes.  Multi-variate theming is achieved by using these new expression functions in parameter overrides.  No schema change is needed to support the new expression functions - expressions are just strings and the parameter overrides are string properties.  Multi-variate theming does add some complexity when it comes to legend labels, and this is where additional information in the schema is needed.
    3232
     
    4545
    4646
    47 === Symbol Instance Rendering Passes ===
     47===== Symbol Instance Rendering Passes =====
    4848The new symbolization introduced the concept of rendering passes.  For a given layer a rendering pass corresponds to an iteration by the stylization code over that layer's features.  The default is to render with one pass (pass 0): we iterate once over all the features, and for each feature we stylize / draw it using all the symbols.  Usually this gives the desired behavior, but not always.  The common example where this doesn't work is when you want to draw a thin line on top of a thick line, and have "merging" behavior where features intersect:
    4949
     
    8989
    9090
    91 === Angular Offset Relative to Feature Geometry ===
     91===== Angular Offset Relative to Feature Geometry =====
    9292The symbol definition schema currently includes support for specifying whether symbol angles are absolute or are computed from the geometry.  This is done via the !AngleControl element in !PointUsage, !LineUsage, and !AreaUsage.  If the !AngleControl is set to '!FromAngle' then we use the value of the Angle element to determine the angle to draw the symbol, while if the !AngleControl is set to '!FromGeometry' then we use the feature geometry to compute the draw angle.  In the latter case we ignore the Angle element.
    9393
     
    103103== Proposed Solution ==
    104104
    105 This is a more detailed description of the actual changes desired.  The contents of this section will vary based on the target of the RFC, be it a technical change, website change, or process change.  For example, for a technical change, items such as files, XML schema changes, and API chances would be identified.  For a process change, the new process would be laid out in detail.  For a website change, the files affected would be listed.
     105The proposed changes will require changes to the !LayerDefinition schema.  The current version of the !LayerDefinition schema is 1.1.0, and this would be incremented to 1.2.0.
     106
     107===== Legend Labels for Multi-Variate Theming =====
     108We will add an optional !ThemeLabel element to the Override element.
     109
     110{{{
     111<xs:complexType name="ThemeLabel">
     112  <xs:annotation>
     113    <xs:documentation>Provides legend labeling information for a theme.</xs:documentation>
     114  </xs:annotation>
     115  <xs:sequence>
     116    <xs:element name="Description" type="xs:string">
     117      <xs:annotation>
     118        <xs:documentation>The legend description for the theme.</xs:documentation>
     119      </xs:annotation>
     120    </xs:element>
     121    <xs:element name="CategoryFormat" type="xs:string">
     122      <xs:annotation>
     123        <xs:documentation>The legend format to use for each category in the theme.</xs:documentation>
     124      </xs:annotation>
     125    </xs:element>
     126  </xs:sequence>
     127</xs:complexType>
     128
     129...
     130
     131<xs:complexType name="Override">
     132  <xs:annotation>
     133    <xs:documentation>A parameter override.</xs:documentation>
     134  </xs:annotation>
     135  <xs:sequence>
     136    <xs:element name="SymbolName" type="xs:string"/>
     137    <xs:element name="ParameterIdentifier" type="xs:string"/>
     138    <xs:element name="ParameterValue" type="xs:string"/>
     139
     140    <xs:element name="ThemeLabel" type="ThemeLabel" minOccurs="0">
     141      <xs:annotation>
     142        <xs:documentation>An optional theme label for this override.</xs:documentation>
     143      </xs:annotation>
     144    </xs:element>
     145
     146    <xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
     147  </xs:sequence>
     148</xs:complexType>
     149}}}
     150
     151
     152===== Symbol Instance Rendering Passes =====
     153We will add an optional !RenderingPass element to !SymbolInstance.  This is a string property which needs to evaluate to a non-negative integer.
     154
     155{{{
     156<xs:complexType name="SymbolInstance">
     157  <xs:sequence>
     158    <xs:choice>
     159      <xs:element name="ResourceId" type="xs:string"/>
     160      <xs:element name="SimpleSymbolDefinition" type="SimpleSymbolDefinition"/
     161      <xs:element name="CompoundSymbolDefinition" type="CompoundSymbolDefinition"/>
     162    </xs:choice>
     163    <xs:element name="ParameterOverrides" type="ParameterOverrides"/>
     164    <xs:element name="ScaleX" type="xs:string" default="1.0" minOccurs="0"/>
     165    <xs:element name="ScaleY" type="xs:string" default="1.0" minOccurs="0"/>
     166    <xs:element name="InsertionOffsetX" type="xs:string" default="0.0" minOccurs="0"/>
     167    <xs:element name="InsertionOffsetY" type="xs:string" default="0.0" minOccurs="0"/>
     168    <xs:element name="SizeContext" type="SizeContextType" default="DeviceUnits" minOccurs="0"/>
     169    <xs:element name="DrawLast" type="xs:string" default="false" minOccurs="0"/>
     170    <xs:element name="CheckExclusionRegion" type="xs:string" default="false" minOccurs="0"/>
     171    <xs:element name="PositioningAlgorithm" type="xs:string" minOccurs="0"/>
     172
     173    <xs:element name="RenderingPass" type="xs:string" minOccurs="0">
     174      <xs:annotation>
     175        <xs:documentation>The optional rendering pass in which this symbol instance draws.  If specified this must be greater than or equal to zero.  Defaults to 0.</xs:documentation>
     176      </xs:annotation>
     177    </xs:element>
     178
     179    <xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
     180  </xs:sequence>
     181</xs:complexType>
     182}}}
     183
     184
     185===== Angular Offset Relative to Feature Geometry =====
     186The only required change is to the schema documentation for the !AngleControl and Angle elements in !PointUsage, !LineUsage, and !AreaUsage elements.
     187
    106188
    107189== Implications ==
    108190
    109 This section allows discussion of the repercussions of the change, such as whether there will be any breakage in backwards compatibility, if documentation will need to be updated, etc.
     191Existing schema documentation will be updated.
     192
    110193
    111194== Test Plan ==
    112195
    113 How the proposed change will be tested, if applicable.  New unit tests should be detailed here???
     196The MDF Model unit test will be updated to include the new schema elements.  The test verifies that elements are serialized / deserialized correctly, and that version of the data works properly.
     197
    114198
    115199== Funding/Resources ==