#include #include #include #include "varios.hpp" Cor_rgb::Cor_rgb(int _r, int _g, int _b) { r= Acerta(_r); g= Acerta(_g); b= Acerta(_b); } void Cor_rgb::read( FILE *fp ) { double _r, _g, _b; fscanf( fp, " %lf %lf %lf ", &_r, &_g, &_b ); r= Acerta((int)_r); g= Acerta((int)_g); b= Acerta((int)_b); } unsigned char Cor_rgb::Acerta(int x) { if ( x<0 ) return (unsigned char)0; if ( x>255 ) return (unsigned char)255; return (unsigned char)x; } void Cor_rgb::Atribui(int _r, int _g, int _b) { r= Acerta(_r); g= Acerta(_g); b= Acerta(_b); } void Cor_rgb::Copia(Cor_rgb origem) { r= origem.R(); g= origem.G(); b= origem.B(); } Cor_rgb Cor_rgb::operator+( Cor_rgb& cor ) { Cor_rgb result; int t; t = cor.r + (int)r; result.r = Acerta( t ); t = cor.g + (int)g; result.g = Acerta( t ); t = cor.b + (int)b; result.b = Acerta( t ); return result; } Cor_rgb Cor_rgb::operator*( Cor_rgb& cor ) { Cor_rgb result; result.r = Acerta( (int) ( (double) r * ( (double) cor.r / 255 ) ) ); result.g = Acerta( (int) ( (double) g * ( (double) cor.g / 255 ) ) ); result.b = Acerta( (int) ( (double) b * ( (double) cor.b / 255 ) ) ); return result; } Cor_rgb Cor_rgb::operator*( double ind ) { Cor_rgb result; result.r = Acerta( (int) ( (double) r * ind ) ); result.g = Acerta( (int) ( (double) g * ind ) ); result.b = Acerta( (int) ( (double) b * ind ) ); return result; } // implementação da imagem Imagem::Imagem(int _w, int _h) { if (_w>0 && _h>0){ w=_w; h=_h; pixels = new Cor_rgb [w*h]; } else{ w=0; h=0; pixels = 0; } } Imagem::Imagem( char *file_name ) { FILE *fp; char line[80]; unsigned char pixel[3]; int i,j,k,max; pixels = NULL; fp = fopen(file_name, "rb"); if (fp == NULL){ printf("could not read from %s\n",file_name); w=0; h=0; pixels=NULL; return; } fgets(line,80,fp); if(strcmp(line,"P6\n")) { return; } while (fscanf( fp, " %d ", &w ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d ", &h ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d", &max ) != 1) fgets(line, 80, fp); fgetc(fp); pixels = new Cor_rgb [w*h]; //le invertendo as linhas: for ( i=h-1; i>=0; i-- ) for ( j=0; j=0; i-- ) for ( j=0; j