New tests, update
[mono.git] / mcs / class / System.Drawing / System.Drawing / PlainImage.jvm.cs
1 using System;\r
2 using System.Drawing.Imaging;\r
3 using System.Xml;\r
4 \r
5 using Mainsoft.Drawing.Imaging;\r
6 \r
7 using awt = java.awt;\r
8 using java.awt.image;\r
9 using imageio = javax.imageio;\r
10 \r
11 namespace Mainsoft.Drawing.Imaging\r
12 {\r
13         /// <summary>\r
14         /// Summary description for PlainImage.\r
15         /// </summary>\r
16         public class PlainImage : ICloneable {\r
17 \r
18                 #region Members\r
19 \r
20                 awt.Image _nativeObject;\r
21                 awt.Image [] _thumbnails;\r
22                 FrameDimension _dimension;\r
23                 XmlDocument _metadata;\r
24                 imageio.metadata.IIOMetadata _nativeMetadata;\r
25                 ImageFormat _imageFormat;\r
26 \r
27                 float _xResolution;\r
28                 float _yResolution;\r
29 \r
30 \r
31                 #endregion\r
32 \r
33                 #region Constructors\r
34 \r
35                 public PlainImage() {\r
36                 }\r
37 \r
38                 public PlainImage(awt.Image image, awt.Image [] thumbnails, ImageFormat format, float xRes, float yRes, FrameDimension dimension) {\r
39                         _nativeObject = image;\r
40                         _thumbnails = thumbnails;\r
41                         _imageFormat = format;\r
42 \r
43                         _xResolution = xRes;\r
44                         _yResolution = yRes;\r
45 \r
46                         _dimension = dimension;\r
47                 }\r
48 \r
49                 #endregion\r
50 \r
51 \r
52                 private awt.Image NativeObject {\r
53                         get { return _nativeObject; }\r
54                         set { _nativeObject = value; }\r
55                 }\r
56 \r
57                 #region PlainImage properties\r
58 \r
59                 public awt.Image NativeImage {\r
60                         get { return NativeObject; }\r
61                         set { NativeObject = value; }\r
62                 }\r
63 \r
64                 internal imageio.metadata.IIOMetadata NativeMetadata {\r
65                         get { return _nativeMetadata; }\r
66                         set { _nativeMetadata = value; }\r
67                 }\r
68 \r
69                 public XmlDocument Metadata {\r
70                         get { return _metadata; }\r
71                         set { _metadata = value; }\r
72                 }\r
73 \r
74                 public ImageFormat ImageFormat {\r
75                         get { return _imageFormat; }\r
76                 }\r
77 \r
78                 public FrameDimension Dimension {\r
79                         get { return _dimension; }\r
80                         set { _dimension = value; }\r
81                 }\r
82 \r
83                 public awt.Image [] Thumbnails {\r
84                         get { return _thumbnails; }\r
85                 }\r
86 \r
87                 public float HorizontalResolution {\r
88                         get { return _xResolution; }\r
89                         set { _xResolution = value; }\r
90                 }\r
91 \r
92                 public float VerticalResolution {\r
93                         get { return _yResolution; }\r
94                         set { _yResolution = value; }\r
95                 }\r
96 \r
97                 #endregion\r
98 \r
99                 #region ICloneable members\r
100 \r
101                 public object Clone() {\r
102                         return Clone(true);\r
103                 }\r
104 \r
105                 public PlainImage Clone(bool cloneImage) {\r
106                         awt.Image img = NativeImage;\r
107                         awt.Image [] th = _thumbnails;\r
108 \r
109                         if (cloneImage) {\r
110                                 img = new BufferedImage(\r
111                                         ((BufferedImage)NativeObject).getColorModel(), \r
112                                         ((BufferedImage)NativeObject).copyData(null), \r
113                                         ((BufferedImage)NativeObject).isAlphaPremultiplied(), null);\r
114 \r
115                                 if (Thumbnails != null) {\r
116                                         th = new java.awt.Image[ Thumbnails.Length ];\r
117                                         for (int i=0; i < Thumbnails.Length; i++) {\r
118                                                 th[i] = new BufferedImage(\r
119                                                         ((BufferedImage)Thumbnails[i]).getColorModel(), \r
120                                                         ((BufferedImage)Thumbnails[i]).copyData(null), \r
121                                                         ((BufferedImage)Thumbnails[i]).isAlphaPremultiplied(), null);\r
122                                         }\r
123                                 }\r
124                         }\r
125 \r
126                         return new PlainImage( \r
127                                 img, \r
128                                 th, \r
129                                 ImageFormat, \r
130                                 HorizontalResolution, \r
131                                 VerticalResolution, \r
132                                 Dimension );\r
133                 }\r
134 \r
135                 #endregion\r
136         }\r
137 }\r