Commit Graph
100 Commits
Author SHA1 Message Date
Tim Schaub d6ff58305d Using a dedicated object for value storage
Without this, we are limited in the key names that we can accept from users.  And because of compiler renaming, we don't know ahead of time what the limitations are (e.g. the key 'a' may clobber the 'set' method).
2013-02-19 14:35:11 -07:00
Tim Schaub 0707deb465 Properties set with set should not be accessed with bracket 2013-02-19 14:28:59 -07:00
Tim Schaub 052e995f2e Key in obj check not appropriate for user supplied keys 2013-02-19 14:19:40 -07:00
Tim Schaub 6cfc36d8cc Using hasOwnProperty is better for user keys on objects we control 2013-02-19 14:17:58 -07:00
Tim Schaub b9507de3ea Removing unnecessary overhead 2013-02-19 14:14:36 -07:00
Tim Schaub 3698049543 View needs to call constructor on super 2013-02-19 14:03:48 -07:00
Tim Schaub eef683fcdb Indentation for linter 2013-02-19 13:58:43 -07:00
Tim Schaub 1f4b34cdb8 Merge pull request #207 from tschaub/tilerange
Make tile range calculation consistent.  Tile ranges are always inclusive in their min/max values.
2013-02-19 07:43:27 -08:00
Tim Schaub 5148ad038c Sharing code with rectangle
We cannot use the rectangle constructor here because a rectangle makes an assertion about min being less than max and a range may have equal min/max.
2013-02-19 07:30:54 -07:00
Tim Schaub 797dba2cdb Correct range for extent and resolution
Tile ranges are inclusive.  When getting the tile range for an extent, the top-right corner of the extent should be considered with a different intersection policy than the bottom-left corner.
2013-02-19 07:21:42 -07:00
Tim Schaub a55a6bda3b Merge pull request #208 from tschaub/shift-with-care
Calculating resolution by left shifting tile sizes, we're unnecessarily restricted in the number of zoom levels we can have.
2013-02-19 06:00:39 -08:00
Tim Schaub 0a5dae9ed0 Avoid left shift in resolution calculations 2013-02-18 18:37:27 -07:00
Tim Schaub 8b19751264 Making it explicit that this is a range of tiles
With tile range extending rectangle, a tile range that represented a single tile was not allowed.
2013-02-18 17:07:31 -07:00
Tim Schaub 0d6c54847b Removing logic that assumes occasionally stretched tiles
When the dom renderer included logic to stretch tiles so that gaps were properly filled for fractional zoom levels, we needed to take this into account when getting a tile coordinate for a given coordinate and resolution.  This was never the proper logic for a renderer that wasn't stretching occassional tiles (e.g. the WebGL renderer, the Canvas renderer, or the new DOM renderer).
2013-02-18 15:55:27 -07:00
Tim Schaub f5c627ab51 Only listen once for tile events
Assuming browser garbage collection cannot happen while we have listeners in the global registry, we need to listenOnce to avoid memory leaks with the tile queue.
2013-02-13 15:37:33 -07:00
Tim Schaub 652b7dd696 Merge pull request #184 from tschaub/less-animation
Avoid unnecessary animation loop while tiles load
2013-02-07 15:48:28 -08:00
Tim Schaub 440ea038fe Merge pull request #183 from tschaub/natural-names
More natural names for animations
2013-02-07 13:44:13 -08:00
Tim Schaub 3c4d218ec5 Only listen for first event 2013-02-07 14:06:05 -07:00
Tim Schaub e079c19413 Don't repeatedly render while waiting for tiles to load
Instead of going into an unnecessary animation loop, we can simply wait to be notified when tiles load.

