1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.mediaeditor.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.ui.ValueContext;
38 import info.magnolia.ui.mediaeditor.MediaEditorEventBus;
39 import info.magnolia.ui.mediaeditor.action.definition.FlipImageActionDefinition;
40 import info.magnolia.ui.mediaeditor.data.MediaState;
41
42 import java.awt.image.BufferedImage;
43 import java.io.IOException;
44 import java.io.InputStream;
45
46 import javax.imageio.ImageIO;
47 import javax.inject.Named;
48
49 import com.jhlabs.image.FlipFilter;
50
51
52
53
54 public class FlipImageAction extends InstantMediaEditorAction {
55
56 public FlipImageAction(FlipImageActionDefinition definition,
57 ValueContext<MediaState> valueContext,
58 @Named(MediaEditorEventBus.NAME) EventBus eventBus) {
59 super(definition, valueContext, eventBus);
60 }
61
62 @Override
63 protected InputStream performModification(InputStream stream) throws IOException {
64 final BufferedImage img = ImageIO.read(stream);
65 final FlipFilter flipFilter = new FlipFilter(getDefinition().getFlipHorizontal() ? FlipFilter.FLIP_H : FlipFilter.FLIP_V);
66 return createStreamSource(flipFilter.filter(img, null), DEFAULT_FORMAT);
67 }
68
69 @Override
70 protected FlipImageActionDefinition getDefinition() {
71 return (FlipImageActionDefinition) super.getDefinition();
72 }
73 }