| Index: src/core/SkDistanceFieldGen.cpp
|
| diff --git a/src/core/SkDistanceFieldGen.cpp b/src/core/SkDistanceFieldGen.cpp
|
| index fa36bf7dd68bc8f1cce3e92aa3f9fac3cd0610e3..e0c97f70bf7ffcf6d0468964ae6020611629a95e 100755
|
| --- a/src/core/SkDistanceFieldGen.cpp
|
| +++ b/src/core/SkDistanceFieldGen.cpp
|
| @@ -28,8 +28,7 @@ enum NeighborFlags {
|
| kNeighborFlagCount = 8
|
| };
|
|
|
| -// We treat an "edge" as a place where we cross from a texel >= 128 to a texel < 128,
|
| -// or vice versa. This means we just need to check if the MSBs are different.
|
| +// We treat an "edge" as a place where we cross from black to non-black, or vice versa.
|
| // 'neighborFlags' is used to limit the directions in which we test to avoid indexing
|
| // outside of the image
|
| static bool found_edge(const unsigned char* imagePtr, int width, int neighborFlags) {
|
| @@ -39,14 +38,14 @@ static bool found_edge(const unsigned char* imagePtr, int width, int neighborFla
|
| SkASSERT(kNum8ConnectedNeighbors == kNeighborFlagCount);
|
|
|
| // search for an edge
|
| - unsigned char currVal = *imagePtr >> 7;
|
| + bool currVal = (*imagePtr != 0);
|
| for (int i = 0; i < kNum8ConnectedNeighbors; ++i) {
|
| - unsigned char checkVal;
|
| + bool checkVal;
|
| if ((1 << i) & neighborFlags) {
|
| const unsigned char* checkPtr = imagePtr + offsets[i];
|
| - checkVal = *checkPtr >> 7;
|
| + checkVal = (*checkPtr != 0);
|
| } else {
|
| - checkVal = 0;
|
| + checkVal = false;
|
| }
|
| SkASSERT(checkVal == 0 || checkVal == 1);
|
| SkASSERT(currVal == 0 || currVal == 1);
|
| @@ -427,7 +426,7 @@ bool SkGenerateDistanceFieldFromImage(unsigned char* distanceField,
|
| for (int j = 1; j < dataHeight-1; ++j) {
|
| for (int i = 1; i < dataWidth-1; ++i) {
|
| #if DUMP_EDGE
|
| - unsigned char val = (currData->fAlpha >= 0.5f) ? 255 : 0;
|
| + unsigned char val = sk_float_round2int(255*currData->fAlpha);
|
| if (*currEdge) {
|
| val = 128;
|
| }
|
|
|