Add pattern/ directory to the corpus

R=thestig@chromium.org
TBR=thestig@chromium.org

Review URL: https://codereview.chromium.org/1024643003
diff --git a/fx/pattern/2_color_tiling.pdf b/fx/pattern/2_color_tiling.pdf
new file mode 100644
index 0000000..ad17f8b
--- /dev/null
+++ b/fx/pattern/2_color_tiling.pdf
@@ -0,0 +1,182 @@
+%PDF-1.7

+

+1 0 obj

+<<

+  /Type /Catalog

+  /Pages 2 0 R

+>>

+endobj

+

+2 0 obj

+<<

+  /Type /Pages

+  /Kids [5 0 R]

+  /Count 1

+>>

+endobj

+

+5 0 obj					% Page object

+<<

+  /Type /Page

+  /Parent 2 0 R

+  /Resources 10 0 R

+  /Contents 30 0 R

+  /MediaBox [-30 -30 225 225]

+>>

+endobj

+

+10 0 obj				% Resource dictionary for page

+<<

+  /Pattern <</P1 15 0 R>>

+>>

+endobj

+

+15 0 obj				% Pattern definition

+<<

+  /Type /Pattern

+  /PatternType 1			% Tiling pattern

+  /PaintType 1				% Colored

+  /TilingType 2

+  /BBox [0 0 100 100]

+  /XStep 100

+  /YStep 100

+  /Resources 16 0 R

+  /Matrix [1 0 0 1 0 0]

+  /Length 0

+>>

+stream

+

+%q

+ % 100 0 0 100 0 0 cm

+ % /Img1 Do

+%Q

+

+q

+BT					% Begin text object

+  /F1 1 Tf				% Set text font and size

+  64 0 0 64 7.1771 2.4414 Tm		% Set text matrix

+  0 Tc					% Set character spacing

+  0 Tw					% Set word spacing

+  1.0 0.0 0.0 rg			% Set nonstroking color to red

+  (\001) Tj				% Show spade glyph

+  0.7478 -0.007 TD			% Move text position

+  0.0 1.0 0.0 rg			% Set nonstroking color to green

+  (\002) Tj				% Show heart glyph

+  -0.7323 0.7813 TD			% Move text position

+  0.0 0.0 1.0 rg			% Set nonstroking color to blue

+  (\003) Tj				% Show diamond glyph

+  0.6913 0.007 TD			% Move text position

+  0.0 0.0 0.0 rg			% Set nonstroking color to black

+  (\004) Tj				% Show club glyph

+ET					% End text object

+Q

+

+

+

+endstream

+endobj

+

+16 0 obj				% Resource dictionary for pattern

+<<

+  /Font <</F1 20 0 R>>

+  /XObject <</Img1 19 0 R>>

+>>

+endobj

+

+19 0 obj

+<<

+  /Subtype /Image

+  /Length 0

+  /Filter [/ASCIIHexDecode/DCTDecode]

+  /BitsPerComponent 8

+  /ColorSpace /DeviceRGB

+  /Width 150

+  /Height 150

+  /Type /XObject

+>>

+stream

