-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAT2.h
79 lines (77 loc) · 2.64 KB
/
AT2.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lista.h"
#include "PGM.h"
#include "PPM.h"
void PPMdecompose(struct PPMimagem* PointColor, struct PGMimagem** pointR, struct PGMimagem** pointG, struct PGMimagem** pointB){
printf("\nTENTANDO DECOMPOR A IMAGEM PPM\n");
int nPixels = PointColor->largura * PointColor->altura;
struct PGMimagem *imR=(struct PGMimagem*)malloc(sizeof(struct PGMimagem));
if( imR == NULL){
printf("\nerro de alocacao strR\n");
return;
}
struct PGMimagem *imG=(struct PGMimagem*)malloc(sizeof(struct PGMimagem));
if( imG == NULL){
printf("\nerro de alocacao strG\n");
return;
}
struct PGMimagem *imB=(struct PGMimagem*)malloc(sizeof(struct PGMimagem));
if( imB == NULL){
printf("\nerro de alocacao strB\n");
return;
}
struct no* imC= PointColor->pixels->first;
imR->altura = PointColor->altura;
imR->largura = PointColor->largura;
imR->magic = 2;
imR->cor = PointColor->cor;
inicializaLista(&imR->pixels);
imG->altura = PointColor->altura;
imG->largura = PointColor->largura;
imG->magic = 2;
imG->cor = PointColor->cor;
inicializaLista(&imG->pixels);
imB->altura = PointColor->altura;
imB->largura = PointColor->largura;
imB->magic = 2;
imB->cor = PointColor->cor;
inicializaLista(&imB->pixels);
for(int i=0; i<nPixels; i++){
insereLista(&imR->pixels, imC->red, 0, 0, 0);
insereLista(&imG->pixels, imC->green, 0, 0, 0);
insereLista(&imB->pixels, imC->blue, 0, 0, 0);
imC = imC->next;
}
*pointR = imR;
*pointG = imG;
*pointB = imB;
printf("IMAGEM DECOMPOSTA COM SUCESSO\n");
}
void PGMrecompose(struct PPMimagem** pointColor, struct PGMimagem* pointR, struct PGMimagem* pointG, struct PGMimagem* pointB){
printf("\nTENTANDO RECOMPOR OS PGMs EM UMA IMAGEM PPM\n");
int nPixels = pointR->largura * pointR->altura;
struct PPMimagem* imC = (struct PPMimagem*)malloc(sizeof(struct PPMimagem));
if(imC == NULL){
printf("\nerro de alocacao imC\n");
return;
}
struct no* imR = pointR->pixels->first;
struct no* imG = pointG->pixels->first;
struct no* imB = pointB->pixels->first;
imC->altura = pointR->altura;
imC->largura = pointR->largura;
imC->magic = 3;
imC->cor = pointR->cor;
inicializaLista(&imC->pixels);
for(int i=0; i<nPixels; i++){
insereLista(&imC->pixels, 0, imR->grey, imG->grey, imB->grey);
imR = imR->next;
imG = imG->next;
imB = imB->next;
}
*pointColor = imC;
printf("IMAGEM RECOMPOSTA COM SUCESSO\n");
}