skia2/gm
scroggo f9d610179d There can be only one (SkRandom)!
Remove SkLCGRandom. We already decided the new one was better, which is
why we wrote the new SkRandom.

Convert GMs that were using SkLCGRandom to use the improved SkRandom.
Motivated by the fact that these GMs draw differently on some runs. We
believe this to be a result of using the old SkLCGRandom.

Add each of the tests that were using SkLCGRandom to ignore-tests.txt,
since we expect they'll draw differently using SkRandom.

Move a trimmed down version of SkLCGRandom into SkDiscretePathEffect.
In order to preserve the old behavior, trim down SkLCGRandom to only
the methods used by SkDiscretePathEffect, and hide it in
SkDiscretePathEffect's cpp file.

BUG=skia:3241

Review URL: https://codereview.chromium.org/805963002
2014-12-15 12:54:51 -08:00
..
rebaseline_server Remove MULTILINE, ^, and $ from re finding actual_results.json. 2014-12-10 12:18:04 -08:00
tests make gm self-tests launch python unittests automatically 2014-07-16 08:28:23 -07:00
__init__.py rebaseline.py: if --tests is not specified, get test list from actual-results.json 2013-06-05 15:43:37 +00:00
aaclip.cpp Disable cgimage GM 2014-04-23 18:05:36 +00:00
aarectmodes.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
alphagradients.cpp Remove unused (by clients) SkUnitMapper 2014-05-22 12:27:41 +00:00
arcofzorro.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
arithmode.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
astcbitmap.cpp Add astcbitmap to gm slides. 2014-08-07 12:58:38 -07:00
beziereffects.cpp Remove GP from drawstate, revision of invariant output for GP 2014-12-11 15:44:02 -08:00
beziers.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
bigblurs.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
bigmatrix.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
bigtext.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
bitmapcopy.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
bitmapfilters.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
bitmappremul.cpp Revert of Revert of Rename kPMColor_SkColorType to kN32_SkColorType. (https://codereview.chromium.org/234243002/) 2014-04-11 17:15:40 +00:00
bitmaprect.cpp add gm to test rounding between clips and drawBitmapRect 2014-12-01 13:54:01 -08:00
bitmaprecttest.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
bitmapscroll.cpp Skip tiling on bitmapscroll: 2014-07-16 14:19:54 -04:00
bitmapshader.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
bitmapsource.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
bleed.cpp "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
blurcircles.cpp New GM for testing circle blur optimization 2014-05-07 17:50:03 +00:00
blurquickreject.cpp move common blur types into central header 2014-04-28 16:25:35 +00:00
blurrect.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
blurroundrect.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
blurs.cpp Add GM for 2-rects blur which cannot break into nine-patch 2014-12-10 07:40:36 -08:00
cgm.c more c 2014-11-24 19:11:48 -08:00
cgms.cpp more c 2014-11-24 19:11:48 -08:00
circles.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
circularclips.cpp optimize circularclips to act as a bench, fix null-check bug in etcbench 2014-06-20 11:33:59 -07:00
clip_strokerect.cpp Outset the stroke width when computing the bounds for drawing a stroked rect, or 1 if it's a hairline 2014-09-09 11:33:57 -07:00
clippedbitmapshaders.cpp Move SkShader::fLocalMatrix into SkShader constructor. 2014-04-28 14:55:39 +00:00
cmykjpeg.cpp Cleanup usage of GetResourcePath() after commit bcbc1788b4. 2014-07-01 12:35:49 -07:00
colorcube.cpp Adding 3D lut color filter 2014-10-09 05:27:23 -07:00
coloremoji.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
colorfilterimagefilter.cpp Factory methods for heap-allocated SkImageFilter objects. 2014-03-10 10:51:58 +00:00
colorfilters.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
colormatrix.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
colortype.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
colortypexfermode.cpp Use Color Processor for color bitmap text draws on gpu. 2014-10-31 06:55:45 -07:00
colorwheel.cpp use portable fonts 2014-12-02 11:00:40 -08:00
complexclip2.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
complexclip.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
composeshader.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
conicpaths.cpp Sanitizing source files in Housekeeper-Nightly 2013-06-21 07:00:53 +00:00
convexpaths.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
convexpolyclip.cpp "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
convexpolyeffect.cpp Remove GP from drawstate, revision of invariant output for GP 2014-12-11 15:44:02 -08:00
copy_config.py create copy_config.py and rename_config.py for skbug 2752 2014-07-17 08:22:12 -07:00
copyTo4444.cpp Cleanup usage of GetResourcePath() after commit bcbc1788b4. 2014-07-01 12:35:49 -07:00
cubicpaths.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
dashcubics.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
dashing.cpp Bug fix for cull_line in SkDashPathEffect. 2014-11-05 05:02:27 -08:00
degeneratesegments.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
dftext.cpp DM warning-free on win64 2014-12-12 16:41:46 -08:00
discard.cpp allow SkUserConfig.h to control NOGPU 2014-10-30 11:34:15 -07:00
displacement.cpp use platform-independent font for gm 2014-06-23 11:25:00 -07:00
display_json_results.py gm_json.py: add ability to load JSON file from a string, not just a local file 2013-06-04 17:50:36 +00:00
distantclip.cpp Change SkPicture::draw to playback 2014-09-04 08:42:50 -07:00
downsamplebitmap.cpp Remove SkCanvas::drawBitmapMatrix() 2014-12-10 12:02:16 -05:00
drawbitmaprect.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
drawlooper.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
dropshadowimagefilter.cpp Adding an option to render only the shadow in SkDropShadowImageFilter 2014-10-23 13:59:52 -07:00
drrect.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
emboss.cpp make set3DMask virtual, so we can safely notify the shadercontext 2014-09-10 10:20:24 -07:00
emptypath.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
etc1bitmap.cpp Revert of Added test for non cached ETC1 (patchset #2 id:20001 of https://codereview.chromium.org/564493002/) 2014-09-10 14:59:59 -07:00
extractbitmap.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
factory.cpp "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
fatpathfill.cpp Remove canvas::NewRaster, and rename surface::NewRasterPMColor to N32Premul 2014-12-10 07:24:28 -08:00
filltypes.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
filltypespersp.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
filterbitmap.cpp Remove SkCanvas::drawBitmapMatrix() 2014-12-10 12:02:16 -05:00
filterfastbounds.cpp Update GM to permit correctness testing of MPD on the GMs 2014-12-11 13:10:23 -08:00
filterindiabox.cpp Remove SkCanvas::drawBitmapMatrix() 2014-12-10 12:02:16 -05:00
fontcache.cpp Update fontcache GM to stress the font atlas. 2014-09-03 08:44:59 -07:00
fontmgr.cpp Remove SK_FM_NEW_MATCH_FAMILY_STYLE_CHARACTER. 2014-11-10 13:29:33 -08:00
fontscaler.cpp Fix scaling issue with distance field text. 2014-09-16 05:45:19 -07:00
gammatext.cpp disable gammatext gm for a while, looking for other flakes 2014-11-14 14:39:29 -08:00
getpostextpath.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
giantbitmap.cpp On Android, skip tiling for all giantbitmap variants. 2014-09-03 13:22:46 -07:00
glyph_pos_align.cpp DM warning-free on win64 2014-12-12 16:41:46 -08:00
glyph_pos.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
gm_error.h Add SkPDFDeviceFlatenner which extends SkPDFDevice to add support to flatten the path and the text when we have perspective. 2013-10-14 13:42:12 +00:00
gm_expectations.cpp Cleanup: Rename SkOSPath functions. 2014-07-28 19:26:58 -07:00
gm_expectations.h In Android framework, make tools depend on jsoncpp 2014-06-18 10:31:40 -07:00
gm_json.py skimage, die die die 2014-12-15 12:47:52 -08:00
gm.cpp Refactor how we handle resources path in Tests. 2014-06-18 14:32:49 -07:00
gm.h add gm: colorwheel 2014-10-26 05:23:53 -07:00
gmmain.cpp Update GM to permit correctness testing of MPD on the GMs 2014-12-11 13:10:23 -08:00
gradient_matrix.cpp Remove unused (by clients) SkUnitMapper 2014-05-22 12:27:41 +00:00
gradientDirtyLaundry.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
gradients_2pt_conical.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
gradients_no_texture.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
gradients.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
gradtext.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
grayscalejpg.cpp Remove PDF JPEG shortcut, since it fails on grayscale JPEGs. 2014-12-02 06:37:21 -08:00
hairlines.cpp fix for chrome bug with sub pixel hairlines 2014-12-10 14:23:40 -08:00
hairmodes.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
hittestpath.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
image.cpp SkCanvas::drawImage is the new way for drawing a SkImage to a Canvas 2014-09-24 13:03:30 -07:00
image.h check-point for image/surface work 2012-07-29 20:38:16 +00:00
imagealphathreshold.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
imageblur2.cpp 2D kernel initial wiring for Guassian 2014-08-11 13:55:34 -07:00
imageblur.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
imageblurtiled.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
imagefiltersbase.cpp Remove SK_SUPPORT_LEGACY_DEEPFLATTENING. 2014-12-01 11:47:08 -08:00
imagefiltersclipped.cpp Adding an option to render only the shadow in SkDropShadowImageFilter 2014-10-23 13:59:52 -07:00
imagefilterscropexpand.cpp Adding an option to render only the shadow in SkDropShadowImageFilter 2014-10-23 13:59:52 -07:00
imagefilterscropped.cpp remove unnecessary save/clip/restore 2014-12-05 07:33:00 -08:00
imagefiltersgraph.cpp Remove SK_SUPPORT_LEGACY_DEEPFLATTENING. 2014-12-01 11:47:08 -08:00
imagefiltersscaled.cpp Adding an option to render only the shadow in SkDropShadowImageFilter 2014-10-23 13:59:52 -07:00
imagemagnifier.cpp Fix imagemagnifier GM quality and speed. 2014-10-23 15:00:12 -07:00
imageresizetiled.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
internal_links.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
inversepaths.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
lcdtext.cpp Add an image filter row to GM:lcdtextprops 2014-11-19 09:23:22 -08:00
lerpmode.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
lighting.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
linepaths.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
lumafilter.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
matrixconvolution.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
matriximagefilter.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
megalooper.cpp move common blur types into central header 2014-04-28 16:25:35 +00:00
mixedxfermodes.cpp Preventing division by 0 in non-separable blend mode shaders. 2014-11-20 07:24:32 -08:00
modecolorfilters.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
morphology.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
multipicturedraw.cpp Change where layer hoisting data is gathered 2014-11-11 04:54:49 -08:00
nested.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
ninepatchstretch.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
nonclosedpaths.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
offsetimagefilter.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
ovals.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
patch.cpp Proposal for the mesh gradient interface. Implemented as a grid of 2014-08-12 17:14:57 -07:00
patchgrid.cpp Proposal for the mesh gradient interface. Implemented as a grid of 2014-08-12 17:14:57 -07:00
patheffects.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
pathfill.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
pathinterior.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
pathopsinverse.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
pathopsskpclip.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
pathreverse.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
peekpixels.cpp Revert "Revert of add colortable support to imagegenerator (https://codereview.chromium.org/304443003/)" 2014-05-29 15:57:20 +00:00
perlinnoise.cpp Fix tiled perlin noise. 2014-06-12 11:24:20 -07:00
picture.cpp add drawPicture variant that takes a matrix and paint 2014-08-09 11:08:05 -07:00
pictureimagefilter.cpp Update GM to permit correctness testing of MPD on the GMs 2014-12-11 13:10:23 -08:00
pictureshader.cpp Try out scalar picture sizes 2014-08-29 08:03:56 -07:00
pictureshadertile.cpp Cleanup GM:pictureshadertile 2014-12-09 05:23:20 -08:00
points.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
poly2poly.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
polygons.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
quadpaths.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
rects.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
rename_config.py create copy_config.py and rename_config.py for skbug 2752 2014-07-17 08:22:12 -07:00
resizeimagefilter.cpp Revert to enabling all of -O2 as it exposes a bug in the toolchain. 2014-09-03 13:38:32 -07:00
roundrects.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
rrect.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
rrects.cpp This cl moves color and coverage off of drawstate. In an effort to keep this CL manageable, I have left the compute invariant input / output in a bit of a strange state(fixing this will be complicated). 2014-12-09 13:31:15 -08:00
samplerstress.cpp "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
selftest.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
shaderbounds.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
shadertext2.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
shadertext3.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
shadertext.cpp don't use local static bitmap -- racy and unnecessary 2014-09-04 13:18:36 -07:00
shadows.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
shallowgradient.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
simpleaaclip.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
skbug1719.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
smallarc.cpp Draw more accurate thick-stroked Beziers (disabled) 2014-10-09 05:36:04 -07:00
smallimage.cpp work in progress 2014-12-02 14:01:46 -08:00
spritebitmap.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
srcmode.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
stringart.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
strokefill.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
strokerect.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
strokerects.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
strokes.cpp There can be only one (SkRandom)! 2014-12-15 12:54:51 -08:00
stroketext.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
surface.cpp add SkImage::newSurface 2014-11-21 08:46:38 -08:00
system_preferences_default.cpp Set LCD font smoothing to "medium" for gm on Mac, regardless of system settings 2012-02-14 14:53:59 +00:00
system_preferences_mac.mm gm: Include system_preferences.h in mac file. 2012-09-26 15:41:42 +00:00
system_preferences.h Set LCD font smoothing to "medium" for gm on Mac, regardless of system settings 2012-02-14 14:53:59 +00:00
tablecolorfilter.cpp add legacy/helper allocN32Pixels, and convert gm to use it 2014-01-25 16:46:20 +00:00
tallstretchedbitmaps.cpp More win64 warning fixes 2014-12-12 08:51:39 -08:00
techtalk1.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
test_all.py make gm self-tests launch python unittests automatically 2014-07-16 08:28:23 -07:00
testimagefilters.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
texdata.cpp Make all blending up to GrOptDrawState be handled by the xp/xp factory. 2014-12-09 11:15:44 -08:00
textblob.cpp Ensure blob typeface information survives SkGPipe serialization. 2014-09-16 17:58:34 -07:00
textblobshader.cpp SkTextBlob shader space workaround. 2014-09-19 11:40:51 -07:00
texteffects.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
texturedomaineffect.cpp This cl moves color and coverage off of drawstate. In an effort to keep this CL manageable, I have left the compute invariant input / output in a bit of a strange state(fixing this will be complicated). 2014-12-09 13:31:15 -08:00
thinrects.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
thinstrokedrects.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
tiledscaledbitmap.cpp Fix the way we patch up the matrix for scaled images that aren't 2014-10-27 10:32:07 -07:00
tileimagefilter.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
tilemodes_scaled.cpp Revert to enabling all of -O2 as it exposes a bug in the toolchain. 2014-09-03 13:38:32 -07:00
tilemodes.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
tinybitmap.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
twopointradial.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
typeface.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
variedtext.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
vertices.cpp new vertices gm to test alpha 2014-05-05 20:41:21 +00:00
verttext2.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
verttext.cpp Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
verylargebitmap.cpp Add always-threaded SkRecord quilt tests. 2014-07-07 10:41:04 -07:00
xfermodeimagefilter.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
xfermodes2.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
xfermodes3.cpp rename GrTextureDesc->GrSurfaceDesc, GrTextureFlags->GrSurfaceFlags 2014-10-28 14:33:06 -07:00
xfermodes.cpp Remove SkCanvas::drawBitmapMatrix() 2014-12-10 12:02:16 -05:00
yuvtorgbeffect.cpp This cl moves color and coverage off of drawstate. In an effort to keep this CL manageable, I have left the compute invariant input / output in a bit of a strange state(fixing this will be complicated). 2014-12-09 13:31:15 -08:00