00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00032 #include "BorderExtenderWrap.hpp"
00033
00034 using namespace Millie;
00035
00036
00037 BorderExtenderWrap::BorderExtenderWrap()
00038 {}
00039
00040 void BorderExtenderWrap::extend(Image & out,
00041 const Image & in,
00042 int toppadding,
00043 int leftpadding,
00044 int rightpadding,
00045 int bottompadding) const
00046 {
00047 if(out.getNumComponents() != in.getNumComponents())
00048 throw Millie::IllegalArgument("BorderExtenderWrap::extend");
00049
00050 if(toppadding<0 || leftpadding<0 || rightpadding<0 || bottompadding<0)
00051 throw Millie::IllegalArgument("BorderExtenderWrap::extend");
00052
00053
00054 out.resize(in.getWidth() + leftpadding + rightpadding,
00055 in.getHeight() + bottompadding + toppadding);
00056
00057 int inlargeur = in.getWidth();
00058 int inhauteur = in.getHeight();
00059
00060 for(int canal = 0; canal< out.getNumComponents(); canal++)
00061 {
00062
00063
00064 for(int j = 0; j< out.getHeight(); j++)
00065 for(int i = 0; i < out.getWidth(); i++)
00066 out.setPixel(i, j, canal,
00067 in.getPixel(
00068 (i-leftpadding + inlargeur) % inlargeur,
00069 (j-toppadding + inhauteur) % inhauteur, canal));
00070
00071
00072 }
00073 }