+1, just out of curiosity are you going to build a fully fledged proposal for this?
Simone. ------------------------------------------------------- Ing. Simone Giannecchini GeoSolutions S.A.S. Owner - Software Engineer Via Carignoni 51 55041 Camaiore (LU) Italy phone: +39 0584983027 fax: +39 0584983027 mob: +39 333 8128928 http://www.geo-solutions.it http://simboss.blogspot.com/ http://www.linkedin.com/in/simonegiannecchini ------------------------------------------------------- On Sun, Jun 14, 2009 at 9:05 AM, Christian Müller<christian.muel...@nvoe.at> wrote: > +1 for that. Looking at the mailing lists, I got a little bit of a "dark > feeling" about the SLD/Styling complex. Since I know that this is the future > for many departments of my biggest customer I would really appreciate that. > > As a matter of fact, I have to convince many users to use SLDs in > conjunction with geoserver instead of doing their own styling in ArcGIS, > each one styling individually. A challenge :-) > > > Andrea Aime writes: > >> Hi all, >> many years ago pissed off by how hard it was to build >> styles with code I created the StyleBuilder we have today... >> shame on me :) >> >> Now, I would like to propose a new style builder to replace >> that old clunky one. I would like it to be very compact, >> chock full of default behavior, and fluent. >> This mail just strokes out the general ideas, it's not >> a full fledged spec of how it would look like. >> >> A OGC Style is structured as a tree: >> >> Style -> FeatureTypeStyle* -> Rule* -> Symbolizer* >> >> Now, one could make a tree of builders, but that would >> mean the user would deal explicitly with 4 builders and would >> have to compose the results... ugh, better write the >> SLD by hand and parse it ;-) >> >> The idea to simplify the above would be that: >> - there is one main builder that allows access to >> all the child ones with a fluent api >> - at every moment, there is only one style, one >> FTS, one rule and one symbolizer being built. >> When you say you want the symbolizer, it's the >> current one >> - the only thing you're actually forced to specify >> is a symbolizer. Everything else is defaulted >> and assumed to be around (no need to actually >> make calls to create a fts or a rule). And we >> could even default the symbolizer itself (if >> you did not say anything about it, it's a default >> point style). >> - when a higher level object is built, it cascades >> the build to the contained objects being built >> - when a new object is started, the previous one >> is accumulated and will be used when building >> the upper level object >> >> Some ideas of how the api might look like, builder >> orchestration wise: >> StyleBuilder -> the current styleBuilder >> StyleBuilder.fts() -> the current feature type style builder >> StyleBuilder.rule() -> the current rule builder >> StyleBuilder.symbolizer() -> the current symbolizer builder >> StyleBuilder.startFTS() -> starts a new feature type style, accumulates >> the previous one, if any >> StyleBuilder.startRule() -> starts a new rule, accumulates the previous >> one if any >> StyleBuilder.startPoint() -> starts a new point symbolizer, accumulates >> the previous one if any >> StyleBuilder.startLine() >> StyleBuilder.startPolygon() >> StyleBuilder.startRaster() >> >> >> Some examples of how it could be used: >> >> // builds a default point style >> StyleBuilder sb = new StyleBuilder(); >> sb.startPoint(); >> Style ps = sb.buildStyle(); >> >> // builds a default polygon style >> sb.startPolygon(); >> sb.build(); >> >> // builds a blue 2px line style >> sb.startLine().stroke(Color.BLUE).strokeWidth(2); >> sb.build(); >> >> // a default polygon style with a filter and min scale >> sb.startPolygon(); >> sb.rule().filter(myFilter).minScale(minDenominator); >> sb.build(); >> >> // simple two color thematic map >> sb.rule().filter(filter1); >> sb.startPolygon().fill(Color.RED); >> sb.startRule().filter(filter2); >> sb.startPolygon().fill(Color.YELLOW); >> sb.build(); >> >> // highway style line with two overlapping fts >> sb.startLine().stroke(Color.WHITE).strokeWidth(3); >> sb.startFTS(); >> sb.startLine().stroke(Color.GRAY).strokeWidth(1); >> sb.build(); >> >> build() method wise, I was thinking each nested builder >> would show the same method. When called it builds the current >> object and resets it along with the lower levels. >> So for example sb.rule().build() would cascade to the >> current symbolizer, accumulate all the symbolizers found, >> and reset both the rule and the symbolizers states. >> But the most common case would just to call the top >> level build() object to get a full fledged style. >> >> What do you think? Am I on to something? >> Cheers >> Andrea >> >> -- >> Andrea Aime >> OpenGeo - http://opengeo.org >> Expert service straight from the developers. >> >> ------------------------------------------------------------------------------ >> Crystal Reports - New Free Runtime and 30 Day Trial >> Check out the new simplified licensing option that enables unlimited >> royalty-free distribution of the report engine for externally facing >> server and web deployment. >> http://p.sf.net/sfu/businessobjects >> _______________________________________________ >> Geotools-devel mailing list >> Geotools-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/geotools-devel > > > > ------------------------------------------------------------------------------ > Crystal Reports - New Free Runtime and 30 Day Trial > Check out the new simplified licensing option that enables unlimited > royalty-free distribution of the report engine for externally facing > server and web deployment. > http://p.sf.net/sfu/businessobjects > _______________________________________________ > Geotools-devel mailing list > Geotools-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/geotools-devel > ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Geotools-devel mailing list Geotools-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel