return B_SUCCESS;
}
-int bmp_cut_bottom(t_bmp *dst,t_bmp *src,int dz) {
+int bmp_cut_grab_bottom(t_bmp *dst,t_bmp *src,int dz,unsigned char m) {
+
+ int off;
dst->width=src->width;
dst->height=dz;
return B_E_GEOMETRY;
}
- /* obsolete - we point to wanted memory instead
if(bmp_alloc_map(dst)!=B_SUCCESS) {
dprintf(dst->outfd,"[bmp] no map memory\n");
return B_E_MEM;
}
- */
- /* obsolete - we point to wanted memory instead
- memcpy(dst->map,src->map+(src->height-dz)*src->width,
- dz*src->width*sizeof(t_pixel));
- */
- dst->map=src->map+(src->height-dz)*src->width;
+ off=(m==GRAB)?0:(src->height-dz)*src->width;
+ memcpy(dst->map,src->map+off,dz*src->width*sizeof(t_pixel));
return B_SUCCESS;
}
#define MAX_CHARS_FILE 32
#define BMP_H_SIZE 14
#define BMP_I_SIZE 40
+#define GRAB 'g'
/* bmp specific variables */
typedef struct s_bmp_hdr {
int bmp_check_header_and_info(t_bmp *bmp);
int bmp_alloc_map(t_bmp *bmp);
int bmp_write_file(t_bmp *bmp);
-int bmp_cut_bottom(t_bmp *dst,t_bmp *src,int dz);
+int bmp_cut_grab_bottom(t_bmp *dst,t_bmp *src,int dz,unsigned char m);
int bmp_read_file(t_bmp *bmp);
#endif