+FFD8FFE000104A46494600010101004800480000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F171816141812141514FFDB00430103040405040509050509140D0B0D1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414FFC00011080096009603012200021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00FB4D1D5D959BE4477DFF007BFCFCCFF3D3BE67FBCCDB1FEF7CBB3FDFA13E76DCADB377FAAFEE7CB46F8B67CB2FC8BFC69FDDA006FDF8B6FDF67FBC88BFF7C27FDF147CBF799BF8BE674FFD9287DAED32FDF7F97727F06FFF006FFCFF000539FF00D997FDDFE1FF00BE2801BF326F55FBFF007367FB6DF713FEF8A3EFFCBFBD7F377A33EDF9E57A3E5DBF36DD9F36DFF73FFB3AB09F244F2BAEC4FB89FC09FEE5003A6DA9FEB76A3EEFB9BB7BBFF73E4A89E67F9F6CBB3F83FBFF00EFD1BDB7EEDCA89BBFE796C4A8BF876B37CFB55F622FCF400ED9FDDF91FEE2EFFF00965FF00A2DA6D8E9B7F87FB8DBF6D1F3BBBF95B9DFE7F9D3F869AEEAFF002FCBB17FEF844D94016AE5F7DAA4BF7F6FCFF7BE45A8A1F91F6B6DD8BFECFC9F73FCA53EE5F65BC5BBE774F9FE75FF00D92ABECD92BED6FDEFDC5776F9FF00DFFF00D0E800DFF245133FFB6CFB763A7F7DE9C9F736AFC8FBBEE6DDFB1BFDFF00FBEE9FF2CDFEABE4F37EEFF7F67F94A67CA88BFBD5F9FEE7FECFF768026DFF00B8FDEFF137F1AFDE4FF73FDFAAFF007DF737F1FF00E3FF00EE6DA74CEBB1FE7D89FDC7FE1FF80FFE3D47CBE6BB7CC9FF00A35FFCFC94006C5F9F6EE7D9F23A6DFF00BE12ADCDBD1515B73FCC89B13F89EA2B3467953F7ABF2FF1A7CFB3FBF45CBA6E4445F9FF00D8FBEBFEC500578C3C8BB912490F76508AB452160AD9312BB0F976B26FDBFF00005FBB45003DDFE77FBC8FB7E6FBBBF6D0EEC8FF0037C9B7FBEDF776FF0094A362FCE8ADB37FFECDFDFA6EFDE88CBF71FEEEC5FF00BE3FDEA007BFC9B3CDDCFF002FF1BEC776FF0071699F3227CBB513E44F9DA9DB37AEC556DAFF00DC5D9BD7FDB7A9921F25774BB7E5FF003FFA1D00321877B2CBF33EEFF6BE76FEE7FBB45CBFEF7E55DEE9F27F7FFEF8A961DD33BFDE7FF73FF1C4AAF36E476FFD917F83F813650037F8DFE55DFF0073E76DF4E475DBF2FCEABB9F7EDF937D35D367F0B22EDDFB376CD94EDEDE6EEF9B7A7CFF0022FDCFEE7FEC9F250037F8515B6BECFE0FBFB3FF00B2A72279CFBB76CDFF00C6FF00222FFC028446DFB5776C5F97FD8D9FEDD3DFF72BB57EFB6C4DFF002FC9B680099F7BEE5FE16DFF003FCFFF00036A89137A795FC0FF0026F4FEE7F1BD0EEDB7E556D9B77FCFF73E6FF63F8A9EDBD5FF00BEFF00DCDBF3B7F728011DF7EFDFFC7B373FF02FFB147EF5D3E5F37E654FF629A814AE1B9897EE33A7C94F1FBC7393E674EBFBC3CAFCDC0A004477FF00965F3A7DFD89FC5FDCDED4D4DBF26D557FE0DFBDBE6A170090C3CC718E18073F97E1DE8746F37EF33BBFC9F3FF009FBBF7E802D59FDF7DDFC1F3B2237F06CFEFD36F11936237DCFB9F7BE4FF00BE28B37D92ED6F91376FD9FE7FE01562E6DB7FDEDDFDC677FBFB7FB940145429E1A26F287DCDBF2AD14C910CCD8317CC3FE99EED9FECEEEF45005BFB1ABBFC9F73E6FF0071168F26245DCD2EFF00EF3BB7DFFF00EC6ABEF9665FBCDF737EF75DFB5287DDF68DDB5BF8DFEEEF7FF3F25004CF36CDED12AA7F1B3BBEFDB50BEFDFFEE7C9BFFB9FFD953536EE4F37EFA6DFE1DFFEFD1F33FF0017CECBBFFB9B775004B0BFEF51BE6FE37F9DB7D132792DBBEE26FF00EED45BF7B6FF00E065FB9B7E445FFECEAC25E3429B772FC9FED50056D8C9BFE5D8E9F3BFCBBF6FFC0EA6F25BE7DDF27CDFF2D7EFFF00BF4F7B9D9E57CAA9FEFF00F9FF00C7299BE5FE2764FE3FF77E4A001DE2F9D576FF00C03E7F93F8FF00D95A887EF0EE93F79FDEF97E4FF3FF00C5D1FC68AAABFDCFF77F8E8CEE07764A33E5B712831DC654E3F2A00507CC8F74ACB9621D9B3923AE3FC69F6AC5645C2A84C72A47017031C7BE40FCEA265E03E16338DAAC78C81819C74E9D2A7862692566556DAAC0BE4E0FD00EFD734004914A242C102FCDC74DABCE7713F4EDD3A530ABCE4336D6070CB18E1471D7F21FAD682C4AEA7C9600742AC70EDEBC54723AC1092D1B045193C6E20D0051B989A381D0B8E9BD989C640E849EC339FBB8E869A091C9DB9FEE1382BBBDA9E7796DD2464310182B0DC07A67D3D7F1A40C42F0E52351BE4923CB316C73C9E49E33F8D002A6F4745F993637F036CFFECAADC3326D4FE0FF006F6D52F9BEEFCA9F2FFBFB3FDBA13E47DDB551FF00DB6D8FB3F8280343C86B8E238C4CCBF7955995568AA90CCDBC7DE7F97E40AFBB0B45001F6979BE5DCBFF00006DEEBFFB2AD3E17FB4AED68BFDBFB9B3FF00DAA85F77F132EFDDBFE7A1137FCDF7DDFF008FEFFF00E39F77FF00D8A0026FDCEFDEDF737FCFB767DDFF003FF8FD0FF75DB6AFF0FC9FC1FF00D953EE7E77FBACEFB767FB74C77F99F76DFEFB7CDFF8E7C94007DC7DBF2FFBFF00737B2FFB14A9FBEF2976FC8FF3AEF5FE0A67DCF95777F7367DCDDFEE253936FF00D327DDF7FE6FF3F2D0009F3BEE566477FE3FE3FF00BEDA9BF27C8CABF3CBF3AEC5F9DFFF00B1A1DFFBCDBF723EDF3BE7FF003F7280ACE59516500B2C4EFC8CE17195C76A0074811CB465B7119273C83EE38FEA2962B73222A91B51D48193D81E3D7F9D4C238EDD3F7911F98E5549FBC73D7F9523C42EC36F60634CFC8785207727D33CFF00DF3400B1804A98D5B731C9763C7E59F6A9C37DA1D56252CC0F55200FCF8FEB50AC925D6217627383B5BE5524F38FCBF9D294749762B8F300E4237CB9F427D8E49FA1A00918C93363CBD922FCB93CD2E42925DD541E0A13C9EFFD6A1BB78902C40E5DB25997EF6C1D7F0ED9F5CD5453BC17424B630D2B1CE0F61F9E07E140125C47F64DCE83780CA700F3C9C530C270C3CB72B18248CE075C9FCF148CBFBB21379EE8A9C95FEE85F43DF3EA5690346883E6D9164C6BE49F931FC401EF92719A007C8419652E63DA061C15CB67D73D3F5A51248B364C4436D1374CF5EA69BB3EEAFF00A9FEE7FB3FEDFF00E874C7DA8FE6EDFF006FE7FEFF00F07FBCDFFD9D004D1C52E46C0D19719DD9C671E9865FEF0EFD8515132A163112F2321FBAC7F33F89FE545003B66FF9B6ABFC9FC1F7367F9FFD02A544DEDBA55FFBEFEFBFF9DF45B22BBFCCADBFEFFF009FF3FC7534DFB9D912FF00E39FFB3FFDF74010BFFA4BFCAABE522FCAEEBF22FF00B7FED53F6410EC56664FF7DF67FE394C77D96E9FEDAFCDE6EF7FFC76A244DFF2AFC9BBFEFBFF007DFF00F88A00B4F6DBFE58BE7FE06DFF00F7DD554F9E2F9B77949B11913F8FFD8AB16D3323EEFB88EDFC0BB3FBF4C7FF008F87DBBB7FF0A27C94011A2BEF2A1D3CC232DB7FBFFF00D8D5B2AB64859E6607046C56C67BE3F9D22C4B021DC4EF3F30046579C74C75E9D69B0C62FA424B068465781D4F719EE31DC5002C116E259FE5C31C13CE3DF3E9F5A0335C48A626C2A61B721E48CF1ED4EB971180811C6EEEC4124FF93ED46D8A24F9DFCBDA092CA4B6EFA75FEB40093C9F6588C6B2EF0467667A0E3D7BF341C5BC7B89412B1054763F8532181E4766DEBB9490E00E47F8F41FE734B76584B1A16C1C8249EC33ED8CF4E9CD00576948C8DFB4B00F9CFCAA07EBDCFE7487973B17CD6DA428639C8C9FC89A644DBD48675C0249CA9E137753FA71D791521C07299594F7C01B40383DF233927B668011064E03A3B1E1980C10D8E83E838E69565DE54F987A00A18F248E327DBA0A8D98F96591827CCBB01CF4C9C93FDD1F5C74A906194B89157E52C9B9704E093D0F7C8EF400C5C08D324470E0EE91864FB8E3839F5CD3C398F6B1E07DD2B19C67231CFE1E9530802AAB900EFF0091303E7C7F7B2795FC4D35A7453B4281F2B1F987A3714015E620C58695988237346E179E471C8E38A2A497014ECCC4A5B030792067B8FA9A2801217F993FD86FF7FE76FEF7FB556AF3F83E55F93FBEDF712A247777466DC9F2EFFBDF3D3267DECEAABFC5F2A6DDFBDE801FBD76EE666DE9F233FF007EA27DE8BF336CFE3F9FEE2FCF4EF9BE7D8CBBFF0089D3FDAFF6E84FBA9F2AA236D7DFFDCFFE2A801E89B364ADB9FF00817E5F9DA9F09777DCC5A50AD9C12A57FCFDEA85F73AED5FEF3FF0FDEAB56EF1226F1B896EA77628009E4223FB84337183900FF875A58AD9A248F2240DB42EF4C6D23E9D85326CFDA2325C9238001E71F5A9F30AA9C8624E709193FAD0055800927DC18E14950547DCC76CF7EBFA54D34AC14053BF91B3A073D80E7803D4FD6A2B542D2C8373050482C8339F63D467F1A9AE91BECCCFF231EA0B8C963ED4010DA178E3013680002590F5EE7F5345D23798BBC02DD14C633827827EB807F134B692EC674C61492CCCE33B8E47F53C5492C514DF22B0F34FDD07823D850052404B0202152C1F6E7E5070768F524E3BF18029A0EF42A40002E4A2F39EDBB23A7249E7D29D20233956208CB7F78907A6694EE6721328D8246D5CB2E091C01938FC28011D77861B5559BEF3383B7711927DF03031F5F5A7A29C348DC9C86CBE0B10172A49FBB9EFD6A34D801C068D1461B0D9CF724FEBC538A8793CB28036DDBC7F0FFB3400A9BA6675DDBF7FF06CDFFF00037A6A3ECFF717E4FEE539FF00819B6F9BBB7ECFBFF3ECFE37A6FCBFDEDFFDCD8BB280060C7812F96C3EF3EE4DCD45390BC7F2A7FACEDF33AFCB45004CFF00B9F957EFEEF99FFDBFE0AAE8EBFC2DBFFBBB3EFBD1FEA5D17F8D3EF3EDDFFEDBD3B7FC9FC4FF00EC7DFF00F73E4A006BBFC9BBE5DEBF22A27F1FFB9FFC5D1F323EEFBFBFF8FF00BDFE7FF64A1F77CEBF36C45FFC73FDBFFC7E9DBD93F8B67FD725F93EE7F050037F836B6DFBBFF00FF6EB42228625F29E13B802BB93922B3DF6FCFF00C7FC1B377DDFF62AC1BA95708CDE67DEDC060B3FFB2B400B728D14D9004698EA1BBF6CFA8A9FF7A08695B0C3A04190C3D4FA1AA46632B2A7991A856E593E603FE054E5BC640DE548373807E55C8E9CE467DF39A00572D0DCAB322138184EA00EFCF51C6781E956480FF348FB23C703FCF4AA73DC1950190844438638E481DF8FC7D7AD3BCF76285880E4E321770524F248E09C0FC3A7A7200922221021533B06E1F24291C8CFB75156A292DDA35558DA563D7180323BFE5CD5496E1E442BCB20F94A0007CDD3A8FD68498C12ED46519C0C72405FF38140161ED4C806E8C9941CED439DDEC6AAC802161B0A440827CC1B89E003C1E3B1E7DAA459D90B12EC00C6EC8CE49CF39CE3038E00EA6904ED9FDE80FB464B310081D3A75271FCE8015772461CE3CC9385CB602E3B03FE1517F7D57E74FE0D8BF7AAD4DBBECBB9777C9F79DFFF001FAABB1B77CDF7FEE7FB7FF00A0037B7F06D47FB8BFEF51BD777EEBE77754DBFEED0EEAE9F34ADB1FF008FFBA9FF00B3354A88CEEFF2EC4DDF36C6FF0080225002408599F6B49B70BFEABE94529912345525241FDE91B6A7FC068A0066F587EF7DCFE2F97EFF00FB1B28F993E569763FF13BED44FEED1F73CDF9993E57F9377CFF00EFBD4DF6654F9BE54FE3FEFECFF6DE80214469BEEAB3C4DF753EE7CB537D9A57546976FF00C0FEE50F32FDD897E7FB9FDF7FF63FDDA87CE67F9BE5DCFF003FF1FF009FE0A00B1F666F936B37CFBF6FCBF79FFDCA89ED9937AFF07FB6DFFB22D311F7ABFDE7FE0FF7FF00BFFEEFCFFF00A053D2E7623EE6FDD7F7D1BE4DFF00DC4A0063BB6F7DDF26CFF9EADFE56909C463632A96042281F7860E4E7B64E2A7993F8962FF006FE45FF3FDCAAFBFE77DD2EF7F9BFCFF00E87400A1771F31006DADB90919DBE9EA07D0914D2D989DB70076926403B8382491FE3520065390154FA95FBB52FEEA1FBCDBDD763EF7FE1DD4010BAB64A37CA369206082002327A8F7C9A8F254498550A40665003173D874E3A8AB5B22DBB57E4FBCFF00EC6EFF006EA1D9E4CA9FC0FBB7FF007377F94A00193121C30DA831D30A5B19E9DB8F5A37E5495E48E5C95E49FBEAB4D4FBA8CBF7FF00E068894EF95FEF7CFF002AFF00AD6A009A1B9FF965BB7BB7FC0DE9DB17EF2B326E5FEF7CFB2AAA7CFBF77DC65FE36D9BFF00DB7A3E5DCFFDCFF6D7627CBFE52802C27948FF002AF9CFBBEE44950F9CCF1237CC8BFC3B3E44FF00BEFF00F67A6FF16DF9537B6C5FBDFEE6FF00FD0E9CFF00236E55D8FF00C3FC0EFF00EC25001B25FE05F9FF008B6AEEFF00C79BAD14D1957629F3BAFCADFE568A00BA9FB95F9BE7F9BFF1FF00EE5549A667446DCDB3F85DFE4DDFEDD134CAEDE6B37F7FE7A367EF76FF00CB56FE375F9E801AEFF7F76ED9BBEFBD1FC1F3AAFF001BFCFF00F7C6CA136FC9B76FCDF75DFF0083751BD7E765FF007F7A7F716801CFFDD7F37637F7FE4F93F8E977FCDF7B63FF007D1BEE533E54DF12EDDFFEF7F1B6CA72236DFBCC9FEE2AFF009FF81D003E1DAF14AADB7FE06DBE9888CEFB7E64D9F3FCFF0026D5FEFBFF00B5535B6E4DFB77226DF97E6F9168B345F9D97FBDF7F6EFA002E5DA1F9557E7FF007FF89BFF0042FF00EC2ABEFF00F9E4DBFE7DFBF77F9FF629CFB9257FBA9FDED9F27FB3F7E9A937FD35FBADB17FB894003A2B9DCBBA6FEEBEEFFC7FFF001CAB173FBEB54678BFD8D89F7DFF00D8A8513F8597E44547D9B6A67F91625FFC73EE6FFF003F3D0057DFB1DDB736FDDF7FEFFF00B9B129DF33B27CADBFE7F91288773EC5DDFEDFC916CFE0A9BEC6DB36AEDD89B7E4A00AFF00711F6EE7DBFC08D4FF00F96BFEDEEF9BFBFF00EE533FB8DF2FF7D7E5F928F9766DF953F81614F9DF6D00393E7FBBBBFED92EFA37ECF9BEE7FC0B7BFF00B1FF00B3D35DD53E66F9113E7F9DBFBD4E4467953F81FE4FF7F7D00112071CA49204F9422B2ED5A2AEC6B1404ABC5E737F71BF868A00CD336D04ABC81806079EAFFDEA90B0656932F93D3E6E9BA8A2801F2130B70767CBFC1FEE5353878FF8F2B1637F6A28A0061464F2F2D9C3845F673F79AA67B7611B488B1025770F97A5145002C6DE624E531B63700BC8BB999CFDE6A2D6608D23EDF923F973BBE6A28A0092E2DC191651C61F728A8210EEDE5A4AD8F97EF7B75FCE8A2801D1948A3F30EF62CACDCB52B46D717688E0179BE766C9FBBF27CB451400C6B852427CC8A7763676CF4FCA921BA67645567FBBBBE66A28A00B12AF99019072445BCEEEEBCB6DFD17F2AACD2395940918158DDB3FF03A28A0057468D894DA046EC147FB7FDEAB36102CDBB6FCFB5DBFD77CDDB3FF00A13668A280239387FDF92A8554ED878E7145145007FFD9>

