7 public class MirrorInfo
: IInfo
9 public override string Name
11 get { return Catalog.GetString("Mirror"); }
14 public override string ShortName
16 get { return "Mirror"; }
19 public override string Author
21 get { return "Bartosz Taudul"; }
24 public override string Description
26 get { return Catalog.GetString("This plugin adds copies of images which have left half mirrored to the right half."); }
30 public class MirrorFactory
: IFactory
32 IInfo _info
= new MirrorInfo();
40 get { return IType.ImgProc; }
43 public void Initialize()
47 public Plugin
.Base
Create()
49 return new MirrorPlugin();
53 public class MirrorPlugin
: Plugin
.ImgProc
55 private float progress
;
59 _info
= new MirrorInfo();
62 public override void Setup()
66 public override bool HasSetup
71 public override void Work()
74 ICommImage socket
= _in
[0] as ICommImage
;
75 IImage
[] img
= socket
.Images
;
76 IImage
[] ret
= new IImage
[img
.Length
* 2];
78 int[] cat
= new int[img
.Length
* 2];
79 IImage
[] origimg
= new IImage
[img
.Length
* 2];
81 for(int i
=0; i
<img
.Length
; i
++)
84 ret
[i
*2 + 1] = MirrorImage(img
[i
]);
86 cat
[i
*2] = socket
.Category(i
);
87 cat
[i
*2 + 1] = socket
.Category(i
);
89 origimg
[i
*2] = socket
.OriginalImage(i
);
90 origimg
[i
*2 + 1] = socket
.OriginalImage(i
);
92 progress
= (float)i
/img
.Length
;
95 _out
= new CommSocket(1);
96 _out
[0] = new ICommImage(ret
, origimg
, cat
);
101 private IImage
MirrorImage(IImage img
)
104 IImage ret
= new IImage(img
.BPP
, half
*2, img
.H
);
106 for(int y
=0; y
<img
.H
; y
++)
107 for(int x
=0; x
<half
; x
++)
109 ret
[x
, y
] = img
[x
, y
];
110 ret
[half
*2-x
-1, y
] = img
[x
, y
];
116 public override int NumIn { get { return 1; }
}
117 public override int NumOut { get { return 1; }
}
119 public override string DescIn(int n
)
121 return Catalog
.GetString("Input images.");
124 public override string DescOut(int n
)
126 return Catalog
.GetString("Input images plus mirror images.");
129 private static string[] matchin
= new string[] { "image" }
;
130 private static string[] matchout
= new string[] { "image/rgb", "image/grayscale", "image/float" }
;
132 public override string[] MatchIn { get { return matchin; }
}
133 public override string[] MatchOut { get { return matchout; }
}
135 public override float Progress { get { return progress; }
}