Compare commits
	
		
			5 Commits
		
	
	
		
			a8-alt-sol
			...
			3aad46748a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3aad46748a | |||
| 18669ebf1c | |||
| b95fd534fb | |||
| f049e8aeff | |||
| 025b2640fc | 
| @@ -57,10 +57,6 @@ void delete(DiskQueue *queue, DiskRequest request) { | |||||||
| 	exit(EXIT_FAILURE); | 	exit(EXIT_FAILURE); | ||||||
| } | } | ||||||
|  |  | ||||||
| DiskRequest peek(DiskQueue *queue) { |  | ||||||
| 	return *queue->head; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| DiskRequest *dequeue(DiskQueue *queue) { | DiskRequest *dequeue(DiskQueue *queue) { | ||||||
| 	DiskRequest *head = queue->head; | 	DiskRequest *head = queue->head; | ||||||
| 	queue->head = head->next; | 	queue->head = head->next; | ||||||
| @@ -79,6 +75,14 @@ void destroyDiskQueue(DiskQueue *queue) { | |||||||
| 	free(queue); | 	free(queue); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | int calcDistance(int position, int destination) { | ||||||
|  | 	if (position > destination) { | ||||||
|  | 		return destination + (9999 + 1 - position); | ||||||
|  | 	} else { | ||||||
|  | 		return destination - position; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| DiskRequest* findClosest(DiskQueue *queue, int position, double time) { | DiskRequest* findClosest(DiskQueue *queue, int position, double time) { | ||||||
| 	DiskRequest *current = queue->head; | 	DiskRequest *current = queue->head; | ||||||
| 	DiskRequest *closest = NULL; | 	DiskRequest *closest = NULL; | ||||||
| @@ -87,20 +91,14 @@ DiskRequest* findClosest(DiskQueue *queue, int position, double time) { | |||||||
| 			if (closest == NULL) { // If there is no closest yet, set it to the current | 			if (closest == NULL) { // If there is no closest yet, set it to the current | ||||||
| 				closest = current; | 				closest = current; | ||||||
| 			} else { | 			} else { | ||||||
| 				int closestDistance = closest->position - position; // Distance from the closest to the current position, negative means down (bad) | 				int closestDistance = calcDistance(position, closest->position); // Distance from the closest to the current position, negative means down (bad) | ||||||
| 				int currentDistance = current->position - position; // Distance from the current to the current position, negative means down (bad) | 				int currentDistance = calcDistance(position, current->position); // Distance from the current to the current position, negative means down (bad | ||||||
| 				if (currentDistance > 0) { // If the current is up |  | ||||||
| 				if (currentDistance < closestDistance) { // If the current is closer than the closest | 				if (currentDistance < closestDistance) { // If the current is closer than the closest | ||||||
| 					closest = current; | 					closest = current; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		} |  | ||||||
| 		current = current->next; | 		current = current->next; | ||||||
| 	} | 	} | ||||||
| 	// Bad |  | ||||||
| 	if (closest == NULL) { |  | ||||||
| 		return NULL; |  | ||||||
| 	} |  | ||||||
| 	return closest; | 	return closest; | ||||||
| } | } | ||||||
| @@ -21,10 +21,10 @@ void enqueue(DiskQueue *queue, int time, int position); | |||||||
|  |  | ||||||
| void delete(DiskQueue *queue, DiskRequest request); | void delete(DiskQueue *queue, DiskRequest request); | ||||||
|  |  | ||||||
| DiskRequest peek(DiskQueue *queue); |  | ||||||
|  |  | ||||||
| DiskRequest *dequeue(DiskQueue *queue); | DiskRequest *dequeue(DiskQueue *queue); | ||||||
|  |  | ||||||
| DiskRequest *findClosest(DiskQueue *queue, int position, double time); | DiskRequest *findClosest(DiskQueue *queue, int position, double time); | ||||||
|  |  | ||||||
| void destroyDiskQueue(DiskQueue *queue); | void destroyDiskQueue(DiskQueue *queue); | ||||||
|  |  | ||||||
|  | int calcDistance(int position, int destination); | ||||||
|   | |||||||
| @@ -68,7 +68,6 @@ void cscan(int start) { | |||||||
| 		if (request != NULL) { | 		if (request != NULL) { | ||||||
| 			delete(queue, *request); | 			delete(queue, *request); | ||||||
| 		} | 		} | ||||||
| 		//printf("Movement: %i Time:%.1lf\n", movement, seekTime); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								Assignment9/.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Assignment9/.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | # Default ignored files | ||||||
|  | /shelf/ | ||||||
|  | /workspace.xml | ||||||
|  | # Editor-based HTTP Client requests | ||||||
|  | /httpRequests/ | ||||||
|  | # Datasource local storage ignored files | ||||||
|  | /dataSources/ | ||||||
|  | /dataSources.local.xml | ||||||
							
								
								
									
										2
									
								
								Assignment9/.idea/Assignment9.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Assignment9/.idea/Assignment9.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <module classpath="CMake" type="CPP_MODULE" version="4" /> | ||||||
							
								
								
									
										8
									
								
								Assignment9/.idea/cmake.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Assignment9/.idea/cmake.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="CMakeSharedSettings"> | ||||||
|  |     <configurations> | ||||||
|  |       <configuration PROFILE_NAME="Debug" ENABLED="true" GENERATION_DIR="build" CONFIG_NAME="Debug" /> | ||||||
|  |     </configurations> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										4
									
								
								Assignment9/.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Assignment9/.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" /> | ||||||
|  | </project> | ||||||
							
								
								
									
										8
									
								
								Assignment9/.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Assignment9/.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="ProjectModuleManager"> | ||||||
|  |     <modules> | ||||||
|  |       <module fileurl="file://$PROJECT_DIR$/.idea/Assignment9.iml" filepath="$PROJECT_DIR$/.idea/Assignment9.iml" /> | ||||||
|  |     </modules> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										7
									
								
								Assignment9/.idea/runConfigurations/Assignment9.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Assignment9/.idea/runConfigurations/Assignment9.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <component name="ProjectRunConfigurationManager"> | ||||||
|  |   <configuration default="false" name="Assignment9" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Assignment9" TARGET_NAME="Assignment9" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Assignment9" RUN_TARGET_NAME="Assignment9"> | ||||||
|  |     <method v="2"> | ||||||
|  |       <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" /> | ||||||
|  |     </method> | ||||||
|  |   </configuration> | ||||||
|  | </component> | ||||||
							
								
								
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test1.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test1.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <component name="ProjectRunConfigurationManager"> | ||||||
|  |   <configuration default="false" name="Test1" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="../tests/test1.png" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Assignment9" TARGET_NAME="Assignment9" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Assignment9" RUN_TARGET_NAME="Assignment9"> | ||||||
|  |     <method v="2"> | ||||||
|  |       <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" /> | ||||||
|  |     </method> | ||||||
|  |   </configuration> | ||||||
|  | </component> | ||||||
							
								
								
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test2.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test2.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <component name="ProjectRunConfigurationManager"> | ||||||
|  |   <configuration default="false" name="Test2" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="../tests/test2.png" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Assignment9" TARGET_NAME="Assignment9" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Assignment9" RUN_TARGET_NAME="Assignment9"> | ||||||
|  |     <method v="2"> | ||||||
|  |       <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" /> | ||||||
|  |     </method> | ||||||
|  |   </configuration> | ||||||
|  | </component> | ||||||
							
								
								
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test3.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test3.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <component name="ProjectRunConfigurationManager"> | ||||||
|  |   <configuration default="false" name="Test3" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="../tests/test3.png" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Assignment9" TARGET_NAME="Assignment9" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Assignment9" RUN_TARGET_NAME="Assignment9"> | ||||||
|  |     <method v="2"> | ||||||
|  |       <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" /> | ||||||
|  |     </method> | ||||||
|  |   </configuration> | ||||||
|  | </component> | ||||||
							
								
								
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test4.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Assignment9/.idea/runConfigurations/Test4.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <component name="ProjectRunConfigurationManager"> | ||||||
|  |   <configuration default="false" name="Test4" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="../tests/test4.png" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Assignment9" TARGET_NAME="Assignment9" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Assignment9" RUN_TARGET_NAME="Assignment9"> | ||||||
|  |     <method v="2"> | ||||||
|  |       <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" /> | ||||||
|  |     </method> | ||||||
|  |   </configuration> | ||||||
|  | </component> | ||||||
							
								
								
									
										6
									
								
								Assignment9/.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Assignment9/.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="VcsDirectoryMappings"> | ||||||
|  |     <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										6
									
								
								Assignment9/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Assignment9/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | cmake_minimum_required(VERSION 3.20) | ||||||
|  | project(Assignment9 C) | ||||||
|  | set(CMAKE_C_STANDARD 99) | ||||||
|  | add_executable(Assignment9 src/main.c | ||||||
|  |         src/png.c | ||||||
|  |         src/png.h) | ||||||
							
								
								
									
										
											BIN
										
									
								
								Assignment9/documentation/Assignment 9.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/documentation/Assignment 9.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										68
									
								
								Assignment9/documentation/EndiannessAndHomework9.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								Assignment9/documentation/EndiannessAndHomework9.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <arpa/inet.h> | ||||||
|  | // FILE format is: 'header', then 2023 skipped bytes, then the number of interest | ||||||
|  | #define OURINT 1426915328 | ||||||
|  | #define OFFSETTODATA 2023 | ||||||
|  |  | ||||||
|  | int writeToFile(){ | ||||||
|  |  | ||||||
|  |     FILE* fp = fopen("toReadLater.txt","w+"); | ||||||
|  | 	char c = 'h'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     c = 'e'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     c = 'a'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     c = 'd'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     c = 'e'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     c = 'r'; | ||||||
|  |     fwrite(&c, sizeof(char), 1, fp); | ||||||
|  |     unsigned int buf = OFFSETTODATA; | ||||||
|  |     fwrite(&buf, sizeof(int), 1, fp); | ||||||
|  |     fseek(fp, OFFSETTODATA, SEEK_CUR); | ||||||
|  |  | ||||||
|  |     buf = OURINT; | ||||||
|  |     fwrite(&buf, sizeof(int), 1, fp); | ||||||
|  |     fclose(fp); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int readFromFile(){ | ||||||
|  | 	FILE *fp = fopen("toReadLater.txt", "r+"); | ||||||
|  | 	fseek(fp, 6 , SEEK_SET); | ||||||
|  | 	int skip = 0; | ||||||
|  | 	fread(&skip, sizeof(int), 1, fp); | ||||||
|  |     // NOTE, in HW, the size of the section is a value in  | ||||||
|  |     // Big-Endian format, it will actually need conversion | ||||||
|  | 	fseek(fp, skip, SEEK_CUR); | ||||||
|  | 	unsigned int qBe = 0; | ||||||
|  | 	unsigned int qLe = 0; | ||||||
|  | 	int i; | ||||||
|  | 	unsigned char *c = (char *)(&qBe); | ||||||
|  | 	unsigned char *d = (char *)(&qLe); | ||||||
|  | 	for (i = 0; i < 4; i++) | ||||||
|  | 	{ | ||||||
|  | 		c[i] = getc(fp); | ||||||
|  | 		printf("Byte %i: %i %x\n",i, c[i], c[i]); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |     for (i = 0; i < 4; i++) | ||||||
|  | 	{ | ||||||
|  | 		d[4-i-1] = c[i]; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |     printf("Translated using swapping the bytes order: %i\n", qLe); | ||||||
|  | 	qLe = ntohl(qBe); | ||||||
|  |     printf("Translated using ntohl: %i\n", qLe); | ||||||
|  |     fclose(fp); | ||||||
|  | } | ||||||
|  | int main (int argc, char** argv){ | ||||||
|  |     unsigned int wantToRead; | ||||||
|  | 	writeToFile(); | ||||||
|  | 	printf("Sizeof (int) is:%li\n", sizeof(unsigned int)); | ||||||
|  | 	readFromFile(); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								Assignment9/documentation/tests.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/documentation/tests.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										39
									
								
								Assignment9/src/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Assignment9/src/main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <limits.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <stdbool.h> | ||||||
|  | #include "png.h" | ||||||
|  |  | ||||||
|  | int main(int argc, char *argv[]) { | ||||||
|  | 	if (argc != 2) { | ||||||
|  | 		printf("Usage: %s <png file>\n", argv[0]); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	if (strlen(argv[1]) > PATH_MAX) { | ||||||
|  | 		printf("Path too long\n"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	char *path = argv[1]; | ||||||
|  |  | ||||||
|  | 	char* png_buffer = load_file(get_fd(path)); | ||||||
|  | 	if (!is_png(png_buffer)) { | ||||||
|  | 		printf("It's not a PNG file\n"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} else { | ||||||
|  | 		printf("It's a PNG file\n"); | ||||||
|  | 	} | ||||||
|  | 	png_chunk **chunks = get_png_chunks(png_buffer); | ||||||
|  | 	int size = get_number_of_chunks(chunks); | ||||||
|  | 	for (int i = 0; i < size; i++) { | ||||||
|  | 		// Check if header is IDAT or IEND | ||||||
|  | 		bool is_idat = memcmp(chunks[i]->type, "IDAT", 4) == 0; | ||||||
|  | 		bool is_iend = memcmp(chunks[i]->type, "IEND", 4) == 0; | ||||||
|  | 		if (is_idat || is_iend) { | ||||||
|  | 			printf("Found %s chunk\n", chunks[i]->type); | ||||||
|  | 		} else { | ||||||
|  | 			printf("Found unknown: %s\n", chunks[i]->type); | ||||||
|  | 		} | ||||||
|  | 		printf("Chunk size is:%d\n", chunks[i]->length); | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										146
									
								
								Assignment9/src/png.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								Assignment9/src/png.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright Notice | ||||||
|  |  * ---------------- | ||||||
|  |  * Copyright © 1998, 1999 by: Glenn Randers-Pehrson | ||||||
|  |  * This specification is a modification of the PNG 1.0 specification. It is being | ||||||
|  |  * provided by the copyright holder under the provisions of the 1996 MIT copyright and license: | ||||||
|  |  * Copyright © 1996 by: Massachusetts Institute of Technology (MIT) | ||||||
|  |  * This W3C specification is being provided by the copyright holders under | ||||||
|  |  * the following license. By obtaining, using and/or copying this specification, you | ||||||
|  |  * agree that you have read, understood, and will comply with the following terms | ||||||
|  |  * and conditions: | ||||||
|  |  * Permission to use, copy, and distribute this specification for any purpose | ||||||
|  |  * and without fee or royalty is hereby granted, provided that the full text of | ||||||
|  |  * this NOTICE appears on ALL copies of the specification or portions thereof, | ||||||
|  |  * including modifications, that you make. | ||||||
|  |  * THIS SPECIFICATION IS PROVIDED ”AS IS,” AND COPYRIGHT HOLD-ERS | ||||||
|  |  * MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR | ||||||
|  |  * IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, COPYRIGHT | ||||||
|  |  * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES OF MER-CHANTABILITY | ||||||
|  |  * OR FITNESS FOR ANY PARTICULAR PURPOSE OR | ||||||
|  |  * THAT THE USE OF THE SPECIFICATION WILL NOT INFRINGE ANY | ||||||
|  |  * THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER | ||||||
|  |  * RIGHTS. COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY | ||||||
|  |  * USE OF THIS SPECIFICATION. | ||||||
|  |  * The name and trademarks of copyright holders may NOT be used in | ||||||
|  |  * ad-vertising or publicity pertaining to the specification without specific, written | ||||||
|  |  * prior permission. Title to copyright in this specification and any associated | ||||||
|  |  * documentation will at all times remain with copyright holders. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <arpa/inet.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <zlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include "png.h" | ||||||
|  |  | ||||||
|  | int get_fd(char *path) { | ||||||
|  | 	FILE *fp = fopen(path, "rb"); | ||||||
|  | 	if (fp == NULL) { | ||||||
|  | 		perror("fopen"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	int fd = fileno(fp); | ||||||
|  | 	if (fd == -1) { | ||||||
|  | 		perror("fileno"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	return fd; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | FILE *get_fp(int fd) { | ||||||
|  | 	FILE *fp = fdopen(fd, "rb"); | ||||||
|  | 	if (fp == NULL) { | ||||||
|  | 		perror("fdopen"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	return fp; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | char *load_file(int fd) { | ||||||
|  | 	FILE *fp = get_fp(fd); | ||||||
|  | 	fseek(fp, 0, SEEK_END); | ||||||
|  | 	long size = ftell(fp); | ||||||
|  | 	rewind(fp); | ||||||
|  | 	char *buffer = malloc(size); | ||||||
|  | 	if (buffer == NULL) { | ||||||
|  | 		perror("malloc"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	fread(buffer, 1, size, fp); | ||||||
|  | 	// Iterate over buffer and convert from network byte order to host byte order | ||||||
|  | 	//for (int i = 0; i < size; i += 4) { | ||||||
|  | 	//	uint32_t *ptr = (uint32_t *)(buffer + i); | ||||||
|  | 	//	*ptr = ntohl(*ptr); | ||||||
|  | 	//} | ||||||
|  | 	fclose(fp); | ||||||
|  | 	return buffer; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int is_png(char *buffer) { | ||||||
|  | 	return memcmp(buffer, PNG_SIGNATURE, PNG_SIGNATURE_SIZE) == 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | png_chunk *get_png_chunk(char *buffer, int offset) { | ||||||
|  | 	png_chunk *chunk = malloc(sizeof(png_chunk)); | ||||||
|  | 	if (chunk == NULL) { | ||||||
|  | 		perror("malloc"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	memcpy(&chunk->length, buffer + offset + 0, 4); | ||||||
|  | 	chunk->length = ntohl(chunk->length); | ||||||
|  | 	memcpy(&chunk->type, buffer + offset + 4, 4); | ||||||
|  | 	chunk->data = malloc(chunk->length); | ||||||
|  | 	if (chunk->data == NULL) { | ||||||
|  | 		perror("malloc"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	memcpy(chunk->data, buffer + offset + 8, chunk->length); | ||||||
|  | 	memcpy(&chunk->crc, buffer + offset + 8 + chunk->length, 4); | ||||||
|  | 	return chunk; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | png_chunk **get_png_chunks(char *buffer) { | ||||||
|  | 	png_chunk **chunks = malloc(sizeof(png_chunk *)); | ||||||
|  | 	if (chunks == NULL) { | ||||||
|  | 		perror("malloc"); | ||||||
|  | 		exit(1); | ||||||
|  | 	} | ||||||
|  | 	int offset = PNG_SIGNATURE_SIZE; | ||||||
|  | 	int i = 0; | ||||||
|  | 	while (1) { | ||||||
|  | 		chunks[i] = get_png_chunk(buffer, offset); | ||||||
|  | 		offset += chunks[i]->length; | ||||||
|  | 		if (memcmp(chunks[i]->type, "IEND", 4) == 0) { | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 		i++; | ||||||
|  | 		chunks = realloc(chunks, sizeof(png_chunk *) * (i + 1)); | ||||||
|  | 		if (chunks == NULL) { | ||||||
|  | 			perror("realloc"); | ||||||
|  | 			exit(1); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return chunks; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int is_chunk_valid(png_chunk *chunk) { | ||||||
|  | 	uint32_t crc = htonl(chunk->crc); | ||||||
|  | 	//uint32_t calculated_crc = crc32(0, chunk->type, 4); | ||||||
|  | 	//calculated_crc = crc32(calculated_crc, chunk->data, chunk->length); | ||||||
|  | 	//return crc == calculated_crc; | ||||||
|  | 	return 1; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int is_chunk_critical(png_chunk *chunk) { | ||||||
|  | 	return chunk->type[0] >= 'A' && chunk->type[0] <= 'Z'; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int get_number_of_chunks(png_chunk **chunks) { | ||||||
|  | 	int i = 0; | ||||||
|  | 	while (chunks[i] != NULL) { | ||||||
|  | 		i++; | ||||||
|  | 	} | ||||||
|  | 	return i; | ||||||
|  | } | ||||||
							
								
								
									
										74
									
								
								Assignment9/src/png.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								Assignment9/src/png.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright Notice | ||||||
|  |  * ---------------- | ||||||
|  |  * Copyright © 1998, 1999 by: Glenn Randers-Pehrson | ||||||
|  |  * This specification is a modification of the PNG 1.0 specification. It is being | ||||||
|  |  * provided by the copyright holder under the provisions of the 1996 MIT copyright and license: | ||||||
|  |  * Copyright © 1996 by: Massachusetts Institute of Technology (MIT) | ||||||
|  |  * This W3C specification is being provided by the copyright holders under | ||||||
|  |  * the following license. By obtaining, using and/or copying this specification, you | ||||||
|  |  * agree that you have read, understood, and will comply with the following terms | ||||||
|  |  * and conditions: | ||||||
|  |  * Permission to use, copy, and distribute this specification for any purpose | ||||||
|  |  * and without fee or royalty is hereby granted, provided that the full text of | ||||||
|  |  * this NOTICE appears on ALL copies of the specification or portions thereof, | ||||||
|  |  * including modifications, that you make. | ||||||
|  |  * THIS SPECIFICATION IS PROVIDED ”AS IS,” AND COPYRIGHT HOLD-ERS | ||||||
|  |  * MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR | ||||||
|  |  * IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, COPYRIGHT | ||||||
|  |  * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES OF MER-CHANTABILITY | ||||||
|  |  * OR FITNESS FOR ANY PARTICULAR PURPOSE OR | ||||||
|  |  * THAT THE USE OF THE SPECIFICATION WILL NOT INFRINGE ANY | ||||||
|  |  * THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER | ||||||
|  |  * RIGHTS. COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY | ||||||
|  |  * USE OF THIS SPECIFICATION. | ||||||
|  |  * The name and trademarks of copyright holders may NOT be used in | ||||||
|  |  * ad-vertising or publicity pertaining to the specification without specific, written | ||||||
|  |  * prior permission. Title to copyright in this specification and any associated | ||||||
|  |  * documentation will at all times remain with copyright holders. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include <arpa/inet.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <zlib.h> | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
|  | // http://www.libpng.org/pub/png/spec/1.2/PNG-Rationale.html#R.PNG-file-signature | ||||||
|  | #define PNG_SIGNATURE "\211PNG\r\n\032\n" | ||||||
|  | #define PNG_SIGNATURE_SIZE 8 | ||||||
|  | typedef struct png_chunk { | ||||||
|  | 	uint32_t length; | ||||||
|  | 	char type[4]; | ||||||
|  | 	char *data; | ||||||
|  | 	uint32_t crc; | ||||||
|  | } png_chunk; | ||||||
|  |  | ||||||
|  | // Get file descriptor from path | ||||||
|  | int get_fd(char *path); | ||||||
|  |  | ||||||
|  | // Get FILE* from file descriptor | ||||||
|  | FILE *get_fp(int fd); | ||||||
|  |  | ||||||
|  | // Store file in heap memory | ||||||
|  | char *load_file(int fd); | ||||||
|  |  | ||||||
|  | // Check if file is a PNG | ||||||
|  | int is_png(char *buffer); | ||||||
|  |  | ||||||
|  | // Get PNG chunk | ||||||
|  | png_chunk *get_png_chunk(char *buffer, int offset); | ||||||
|  |  | ||||||
|  | // Get all PNG chunks | ||||||
|  | png_chunk **get_png_chunks(char *buffer); | ||||||
|  |  | ||||||
|  | // Get number of chunks | ||||||
|  | int get_number_of_chunks(png_chunk **chunks); | ||||||
|  |  | ||||||
|  | // Check if chunk is critical | ||||||
|  | int is_chunk_critical(png_chunk *chunk); | ||||||
|  |  | ||||||
|  | // Is chunk valid? | ||||||
|  | int is_chunk_valid(png_chunk *chunk); | ||||||
							
								
								
									
										13
									
								
								Assignment9/tests/output1.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Assignment9/tests/output1.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | It's a PNG file | ||||||
|  | Found unknown: IHDR | ||||||
|  | Chunk size is:13 | ||||||
|  | Found unknown: sRGB | ||||||
|  | Chunk size is:1 | ||||||
|  | Found unknown: gAMA | ||||||
|  | Chunk size is:4 | ||||||
|  | Found unknown: pHYs | ||||||
|  | Chunk size is:9 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:18944 | ||||||
|  | Found IEND | ||||||
|  | Chunk size is:0 | ||||||
							
								
								
									
										1
									
								
								Assignment9/tests/output2.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Assignment9/tests/output2.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | It's not a PNG file | ||||||
							
								
								
									
										249
									
								
								Assignment9/tests/output3.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										249
									
								
								Assignment9/tests/output3.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,249 @@ | |||||||
|  | It's a PNG file | ||||||
|  | Found unknown: IHDR | ||||||
|  | Chunk size is:13 | ||||||
|  | Found unknown: sRGB | ||||||
|  | Chunk size is:1 | ||||||
|  | Found unknown: gAMA | ||||||
|  | Chunk size is:4 | ||||||
|  | Found unknown: pHYs | ||||||
|  | Chunk size is:9 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:15 | ||||||
|  | Found unknown: tIME | ||||||
|  | Chunk size is:7 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:32 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:33 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65310 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:17176 | ||||||
|  | Found IEND | ||||||
|  | Chunk size is:0 | ||||||
							
								
								
									
										317
									
								
								Assignment9/tests/output4.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										317
									
								
								Assignment9/tests/output4.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,317 @@ | |||||||
|  | It's a PNG file | ||||||
|  | Found unknown: IHDR | ||||||
|  | Chunk size is:13 | ||||||
|  | Found unknown: sRGB | ||||||
|  | Chunk size is:1 | ||||||
|  | Found unknown: gAMA | ||||||
|  | Chunk size is:4 | ||||||
|  | Found unknown: pHYs | ||||||
|  | Chunk size is:9 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:15 | ||||||
|  | Found unknown: tIME | ||||||
|  | Chunk size is:7 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:32 | ||||||
|  | Found unknown: tEXt | ||||||
|  | Chunk size is:33 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65310 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:65524 | ||||||
|  | Found IDAT | ||||||
|  | Chunk size is:53390 | ||||||
|  | Found IEND | ||||||
|  | Chunk size is:0 | ||||||
							
								
								
									
										
											BIN
										
									
								
								Assignment9/tests/test1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/tests/test1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 19 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assignment9/tests/test2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/tests/test2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Assignment9/tests/test3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/tests/test3.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 7.1 MiB | 
							
								
								
									
										
											BIN
										
									
								
								Assignment9/tests/test4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assignment9/tests/test4.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.3 MiB | 
		Reference in New Issue
	
	Block a user