+endstream

+endobj

+

+20 0 obj				% Font for pattern

+<<

+  /Type /Font

+  /Subtype /Type1

+  /Encoding 21 0 R

+  /BaseFont /ZapfDingbats

+>>

+endobj

+

+21 0 obj				% Font encoding

+<<

+  /Type /Encoding

+  /Differences[1 /a109 /a110 /a111 /a112]

+>>

+endobj

+

+30 0 obj				% Contents of page

+<<

+  /Length 0

+>>

+stream

+

+%0.866 0.5 -0.5 0.866 0 0 cm

+

+0.0 G					% Set stroking color to black

+1.0 1.0 0.0 rg				% Set nonstroking color to yellow

+

+q

+0 0 m

+225 0 l

+s

+Q

+

+25 175 175 -150 re			% Construct rectangular path

+f					% Fill path

+

+/Pattern cs				% Set pattern color space

+/P1 scn					% Set pattern as nonstroking color

+

+99.92 49.92 m				% Start new path

+99.92 77.52 77.52 99.92 49.92 99.92 c	% Construct lower-left circle

+22.32 99.92 -0.08 77.52 -0.08 49.92 c

+-0.08 22.32 22.32 -0.08 49.92 -0.08 c

+77.52 -0.08 99.92 22.32 99.92 49.92 c

