skia2/gm
scroggo 895c43b28b Replace EncodeBitmap with an interface.
Gives more flexibility to the caller to decide whether to use the
encoded data returned by refEncodedData().

Provides an implementation that supports the old version of
SkPicture::serialize().

TODO: Update Chrome, so we can remove SK_LEGACY_ENCODE_BITMAP entirely

BUG=skia:3190

Review URL: https://codereview.chromium.org/784643002
2014-12-11 10:53:58 -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 Revert of Remove GP from drawstate, revision of invariant output for GP (patchset #9 id:160001 of https://codereview.chromium.org/791743003/) 2014-12-10 14:12:22 -08:00
beziers.cpp Turn SkCanvasStateUtils into a class with static functions. 2014-10-10 06:19:09 -07: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 Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07: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 Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07: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 Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
convexpolyclip.cpp "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
convexpolyeffect.cpp Revert of Remove GP from drawstate, revision of invariant output for GP (patchset #9 id:160001 of https://codereview.chromium.org/791743003/) 2014-12-10 14:12:22 -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 Add standard fonts to all GMs. 2014-07-31 08:58:44 -04: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 use platform-independent font for gm 2014-06-23 11:25:00 -07:00
dftext.cpp Add color emoji fallback for distance field text. 2014-10-20 13:12:55 -07: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 Add standard fonts to all GMs. 2014-07-31 08:58:44 -04: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 Add new GM (filterfastbounds) 2014-12-08 09:18:58 -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 Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
giantbitmap.cpp On Android, skip tiling for all giantbitmap variants. 2014-09-03 13:22:46 -07:00
glyph_pos_align.cpp Send less transform data when drawing text with nvpr 2014-07-25 14:13:57 -07: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 Add ability to output ImageBaseGSUrl to render_picture and use in rebaseline server. 2014-08-22 04:46:30 -07: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 Replace EncodeBitmap with an interface. 2014-12-11 10:53:58 -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 Turn on quilt mode in DM. 2014-04-30 13:20:45 +00: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 Add standard fonts to all GMs. 2014-07-31 08:58:44 -04: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 Adding an option for pixelated rendering in SkPictureImageFilter 2014-12-09 13:07:22 -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 Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
poly2poly.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04:00
polygons.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00:00
quadpaths.cpp Add standard fonts to all GMs. 2014-07-31 08:58:44 -04: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 Cleanup: Get rid of make_isize() function from gm.h. 2014-06-09 23:59:03 -07:00
strokes.cpp Turn on quilt mode in DM. 2014-04-30 13:20:45 +00: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 Use texture size to determine precision of texture coord varyings. 2014-12-09 09:00:49 -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