Skip to content

Commit b0c601b

Browse files
committed
implement rotate image
1 parent 049f3c8 commit b0c601b

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

lib/CanvasUtils.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,15 @@ function drawImage (ctx, image, x, y, width, height, options) {
8888
dx = Math.round(x);
8989
dy = Math.round(y);
9090

91-
ctx.drawImage(image.getRawImage(), sx, sy, sw, sh, dx, dy, dw, dh);
91+
if (options.rotate) {
92+
ctx.save();
93+
ctx.translate(dx + (dw / 2), dy + (dh / 2));
94+
ctx.rotate(options.rotate * Math.PI / 180);
95+
ctx.drawImage(image.getRawImage(), sx, sy, sw, sh, - (dw / 2), - (dh / 2), dw, dh);
96+
ctx.restore();
97+
} else {
98+
ctx.drawImage(image.getRawImage(), sx, sy, sw, sh, dx, dy, dw, dh);
99+
}
92100
}
93101

94102
/**

lib/DrawingUtils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ function drawImageRenderLayer (ctx, layer) {
372372
return;
373373
}
374374

375-
CanvasUtils.drawImage(ctx, image, layer.frame.x, layer.frame.y, layer.frame.width, layer.frame.height);
375+
CanvasUtils.drawImage(ctx, image, layer.frame.x, layer.frame.y, layer.frame.width, layer.frame.height, {rotate: layer.rotate});
376376
}
377377

378378
/**

lib/Image.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var RawImage = createComponent('Image', LayerMixin, {
1919

2020
layer.type = 'image';
2121
layer.imageUrl = props.src;
22+
layer.rotate = props.rotate;
2223
},
2324

2425
mountComponent: function (rootID, transaction, context) {
@@ -33,6 +34,7 @@ var RawImage = createComponent('Image', LayerMixin, {
3334
var prevProps = this._currentElement.props;
3435
var props = nextComponent.props;
3536
this.applyLayerProps(prevProps, props);
37+
this.applyImageProps(prevProps, props);
3638
this._currentElement = nextComponent;
3739
this.node.invalidateLayout();
3840
},
@@ -46,7 +48,8 @@ var Image = React.createClass({
4648
style: React.PropTypes.object,
4749
useBackingStore: React.PropTypes.bool,
4850
fadeIn: React.PropTypes.bool,
49-
fadeInDuration: React.PropTypes.number
51+
fadeInDuration: React.PropTypes.number,
52+
rotate: React.PropTypes.number
5053
},
5154

5255
getInitialState: function () {
@@ -92,7 +95,7 @@ var Image = React.createClass({
9295
return (
9396
React.createElement(Group, {ref: 'main', style: style},
9497
React.createElement(Layer, {ref: 'background', style: backgroundStyle}),
95-
React.createElement(RawImage, {ref: 'image', src: this.props.src, style: imageStyle, useBackingStore: useBackingStore})
98+
React.createElement(RawImage, {ref: 'image', src: this.props.src, style: imageStyle, useBackingStore: useBackingStore, rotate: this.props.rotate})
9699
)
97100
);
98101
},

0 commit comments

Comments
 (0)