+B					% Fill and stroke path

+

+224.96 49.92 m				% Start new path

+224.96 77.52 202.56 99.92 174.96 99.92 c	% Construct lower-right circle

+147.36 99.92 124.96 77.52 124.96 49.92 c

+124.96 22.32 147.36 -0.08 174.96 -0.08 c

+202.56 -0.08 224.96 22.32 224.96 49.92 c

+B					% Fill and stroke path

+

+87.56 201.70 m				% Start new path

+63.66 187.90 55.46 157.32 69.26 133.40 c	% Construct upper circle

+83.06 109.50 113.66 101.30 137.56 115.10 c

+161.46 128.90 169.66 159.50 155.86 183.40 c

+142.06 207.30 111.46 215.50 87.56 201.70 c

+B					% Fill and stroke path

+

+50 50 m					% Start new path

+175 50 l				% Construct triangular path

+112.5 158.253 l

+b					% Close, fill, and stroke path

+

+0 0 m 225 0 l 225 225 l 0 225 l b 

+endstream

+endobj

+

+xref

+

+trailer

+<<

+  /Size 0

+  /Root 1 0 R

+>>

+startxref

+0

+

+%%EOF

+

diff --git a/fx/pattern/2_color_tiling_expected.pdf.0.png b/fx/pattern/2_color_tiling_expected.pdf.0.png
new file mode 100644
index 0000000..f8e2498
--- /dev/null
+++ b/fx/pattern/2_color_tiling_expected.pdf.0.png
Binary files differ
diff --git a/fx/pattern/2_color_type3_pattern_bbox.pdf b/fx/pattern/2_color_type3_pattern_bbox.pdf
new file mode 100644
index 0000000..1407f63
--- /dev/null
+++ b/fx/pattern/2_color_type3_pattern_bbox.pdf
@@ -0,0 +1,111 @@
+%PDF-1.7

