Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

NamedStylesProposal

Thomas Bonfort edited this page Apr 6, 2012 · 2 revisions

== Proposed Map File Syntax Example ==

MAP                                                                                                                                                     
  STYLE                                                                                                                                                 
    # define a named style with global visibility                                                                                                       
    NAME "some_style"                                                                                                                                   
    ...                                                                                                                                                 
  END                                                                                                                                                   
  ...                                                                                                                                                   
  LAYER                                                                                                                                                 
    NAME "uses_a_style"                                                                                                                                 
    CLASS                                                                                                                                               
       # a name instead of a block means 'use the named style directly'                                                                                 
       STYLE "some_style"                                                                                                                               
       ...                                                                                                                                              
    END                                                                                                                                                 
  END                                                                                                                                                   
  LAYER                                                                                                                                                 
    NAME "extends_a_style"                                                                                                                              
    CLASS                                                                                                                                               
      STYLE                                                                                                                                             
        # inside a style block, pull in properties from another style                                                                                   
        # then make custom changes for this LAYER/CLASS                                                                                                 
        EXTENDS "some_style"                                                                                                                            
        ...                                                                                                                                             
      END                                                                                                                                               
    END                                                                                                                                                 
  END                                                                                                                                                   
END                                                                                                                                                     

== Mapfile Extensions ==

  • Enable STYLE blocks at the top MAP level

    • Add a NAME directive to the STYLE block
    • Top-level STYLE blocks ''must'' be named
  • Provide a "named style" declaration in the LAYER block in the form of LAYER "name" (in addition to the existing LAYER ... END syntax)

    • The LAYER object gets instantiated with a ''copy'' of the named style from the top level
    • Referencing a non-existent STYLE by name throws an exception
  • Add an EXTENDS "style" directive to the STYLE block

    • Block styles that inherit from a named style are instantied as a copy of the named style before other declarations in the STYLE block are applied

== MapServer StyleObj Extensions ==

  • Add a "name" property to styleObj
  • Add a "shared" property to styleObj
    • Exporting a map file would emit all styleObjs with style.shared set to true at the top level
    • Programmatic changes to shared styles would affect all classes using that style
    • If you don't want that behavior, use cloneStyle/EXTENDS
  • Add a "cloneStyle" function to mapfile.c
    • This would be the programmatic interface for EXTENDS
    • cloneStyle would presumably copy a top-level style and set the new object's shared property to false
  • Look at INLINESYMBOLS(?) for exporting styles
  • Possibly have the styles cacaded at render time rather than at mapfile parse time and work around the default issues

== MapScript Extensions ==

  • ...?

Clone this wiki locally

Morty Proxy This is a proxified and sanitized view of the page, visit original site.