From 5478913e195bb0a0569c9c74c3eafc9838e4b547 Mon Sep 17 00:00:00 2001 From: Erik Charlebois Date: Sun, 11 Apr 2010 23:51:50 -0700 Subject: [PATCH 1/3] Remove unix.types dependency from macho --- extra/macho/macho.factor | 442 +++++++++++++++++++-------------------- 1 file changed, 221 insertions(+), 221 deletions(-) diff --git a/extra/macho/macho.factor b/extra/macho/macho.factor index 57424cd243..e3765260bb 100644 --- a/extra/macho/macho.factor +++ b/extra/macho/macho.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2010 Erik Charlebois. ! See http:// factorcode.org/license.txt for BSD license. -USING: alien.c-types alien.syntax classes.struct kernel literals math unix.types ; +USING: alien.c-types alien.syntax classes.struct kernel literals math ; IN: macho TYPEDEF: int integer_t @@ -21,26 +21,26 @@ CONSTANT: VM_PROT_WANTS_COPY HEX: 10 ! loader.h STRUCT: mach_header - { magic uint32_t } + { magic uint } { cputype cpu_type_t } { cpusubtype cpu_subtype_t } - { filetype uint32_t } - { ncmds uint32_t } - { sizeofcmds uint32_t } - { flags uint32_t } ; + { filetype uint } + { ncmds uint } + { sizeofcmds uint } + { flags uint } ; CONSTANT: MH_MAGIC HEX: feedface CONSTANT: MH_CIGAM HEX: cefaedfe STRUCT: mach_header_64 - { magic uint32_t } + { magic uint } { cputype cpu_type_t } { cpusubtype cpu_subtype_t } - { filetype uint32_t } - { ncmds uint32_t } - { sizeofcmds uint32_t } - { flags uint32_t } - { reserved uint32_t } ; + { filetype uint } + { ncmds uint } + { sizeofcmds uint } + { flags uint } + { reserved uint } ; CONSTANT: MH_MAGIC_64 HEX: feedfacf CONSTANT: MH_CIGAM_64 HEX: cffaedfe @@ -82,8 +82,8 @@ CONSTANT: MH_NO_REEXPORTED_DYLIBS HEX: 100000 CONSTANT: MH_PIE HEX: 200000 STRUCT: load_command - { cmd uint32_t } - { cmdsize uint32_t } ; + { cmd uint } + { cmdsize uint } ; CONSTANT: LC_REQ_DYLD HEX: 80000000 @@ -124,35 +124,35 @@ CONSTANT: LC_DYLD_INFO HEX: 22 CONSTANT: LC_DYLD_INFO_ONLY HEX: 80000022 UNION-STRUCT: lc_str - { offset uint32_t } + { offset uint } { ptr char* } ; STRUCT: segment_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { segname char[16] } - { vmaddr uint32_t } - { vmsize uint32_t } - { fileoff uint32_t } - { filesize uint32_t } + { vmaddr uint } + { vmsize uint } + { fileoff uint } + { filesize uint } { maxprot vm_prot_t } { initprot vm_prot_t } - { nsects uint32_t } - { flags uint32_t } ; + { nsects uint } + { flags uint } ; STRUCT: segment_command_64 - { cmd uint32_t } - { cmdsize uint32_t } - { segname char[16] } - { vmaddr uint64_t } - { vmsize uint64_t } - { fileoff uint64_t } - { filesize uint64_t } - { maxprot vm_prot_t } - { initprot vm_prot_t } - { nsects uint32_t } - { flags uint32_t } ; - + { cmd uint } + { cmdsize uint } + { segname char[16] } + { vmaddr ulonglong } + { vmsize ulonglong } + { fileoff ulonglong } + { filesize ulonglong } + { maxprot vm_prot_t } + { initprot vm_prot_t } + { nsects uint } + { flags uint } ; + CONSTANT: SG_HIGHVM HEX: 1 CONSTANT: SG_FVMLIB HEX: 2 CONSTANT: SG_NORELOC HEX: 4 @@ -161,29 +161,29 @@ CONSTANT: SG_PROTECTED_VERSION_1 HEX: 8 STRUCT: section { sectname char[16] } { segname char[16] } - { addr uint32_t } - { size uint32_t } - { offset uint32_t } - { align uint32_t } - { reloff uint32_t } - { nreloc uint32_t } - { flags uint32_t } - { reserved1 uint32_t } - { reserved2 uint32_t } ; + { addr uint } + { size uint } + { offset uint } + { align uint } + { reloff uint } + { nreloc uint } + { flags uint } + { reserved1 uint } + { reserved2 uint } ; STRUCT: section_64 - { sectname char[16] } - { segname char[16] } - { addr uint64_t } - { size uint64_t } - { offset uint32_t } - { align uint32_t } - { reloff uint32_t } - { nreloc uint32_t } - { flags uint32_t } - { reserved1 uint32_t } - { reserved2 uint32_t } - { reserved3 uint32_t } ; + { sectname char[16] } + { segname char[16] } + { addr ulonglong } + { size ulonglong } + { offset uint } + { align uint } + { reloff uint } + { nreloc uint } + { flags uint } + { reserved1 uint } + { reserved2 uint } + { reserved3 uint } ; CONSTANT: SECTION_TYPE HEX: 000000ff CONSTANT: SECTION_ATTRIBUTES HEX: ffffff00 @@ -242,205 +242,205 @@ CONSTANT: SEG_IMPORT "__IMPORT" STRUCT: fvmlib { name lc_str } - { minor_version uint32_t } - { header_addr uint32_t } ; + { minor_version uint } + { header_addr uint } ; STRUCT: fvmlib_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { fvmlib fvmlib } ; STRUCT: dylib { name lc_str } - { timestamp uint32_t } - { current_version uint32_t } - { compatibility_version uint32_t } ; + { timestamp uint } + { current_version uint } + { compatibility_version uint } ; STRUCT: dylib_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { dylib dylib } ; STRUCT: sub_framework_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { umbrella lc_str } ; STRUCT: sub_client_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { client lc_str } ; STRUCT: sub_umbrella_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { sub_umbrella lc_str } ; STRUCT: sub_library_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { sub_library lc_str } ; STRUCT: prebound_dylib_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { name lc_str } - { nmodules uint32_t } + { nmodules uint } { linked_modules lc_str } ; STRUCT: dylinker_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { name lc_str } ; STRUCT: thread_command - { cmd uint32_t } - { cmdsize uint32_t } ; + { cmd uint } + { cmdsize uint } ; STRUCT: routines_command - { cmd uint32_t } - { cmdsize uint32_t } - { init_address uint32_t } - { init_module uint32_t } - { reserved1 uint32_t } - { reserved2 uint32_t } - { reserved3 uint32_t } - { reserved4 uint32_t } - { reserved5 uint32_t } - { reserved6 uint32_t } ; + { cmd uint } + { cmdsize uint } + { init_address uint } + { init_module uint } + { reserved1 uint } + { reserved2 uint } + { reserved3 uint } + { reserved4 uint } + { reserved5 uint } + { reserved6 uint } ; STRUCT: routines_command_64 - { cmd uint32_t } - { cmdsize uint32_t } - { init_address uint64_t } - { init_module uint64_t } - { reserved1 uint64_t } - { reserved2 uint64_t } - { reserved3 uint64_t } - { reserved4 uint64_t } - { reserved5 uint64_t } - { reserved6 uint64_t } ; + { cmd uint } + { cmdsize uint } + { init_address ulonglong } + { init_module ulonglong } + { reserved1 ulonglong } + { reserved2 ulonglong } + { reserved3 ulonglong } + { reserved4 ulonglong } + { reserved5 ulonglong } + { reserved6 ulonglong } ; STRUCT: symtab_command - { cmd uint32_t } - { cmdsize uint32_t } - { symoff uint32_t } - { nsyms uint32_t } - { stroff uint32_t } - { strsize uint32_t } ; + { cmd uint } + { cmdsize uint } + { symoff uint } + { nsyms uint } + { stroff uint } + { strsize uint } ; STRUCT: dysymtab_command - { cmd uint32_t } - { cmdsize uint32_t } - { ilocalsym uint32_t } - { nlocalsym uint32_t } - { iextdefsym uint32_t } - { nextdefsym uint32_t } - { iundefsym uint32_t } - { nundefsym uint32_t } - { tocoff uint32_t } - { ntoc uint32_t } - { modtaboff uint32_t } - { nmodtab uint32_t } - { extrefsymoff uint32_t } - { nextrefsyms uint32_t } - { indirectsymoff uint32_t } - { nindirectsyms uint32_t } - { extreloff uint32_t } - { nextrel uint32_t } - { locreloff uint32_t } - { nlocrel uint32_t } ; + { cmd uint } + { cmdsize uint } + { ilocalsym uint } + { nlocalsym uint } + { iextdefsym uint } + { nextdefsym uint } + { iundefsym uint } + { nundefsym uint } + { tocoff uint } + { ntoc uint } + { modtaboff uint } + { nmodtab uint } + { extrefsymoff uint } + { nextrefsyms uint } + { indirectsymoff uint } + { nindirectsyms uint } + { extreloff uint } + { nextrel uint } + { locreloff uint } + { nlocrel uint } ; CONSTANT: INDIRECT_SYMBOL_LOCAL HEX: 80000000 CONSTANT: INDIRECT_SYMBOL_ABS HEX: 40000000 STRUCT: dylib_table_of_contents - { symbol_index uint32_t } - { module_index uint32_t } ; + { symbol_index uint } + { module_index uint } ; STRUCT: dylib_module - { module_name uint32_t } - { iextdefsym uint32_t } - { nextdefsym uint32_t } - { irefsym uint32_t } - { nrefsym uint32_t } - { ilocalsym uint32_t } - { nlocalsym uint32_t } - { iextrel uint32_t } - { nextrel uint32_t } - { iinit_iterm uint32_t } - { ninit_nterm uint32_t } - { objc_module_info_addr uint32_t } - { objc_module_info_size uint32_t } ; + { module_name uint } + { iextdefsym uint } + { nextdefsym uint } + { irefsym uint } + { nrefsym uint } + { ilocalsym uint } + { nlocalsym uint } + { iextrel uint } + { nextrel uint } + { iinit_iterm uint } + { ninit_nterm uint } + { objc_module_info_addr uint } + { objc_module_info_size uint } ; STRUCT: dylib_module_64 - { module_name uint32_t } - { iextdefsym uint32_t } - { nextdefsym uint32_t } - { irefsym uint32_t } - { nrefsym uint32_t } - { ilocalsym uint32_t } - { nlocalsym uint32_t } - { iextrel uint32_t } - { nextrel uint32_t } - { iinit_iterm uint32_t } - { ninit_nterm uint32_t } - { objc_module_info_size uint32_t } - { objc_module_info_addr uint64_t } ; + { module_name uint } + { iextdefsym uint } + { nextdefsym uint } + { irefsym uint } + { nrefsym uint } + { ilocalsym uint } + { nlocalsym uint } + { iextrel uint } + { nextrel uint } + { iinit_iterm uint } + { ninit_nterm uint } + { objc_module_info_size uint } + { objc_module_info_addr ulonglong } ; STRUCT: dylib_reference - { isym_flags uint32_t } ; + { isym_flags uint } ; STRUCT: twolevel_hints_command - { cmd uint32_t } - { cmdsize uint32_t } - { offset uint32_t } - { nhints uint32_t } ; + { cmd uint } + { cmdsize uint } + { offset uint } + { nhints uint } ; STRUCT: twolevel_hint - { isub_image_itoc uint32_t } ; + { isub_image_itoc uint } ; STRUCT: prebind_cksum_command - { cmd uint32_t } - { cmdsize uint32_t } - { cksum uint32_t } ; + { cmd uint } + { cmdsize uint } + { cksum uint } ; STRUCT: uuid_command - { cmd uint32_t } - { cmdsize uint32_t } - { uuid uint8_t[16] } ; + { cmd uint } + { cmdsize uint } + { uuid uchar[16] } ; STRUCT: rpath_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { path lc_str } ; STRUCT: linkedit_data_command - { cmd uint32_t } - { cmdsize uint32_t } - { dataoff uint32_t } - { datasize uint32_t } ; + { cmd uint } + { cmdsize uint } + { dataoff uint } + { datasize uint } ; STRUCT: encryption_info_command - { cmd uint32_t } - { cmdsize uint32_t } - { cryptoff uint32_t } - { cryptsize uint32_t } - { cryptid uint32_t } ; + { cmd uint } + { cmdsize uint } + { cryptoff uint } + { cryptsize uint } + { cryptid uint } ; STRUCT: dyld_info_command - { cmd uint32_t } - { cmdsize uint32_t } - { rebase_off uint32_t } - { rebase_size uint32_t } - { bind_off uint32_t } - { bind_size uint32_t } - { weak_bind_off uint32_t } - { weak_bind_size uint32_t } - { lazy_bind_off uint32_t } - { lazy_bind_size uint32_t } - { export_off uint32_t } - { export_size uint32_t } ; + { cmd uint } + { cmdsize uint } + { rebase_off uint } + { rebase_size uint } + { bind_off uint } + { bind_size uint } + { weak_bind_off uint } + { weak_bind_size uint } + { lazy_bind_off uint } + { lazy_bind_size uint } + { export_off uint } + { export_size uint } ; CONSTANT: REBASE_TYPE_POINTER 1 CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32 2 @@ -493,20 +493,20 @@ CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION HEX: 08 CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS HEX: 10 STRUCT: symseg_command - { cmd uint32_t } - { cmdsize uint32_t } - { offset uint32_t } - { size uint32_t } ; + { cmd uint } + { cmdsize uint } + { offset uint } + { size uint } ; STRUCT: ident_command - { cmd uint32_t } - { cmdsize uint32_t } ; + { cmd uint } + { cmdsize uint } ; STRUCT: fvmfile_command - { cmd uint32_t } - { cmdsize uint32_t } + { cmd uint } + { cmdsize uint } { name lc_str } - { header_addr uint32_t } ; + { header_addr uint } ; ! machine.h CONSTANT: CPU_STATE_MAX 4 @@ -670,30 +670,30 @@ CONSTANT: FAT_MAGIC HEX: cafebabe CONSTANT: FAT_CIGAM HEX: bebafeca STRUCT: fat_header - { magic uint32_t } - { nfat_arch uint32_t } ; + { magic uint } + { nfat_arch uint } ; STRUCT: fat_arch { cputype cpu_type_t } { cpusubtype cpu_subtype_t } - { offset uint32_t } - { size uint32_t } - { align uint32_t } ; + { offset uint } + { size uint } + { align uint } ; ! nlist.h STRUCT: nlist - { n_strx int32_t } - { n_type uint8_t } - { n_sect uint8_t } - { n_desc int16_t } - { n_value uint32_t } ; + { n_strx int } + { n_type uchar } + { n_sect uchar } + { n_desc short } + { n_value uint } ; STRUCT: nlist_64 - { n_strx uint32_t } - { n_type uint8_t } - { n_sect uint8_t } - { n_desc uint16_t } - { n_value uint64_t } ; + { n_strx uint } + { n_type uchar } + { n_sect uchar } + { n_desc ushort } + { n_value ulonglong } ; CONSTANT: N_STAB HEX: e0 CONSTANT: N_PEXT HEX: 10 @@ -750,24 +750,24 @@ CONSTANT: SYMDEF "__.SYMDEF" CONSTANT: SYMDEF_SORTED "__.SYMDEF SORTED" STRUCT: ranlib - { ran_strx uint32_t } - { ran_off uint32_t } ; + { ran_strx uint } + { ran_off uint } ; ! reloc.h STRUCT: relocation_info - { r_address int32_t } - { r_symbolnum_pcrel_length_extern_type uint32_t } ; + { r_address int } + { r_symbolnum_pcrel_length_extern_type uint } ; CONSTANT: R_ABS 0 CONSTANT: R_SCATTERED HEX: 80000000 STRUCT: scattered_relocation_info_big_endian - { r_scattered_pcrel_length_type_address uint32_t } - { r_value int32_t } ; + { r_scattered_pcrel_length_type_address uint } + { r_value int } ; STRUCT: scattered_relocation_info_little_endian - { r_address_type_length_pcrel_scattered uint32_t } - { r_value int32_t } ; + { r_address_type_length_pcrel_scattered uint } + { r_value int } ; C-ENUM: reloc_type_generic GENERIC_RELOC_VANILLA From 3d4dadffe2728c8de93cc1c0af4e4e9246434246 Mon Sep 17 00:00:00 2001 From: Erik Charlebois Date: Mon, 12 Apr 2010 00:49:16 -0700 Subject: [PATCH 2/3] Image encoding/decoding of PBM format --- basis/images/pbm/authors.txt | 1 + basis/images/pbm/pbm-tests.factor | 7 + basis/images/pbm/pbm.factor | 85 ++++++ basis/images/pbm/summary.txt | 1 + extra/images/testing/pbm/test.ascii.fig | Bin 0 -> 25659 bytes extra/images/testing/pbm/test.ascii.pbm | 369 +++++++++++++++++++++++ extra/images/testing/pbm/test.binary.fig | Bin 0 -> 25659 bytes extra/images/testing/pbm/test.binary.pbm | Bin 0 -> 3250 bytes 8 files changed, 463 insertions(+) create mode 100644 basis/images/pbm/authors.txt create mode 100644 basis/images/pbm/pbm-tests.factor create mode 100644 basis/images/pbm/pbm.factor create mode 100644 basis/images/pbm/summary.txt create mode 100644 extra/images/testing/pbm/test.ascii.fig create mode 100644 extra/images/testing/pbm/test.ascii.pbm create mode 100644 extra/images/testing/pbm/test.binary.fig create mode 100644 extra/images/testing/pbm/test.binary.pbm diff --git a/basis/images/pbm/authors.txt b/basis/images/pbm/authors.txt new file mode 100644 index 0000000000..6f03a12101 --- /dev/null +++ b/basis/images/pbm/authors.txt @@ -0,0 +1 @@ +Erik Charlebois diff --git a/basis/images/pbm/pbm-tests.factor b/basis/images/pbm/pbm-tests.factor new file mode 100644 index 0000000000..73558cc144 --- /dev/null +++ b/basis/images/pbm/pbm-tests.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: images.testing ; +IN: images.pbm.tests + +"vocab:images/testing/pbm/test.binary.pbm" decode-test +"vocab:images/testing/pbm/test.ascii.pbm" decode-test diff --git a/basis/images/pbm/pbm.factor b/basis/images/pbm/pbm.factor new file mode 100644 index 0000000000..ba27c545cf --- /dev/null +++ b/basis/images/pbm/pbm.factor @@ -0,0 +1,85 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors alien.c-types arrays ascii bit-arrays byte-arrays +combinators continuations grouping images images.loader io +io.encodings.ascii io.encodings.string kernel locals make math +math.functions math.parser sequences specialized-arrays ; +SPECIALIZED-ARRAY: ushort +IN: images.pbm + +SINGLETON: pbm-image +"pbm" pbm-image register-image-class + +number ; + +: read-ascii-bits ( -- ) + read1 { + { CHAR: 1 [ 0 , read-ascii-bits ] } + { CHAR: 0 [ 255 , read-ascii-bits ] } + { f [ ] } + [ drop read-ascii-bits ] + } case ; + +:: read-binary-bits ( width height -- ) + width 8 align 8 / height * read + width 8 align 8 / [| row | + width iota [| n | + n 8 / floor row nth + n 8 mod 7 swap - bit? + [ 0 ] [ 255 ] if , + ] each + ] each ; + +:: write-binary-bits ( bitmap width -- ) + bitmap width [ + width 8 align 255 pad-tail + 8 [ + [ 255 = [ f ] [ t ] if ] { } map-as + >bit-array reverse bit-array>integer + 1array >byte-array write + ] each + ] each ; + +:: read-pbm ( -- image ) + read-token :> type + read-number :> width + read-number :> height + width height * :> npixels + width 8 mod :> leftover + + type { + { "P1" [ [ [ read-ascii-bits ] ignore-errors ] B{ } make ] } + { "P4" [ [ width height read-binary-bits ] B{ } make ] } + } case :> data + + image new + L >>component-order + { width height } >>dim + f >>upside-down? + data >>bitmap + ubyte-components >>component-type ; +PRIVATE> + +M: pbm-image stream>image + drop [ read-pbm ] with-input-stream ; + +M: pbm-image image>stream + drop { + [ drop "P4\n" ascii encode write ] + [ dim>> first number>string " " append ascii encode write ] + [ dim>> second number>string "\n" append ascii encode write ] + [ [ bitmap>> ] [ dim>> first ] bi write-binary-bits ] + } cleave ; diff --git a/basis/images/pbm/summary.txt b/basis/images/pbm/summary.txt new file mode 100644 index 0000000000..4f484f91a8 --- /dev/null +++ b/basis/images/pbm/summary.txt @@ -0,0 +1 @@ +Image loading for PBM image files. diff --git a/extra/images/testing/pbm/test.ascii.fig b/extra/images/testing/pbm/test.ascii.fig new file mode 100644 index 0000000000000000000000000000000000000000..aee805ec6985a325ad215ee428ef13f16dc889c4 GIT binary patch literal 25659 zcmeHO%WmaF5DokfAHkj_KM){7EG8K#gCdqe8rFOQe;T@NclW7hm+jlOK{p`XQ*|D7 zu9Hk=M)2d?>(}2tJ^uRi`q%vO`1SG6&)@u${(XCW|Ka8R?e*{9fBNIg(|13=eER(I z{Pg_g_2vEf`)_}FC?6kJ`zXcA>&5z&TJ`nn{T?n=us*g5E>-X2qxLG`-fz_tD37ha zu5uqBUWzTB=mQR}Jn=9$OJ9lUpG$sRw%8?~*1gpI3EZE+{R#YUpFsUdFTfRkfQeFU zaq_2ywb8~i8)|*T?!1DcioQ6lpk7C8@BQ>AARd&l(B0#=Mjf#p-$cD2dRPn9J$`A` z5&Q8~)C;1AwNTyTmsm$!b4j5dvT!T7B5KIOt>BVF>WEOcf=i01Aq%&H zOAe_cLfr~3DWZlf+zKu^q>c!6E4ZYH3N3Qvnm^LG6T&_dMc*&am}U}G2UW_KRh_^Zj%&RcZvgfzg#-Dh ze&hrhN(t{33_=E+c(y`pEii;(%L03JzWlc(MB2a_%?m{VYZ6-L1jiCr#+5ql^N{@R$Od_Mn>V6-x9+ZwnTN?Mv?1Aveh8lG;~g(ydza;->tE@%UB5|E7TJrH27}G z;%36#E9mHog}`@97B?A-K(RoFAiE3S%~_l$+|8#y2Lo~@!HbN_Bc*Ygv0~vXG;yv! zcie==VZ#0Rq(E25Ktvrk(h`#-Ye1W&vG*M}(j42Ngh3l2LPO7uJjJ2-Btloz({w#I z@&vaCAEC)ts%+1WJYqFWTW&J7pq?Fhz%8JMz!dn!T%`5v$X6^pT-;K3f7^?A|9oqL|?G(w>1f3o6 z?;NyK7^(5S9r|}-^%Q2Rg3c2CyRdNwGYyHmM*ntfo*&EYZ%1WL0Ak5Gg>nw|yM=n)GfrHe?Q$sV2m?rL1B&x3G<9ul5 z$AyUt>MWFWQFR4SIyx2i@+xeMFQd@$MG@9lE{M)GAOXdLbiw31NAaXpk+xS|*Wb2; zaJ_CQWER-)xn%8}{>-6T;KT$~5nFOknwjEu zBfAv{W{x}tTw5jNS}24#<{{+UCc1T;)I}~F zaF3M9d$O1YP@e#4AEn<3o$w^>Cnl7hgGD7=oKuNh#X15LiJq>03Rkvwkg8x(pT xxbvqtjT6^aFKFI8tqvguNF@7h1EdwWEeKpwknz{)AdA7$s=da1N2yA$e*tvWh=KqB literal 0 HcmV?d00001 diff --git a/extra/images/testing/pbm/test.ascii.pbm b/extra/images/testing/pbm/test.ascii.pbm new file mode 100644 index 0000000000..2cf2555793 --- /dev/null +++ b/extra/images/testing/pbm/test.ascii.pbm @@ -0,0 +1,369 @@ +P1 +# CREATOR: GIMP PNM Filter Version 1.1 +160 160 +1111111100000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000111111111111111100000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000011111111111111111000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000111111111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0111111111111111111000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000111111111111111110000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000001111111111111111100000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000011111111 +1111111110000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000111111101111110000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000001011111001010000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000101000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000001111 +1111111111111111111111010000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000011111111111111111111111111111111000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000001111111111111111111111111111111111100 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000111111111111111111 +1111111111111111111000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0111111111111111111111111111111111111111000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000001111111111111111111111111111111111111110000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000011111111111111111111111111111 +1111111111000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000001111111111 +1111111111111111111111111111110000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000111111111111111111111111111111111111111100000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000011111111111111111111111111111111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000111111111111111111111 +1111111111111111111100000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000001 +1111111111111111111111111111111111111111000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000111111111111000000000000000001111111111110000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001111111111110000000000000000011 +1111111111000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000011111111111 +1000000000000000001111111111110000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000001111111111110000000000000000011111111111100000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000011111111111100000000000000000111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000111111111111000000000 +0000000011111111111100000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000001 +1111111111100000000000000000111111111111000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000111111111111000000000000000001111111111110000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001111111111110000000000000000011 +1111111111000000000000000000000000000000000000000000000000000000000000 +0000000000011110100000000000000000000000000000000000000000011111111111 +1000000000000000001111111111110000000000000000000000000000000000000000 +0000000000000000000000000000111111111110000000000000000000000000000000 +0000000001111111111110000000000000000011111111111100000000000000000000 +0000000000000000000000000000000000000000000000111111111111110000000000 +0000000000000000000000000000011111111111100000000000000000111111111111 +0000000000000000000000000000000000000000000000000000000000000001111111 +1111111111100000000000000000000000000000000000000111111111111000000000 +0000000111111111111100000000000000000000000000000000000000000000000000 +0000000000111111111111111111111100000000000000000000000000000000000001 +1111111111100000000000000001111111111110000000000000000000000000000000 +0000000000000000000000000000011111111111111111111111000000000000000000 +0000000000000000001111111111111000000000000000011111111111100000000000 +0000000000000000000000000000000000000000000000011111111111111111111111 +1110000000000000000000000000000000000001111111111100000000000000000111 +1111111110000000000000000000000000000000000000000000000000000000001111 +1111111111111111111111100000000000000000000000000000000000111111111111 +0000000000000000011111111111100000000000000000000000000000000000000000 +0000000000000011111111111111111111111111111000000000000000000000000000 +0000000011111111111100000000000000000111111111110000000000000000000000 +0000000000000000000000000000000011111111111111111111111111111110000000 +0000000000000000000000000000111111111111000000000000000011111111111100 +0000000000000000000000000000000000000000000000000001111111111111111111 +1111111111111000000000000000000000000000000000001111111111110000000000 +0000001111111111110000000000000000000000000000000000000000000000000000 +1111111111111111111111111111111110000000000000000000000000000000000011 +1111111111000000000000000011111111111100000000000000000000000000000000 +0000000000000000000111111111111111111111111111111111110000000000000000 +0000000000000000001111111111110000000000000000111111111111000000000000 +0000000000000000000000000000000000000001111111111111111111111011111111 +1111000000000000000000000000000000000111111111111100000000000000001111 +1111111100000000000000000000000000000000000000000000000000011111111111 +1111110000001111111111110000000000000000000000000000000011111111111110 +0000000000000000111111111111000000000000000000000000000000000000000000 +0000000011111111111111111000000011111111111110000000000000000000000000 +0000011111111111111000000000000000001111111111110000000000000000000000 +0000000000000000000000000000111111111111111000000000011111111111000000 +0000000000000000000000000111111111111110000000000000000011111111111100 +0000000000000000000000000000000000000000000000001111111111111100000000 +0001111111111110000000000000000000000000000011111111111111000000000000 +0000001111111111110000000000000000000000000000000000000000000000000011 +1111111111000000000000011111111111100000000000000000000000000011111111 +1111111100000000000000000011111111111100000000000000000000000000000000 +0000000000000000001111111111100000000000000111111111111000000000000000 +0000000000001111111111111110000000000000000000111111111111000000000000 +0000000000000000000000000000000000000111111111111000000000000001111111 +1111100000000000000000000000000111111111111111000000000000000000001111 +1111111100000000000000000000000000000000000000000000000001111111111110 +0000000000000111111111111000000000000000000000000011111111111111110000 +0000000000000000111111111111000000000000000000000000000000000000000000 +0000000111111111111000000000000001111111111110000000000000000000000001 +1111111111111110000000000000000000001111111111110000000000000000000000 +0000000000000000000000000001111111111110000000000000011111111111110000 +0000000000000000000111111111111111000000000000000000000011111111111100 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000111111111111000000000000000000000111111111111111100000000000000000 +0000001111111111110000000000000000000000000000000000000000000000000111 +1111111110000000000000001111111111110000000000000000000011111111111111 +1100000000000000000000000011111111111100000000000000000000000000000000 +0000000000000000011111111111100000000000000011111111111110000000000000 +0000011111111111111110000000000000000000000000111111111111000000000000 +0000000000000000000000000000000000000111111111111000000000000000011111 +1111111000000000000000000111111111111111100000000000000000000000001111 +1111111100000000000000000000000000000000000000000000000001111111111110 +0000000000000001111111111110000000000000000111111111111111100000000000 +0000000000000000111111111110000000000000000000000000000000000000000000 +0000000111111111111000000000000000011111111111100000000000000001111111 +1111111110000000000000000000000000011111111111110000000000000000000000 +0000000000000000000000000001111111111110000000000000000111111111111000 +0000000000001111111111111111000000000000000000000000000111111111111000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000011111111111110000000000000111111111111111100000000000000000000000 +0000011111111111100000000000000000000000000000000000000000000000000111 +1111111110000000000000000011111111111100000000000011111111111111110000 +0000000000000000000000000111111111111000000000000000000000000000000000 +0000000000000000011111111111100000000000000000111111111111000000000001 +1111111111111100000000000000000000000000000001111111111110000000000000 +0000000000000000000000000000000000000111111111111000000000000000001111 +1111111110000000001111111111111111000000000000000000000000000000011111 +1111111000000000000000000000000000000000000000000000000001111111111110 +0000000000000000011111111111100000000111111111111111100000000000000000 +0000000000000001111111111110000000000000000000000000000000000000000000 +0000000111111111111000000000000000000111111111111000000111111111111111 +1100000000000000000000000000000000011111111111100000000000000000000000 +0000000000000000000000000001111111111110000000000000000001111111111110 +0000011111111111111110000000000000000000000000000000000111111111111000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000000111111111111000011111111111111111000000000000000000000000000000 +0000011111111111100000000000000000000000000000000000000000000000000111 +1111111110000000000000000000111111111111001111111111111111110000000000 +0000000000000000000000000111111111111000000000000000000000000000000000 +0000000000000000011111111111100000000000000000001111111111110111111111 +1111111100000000000000000000000000000000000001111111111110000000000000 +0000000000000000000000000000000000000111111111111000000000000000000011 +1111111111111111111111111111000000000000000000000000000000000000011111 +1111111000000000000000000000000000000000000000000000000001111111111110 +0000000000000000001111111111111111111111111111000000000000000000000000 +0000000000000001111111111110000000000000000000000000000000000000000000 +0000000111111111111000000000000000000001111111111111111111111111100000 +0000000000000000000000000000000000011111111111100000000000000000000000 +0000000000000000000000000001111111111110000000000000000000011111111111 +1111111111111100000000000000000000000000000000000000001111111111110000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000000001111111111111111111111110000000000000000000000000000000000000 +0000111111111111000000000000000000000000000000000000000000000000000111 +1111111110000000000000000000011111111111111111111111000000000000000000 +0000000000000000000000001111111111110000000000000000000000000000000000 +0000000000000000011111111111100000000000000000000111111111111111111111 +0000000000000000000000000000000000000000000011111111111100000000000000 +0000000000000000000000000000000000000111111111111000000000000000000001 +1111111111111111111000000000000000000000000000000000000000000000111111 +1111110000000000000000000000000000000000000000000000000001111111111110 +0000000000000000000111111111111111111100000000000000000000000000000000 +0000000000000011111111111100000000000000000000000000000000000000000000 +0000000111111111111000000000000000000000111111111111111110000000000000 +0000000000000000000000000000000000111111111111000000000000000000000000 +0000000000000000000000000001111111111110000000000000000000001111111111 +1111111000000000000000000000000000000000000000000000001111111111110000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000000000111111111111111000000000000000000000000000000000000000000000 +0000111111111111000000000000000000000000000000000000000000000000000111 +1111111110000000000000000000001111111111111000000000000000000000000000 +0000000000000000000000001111111111110000000000000000000000000000000000 +0000000000000000011111111111100000000000000000000001111111111110000000 +0000000000000000000000000000000000000000000011111111111100000000000000 +0000000000000000000000000000000000000111111111111000000000000000000000 +0011111111110000000000000000000000000000000000000000000000000000111111 +1111110000000000000000000000000000000000000000000000000001111111111110 +0000000000000000000000011111110000001011111111111110100000000000000000 +0000000000000011111111111100000000000000000000000000000000000000000000 +0000000111111111111000000000000000000000000000101010111111111111111111 +1111111111000000000000000000000000111111111111000000000000000000000000 +0000000000000000000000000001111111111110000000000000000000000000001111 +1111111111111111111111111111111100000000000000000000001111111111110000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000000101111111111111111111111111111111111111111111100000000000000000 +0000111111111111000000000000000000000000000000000000000000000000000111 +1111111110000000000000101111111111111111111111111111111111111111111111 +1110000000000000000000001111111111110000000000000000000000000000000000 +0000000000000000011111111111100000101111111111111111111111111111111111 +1111111111111111111111110000000000000000000011111111111100000000000000 +0000000000000000000000000000000000000111111111111000111111111111111111 +1111111111111111111111111111111111111111111100000000000000000000111111 +1111110000000000000000000000000000000000000000000000000001111111111110 +0011111111111111111111111111111111111111111111111111111111111111000000 +0000000000000011111111111100000000000000000000000000000000000000000000 +0000000111111111111111111111111111111111111111111111111111111111111111 +1111111111111100000000000000000000111111111111000000000000000000000000 +0000000000000000000000000001111111111111111111111111111111111111111111 +1111111111111111111111111111111110000000000000000000011111111111110000 +0000000000000000000000000000000000000000000000011111111111111111111111 +1111111111111111111111111111111111111111111111111111100000000000000000 +0001111111111110000000000000000000000000000000000000000000000000000111 +1111111111111111111111111111111111111111111111111111111111111111111111 +1100000000000000000000011111111111100000000000000000000000000000000000 +0000000000000000011111111111111111111111111111111111111111111111111111 +1111111111111111111100000000000000000000000111111111111000000000000000 +0000000000000000000000000000000000000111111111111111111111111111111111 +1111111111111111111111111111111111111000000000000000000000000011111111 +1111100000000000000000000000000000000000000000000000000001111111111111 +1111111111111111111111111111111111111111111111111111110000000000000000 +0000000000011111111111110000000000000000000000000000000000000000000000 +0000000111111111111111111111111111110100000000111111111111111111111111 +1100000000000000000000000000000111111111111100000000000000000000000000 +0000000000000000000000000001111111111111111111111111010000000000011111 +1111111111111111111000000000000000000000000000000111111111111111000000 +0000000000000000000000000000000000000000000000111111111111111111111000 +0000000000000111111111111111111111111000000000000000000000000000000001 +1111111111111000000000000000000000000000000000000000000000000000001111 +1111111111111110000000000000000111111111111111111111111000000000000000 +0000000000000000011111111111111110000000000000000000000000000000000000 +0000000000000000111111111111111100000000000000000111111111111111111111 +1111000000000000000000000000000000011111111111111111000000000000000000 +0000000000000000000000000000000000001111111111111110000000000000000011 +1111111111111111111110000000000000000000000000000000001111111111111111 +1000000000000000000000000000000000000000000000000000000001111111111110 +0000000000000000001111111111111111111101000000000000000000000000000000 +0001111111111111111110000000000000000000000000000000000000000000000000 +0000000111111111110000000000000000000111111111111111111110000000000000 +0000000000000000000001111111111111111111000000000000000000000000000000 +0000000000000000000000000000111111111000000000000000000011111111111111 +1111110000000000000000000000000000000000011111111111111111100000000000 +0000000000000000000000000000000000000000000000000111111100000000000000 +0000001111111111111111100000000000000000000000000000000000011111111111 +1111111100000000000000000000000000000000000000000000000000000000000000 +0010100000000000000000000011111111111111110000000000000000000000000000 +0000000011111111111111111110000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000111111111111111000000000 +0000000000000000000000000011111111111111111110000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000001111 +1111111110000000000000000000000000000000000000111111111111111111100000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000111111111111000000000000000000000000000000000000011111 +1111111111110000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000001111111111110000000000000000000000 +0000000000000011111111111111111000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000011111111111100 +0000000000000000000000000000000001111111111111111100000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000001111111111110000000000000000000000000000000000111111111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000001111111111100000000000000000000000000000000 +1111111111111111110000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000011111111111100000000000 +0000000000000000000111111111111111111000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000111 +1111111110000000000000000000000000000111111111111111111100000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000011111111111110000000000000000000000000011111111111111 +1111000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000011111111111100000000000000000000 +0000111111111111111111110000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000111111111111 +1000000000000000000000011111111111111111110000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000011111111111110000000000000000000011111111111111111111000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000011111111111110000000000000000000111111111 +1111111111100000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000111111111111100000000 +0000000001111111111111111111100000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +1111111111110000000000000000111111111111111111110000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000011111111111110000000000000011111111111111111110000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000011111111111100000000000001111 +1111111111111110000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000111111111 +1111000000000001111111111111111110000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000011111111111110000000000111111111111111111000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000011111111111110000000011111111111111111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000111111111111110000 +0011111111111111111100000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0001111111111111000011111111111111111100000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000001111111111111100111111111111111110000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000011111111111111111111111111 +1111100000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000011111 +1111111111111111111111110000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000001111111111111111111111111111100000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000001111111111111111111111111110000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000011111111111111 +1111111111110000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000111111111111111111111110000000000000000000000000000000000000000 +0000000000000000000000000101000000101000000000000000000000000000000000 +0000000000000000000000000000111111111111111111111000000000000000000000 +0000000000000000000000000000000000000000000011111100111111000000000000 +0000000000000000000000000000000000000000000000000111111111111111111110 +0000000000000000000000000000000000000000000000000000000000000001111111 +1111111110000000000000000000000000000000000000000000000000000000000000 +1111111111111111100000000000000000000000000000000000000000000000000000 +0000000000001111111111111111110000000000000000000000000000000000000000 +0000000000000000000001111111111111111000000000000000000000000000000000 +0000000000000000000000000000000011111111111111111100000000000000000000 +0000000000000000000000000000000000000000011111111111111000000000000000 +0000000000000000000000000000000000000000000000000001111111111111111111 +1000000000000000000000000000000000000000000000000000000000000001111111 +1111000000000000000000000000000000000000000000000000000000000000000000 +0111111111111111111100000000000000000000000000000000000000000000000000 +0000000000000001111101000000000000000000000000000000000000000000000000 +0000000000000000000000111111111111111111000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000011111111 \ No newline at end of file diff --git a/extra/images/testing/pbm/test.binary.fig b/extra/images/testing/pbm/test.binary.fig new file mode 100644 index 0000000000000000000000000000000000000000..aee805ec6985a325ad215ee428ef13f16dc889c4 GIT binary patch literal 25659 zcmeHO%WmaF5DokfAHkj_KM){7EG8K#gCdqe8rFOQe;T@NclW7hm+jlOK{p`XQ*|D7 zu9Hk=M)2d?>(}2tJ^uRi`q%vO`1SG6&)@u${(XCW|Ka8R?e*{9fBNIg(|13=eER(I z{Pg_g_2vEf`)_}FC?6kJ`zXcA>&5z&TJ`nn{T?n=us*g5E>-X2qxLG`-fz_tD37ha zu5uqBUWzTB=mQR}Jn=9$OJ9lUpG$sRw%8?~*1gpI3EZE+{R#YUpFsUdFTfRkfQeFU zaq_2ywb8~i8)|*T?!1DcioQ6lpk7C8@BQ>AARd&l(B0#=Mjf#p-$cD2dRPn9J$`A` z5&Q8~)C;1AwNTyTmsm$!b4j5dvT!T7B5KIOt>BVF>WEOcf=i01Aq%&H zOAe_cLfr~3DWZlf+zKu^q>c!6E4ZYH3N3Qvnm^LG6T&_dMc*&am}U}G2UW_KRh_^Zj%&RcZvgfzg#-Dh ze&hrhN(t{33_=E+c(y`pEii;(%L03JzWlc(MB2a_%?m{VYZ6-L1jiCr#+5ql^N{@R$Od_Mn>V6-x9+ZwnTN?Mv?1Aveh8lG;~g(ydza;->tE@%UB5|E7TJrH27}G z;%36#E9mHog}`@97B?A-K(RoFAiE3S%~_l$+|8#y2Lo~@!HbN_Bc*Ygv0~vXG;yv! zcie==VZ#0Rq(E25Ktvrk(h`#-Ye1W&vG*M}(j42Ngh3l2LPO7uJjJ2-Btloz({w#I z@&vaCAEC)ts%+1WJYqFWTW&J7pq?Fhz%8JMz!dn!T%`5v$X6^pT-;K3f7^?A|9oqL|?G(w>1f3o6 z?;NyK7^(5S9r|}-^%Q2Rg3c2CyRdNwGYyHmM*ntfo*&EYZ%1WL0Ak5Gg>nw|yM=n)GfrHe?Q$sV2m?rL1B&x3G<9ul5 z$AyUt>MWFWQFR4SIyx2i@+xeMFQd@$MG@9lE{M)GAOXdLbiw31NAaXpk+xS|*Wb2; zaJ_CQWER-)xn%8}{>-6T;KT$~5nFOknwjEu zBfAv{W{x}tTw5jNS}24#<{{+UCc1T;)I}~F zaF3M9d$O1YP@e#4AEn<3o$w^>Cnl7hgGD7=oKuNh#X15LiJq>03Rkvwkg8x(pT xxbvqtjT6^aFKFI8tqvguNF@7h1EdwWEeKpwknz{)AdA7$s=da1N2yA$e*tvWh=KqB literal 0 HcmV?d00001 diff --git a/extra/images/testing/pbm/test.binary.pbm b/extra/images/testing/pbm/test.binary.pbm new file mode 100644 index 0000000000000000000000000000000000000000..3a49dd760304edab6e9a9bc0e3cfefb76e6929cd GIT binary patch literal 3250 zcmdUxzit#U5XODlVx>#5O=`Rn4Wd9qLKHL(LVzd&QG{qyr9eU;1!}yH!lUe?Y)MCo z6jxkgzHj_zZSP7%RAA|J_RpWkV=_b<*~K7ar2>{xKn$t8A=wn|0k??Jafod%cBH=MR?baEbmi zVw}6KU3O>{Lxi0hOW2T2C2Ps9{*HAkYuA`w(cPKdDpmWZ|5C{Y0 zhgPshTnqL~O3~(Q-wDGBqpowij!(s=U{gz7$;OsCMr>Y-6N7a*yNzs0IvtqCx#HT$ z%nIXsR_I2hEF8)hyBh|gVvR#m3O2zXBs618*BaAIW5WZX!9VJRwILsY(PbDIDD%22 zxQAiJcva*nDA|VYmAaj{Trj&6_bR5P8gqMgC+<}`E8gZhvv*5&<6o*mhuY$qDkf!~ zGwm4BQU@lFmoG3SR}XBWu43Z~BdT;#6j& zmKe^qU<00=O2;hW*-2}UjW3RjUE{{^%J>TbrNQCx-q8}D9ccy~yki{s3xN(VAN*mh zXHRPDbnp z^mJ~1P%(Op-N#uLeooW2G9zb#E1Ase@bKr%(q1ReNy3&+=)x5x%*IH0spKI=z%zr` zV2ja@0z(Y52naM_x`+VB>&(Y`w#Yj6vCi2rCnI3oLAWx^BJ}VEx7D^}RRnm3Db+ Date: Mon, 12 Apr 2010 01:15:49 -0700 Subject: [PATCH 3/3] Fix indentation in read-token --- basis/images/pbm/pbm.factor | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/basis/images/pbm/pbm.factor b/basis/images/pbm/pbm.factor index ba27c545cf..7db7ccedc6 100644 --- a/basis/images/pbm/pbm.factor +++ b/basis/images/pbm/pbm.factor @@ -1,10 +1,9 @@ ! Copyright (C) 2010 Erik Charlebois. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien.c-types arrays ascii bit-arrays byte-arrays -combinators continuations grouping images images.loader io -io.encodings.ascii io.encodings.string kernel locals make math -math.functions math.parser sequences specialized-arrays ; -SPECIALIZED-ARRAY: ushort +USING: accessors arrays ascii bit-arrays byte-arrays combinators +continuations grouping images images.loader io io.encodings.ascii +io.encodings.string kernel locals make math math.functions math.parser +sequences ; IN: images.pbm SINGLETON: pbm-image @@ -12,12 +11,14 @@ SINGLETON: pbm-image height width height * :> npixels width 8 mod :> leftover - + type { { "P1" [ [ [ read-ascii-bits ] ignore-errors ] B{ } make ] } { "P4" [ [ width height read-binary-bits ] B{ } make ] } } case :> data - + image new L >>component-order { width height } >>dim