+

+1 0 obj

+<<

+  /Type /Catalog

+  /Pages 2 0 R

+>>

+endobj

+

+2 0 obj

+<<

+  /Type /Pages

+  /Kids [3 0 R]

+  /Count 1

+>>

+endobj

+

+3 0 obj					% Page object

+<<

+  /Type /Page

+  /Parent 2 0 R

+  /Resources 4 0 R

+  /Contents 30 0 R

+  /MediaBox [0 0 400 300]

+>>

+endobj

+

+4 0 obj

+<<

+%  /Shading <</Sh1 6 0 R>>

+   /Pattern <</Pt1 5 0 R>>

+>>

+endobj

+

+5 0 obj

+<<

+  /PatternType 2

+  /Shading 6 0 R

+  /Matrix [27 0 0 27 200 150]

+>>

+endobj

+

+6 0 obj

+<<

+  /ShadingType 3

+  /ColorSpace /DeviceCMYK

+  /Background [1 0 0 1]

+  /BBox [0 0 50 50] %% ¾ÍÏ൱ÓÚÒ»¸öclipping

+  /Coords [0.0 0.0 0.096 0.0 0.0 1.000]

+  /Function 10 0 R

+  /Extend [false false]

+>>

+endobj

+

+10 0 obj

+<<

+  /FunctionType 3

