Go to file
mtklein 785a5b941a Clean up SkFloatBits
- remove dead code
- rewrite float -> int converters

The strategy for the new converters is:
   - convert input to double
   - floor/ceil/round in double space
   - pin that double to [SK_MinS32, SK_MaxS32]
   - truncate that double to int32_t

This simpler strategy does not work:
   - floor/ceil/round in float space
   - pin that float to [SK_MinS32, SK_MaxS32]
   - truncate that float to int32_t

SK_MinS32 and SK_MaxS32 are not representable as floats:
they round to the nearest float, ±2^31, which makes the
pin insufficient for floats near SK_MinS32 (-2^31+1) or
SK_MaxS32 (+2^31-1).

float only has 24 bits of precision, and we need 31.
double can represent all integers up to 50-something bits.

An alternative is to pin in float to ±2147483520, the last
exactly representable float before SK_MaxS32 (127 too small).

Our tests test that we round as floor(x+0.5), which can
return different numbers than round(x) for negative x.
So this CL explicitly uses floor(x+0.5).

I've updated the tests with ±inf and ±NaN, and tried to
make them a little clearer, especially using SK_MinS32
instead of -SK_MaxS32.

I have not timed anything here.  I have never seen any of these
methods in a profile.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2012333003

Review-Url: https://codereview.chromium.org/2012333003
2016-05-27 10:47:32 -07:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Clean up SkFloatBits 2016-05-27 10:47:32 -07:00
bin bin/fetch-skps: print instruction on error 2016-04-26 12:38:47 -07:00
cmake CMake: skia_link_arguments.txt repects BUILD_SHARED_LIBS 2016-05-24 11:23:23 -07:00
debugger Fix old debugger 2016-04-29 14:02:18 -07:00
dm Add forceSRGB flag to dm. 2016-05-27 08:15:05 -07:00
example Added --deepColor option to SampleApp, triggers creation of a ten-bit/channel 2016-05-05 12:24:31 -07:00
experimental Remove custom bundle ID for iOS 2016-05-20 11:20:38 -07:00
fuzz Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
gm Add bubbles GM for drawing/blending 50 circles. 2016-05-23 13:54:22 -07:00
gyp Clean up SkFloatBits 2016-05-27 10:47:32 -07:00
include Clean up SkFloatBits 2016-05-27 10:47:32 -07:00
infra Update Android SDK 2016-05-27 08:08:34 -07:00
platform_tools Now we can use drawer to view the state information of the native app, and set its state using the spinner. 2016-05-27 08:52:52 -07:00
resources Test color correction in DM 2016-05-23 10:21:17 -07:00
samplecode toy to play with antialias raytracing 2016-05-27 05:13:26 -07:00
site Fix example code in skpaint.md. 2016-05-18 13:28:56 -07:00
src Clean up SkFloatBits 2016-05-27 10:47:32 -07:00
tests Clean up SkFloatBits 2016-05-27 10:47:32 -07:00
third_party Add exact version of qcms used by Chrome for testing and comparison 2016-05-26 11:05:37 -07:00
tools Now we can use drawer to view the state information of the native app, and set its state using the spinner. 2016-05-27 08:52:52 -07:00
.gitignore Delete ChromeOS code 2016-04-29 14:01:34 -07:00
AUTHORS Add AVX/AVX2 support for runtime check 2016-04-08 15:31:45 -07:00
codereview.settings Automatically add a docs preview link and NOTRY=true when there are only docs changes. 2015-02-26 10:16:13 -08:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS gyp: clean up warnings with clang-3.8 2016-05-23 14:02:54 -07:00
Doxyfile Documentation: SkCanvas API 2015-05-19 10:21:29 -07:00
gyp_skia Make Win runtime DLLs writeable before overwriting 2016-03-18 08:33:38 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Include resources directory in google3 sync. 2015-10-20 13:00:48 -07:00
make.bat Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
make.py GYP: remove stale skia_scalar gyp variable 2015-11-10 13:25:12 -05:00
Makefile Add visualbench as valid target to Makefile 2015-12-18 08:05:06 -08:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py Fix Gold trybot results URL 2016-05-20 03:50:01 -07:00
public.bzl Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
SK_IMAGE_VERSION Remove extra DNG images and use smaller HTC.dng 2016-05-24 06:23:47 -07:00
skia.gyp Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
SKP_VERSION Update SKP version 2016-05-22 00:35:10 -07:00
whitespace.txt Whitespace change to test bots 2016-05-06 06:41:36 -07:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.