Sigrid Solveig Haflínudóttirkeep filters in their own filesa105fe95 years agoHistory
73 lines · 1.2 KB · C
RawDownload
#include <u.h>#include <libc.h>#include "pdf.h" /* 7.4 Filters */ extern Filter filterASCII85;extern Filter filterASCIIHex;extern Filter filterCCITTFax;extern Filter filterCrypt;extern Filter filterDCT;extern Filter filterFlate;extern Filter filterJBIG2;extern Filter filterJPX;extern Filter filterLZW;extern Filter filterRunLength; static Filter *filters[] = {	&filterASCII85,	&filterASCIIHex,	&filterCCITTFax,	&filterCrypt,	&filterDCT,	&filterFlate,	&filterJBIG2,	&filterJPX,	&filterLZW,	&filterRunLength,}; Filter *filteropen(char *name, Object *o){	int i;	Filter *f; 	for(i = 0; i < nelem(filters) && strcmp(filters[i]->name, name) != 0; i++);	if(i >= nelem(filters)){		werrstr("no such filter %q", name);		return nil;	}	if(filters[i]->readall == nil){		werrstr("filter %q not implemented", name);		return nil;	}	if((f = malloc(sizeof(*f))) == nil)		return nil;	memmove(f, filters[i], sizeof(*f));	if(f->open != nil && f->open(f, o) != 0){		free(f);		return nil;	} 	return f;} intfilterrun(Filter *f, Buffer *bi, Buffer *bo){	if(f->readall(f->aux, bi, bo) != 0){		werrstr("filter[%s]: %r", f->name);		return -1;	}	return 0;} voidfilterclose(Filter *f){	if(f->close != nil)		f->close(f);	free(f);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t