+  /Domain [0.0 1.0]

+  /Functions [11 0 R 12 0 R]

+  /Bounds [0.708]

+  /Encode [1.0 0.0 0.0 1.0]

+>>

+endobj

+

+11 0 obj

+<<

+  /FunctionType 2

+  /Domain [0.0 1.0]

+  /C0 [0.929 0.357 1.000 0.298]

+  /C1 [0.631 0.278 1.000 0.027]

+  /N 1.048

+>>

+endobj

+

+12 0 obj

+<<

+  /FunctionType 2

+  /Domain [0.0 1.0]

+  /C0 [0.929 0.357 1.000 0.298]

+  /C1 [0.941 0.400 1.000 0.102]

+  /N 1.374

+>>

+endobj

+

+30 0 obj

+<<

+  /Length 0

+>>

+stream

+

+/Pattern cs

+/Pt1 scn

+

+50 50 300 200 re

+B

+

+endstream

+endobj

+

+xref

+

+trailer

+<<

+  /Size 0

+  /Root 1 0 R

+>>

+startxref

+0

+

+%%EOF

+

diff --git a/fx/pattern/2_color_type3_pattern_bbox_expected.pdf.0.png b/fx/pattern/2_color_type3_pattern_bbox_expected.pdf.0.png
new file mode 100644
index 0000000..9924930
--- /dev/null
+++ b/fx/pattern/2_color_type3_pattern_bbox_expected.pdf.0.png
Binary files differ
diff --git a/fx/pattern/2_uncolor_tiling.pdf b/fx/pattern/2_uncolor_tiling.pdf
new file mode 100644
index 0000000..b10bc1c
--- /dev/null
+++ b/fx/pattern/2_uncolor_tiling.pdf
@@ -0,0 +1,149 @@
+%PDF-1.7

