|
|
|
@ -22,12 +22,11 @@ var Pattern = (function PatternClosure() {
@@ -22,12 +22,11 @@ var Pattern = (function PatternClosure() {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Pattern.shadingFromIR = function pattern_shadingFromIR(ctx, raw) { |
|
|
|
|
return Shadings[raw[0]].fromIR(ctx, raw); |
|
|
|
|
Pattern.shadingFromIR = function pattern_shadingFromIR(raw) { |
|
|
|
|
return Shadings[raw[0]].fromIR(raw); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Pattern.parseShading = function pattern_shading(shading, matrix, xref, |
|
|
|
|
res, ctx) { |
|
|
|
|
Pattern.parseShading = function pattern_shading(shading, matrix, xref, res) { |
|
|
|
|
|
|
|
|
|
var dict = isStream(shading) ? shading.dict : shading; |
|
|
|
|
var type = dict.get('ShadingType'); |
|
|
|
@ -36,7 +35,7 @@ var Pattern = (function PatternClosure() {
@@ -36,7 +35,7 @@ var Pattern = (function PatternClosure() {
|
|
|
|
|
case PatternType.AXIAL: |
|
|
|
|
case PatternType.RADIAL: |
|
|
|
|
// Both radial and axial shadings are handled by RadialAxial shading.
|
|
|
|
|
return new Shadings.RadialAxial(dict, matrix, xref, res, ctx); |
|
|
|
|
return new Shadings.RadialAxial(dict, matrix, xref, res); |
|
|
|
|
default: |
|
|
|
|
return new Shadings.Dummy(); |
|
|
|
|
} |
|
|
|
@ -102,36 +101,40 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
@@ -102,36 +101,40 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
|
|
|
|
|
this.colorStops = colorStops; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
RadialAxial.fromIR = function radialAxialShadingGetIR(ctx, raw) { |
|
|
|
|
RadialAxial.fromIR = function radialAxialShadingGetIR(raw) { |
|
|
|
|
var type = raw[1]; |
|
|
|
|
var colorStops = raw[2]; |
|
|
|
|
var p0 = raw[3]; |
|
|
|
|
var p1 = raw[4]; |
|
|
|
|
var r0 = raw[5]; |
|
|
|
|
var r1 = raw[6]; |
|
|
|
|
|
|
|
|
|
var curMatrix = ctx.mozCurrentTransform; |
|
|
|
|
if (curMatrix) { |
|
|
|
|
var userMatrix = ctx.mozCurrentTransformInverse; |
|
|
|
|
|
|
|
|
|
p0 = Util.applyTransform(p0, curMatrix); |
|
|
|
|
p0 = Util.applyTransform(p0, userMatrix); |
|
|
|
|
|
|
|
|
|
p1 = Util.applyTransform(p1, curMatrix); |
|
|
|
|
p1 = Util.applyTransform(p1, userMatrix); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var grad; |
|
|
|
|
if (type == PatternType.AXIAL) |
|
|
|
|
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); |
|
|
|
|
else if (type == PatternType.RADIAL) |
|
|
|
|
grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); |
|
|
|
|
|
|
|
|
|
for (var i = 0, ii = colorStops.length; i < ii; ++i) { |
|
|
|
|
var c = colorStops[i]; |
|
|
|
|
grad.addColorStop(c[0], c[1]); |
|
|
|
|
} |
|
|
|
|
return grad; |
|
|
|
|
return { |
|
|
|
|
type: 'Pattern', |
|
|
|
|
getPattern: function(ctx) { |
|
|
|
|
var curMatrix = ctx.mozCurrentTransform; |
|
|
|
|
if (curMatrix) { |
|
|
|
|
var userMatrix = ctx.mozCurrentTransformInverse; |
|
|
|
|
|
|
|
|
|
p0 = Util.applyTransform(p0, curMatrix); |
|
|
|
|
p0 = Util.applyTransform(p0, userMatrix); |
|
|
|
|
|
|
|
|
|
p1 = Util.applyTransform(p1, curMatrix); |
|
|
|
|
p1 = Util.applyTransform(p1, userMatrix); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var grad; |
|
|
|
|
if (type == PatternType.AXIAL) |
|
|
|
|
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); |
|
|
|
|
else if (type == PatternType.RADIAL) |
|
|
|
|
grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); |
|
|
|
|
|
|
|
|
|
for (var i = 0, ii = colorStops.length; i < ii; ++i) { |
|
|
|
|
var c = colorStops[i]; |
|
|
|
|
grad.addColorStop(c[0], c[1]); |
|
|
|
|
} |
|
|
|
|
return grad; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
RadialAxial.prototype = { |
|
|
|
|