Commit graph

1723 commits

Author SHA1 Message Date
Blake Thompson
2b8bd59d82 A large set of updates:
* Added new gray data types adding those to the variants and updating all the code necessary for them
* Added basic SSE to the image compare method, (only for RGBA) must be enabled with the -DSSE_MATH flag this is not yet put into the build process in any location.
* Fixed the resulting image for some TIFF visual tests, most likely they were incorrect due to fixes in TIFF reader
* Added some MAPNIK_DECL where necessary to grid rendering.
* Added support for more data types in GDAL plugin with grayscale images.
* Added views for all the new gray data types
* Updated python bindings for new gray data types.

Ref #2681
2015-02-04 15:41:58 -06:00
artemp
8faf04663c update tests/python_tests/geojson_plugin_test.py 2015-02-04 18:34:53 +01:00
artemp
3331368e05 amend test 2015-02-04 18:29:03 +01:00
artemp
ae9eafa2c1 allow "stringified" nested objects and arrays as feature property 2015-02-04 18:28:47 +01:00
Jiri Drbalek
56adb32701 add visual test - text upright 2015-02-03 16:32:23 +00:00
Dane Springmeyer
0e017be98d merge with master + fixups 2015-02-03 00:38:55 -08:00
Dane Springmeyer
71e7faed0d Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts:
	tests/python_tests/image_test.py
	tests/python_tests/image_tiff_test.py
	tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png
	tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png
2015-02-03 00:05:15 -08:00
Dane Springmeyer
d915e1e634 update a few more visual tests 2015-02-02 21:26:09 -08:00
Dane Springmeyer
3e43c692cc update visual test images after #2671 2015-02-02 20:23:45 -08:00
Dane Springmeyer
d9e49fd09a tests: support regenerating test images in more python tests 2015-02-02 19:00:09 -08:00
Dane Springmeyer
c361e538f7 Merge pull request #2671 from sarametz/png8_encoding_bug
Png8 encoding bug
2015-02-02 14:08:05 -08:00
Dane Springmeyer
625a37ed12 test both geojson.input and ogr.input - refs #2666 2015-02-02 10:58:03 -08:00
Dane Springmeyer
33a7bbb4e1 Merge branch 'master' of github.com:mapnik/mapnik into kurdish-text-visual-test 2015-02-02 10:54:20 -08:00
Dane Springmeyer
956d936162 fix pep8 linter command + update a few linted files 2015-02-02 10:38:08 -08:00
Dane Springmeyer
7d78115886 pyflakes driven python file cleanup 2015-02-02 10:38:08 -08:00
Dane Springmeyer
0d6c10a2fa fix gamma misuage in image_encoding_speed_test 2015-02-02 10:38:08 -08:00
Dane Springmeyer
851597f3f0 add visual test for reading GeoJSON GeometryCollection 2015-02-02 10:38:08 -08:00
Dane Springmeyer
a67e0dec12 python test cleanup 2015-02-02 10:38:08 -08:00
Dane Springmeyer
21862d57c0 re-enable webp tests + update expected images after #2662 2015-02-02 10:38:08 -08:00
Sara Metz
f38d2ee69b Fixes bugs that cause tests in PR #2599 to fail 2015-01-30 10:40:50 +13:00
Robert Coup
44500b9a71 Test for 2px png8 encoding bug (hextree & octree) 2015-01-30 10:15:10 +13:00
Blake Thompson
826e13f911 Renamed background to fill, added numeric casting to fill utility, changed clog uses to MAPNIK_LOG, changed the implementation of fill some so that it only used a single template 2015-01-29 13:27:42 -07:00
Dane Springmeyer
b13dfaf644 amend 89b3e108e6 by fixing image size to be square 2015-01-29 10:24:40 -08:00
Dane Springmeyer
89b3e108e6 add testcase for kurdish language - refs #2666 2015-01-29 10:19:15 -08:00
Blake Thompson
de99180a44 Added new image_cast method and added its bindings to python, added two new properities to images: offset and scaling. Added way to cast between image types with offset and scaling. Added new unit tests for color and casting. Made it so that pixel setting doesn't result in overflows or underflows. Made the return of get_pixel, dynamic based on what is passed to it. Added new methods for setting pixels that are doubles and ints. 2015-01-28 20:20:14 -06:00
artemp
610f01bd0b update params_test - #2651 2015-01-28 12:56:10 +01:00
Dane Springmeyer
dfb6116786 Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts:
	tests/python_tests/pgraster_test.py
