Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] Changes to the Style system

In order to implement the decorator API some changes to the styling system have to be made.

Style Extension point:
attribute: id - > string
attribute: class -> StyleFactory

StyleFactory interface
boolean canStyle(Layer);
Style createStyle();

The RendererCreator's bestfit method must be altered to take styles into account.

Rendering a layer:
1) Build a renderer candidate set
2) Populate the styles black board for the layer
3) If there is a current style, choose a renderer that supports that style. Otherwise, choose the best renderer. Then choose a style that that renderer supports.

This requires adding a Map(styleExtensionPointID, Style) of Styles to Layer. This is essentially a style bucket or blackboard.

This brings us to Decorators:
A "DecoratorGeoResource" is required - a generic one for all decorators that contains an identifier, signifying which type of decorator this layer is. This allows the RendererCreator to select the appropriate Decorator Renderer for the layer.

So as an extender there is two possibilities. One idea is to make the decorator extension point an 'sub' extension point of renderer. Each decorator extension would therefor implement the Renderer interface. The extender would also have to provide a Style for their decorator. (Ex: ScalebarStyle)

There is also a StyleConfig object that is used to change the configuration of style objects. This is mostly used by the StyleEditor UI.



Back to the top