+

+1 0 obj

+<<

+  /Type /Catalog

+  /Pages 2 0 R

+>>

+endobj

+

+2 0 obj

+<<

+  /Type /Pages

+  /Kids [5 0 R]

+  /Count 1

+>>

+endobj

+

+5 0 obj					% Page object

+<<

+  /Type /Page

+  /Parent 2 0 R

+  /Resources 10 0 R

+  /Contents 30 0 R

+  /MediaBox [0 0 225 225]

+>>

+endobj

+

+10 0 obj				% Resource dictionary for page

+<<

+  /ColorSpace <</Cs12 12 0 R>>

+  /Pattern <</P1 15 0 R>>

+>>

+endobj

+

+12 0 obj				% Color space 

+[/Pattern /DeviceRGB]

+endobj

+

+15 0 obj				% Pattern definition

+<<

+  /Type /Pattern

+  /PatternType 1			% Tiling pattern

+  /PaintType 2				% Uncolored

+  /TilingType 2

+  /BBox [0 0 100 100]

+  /XStep 100

+  /YStep 100

+  /Resources 16 0 R

+  /Matrix [0.4 0.0 0.0 0.4 100.0 100.0]

+  /Length 0

+>>

+stream

+BT					% Begin text object

+  /F1 1 Tf				% Set text font and size

