summary refs log tree commit diff
path: root/bin/glitch.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-09-05 01:38:13 -0400
committerJune McEnroe <june@causal.agency>2018-09-05 01:38:13 -0400
commitb57dc3512ebca3fe64ff268bcde4a5969e1cc5a6 (patch)
treeb70362b6eb4b94fc6e0a0b2654028936cc088f71 /bin/glitch.c
parentAdd glitch -x and -y (diff)
downloadsrc-b57dc3512ebca3fe64ff268bcde4a5969e1cc5a6.tar.gz
src-b57dc3512ebca3fe64ff268bcde4a5969e1cc5a6.zip
Simplify glitch -x -y to just zero
Diffstat (limited to 'bin/glitch.c')
-rw-r--r--bin/glitch.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/bin/glitch.c b/bin/glitch.c
index a780fb5c..fdd1716f 100644
--- a/bin/glitch.c
+++ b/bin/glitch.c
@@ -278,8 +278,8 @@ static struct {
 	uint8_t applyFilter;
 	enum Filter declareFilters[255];
 	enum Filter applyFilters[255];
-	bool swapX;
-	bool swapY;
+	bool zeroX;
+	bool zeroY;
 	bool invert;
 	bool mirror;
 } options;
@@ -402,23 +402,15 @@ static void filterData(void) {
 	}
 }
 
-static void swapX(void) {
+static void zeroX(void) {
 	size_t pixelSize = lineSize() / header.width;
-	uint32_t last = header.width - 1;
 	for (uint32_t y = 0; y < header.height; ++y) {
-		uint8_t pixel[pixelSize];
-		memcpy(pixel, lines[y]->data, pixelSize);
-		memcpy(lines[y]->data, &lines[y]->data[pixelSize * last], pixelSize);
-		memcpy(&lines[y]->data[pixelSize * last], pixel, pixelSize);
+		memset(lines[y]->data, 0, pixelSize);
 	}
 }
 
-static void swapY(void) {
-	uint8_t line[lineSize()];
-	uint32_t last = header.height - 1;
-	memcpy(line, lines[0]->data, lineSize());
-	memcpy(lines[0]->data, lines[last]->data, lineSize());
-	memcpy(lines[last]->data, line, lineSize());
+static void zeroY(void) {
+	memset(lines[0]->data, 0, lineSize());
 }
 
 static void invert(void) {
@@ -458,8 +450,8 @@ static void glitch(const char *inPath, const char *outPath) {
 	scanlines();
 	reconData();
 	filterData();
-	if (options.swapX) swapX();
-	if (options.swapY) swapY();
+	if (options.zeroX) zeroX();
+	if (options.zeroY) zeroY();
 	if (options.invert) invert();
 	if (options.mirror) mirror();
 	free(lines);
@@ -522,8 +514,8 @@ int main(int argc, char *argv[]) {
 			break; case 'o': output = optarg;
 			break; case 'p': options.brokenPaeth = true;
 			break; case 'r': options.recon = true;
-			break; case 'x': options.swapX = true;
-			break; case 'y': options.swapY = true;
+			break; case 'x': options.zeroX = true;
+			break; case 'y': options.zeroY = true;
 			break; default: return EX_USAGE;
 		}
 	}