2015-01-27 15:19:12 -08:00
Robert Coup
93f67f9bc9 Merge pull request #2657 from rcoup/antimeridian-box-projection-2648
Handle bounds reprojections which cross the anti-meridian. Fixes #2648
2015-01-28 11:44:50 +13:00
Dane Springmeyer
d38b3bb2cf respect alpha in cairo comparisons (reasons for ignoring it once no longer apply - refs #2662) 2015-01-27 14:38:38 -08:00
Dane Springmeyer
6d5e2b1865 add support for UPDATE=1 to update visual tests (whether failing or not) 2015-01-27 14:29:48 -08:00
Robert Coup
65ef3bc625 Handle bounds reprojections which cross the anti-meridian. #2648
When doing an envelope-points reprojection to a geographic CS, check
the points stay in clockwise order. Otherwise expand the resulting bounds
to include the world.

Includes visual test. Cairo tests aren't finding differences, but the renderer
is doing the right thing.
2015-01-28 11:18:16 +13:00
Dane Springmeyer
584ca5d92f drop pixel threshold to 0 - refs #2662 and #2663 2015-01-27 12:26:28 -08:00
Dane Springmeyer
44ceb77438 try zero thresholds for visual tests - refs #2662 2015-01-27 11:28:33 -08:00
Dane Springmeyer
7d8be57d81 visual tests coming soon via image_data_any branch - for now remove failing pgraster tests - refs #2639 2015-01-26 22:36:38 -08:00
Dane Springmeyer
5de637854d comment params test for now to get travis green - refs #2651 2015-01-26 22:35:36 -08:00
Dane Springmeyer
d94f5a0cee get pgraster tests passing again + update expected images - refs #2639 2015-01-26 22:14:38 -08:00
Dane Springmeyer
c8f70d3260 embed help text labeling expected vs actual for side-by-side images 2015-01-26 21:58:27 -08:00
Dane Springmeyer
ebfbbef454 add visual tests for pgraster to try to make sense of failures 2015-01-26 21:36:47 -08:00
Dane Springmeyer
921c058d7d use image.blend is gone so use image.composite 2015-01-26 21:35:35 -08:00
Dane Springmeyer
f176630fcf remove invalid tests - will be fixed by proper tests coming via image_any branch from @flippmoke 2015-01-26 16:52:31 -08:00
Blake Thompson
31a0caf2e4 Merge branch 'master' into release/image_data_any 2015-01-25 14:09:29 -06:00
Blake Thompson
5d9f047002 Fixed some issues in color and bindings where you could create a color and premultiplied was not set and it was resulting in it being assigned randomly, causing some issues at runtime.
Updated some images in visual tests that were orginally set prior to all tiffs being premultiplied, this was causing a slight difference in a few pixels.

Updated the tiff tests a lot.

Fixed tiff reader so that it always considers everything read from RGB or RGBA as premultiplied. This is due to the fact that RGBA reader always premultiplies the alpha no matter its original form.

Put in a fix so that the file does not exist no longer shows up in the test running.

Fixed some failing tests in the c++ test due to tiffs now always being premultiplied for RGB(A)
2015-01-24 20:48:15 -06:00
Blake Thompson
a100b2fe1f Fixed the issues associated with TIFFs, now they always will return as premultiplied in the event they are rgba8 due to the way that the TIFF reader operates. Also added premultiply as a flag inside color class and exposed many of its components, made it so that setting and getting pixels took into consideration the state of the color and the image when dealing with the two. 2015-01-23 18:08:59 -06:00
Dane Springmeyer
ec111c8a27 add extra metadata to lyr desc + use for srid/keyfield in postgis - closes #2650 2015-01-22 18:44:56 -08:00
Blake Thompson
490645d2e3 Perhaps a solution to TIFF IO problems 2015-01-22 20:36:45 -06:00
Dane Springmeyer
fcdc826294 Add (currently failing) test for #2651 2015-01-22 18:25:37 -08:00
Blake Thompson
51172c8fdf Move image_data.hpp to image.hpp and renamed most everything from image_data to image alone. This might lead to the need to clean up some variables that are currently named image through out the code at some time, but I think in the long term is much better as image is a better name for the base class. 2015-01-22 11:39:37 -06:00
Blake Thompson
e01ce5b7d6 Changed image_data_gray* to image_gray* Ref #2633. 2015-01-21 21:08:04 -06:00
Blake Thompson
22a384ef33 Moved image_data_rgba8 to image_rgba8. Ref #2633 2015-01-21 20:31:02 -06:00
Blake Thompson
0f388ed68f Changed the name of image_data_any to image_any. Moved header file for image_data_any to image_any. Ref #2633 2015-01-21 19:40:12 -06:00
Blake Thompson
93f835177b Removed all the code for the previous type of image and image_32. Ref #2633 2015-01-21 17:57:16 -06:00
Blake Thompson
badb0c9a97 This is a complete removal of code that utilizes image_32 in the library. It is a sweeping change that does some of the following:
* Changes all agg_renderers to use a image_data_any variant (only image_data_rgba8 is implemented currently)
* Changes the marker and marker_cache to use image_data_any images
* Changes the symbolizers so that they must be aware of the source data type they are attempting to render and the render type that is expected to be rendered into.
* Moves many utilities into image_utils, that were previously in image_32.

The kicker is that this still isn't working perfectly yet, but I am commiting so I don't have tears in case everything is lost on my computer.

Ref #2633
2015-01-20 18:30:10 -06:00
Blake Thompson
35be6117c8 Merge branch 'master' into release/image_data_any 2015-01-16 13:09:25 -06:00
Blake Thompson
aebb6fee58 Removed the background and set/get background from image_32 class. Removed clear method from image_32. Added new fill method for image_data_any, that allows many generic types to fill an image.
Ref #2633
2015-01-16 13:06:52 -06:00
Blake Thompson
5bc83eee49 Added a new test for set_color_to_alpha 2015-01-15 21:03:42 -06:00
Blake Thompson
3b1c99ff1b Moved set_alpha to src/image_util.cpp and out of image_32. Added a boolean response to premultiply_alpha and demultiply_alpha so that if it is changed in set_alpha and other locations like the python bindings for composite that the image can be restored to its original state. Removed blend from python bindings.
Ref #2633
2015-01-15 17:57:21 -06:00
Dane Springmeyer
b55d5def0d sync with latest master/3.x 2015-01-14 18:35:40 -08:00
Blake Thompson
42c7d7ddf2 Merge branch 'release/image_data_any' into feature/premultiply_demultiply_move 2015-01-14 15:37:06 -06:00
Blake Thompson
4184f75011 Moved premultiply and demultiply out of image_32 and other parts of the code. The image_data object is now responsible for keeping track of its own premultiplied_alpha status. Created a new utility method in image_util to preform premultiplication.
Added visitor pattern to several different methods as well to prepare for image_data_any including compositing.

Ref #2633
2015-01-14 12:42:30 -06:00
Dane Springmeyer
056feb4daa add text-transform:reverse + full test coverage for text-transform uppercase/lowercase/capitalize - closes #2634 2015-01-12 15:38:21 -08:00
Dane Springmeyer
62dbfeaa28 fix rasterlite plugin + add visual test - closes #2630 2015-01-09 16:13:04 -08:00
Dane Springmeyer
6580ff784f add unit tests for rasterlite plugin 2015-01-09 15:36:41 -08:00
Dane Springmeyer
c7bb16fcd9 amend/partially revert #2609 2015-01-09 12:11:41 -08:00
Dane Springmeyer
bfb0878147 add to map deprecations tests 2015-01-09 10:59:18 -08:00
Dane Springmeyer
32586c6462 add test ensuring we can still parse deprecated styling properties 2015-01-09 10:48:50 -08:00
Dane Springmeyer
ad3e214beb stop using deprecated marker-type in visual tests 2015-01-09 10:26:20 -08:00
Dane Springmeyer
879e9d517b test coverage for #827 / 52d0e3e6 2015-01-08 18:01:43 -08:00
Dane Springmeyer
a96cf38a33 fix compile of new cxx tests if tiff is not available - closes #2625 2015-01-08 17:44:41 -08:00
Dane Springmeyer
96cff81f57 restore compile of map_request_test (asserts still disabled - refs #2575) 2015-01-08 13:52:55 -08:00
Dane Springmeyer
acb3bb0821 trim down image_32 - refs #2627 2015-01-08 13:16:32 -08:00
Dane Springmeyer
86e8ddc8ec update expected images after e590a21 2015-01-07 14:54:08 -08:00
Dane Springmeyer
e590a218b6 fix svg syntax 2015-01-07 14:52:22 -08:00
Dane Springmeyer
a52700b505 more test coverage of svg markers and collision boxes - refs #2609 #1754 2015-01-06 17:20:00 -08:00
Dane Springmeyer
49908b5e3b json_feature_properties_test: print test name for failures 2015-01-05 11:46:29 -08:00
Dane Springmeyer
1faaf595ec update expected visual images against freetype 2.5.4 2014-12-22 13:48:40 -08:00
Dane Springmeyer
dc8253ec2a support expressions in text-placements - closes #2597 2014-12-19 19:05:54 -08:00
Dane Springmeyer
5b176d2224 raster-colorizer test for both gdal and raster plugins 2014-12-17 12:33:24 -08:00
Dane Springmeyer
efd83f9142 update expected visual tests 2014-12-17 12:26:32 -08:00
Dane Springmeyer
dfe0be57f0 update warp expected image 2014-12-17 12:06:07 -08:00
Dane Springmeyer
387b8f85d5 new dot symbolizer for fast rendering of points - refs #1651 mapbox/mapnik-vector-tile#62 #2612 2014-12-17 12:01:28 -08:00
Dane Springmeyer
fe58aabe55 markers: support restyling svg stroke and fill without limit - closes #2609 - refs mapnik/mapnik-support#27 2014-12-17 12:01:04 -08:00
Dane Springmeyer
6d4b4494bf update visual test images for #2590 2014-12-17 11:55:22 -08:00
Dane Springmeyer
7066053d4b drop use of xml entities in text-font-features test - fixes #2590 2014-12-17 11:55:22 -08:00
artemp
3276bed965 Merge branch 'master' into image_data_any 2014-12-16 09:33:28 +01:00
Blake Thompson
0d2eb9cb5f Updates for Ref #2594 and #2592 (Related to #2491)
* Added support for scanline, stripped and tiled
 * Added new configuration options for TIFF:
   - method
   - tile_height (Default 0)
   - tile_width (Default 0)
   - rows_per_strip (Default 0)
 * Removed 'scanline' configuration option for TIFF.
 * Changed RGBA TIFFs to be ASSOCALPHA rather then UNASSOCALPHA
2014-12-15 02:52:32 +00:00
Jiri Drbalek
af35cf7cdf xml test styles standalone 2014-12-09 20:13:38 +00:00
Jiri Drbalek
3e8b50464b update visual test runner for standalone tests 2014-12-09 20:13:36 +00:00
Dane Springmeyer
cf4f775855 Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-09 10:31:19 -05:00
Dane Springmeyer
4e671fd0e9 tiff io: test paletted (aka colormapped) tiff 2014-12-09 01:15:09 -05:00
Dane Springmeyer
fcf71c36d9 tiff io: avoid over-allocation + add more tests 2014-12-09 00:17:02 -05:00
Dane Springmeyer
dc1ed0ae29 tiff io: also test reading from in memory buffer 2014-12-08 22:58:44 -05:00
Dane Springmeyer
d2935e65ce test reading 2014-12-08 18:45:00 -05:00
Dane Springmeyer
dcae6395af start testing tiff read and image type returned 2014-12-08 18:13:23 -05:00
Dane Springmeyer
24a9816913 test tiff photometric setting 2014-12-08 17:16:56 -05:00
Dane Springmeyer
a706cdb000 fixup tiff alpha handling cxx tests 2014-12-08 17:04:05 -05:00
Dane Springmeyer
66e65666ae test that gray32f is not blank (currently failing) 2014-12-08 16:47:08 -05:00
Dane Springmeyer
cb3771fbe5 fix reading of tiled tiff tile dimensions for gray32f 2014-12-08 15:23:06 -05:00
Dane Springmeyer
bc3f59af12 new c++ tiff tests - refs #2491 2014-12-08 14:52:52 -05:00
Dane Springmeyer
dc3df99f66 rename tiff test image 2014-12-08 14:11:32 -05:00
artemp
017def88b1 update raster-color-to-alpha tests to use raster.input 2014-12-08 15:55:06 +01:00
Jiri Drbalek
20178013ea add visual test iconic font 2014-12-07 16:13:48 +00:00
Blake Thompson
74fb5f0890 Merge branch 'image_data_any' of github.com:mapnik/mapnik into image_data_any 2014-12-05 15:43:20 -05:00
Blake Thompson
8aec9aca89 Some really basic tests that I was using for testing, many more need to be added 2014-12-05 15:43:14 -05:00
Dane Springmeyer
23d78680cf add (currently failing) tests for #1927 2014-12-05 14:04:37 -05:00
Dane Springmeyer
fc0894634c improve image tests 2014-12-05 11:36:50 -05:00
Dane Springmeyer
cc2cf2876f Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-05 09:45:12 -05:00
Blake Thompson
daecced552 A small modification to the image_tests removing some options not indended to be left on 2014-12-04 17:17:14 -05:00
Blake Thompson
bf5c532269 Series of changes for the tiff encoder:
* Added configuration options for the TIFF encoder. The options are:
   - compression: adobe_deflate(default), deflate, lzw, none
   - zlevel: 0-9
   - scanline: 1,0 (Forces scanline encoding)
 * Fixed bug in encoder with scanline where memory was being modified
 * by TIFFWriteScanline. A buffer is now created for each row to prevent
 * modification of the underlying image_data.
2014-12-04 17:11:33 -05:00
Jiri Drbalek
778e654933 update visual test - font-feature-settings 2014-12-04 21:19:13 +00:00
Blake Thompson
fa902bc97d Removed logging accidently left in test. 2014-12-04 10:49:21 -05:00
Blake Thompson
e6c5f705e5 Fixed error with selection criteria for stripe vs tiled, added modulus check on length and width to select striped in some situations, changed bitspersample for RBGA. (ref #2491) 2014-12-04 10:48:19 -05:00
artemp
38da080f82 make concrete image_data type names more expressive and explicit about color channels/depth:
image_data_32 -> image_data_rgba8
image_data_8  -> image_data_gray8
image_data_16 -> image_data_gray16
image_data_float32  -> image_data_gray32f

NOTE: currently image_data_gray16::pixel_type = std::int16_t (signed 16 bit int) to match GDAL
should we support unsigned types?
2014-12-04 11:02:42 +01:00
artemp
6b3fc9907f specify alpha 0 in default-color e.g "#00000000" 2014-12-04 10:33:44 +01:00
Blake Thompson
cdaca0ba11 Updated tiff processing so now the encoder will utilize different types of data as well as will use Tile based encoding in most situations, if the image is large will revert to scanline based encoding. 2014-12-03 18:41:49 -05:00
Dane Springmeyer
2f0e236bc0 update expected visual test images 2014-12-03 16:30:35 -05:00
Dane Springmeyer
cbe0a0cca5 update agg blending cpp test - refs #1452 2014-12-03 15:19:22 -05:00
Dane Springmeyer
954d0db46c Merge branch 'master' of github.com:mapnik/mapnik into image_data_any 2014-12-03 13:53:14 -05:00
Dane Springmeyer
02135991ed convert raster_symbolizer_test to use full image comparisons 2014-12-03 13:53:04 -05:00
Dane Springmeyer
9d479f246b update a few expected images 2014-12-03 13:41:57 -05:00
Dane Springmeyer
6bba6b88de update a few expected images 2014-12-03 13:38:55 -05:00
Dane Springmeyer
27159b8086 update visual test images after agg rgba improvements 2014-12-03 12:10:49 -05:00
Dane Springmeyer
946434002f handle/throw on invalid encoding for ucnv_open 2014-12-02 14:21:36 -05:00
Artem Pavlenko
db4b74e8bb Merge pull request #2580 from StevenLooman/master
Tests and fix for SQLite datasource missing column
2014-11-24 12:51:55 +01:00
artemp
8567aa25e0 fix text-line-wrap grid ids 2014-11-24 11:25:54 +01:00
Steven Looman
e7cf55222c Add test case for missing columns in SQLite datasource, using subquery. Refs #2579 2014-11-20 18:58:20 +01:00
Steven Looman
4555e117e7 Add test case for missing columns in SQLite datasource. Refs #2579 2014-11-20 18:30:20 +01:00
artemp
1757797031 update cpp tests - ref #2491 2014-11-20 14:43:17 +01:00
Dane Springmeyer
2577a6c9b8 update a few visual tests against latest cairo - closes #2574 2014-11-13 12:17:15 -08:00
Jiri Drbalek
1b0a129755 add visual test - marker on line with many vertices 2014-11-13 13:21:49 +00:00
Jiri Drbalek
c540210fc6 update visual tests 2014-11-13 12:51:37 +00:00
Jiri Drbalek
3013197de7 move vertex_cache and tolerance_iterator from text directory 2014-11-13 12:51:36 +00:00
Robert Coup
76d5bdae8c Merge pull request #2556 from stephend/master
Throw datasource_exception on GDAL RasterIO() failures
2014-11-05 18:21:13 +13:00
Dane Springmeyer
26d7519e57 link cpp tests to grammar libs 2014-11-04 13:17:29 -05:00
Jiri Drbalek
40510437fe add visual test - simplify line 2014-11-04 14:08:27 +00:00
Stephen Davis
824c99f565 throw datasource_exception on GDAL RasterIO failures 2014-11-03 11:24:38 +13:00
Dane Springmeyer
06d9021d66 update map after 808e820 2014-10-27 09:25:10 -07:00
Dane Springmeyer
808e820164 smarter type handling for Map parameters 2014-10-27 09:24:33 -07:00
Jordan Hollinger
ee692eea73 Merge branch 'master' of github.com:mapnik/mapnik into group-markers
Conflicts:
	include/mapnik/grid/grid_marker_helpers.hpp
	include/mapnik/marker_helpers.hpp
	include/mapnik/renderer_common/process_group_symbolizer.hpp
	src/cairo/process_markers_symbolizer.cpp
	src/renderer_common/process_group_symbolizer.cpp
	tests/visual_tests/images/group-symbolizer-1-512-512-1.0-agg-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-1.0-cairo-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-2.0-agg-reference.png
	tests/visual_tests/images/group-symbolizer-1-512-512-2.0-cairo-reference.png
2014-10-27 09:29:45 -04:00
Jordan Hollinger
864426ae54 Add reference images for new visual test group-symbolizer-4. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
6f4593fb4a Update reference images for visual test group-symbolizer-1. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
bfb8d80e37 Add visual test for several cases of raster and vector markers within group symbolizer. 2014-10-27 07:46:44 -04:00
Jordan Hollinger
85622ab575 Update group symbolizer tests to use markers symbolizers. 2014-10-27 07:46:43 -04:00
Dane Springmeyer
ecb529cba2 handle boost::spirit::qi::expectation_failure 2014-10-24 21:36:19 -07:00
artemp
71085323a7 Merge branch 'peucker' of git://github.com/MapQuest/mapnik into MapQuest-peucker 2014-10-24 15:20:05 +01:00
Dane Springmeyer
c7fb48eb75 update expected visual test 2014-10-22 15:35:07 -07:00
Dane Springmeyer
87192bfcb7 silence more boost warnings 2014-10-21 16:57:44 -07:00
Dane Springmeyer
83588937b9 silence boost warnings 2014-10-21 16:37:27 -07:00
Dane Springmeyer
27c959b1bf quiet use of mapnik-test-data 2014-10-20 22:43:17 -07:00
Dane Springmeyer
1b35d5a31b C++ test cleanup 2014-10-20 19:55:11 -07:00
Jiri Drbalek
fef8079f03 add visual test - text data binding 2014-10-18 16:50:57 +00:00