...
- Object type: from the object itself
- Object path: from AIDA tree, from initial user plotting request, or from the object
- Plot order: from the current IPlotterRegion - is it overlay or not, and if it is - how many objects are already plotted there
- Action: program that is trying perform performing action should know what it is doing - plotting, printing, etc.
- Category: this is an external parameter and has to come from a separate service
- Can be part of Style Registry functionality, or independent service
- Example: selected by user from the list of available Categories - PAW style plots, GLAST style plots
- Action looks a lot like Category: "printing" -> "printing=true"
If any styles are passed explicitly to the plotter, this implicit cumulative style will be set as parent (or merged in as a lower priority Style).
I've set three interfaces that might do the job (below), have a look.
...
Style Rule has type and value. Rule applies to the IPlotterState if state has approptiate type, and rule value is compatible with the state value.
Also Rule Also it has a priority - defines the order in which Style that corresponds to this Rule will be used if Rule does apply.
...