Commit fba6e7e3a1930b22fa6c17acb64eb264131c1612

Authored by Pavel Govyadinov
1 parent e9a1b974

fixed image.h bug with constructors not working in windows

Showing 1 changed file with 6 additions and 16 deletions   Show diff stats
stim/image/image.h
... ... @@ -95,25 +95,26 @@ public:
95 95 image(){ init(); } //initialize all variables to zero, don't allocate any memory
96 96  
97 97 /// Constructor with a filename - loads the specified file
98   - image(std::string filename) : image(){ //constructor initialize the image with an image file
  98 + image(std::string filename){ //constructor initialize the image with an image file
  99 + init();
99 100 load(filename);
100 101 }
101 102  
102 103 /// Create a new image from scratch given a number of samples and channels
103   - image(size_t x, size_t y = 1, size_t c = 1) : image(){
  104 + image(size_t x, size_t y = 1, size_t c = 1){
104 105 init();
105 106 allocate(x, y, c);
106 107 }
107 108  
108 109 /// Create a new image with the data given in 'data'
109   - image(T* data, size_t x, size_t y, size_t c = 1) : image(){
  110 + image(T* data, size_t x, size_t y, size_t c = 1){
110 111 init();
111 112 allocate(x, y, c);
112 113 memcpy(img, data, bytes());
113 114 }
114 115  
115 116 /// Copy constructor - duplicates an image object
116   - image(const stim::image<T>& I) : image(){
  117 + image(const stim::image<T>& I){
117 118 init();
118 119 allocate(I.X(), I.Y(), I.C());
119 120 memcpy(img, I.img, bytes());
... ... @@ -358,30 +359,19 @@ public:
358 359 }
359 360  
360 361 ///crops the image from x1 to x0 and y1 to y0 and returns a new (smaller) image.
361   - ///Untested
362 362 image<T> crop(int x0, int x1, int y0, int y1)
363 363 {
364 364  
365 365 image<T> ret(x1-x0, y1-y0, C());
366 366 int newWidth = x1-x0;
367 367 int destidx, srcidx;
  368 + ///for each row, cut what amount of data from the original and put it into the new copy.
368 369 for(int i = 0; i < (y1-y0); i++)
369 370 {
370 371 destidx = i*newWidth*C(); ///destination index one per each row
371 372 srcidx = ((i+(y0))*X()+x0)*C(); ///source index, one per each row.
372   -// ret.set_interleaved_rgb(img[srcidx], newWidth, y1-y0, C());
373 373 memcpy(&ret.img[destidx], &img[srcidx], sizeof(T)*newWidth*C());
374 374 }
375   -
376   -// for(int i = 0; i < (x1 -x0); i++)
377   -// {
378   -// for(int j = 0; j < (y1 - y0); j++)
379   -// {
380   -// destidx = j*newWidth*C() + i;
381   -// srcidx = ((i+(y0))*X() +x0)*C() + i;
382   -// ret.img[destidx] = img[srcidx];
383   -// }
384   -// }
385 375 return ret;
386 376 }
387 377  
... ...