diff options
Diffstat (limited to 'nanosvg/altsvgrast.diff')
| -rw-r--r-- | nanosvg/altsvgrast.diff | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/nanosvg/altsvgrast.diff b/nanosvg/altsvgrast.diff new file mode 100644 index 000000000..f41f93d2c --- /dev/null +++ b/nanosvg/altsvgrast.diff @@ -0,0 +1,136 @@ +1,6d0 +< // +< // "$Id: altsvgrast.h 12239 2017-05-17 11:54:18Z XX $" +< // +< +< /* Modified by FLTK from original sources to support non-square X,Y axes scaling */ +< +31d24 +< +51,53d43 +< +< // For non-square X,Y scaling, use +< nsvgAltRasterize(rast, image, 0,0,1,1, img, w, h, w*4); +63c53 +< // scale - image scale (assumes square aspect ratio) +--- +> // scale - image scale +72,77d61 +< // As above, but allow X and Y axes to scale independently for non-square aspects +< void nsvgAltRasterize(NSVGrasterizer* r, +< NSVGimage* image, float tx, float ty, +< float sx, float sy, +< unsigned char* dst, int w, int h, int stride); +< +382c366 +< static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy) +--- +> static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale) +390c374 +< nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0); +--- +> nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); +393c377 +< nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, 0); +--- +> nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, 0); +396c380 +< nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0); +--- +> nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); +746c730 +< static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy) +--- +> static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float scale) +754,755c738 +< const float sw = (sx + sy) / 2; // average scaling factor +< const float lineWidth = shape->strokeWidth * sw; // FIXME (?) +--- +> float lineWidth = shape->strokeWidth * scale; +760c743 +< nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, NSVG_PT_CORNER); +--- +> nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, NSVG_PT_CORNER); +763c746 +< nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, NSVG_PT_CORNER); +--- +> nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, NSVG_PT_CORNER); +809c792 +< dashLen = (shape->strokeDashArray[idash] - dashOffset) * sw; +--- +> dashLen = (shape->strokeDashArray[idash] - dashOffset) * scale; +831c814 +< dashLen = shape->strokeDashArray[idash] * sw; +--- +> dashLen = shape->strokeDashArray[idash] * scale; +1000c983 +< float tx, float ty, float sx, float sy, NSVGcachedPaint* cache) +--- +> float tx, float ty, float scale, NSVGcachedPaint* cache) +1041,1043c1024,1026 +< fx = ((float)x - tx) / sx; +< fy = ((float)y - ty) / sy; +< dx = 1.0f / sx; +--- +> fx = ((float)x - tx) / scale; +> fy = ((float)y - ty) / scale; +> dx = 1.0f / scale; +1086,1088c1069,1071 +< fx = ((float)x - tx) / sx; +< fy = ((float)y - ty) / sy; +< dx = 1.0f / sx; +--- +> fx = ((float)x - tx) / scale; +> fy = ((float)y - ty) / scale; +> dx = 1.0f / scale; +1127c1110 +< static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float sx, float sy, NSVGcachedPaint* cache, char fillRule) +--- +> static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float scale, NSVGcachedPaint* cache, char fillRule) +1209c1192 +< nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, sx, sy, cache); +--- +> nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, scale, cache); +1377,1379c1360,1361 +< void nsvgAltRasterize(NSVGrasterizer* r, +< NSVGimage* image, float tx, float ty, +< float sx, float sy, +--- +> void nsvgRasterize(NSVGrasterizer* r, +> NSVGimage* image, float tx, float ty, float scale, +1410c1392 +< nsvg__flattenShape(r, shape, sx, sy); +--- +> nsvg__flattenShape(r, shape, scale); +1427c1409 +< nsvg__rasterizeSortedEdges(r, tx,ty, sx, sy, &cache, shape->fillRule); +--- +> nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, shape->fillRule); +1429c1411 +< if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * sx) > 0.01f) { +--- +> if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * scale) > 0.01f) { +1434c1416 +< nsvg__flattenShapeStroke(r, shape, sx, sy); +--- +> nsvg__flattenShapeStroke(r, shape, scale); +1453c1435 +< nsvg__rasterizeSortedEdges(r, tx,ty,sx, sy, &cache, NSVG_FILLRULE_NONZERO); +--- +> nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, NSVG_FILLRULE_NONZERO); +1465,1477c1447 +< void nsvgRasterize(NSVGrasterizer* r, +< NSVGimage* image, float tx, float ty, float scale, +< unsigned char* dst, int w, int h, int stride) +< { +< nsvgAltRasterize(r,image, tx, ty, scale, scale, dst, w, h, stride); +< } +< +< #endif // NANOSVGRAST_IMPLEMENTATION +< +< +< // +< // End of "$Id: altsvgrast.h 12239 2017-05-17 11:54:18Z XX $". +< // +--- +> #endif |
