GithubHelp home page GithubHelp logo

georender-style2png's Issues

raster sprites

We should store raster sprite images in the style png in a section after the point, line, and area regions so that style rules can use sprites for background and foreground images.

One way this could be implemented is to store the image coordinates as the first section and those coordinates can be fed to texture2D(). This way you can perform two texture2D()s in the vertex shader for the given feature to load a sprite by its index, and then load the relevant pixel for the fragment shader based on other rules.

Here is an example that specifies 3 images:

[point section]
[line section]
[area section]
[image coordinate section:
  0, 0,  1,250,  0,32,  2, 26, // img0: minx=0,  miny=506, maxx=32, maxy=538
  0, 0,  2, 58,  0,32,  2,106, // img1: minx=0,  miny=570, maxx=32, maxy=618
  0,32,  1,250,  0,96,  2, 58, // img2: minx=32, miny=506, maxx=96, maxy=570
]
[image data section: // it should look something like this, graphically:
   ________________________
  |img0   |img2            |
  |32x32  |64x64           |
  |_______|                |
  |img1   |                |
  |32x48  |                |
  |       |________________|
  |_______|

]

This example uses integer pixel coordinates (in big endian), but we might also consider half floats (in whatever endian).

When a feature uses a sprite (or multiple sprites), it references the sprite by its index in the coordinate section plus a mode (repeat, center, ...). The modes may have additional parameters, such as an offset (x,y) or even rotations that are static or follow the contours of a geometry.

label stylesheet

how to specify which feature labels should show up at which zoom levels?
how to specify at a zoom level, which labels should have priority (aka be bigger). (engine expects to receive labels sorted by number. whoever has higher priority will be rendered first)

more label style considerations:
labels can be styled as such:

  • size
  • fill and stroke color
  • font (incl. bold, italic, etc.)
  • spacing between the feature & the text
  • repeat (how far apart the label should repeat, like for a road or river)
  • follow feature (eg river)
  • whether it should be rendered at x zoom levels
  • priority list for where label should appear in relation to dot/sprite (eg: top, left, right, bottom). it will have a default priority list, but you should be able to specify a diff priority. also "only top and bottom, never left and right" for example.
  • rotations: example: always 45 degrees, upper right in relation to point" or "going up to the right from the point" (possible if you specify "always render on right of point, then rotate." rotations happen about the point.
  • padding around label (outside the box, aka margin)
  • padding around label (inside the box)
  • padding around point/sprite (maybe belongs in another doc?)
  • box fill/box stroke (rgba)
  • orientation for characters (eg: japanese characters going vertical). default is horizontal.

in some separate doc:

  • how many labels you want to display, which ones, all, etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.