+  64 0 0 64 7.1771 2.4414 Tm		% Set text matrix

+  0 Tc					% Set character spacing

+  0 Tw					% Set word spacing

+  (\001) Tj				% Show spade glyph

+  0.7478 -0.007 TD			% Move text position

+  (\002) Tj				% Show heart glyph

+  -0.7323 0.7813 TD			% Move text position

+  (\003) Tj				% Show diamond glyph

+  0.6913 0.007 TD			% Move text position

+  (\004) Tj				% Show club glyph

+ET					% End text object

+endstream

+endobj

+

+16 0 obj				% Resource dictionary for pattern

+<<

+  /Font <</F1 20 0 R>>

+>>

+endobj

+

+20 0 obj				% Font for pattern

+<<

+  /Type /Font

+  /Subtype /Type1

+  /Encoding 21 0 R

+  /BaseFont /ZapfDingbats

+>>

+endobj

+

+21 0 obj				% Font encoding

+<<

+  /Type /Encoding

+  /Differences[1 /a109 /a110 /a111 /a112]

+>>

+endobj

+

+30 0 obj				% Contents of page

+<<

+  /Length 0

+>>

+stream

+0.0 G					% Set stroking color to black

+1.0 1.0 0.0 rg				% Set nonstroking color to yellow

+25 175 175 -150 re			% Construct rectangular path

+f					% Fill path

+

+			% Set nonstroking color and pattern

+					% Fill and stroke path

+99.92 49.92 m				% Start new path

+99.92 77.52 77.52 99.92 49.92 99.92 c	% Construct lower-left circle

+22.32 99.92 -0.08 77.52 -0.08 49.92 c

+-0.08 22.32 22.32 -0.08 49.92 -0.08 c

+77.52 -0.08 99.92 22.32 99.92 49.92 c

+

+224.96 49.92 m				% Start new path

+224.96 77.52 202.56 99.92 174.96 99.92 c	% Construct lower-right circle

+147.36 99.92 124.96 77.52 124.96 49.92 c

+124.96 22.32 147.36 -0.08 174.96 -0.08 c

+202.56 -0.08 224.96 22.32 224.96 49.92 c

+

+87.56 201.70 m				% Start new path

+63.66 187.90 55.46 157.32 69.26 133.40 c	% Construct upper circle

+83.06 109.50 113.66 101.30 137.56 115.10 c

+161.46 128.90 169.66 159.50 155.86 183.40 c

+142.06 207.30 111.46 215.50 87.56 201.70 c

+

+50 50 m					% Start new path

+175 50 l				% Construct triangular path

+112.5 158.253 l  h

+

+W S

+

+/Cs12 cs

+0.5 0.2 1.0 /P1 scn			% Change nonstroking color

+0 0 m 225 0 l 225 225 l 0 225 l b				% Construct triangular path

+

+				% Close, fill, and stroke path

+

+%0.5 0.2 1.0 /P1 scn

+%0 0 m 100 0 l 100 100 l 0 100 l b

+endstream

+endobj

+

+xref

+

+trailer

+<<

+  /Size 0

+  /Root 1 0 R

+>>

+startxref

+0

+

+%%EOF

+

diff --git a/fx/pattern/2_uncolor_tiling_expected.pdf.0.png b/fx/pattern/2_uncolor_tiling_expected.pdf.0.png
new file mode 100644
index 0000000..4c596a9
--- /dev/null
+++ b/fx/pattern/2_uncolor_tiling_expected.pdf.0.png
Binary files differ