OLD | NEW |
1 /* | 1 /* |
2 * CAUTION: EXPERIMENTAL CODE | 2 * CAUTION: EXPERIMENTAL CODE |
3 * | 3 * |
4 * This code is not to be used and will not be supported | 4 * This code is not to be used and will not be supported |
5 * if it fails on you. DO NOT USE! | 5 * if it fails on you. DO NOT USE! |
6 * | 6 * |
7 */ | 7 */ |
8 | 8 |
9 #include "SkPathUtils.h" | 9 #include "SkPathUtils.h" |
10 | 10 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 SkPath::kCW_Direction); | 90 SkPath::kCW_Direction); |
91 } else if ( GetBit(line, width - 1) ) { // if last pixel on add | 91 } else if ( GetBit(line, width - 1) ) { // if last pixel on add |
92 path->addRect(SkRect::MakeXYWH(width - SK_Scalar1, SkIntToScalar(lineIdx
), | 92 path->addRect(SkRect::MakeXYWH(width - SK_Scalar1, SkIntToScalar(lineIdx
), |
93 SK_Scalar1, SK_Scalar1), | 93 SK_Scalar1, SK_Scalar1), |
94 SkPath::kCW_Direction); | 94 SkPath::kCW_Direction); |
95 } | 95 } |
96 } | 96 } |
97 | 97 |
98 void SkPathUtils::BitsToPath_Path(SkPath* path, | 98 void SkPathUtils::BitsToPath_Path(SkPath* path, |
99 const char* bitmap, | 99 const char* bitmap, |
100 int h, int w, int stride) { | 100 int w, int h, int stride) { |
101 // loop for every line in bitmap | 101 // loop for every line in bitmap |
102 for (int i = 0; i < h; ++i) { | 102 for (int i = 0; i < h; ++i) { |
103 // fn ptr handles each line separately | 103 // fn ptr handles each line separately |
104 //l2p_fn(path, &bitmap[i*stride], i, w); | 104 //l2p_fn(path, &bitmap[i*stride], i, w); |
105 Line2path_span(path, &bitmap[i*stride], i, w); | 105 Line2path_span(path, &bitmap[i*stride], i, w); |
106 } | 106 } |
107 Simplify(*path, path); // simplify resulting bitmap | 107 Simplify(*path, path); // simplify resulting path. |
108 } | 108 } |
109 | 109 |
110 void SkPathUtils::BitsToPath_Region(SkPath* path, | 110 void SkPathUtils::BitsToPath_Region(SkPath* path, |
111 const char* bitmap, | 111 const char* bitmap, |
112 int h, int w, int stride) { | 112 int w, int h, int stride) { |
113 SkRegion region; | 113 SkRegion region; |
114 | 114 |
115 // loop for each line | 115 // loop for each line |
116 for (int y = 0; y < h; ++y){ | 116 for (int y = 0; y < h; ++y){ |
117 bool inRun = 0; | 117 bool inRun = 0; |
118 int start = 1; | 118 int start = 1; |
119 const char* line = &bitmap[y * stride]; | 119 const char* line = &bitmap[y * stride]; |
120 | 120 |
121 // loop for each pixel | 121 // loop for each pixel |
122 for (int i = 0; i < w; ++i) { | 122 for (int i = 0; i < w; ++i) { |
(...skipping 20 matching lines...) Expand all Loading... |
143 | 143 |
144 } else if ( GetBit(line,w-1) ) { // if last pixel on add rect | 144 } else if ( GetBit(line,w-1) ) { // if last pixel on add rect |
145 // add the thing here | 145 // add the thing here |
146 region.op(SkIRect::MakeXYWH(w-1, y, 1, 1), | 146 region.op(SkIRect::MakeXYWH(w-1, y, 1, 1), |
147 SkRegion::kUnion_Op ); | 147 SkRegion::kUnion_Op ); |
148 } | 148 } |
149 } | 149 } |
150 // convert region to path | 150 // convert region to path |
151 region.getBoundaryPath(path); | 151 region.getBoundaryPath(path); |
152 } | 152 } |
OLD | NEW |