The WebGL renderer still sets frameState.animate true, but I think this too should be unnecessary (full page example works without it, side-by-side example shows it cannot yet be removed).
2013-02-06 16:10:46 -07:00
Tim Schaub 2bd29ff60e Only track tiles that are actually wanted
Instead of keeping track of wanted tile ranges, we can instead track wanted tiles individually.  This provides enough for the map to know how to prioritize tiles and should be more efficient (no extra calls to extend tile ranges or check for tile containment within a range).
2013-02-06 16:08:24 -07:00
Tim Schaub e335b7b74a Make frame state available before rendering frame
Without this change, tiles that are enqueued on the first rendering will always get priority `ol.TileQueue.DROP` because `map.frameState_` is not yet defined (meaning a single render call doesn't result in any tiles loading).
2013-02-06 16:02:26 -07:00
Tim Schaub a2bbdf7ccc More natural names for animations 2013-02-06 13:43:54 -07:00
Tim Schaub 0c48fbd188 Check sooner and only assert if duration hasn't passed 2013-02-05 10:50:18 -07:00
Tim Schaub 483e309216 Merge pull request #153 from tschaub/extent
Care with transform
2013-01-24 00:56:18 -08:00
Tim Schaub 3ccfaebcfc Punctuated 2013-01-23 22:18:00 -07:00
Tim Schaub afb9add911 Checked with third-party tool 2013-01-23 22:12:17 -07:00
Tim Schaub 0845dea366 Care with transform
Since the transform method takes an arbitrary transform function, new coordinates may not be ordered in the same way as the originals.
2013-01-23 22:03:08 -07:00
Tim Schaub fe56b15c52 Clear canvas with opacity 1 2013-01-17 15:30:16 -07:00
Tim Schaub d6de79b2bd Merge pull request #129 from tschaub/color
Going with CSS norms for r/g/b/a values.
2013-01-17 13:28:51 -08:00
Tim Schaub f39b6a1be3 Errant require 2013-01-17 14:23:35 -07:00
Tim Schaub 10672ad303 Standardizing color ranges (see #129) 2013-01-17 14:19:50 -07:00
Tim Schaub b36eab1dfa Properly set transform before filling background (closes #128)
Order of args is m11, m12, m21, m22, dx, dy
2013-01-17 13:40:00 -07:00
Tim Schaub 141e5aa9fc Trim search string before use
The `window.location.search` string includes the "?" symbol.  Without this change, `createFromQueryData` only works if the "renderer" parameter is not in first position (see 4037bafc45).
2013-01-17 13:05:47 -07:00
tschaub 9622395c86 Use radians for hue rotation
This commit is a cherry-pick from 7f578f0.

Conflicts:

	src/ol/renderer/dom/domlayerrenderer.js
2012-12-12 15:22:01 +01:00
tschaub 4d97b583c6 Match the current Filter Effects spec
This commit is a cherry-pick of 19f7778.

The current draft of the [filter spec](https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html)
describes brightness, contrast, hue-rotate, and saturate functions that
roughly match our layer's setBrightness, setContrast, setHue, and
setSaturation methods.  These changes make the range of our methods match
the corresponding functions in the spec.  The one exception is the
brightness function.  The spec says it has a range of 0 to positive infinity.
The WebKit implementation accepts a range of -1 to 1 (as of
https://github.com/WebKit/webkit/commit/8f4765e569).  There's an open
(ticket)[https://www.w3.org/Bugs/Public/show_bug.cgi?id=15647] recommending
that the spec be changed to match.

I'm not stuck on having our methods match those of the filter spec, but the
parity would be nice.

These changes leave the WebGL map renderer "broken" (whacky colors).  It would
be straightforward to update the current fragment shader to handle the new
range of hue, but the brightness, contrast, and saturation handling will
need to be reworked.

For inspiration, here are the color transformation
matrix calculations the WebKit filters:
https://github.com/WebKit/webkit/blob/8f4765e5698c9171c2b3f984d0d9d65188185de3/Source/WebCore/platform/graphics/chromium/cc/CCRenderSurfaceFilters.cpp#L64-80

Conflicts:

	src/ol/renderer/dom/domlayerrenderer.js
2012-12-12 15:18:34 +01:00
Tim Schaub e57f8b45a6 Merge pull request #78 from geops/api-docs-jsdoc
Taking over new template from jsdoc but keep modifications by OpenLayers as much as possible
2012-10-31 13:38:24 -07:00
tschaub 3af801df96 Updating instructions on contributions
This links to the newly created online ICLA form.
2012-10-26 15:41:13 -06:00
Tim Schaub eef4eb0eea Merge pull request #61 from twpayne/z-sort-in-dom-renderer
Z sort in dom renderer
2012-10-17 21:24:40 -07:00
Tim Schaub f8462460bf Two lessons learned
Telling the compiler that object keys are numeric causes more harm
than good (see === comparison that could never be met though the
compiler didn't catch it).

Never use goog functions without reading the source first.  The
goog.array.sort method does nothing special sorting numeric strings
(so the zs array might be ['1', '10', '2'] here).
2012-10-09 23:31:38 -06:00
Tim Schaub ce1b99cb56 Remove alt-z tiles when all tiles load at target z
The changes in a14a15159f made it so tiles
at alternate resolutions were not pruned when target tiles finished loading.
2012-10-09 22:56:37 -06:00
Tim Schaub a14a15159f Simpler and more thorough tile pruning
The render method always generates a map of all tiles that should be drawn
(called tilesToDrawByZ).  This includes tiles at alternate resolutions, tiles
still loading, and tiles previously rendered.  At the end of the render
sequence we can simply remove all previously rendered tiles that aren't in
tilesToDrawByZ.  This provides an alternate solution to the problem described
in #53 and more.
2012-10-08 00:41:21 -06:00
Tim Schaub 2c2d40a53c Remove tiles outside rendered extent
To avoid having misplaced at alternate resolutions while zooming, all tiles
outside the rendered extent need to be removed from the dom (closes #53).
2012-10-07 23:47:47 -06:00
Tim Schaub d6173a5aac Removing unused code 2012-10-07 22:57:09 -06:00
tschaub 671c902d72 Creating the target directory for api docs 2012-10-01 16:35:38 -06:00
Tim Schaub c120c03fb1 Properly maintain offset and origin while rotating
This brings equivalent behavior when rotating in both renderers.  Previously, offsets were maintained with style top/left.  Now a single transform handles the translation and rotation.  The scale3d function removes the separation between tiles.  The next step for the DOM renderer is to scale in this same transform.
2012-09-29 17:55:28 -06:00
Tim Schaub 0e27f31785 Avoid undefined rotation 2012-09-29 17:47:44 -06:00
Tim Schaub 67bc677ecb Stick with radians 2012-09-29 01:37:54 +02:00
Tim Schaub 50bf2f015c Getting rid of lines between rotated tiles
Applying the scale3d trick just to get rid of small pixel gap between rotated tiles.  This will be reworked soon with additional use of transforms.
2012-09-29 01:33:50 +02:00
Tim Schaub bc5cd13855 Tiny bit of style 2012-09-29 01:17:46 +02:00
Tim Schaub c24e520961 Non-functioning example
When loading this example in compiled mode, the page displays the following:

    ol3 proj4js demo

    [object Object][object Object]

With `mode=RAW`, it does display some numbers, but I think we could better explain this functionality with a different sort of tutorial/example.
2012-09-29 01:12:40 +02:00
Tim Schaub 71547c6e48 Examples don't load without make serve 2012-09-29 00:47:42 +02:00
Tim Schaub ff19ab0a28 Call event.getPixel() to get the map pixel offset
The new getPixel method should be used instead of checking offsetX/Y on the browser event.
2012-09-28 12:19:32 +02:00
Tim Schaub eb29e6a43c Using null instead of null or object or undefined 2012-09-28 12:08:21 +02:00
Tim Schaub 3e34013c09 Separating out method to get pixel offset 2012-09-28 12:08:21 +02:00
Tim Schaub 6ed27779cc Rotation support for the dom renderer
Thanks @fredj for the inspiration.  This gives us initial rotation support.  It exposes some issues in the interactions that I'll address separately.  Closes #22.
2012-09-28 10:53:36 +02:00
Tim Schaub 981a40a994 Remove tiles that are still loading at alt z
When zooming to a new zoom level, we can immediately remove tiles from the previous level.  This (strongly) suggests not adding images to the container until they have actually loaded.
2012-09-27 17:46:23 +02:00
Tim Schaub b8a69f0777 Adjusting layers pane only when necessary
We only want to adjust things that have to do with rendering (like the position of the layers panel) when actually rendering.  The handleXChange methods may be called more times than we can actually render, so we never want to do anything that touches the DOM there.  Instead, we have to keep track of the state at previous render and adjust the layers panel (or other) based on changes only when rendering.
2012-09-27 16:09:04 +02:00
Tim Schaub d4d04eface Less whitespace by default. 2012-09-27 16:09:03 +02:00
Tim Schaub 9f9729656b Todos done. 2012-09-27 16:09:03 +02:00
Tim Schaub 3510c37e43 Handle map size changes in the renderer 2012-09-26 14:10:16 +02:00
Tim Schaub 5b36cf1312 Only adjust tile when necessary 2012-09-26 13:12:36 +02:00
Tim Schaub 24edce24f1 Add alternate tiles under tiles at target z
When zooming or panning, if we have tiles at alternate resolutions, those tiles are inserted in the DOM before the tiles at the target resolution.  This means you should see blurry tiles instead of whitespace when panning (assuming you've already zoomed in a bit).
2012-09-26 12:18:11 +02:00
Tim Schaub 48c4cbc1e5 Correcting comment typos 2012-09-26 11:11:51 +02:00
Tim Schaub 8e38ab0fdc Lint free. 2012-09-26 10:58:17 +02:00
Tim Schaub 3479e20b0a Merge branch 'alt-tiles' 2012-09-26 10:55:25 +02:00
Tim Schaub 7f58d1a8c6 Proper handling of out-of-range and alt-z tiles
Tile pruning code separated into to methods for clarity.  Alt-z tiles are only removed when all current-z tiles have loaded.  Thanks @elemoine for the excellent debugging session.
2012-09-26 10:52:17 +02:00
Tim Schaub 299173194c First pass at alt-tile rendering for dom renderer 2012-09-25 20:06:20 +02:00
Tim Schaub 900eead7c6 Correct type for imagesToLoad. Add note about shorter path. 2012-09-25 12:08:02 +02:00
Tim Schaub 5eb5715530 More longname display. 2012-09-24 18:23:19 +02:00
Tim Schaub 2b307ef6a9 Replace opt_ prefix with (Optional) in description. 2012-09-24 18:23:19 +02:00
Tim Schaub b73ffbdc7c Hide source tags (until we get the full path). 2012-09-24 18:23:19 +02:00
Tim Schaub f2c05bdf0f Remove "arguments" column from params table. 2012-09-24 18:23:19 +02:00
Tim Schaub 99e58cb8e0 Stylesheet to hide protected members.
Source tags are also hidden here as they only provide the file name and not the complete path.  This should be fixed in JSDoc 3.
2012-09-24 18:23:19 +02:00
Tim Schaub 2add7288e5 Doc target for building with JSDoc 3.
This assumes jsdoc is on the path.
2012-09-24 17:25:33 +02:00
Tim Schaub d51cd1c395 Interaction in ol.interaction namespace. 2012-09-24 17:18:21 +02:00
Tim Schaub ed754fbfdf Control in the ol.control namespace. 2012-09-24 17:15:30 +02:00
Tim Schaub 1f9e2aa3c4 Move Layer into ol.layer namespace. 2012-09-24 17:08:36 +02:00
Tim Schaub 57d75ace5d Adding a JSDoc 3 template. 2012-09-24 16:59:27 +02:00
Tim Schaub c3a41c967e Removing file overviews for now. 2012-09-24 16:58:55 +02:00
Tim Schaub c56fce2be8 Attempting to clarify. 2012-07-11 17:20:06 +02:00
Tim Schaub 1dd2512765 Specs for getting tile coords. 2012-07-09 01:15:56 -06:00
Tim Schaub 7f594364ca Pixels aligned top,left to origin. 2012-07-09 01:15:56 -06:00
Tim Schaub 5a485ea856 Getting explicit about pixels and size.
Eventually, well have to ask renderers for all pixel and size related stuff.  And the map overlay renderer will do all pixel<->loc math.  For now, we let the map do this math based on its viewport - as this is where the mouse events are handled and it is pixels relative to the viewport that are being generated.  For now, the getViewportPixelForLoc and getLocForViewportPixel are now more explicitly named.
2012-07-08 20:57:36 -06:00
Tim Schaub 3d130d3325 Letting the map ask renderer for resolution. 2012-07-08 20:56:36 -06:00
Tim Schaub 4dfb5d0dee Set center on reset. Only shift if offset. 2012-07-08 20:42:15 -06:00
Tim Schaub b24d63a898 Spaces for tabs. 2012-07-08 19:34:53 -06:00
Tim Schaub 4911320eef Rework DOM composite renderer. 2012-07-08 18:37:23 -06:00
Tim Schaub ceaba3cdd4 Overlays above the renderer. 2012-07-08 18:37:23 -06:00
Tim Schaub bb7127c548 Merge branch 'renderer' 2012-07-07 17:17:59 -06:00
Tim Schaub ddd57426b5 Allow renderer to have a buffer. 2012-07-07 16:50:22 -06:00
Tim Schaub dc409ebcc4 Resize images in case they were previously scaled. 2012-07-07 15:42:08 -06:00
Tim Schaub c0777cc003 Working with integer pixel space. 2012-07-07 15:19:49 -06:00
Tim Schaub 523f4d61fc Shift container for all layer renderers together. 2012-07-07 13:13:07 -06:00
tschaub d435f6b4fd Simplifying the loader.
Plovr checks the referrer for query string parameters (like mode), so we don't need any of this query string parsing (thanks @elemoine for the tip).

The reason we still dynamically generate the script tag is to work on other domains (e.g. testing on a VM or mobile device).  In this case, we make use of the `window.location.hostname`.
2012-07-05 13:55:24 -06:00
Tim Schaub 0650d93d17 Let the composite renderer manage containers. 2012-07-04 22:17:56 -06:00
Tim Schaub d8e8e55b44 Generalizing query string parsing in the loader. 2012-07-04 20:53:03 -06:00
Tim Schaub 08d6e35252 Accept an id param for the loader. 2012-06-23 20:00:28 +02:00
Tim Schaub 2fcbce30bc For now, we require a projection on loc internally. 2012-06-23 19:59:49 +02:00
Tim Schaub bcc85b9dd7 Must set a projection before setting center. 2012-06-23 16:55:16 +02:00
Tim Schaub db2cbe07b7 Transforming coords before setting center.
The internal setCenter method can only be called with locations that have projections.  This method always transforms.
2012-06-23 16:42:51 +02:00