hq4x.cpp 113 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379
  1. //hq4x filter demo program
  2. //----------------------------------------------------------
  3. //Copyright (C) 2003 MaxSt ( [email protected] )
  4. //This program is free software; you can redistribute it and/or
  5. //modify it under the terms of the GNU Lesser General Public
  6. //License as published by the Free Software Foundation; either
  7. //version 2.1 of the License, or (at your option) any later version.
  8. //
  9. //This program is distributed in the hope that it will be useful,
  10. //but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. //Lesser General Public License for more details.
  13. //
  14. //You should have received a copy of the GNU Lesser General Public
  15. //License along with this program; if not, write to the Free Software
  16. //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <conio.h>
  20. #include <string.h>
  21. #include <windows.h>
  22. #include "Image.h"
  23. static int LUT16to32[65536];
  24. static int RGBtoYUV[65536];
  25. static int YUV1, YUV2;
  26. const int Ymask = 0x00FF0000;
  27. const int Umask = 0x0000FF00;
  28. const int Vmask = 0x000000FF;
  29. const int trY = 0x00300000;
  30. const int trU = 0x00000700;
  31. const int trV = 0x00000006;
  32. inline void Interp1(unsigned char * pc, int c1, int c2)
  33. {
  34. *((int*)pc) = (c1*3+c2) >> 2;
  35. }
  36. inline void Interp2(unsigned char * pc, int c1, int c2, int c3)
  37. {
  38. *((int*)pc) = (c1*2+c2+c3) >> 2;
  39. }
  40. inline void Interp3(unsigned char * pc, int c1, int c2)
  41. {
  42. //*((int*)pc) = (c1*7+c2)/8;
  43. *((int*)pc) = ((((c1 & 0x00FF00)*7 + (c2 & 0x00FF00) ) & 0x0007F800) +
  44. (((c1 & 0xFF00FF)*7 + (c2 & 0xFF00FF) ) & 0x07F807F8)) >> 3;
  45. }
  46. inline void Interp5(unsigned char * pc, int c1, int c2)
  47. {
  48. *((int*)pc) = (c1+c2) >> 1;
  49. }
  50. inline void Interp6(unsigned char * pc, int c1, int c2, int c3)
  51. {
  52. //*((int*)pc) = (c1*5+c2*2+c3)/8;
  53. *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*2 + (c3 & 0x00FF00) ) & 0x0007F800) +
  54. (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*2 + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3;
  55. }
  56. inline void Interp7(unsigned char * pc, int c1, int c2, int c3)
  57. {
  58. //*((int*)pc) = (c1*6+c2+c3)/8;
  59. *((int*)pc) = ((((c1 & 0x00FF00)*6 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x0007F800) +
  60. (((c1 & 0xFF00FF)*6 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3;
  61. }
  62. inline void Interp8(unsigned char * pc, int c1, int c2)
  63. {
  64. //*((int*)pc) = (c1*5+c2*3)/8;
  65. *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*3 ) & 0x0007F800) +
  66. (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*3 ) & 0x07F807F8)) >> 3;
  67. }
  68. #define PIXEL00_0 *((int*)(pOut)) = c[5];
  69. #define PIXEL00_11 Interp1(pOut, c[5], c[4]);
  70. #define PIXEL00_12 Interp1(pOut, c[5], c[2]);
  71. #define PIXEL00_20 Interp2(pOut, c[5], c[2], c[4]);
  72. #define PIXEL00_50 Interp5(pOut, c[2], c[4]);
  73. #define PIXEL00_80 Interp8(pOut, c[5], c[1]);
  74. #define PIXEL00_81 Interp8(pOut, c[5], c[4]);
  75. #define PIXEL00_82 Interp8(pOut, c[5], c[2]);
  76. #define PIXEL01_0 *((int*)(pOut+4)) = c[5];
  77. #define PIXEL01_10 Interp1(pOut+4, c[5], c[1]);
  78. #define PIXEL01_12 Interp1(pOut+4, c[5], c[2]);
  79. #define PIXEL01_14 Interp1(pOut+4, c[2], c[5]);
  80. #define PIXEL01_21 Interp2(pOut+4, c[2], c[5], c[4]);
  81. #define PIXEL01_31 Interp3(pOut+4, c[5], c[4]);
  82. #define PIXEL01_50 Interp5(pOut+4, c[2], c[5]);
  83. #define PIXEL01_60 Interp6(pOut+4, c[5], c[2], c[4]);
  84. #define PIXEL01_61 Interp6(pOut+4, c[5], c[2], c[1]);
  85. #define PIXEL01_82 Interp8(pOut+4, c[5], c[2]);
  86. #define PIXEL01_83 Interp8(pOut+4, c[2], c[4]);
  87. #define PIXEL02_0 *((int*)(pOut+8)) = c[5];
  88. #define PIXEL02_10 Interp1(pOut+8, c[5], c[3]);
  89. #define PIXEL02_11 Interp1(pOut+8, c[5], c[2]);
  90. #define PIXEL02_13 Interp1(pOut+8, c[2], c[5]);
  91. #define PIXEL02_21 Interp2(pOut+8, c[2], c[5], c[6]);
  92. #define PIXEL02_32 Interp3(pOut+8, c[5], c[6]);
  93. #define PIXEL02_50 Interp5(pOut+8, c[2], c[5]);
  94. #define PIXEL02_60 Interp6(pOut+8, c[5], c[2], c[6]);
  95. #define PIXEL02_61 Interp6(pOut+8, c[5], c[2], c[3]);
  96. #define PIXEL02_81 Interp8(pOut+8, c[5], c[2]);
  97. #define PIXEL02_83 Interp8(pOut+8, c[2], c[6]);
  98. #define PIXEL03_0 *((int*)(pOut+12)) = c[5];
  99. #define PIXEL03_11 Interp1(pOut+12, c[5], c[2]);
  100. #define PIXEL03_12 Interp1(pOut+12, c[5], c[6]);
  101. #define PIXEL03_20 Interp2(pOut+12, c[5], c[2], c[6]);
  102. #define PIXEL03_50 Interp5(pOut+12, c[2], c[6]);
  103. #define PIXEL03_80 Interp8(pOut+12, c[5], c[3]);
  104. #define PIXEL03_81 Interp8(pOut+12, c[5], c[2]);
  105. #define PIXEL03_82 Interp8(pOut+12, c[5], c[6]);
  106. #define PIXEL10_0 *((int*)(pOut+BpL)) = c[5];
  107. #define PIXEL10_10 Interp1(pOut+BpL, c[5], c[1]);
  108. #define PIXEL10_11 Interp1(pOut+BpL, c[5], c[4]);
  109. #define PIXEL10_13 Interp1(pOut+BpL, c[4], c[5]);
  110. #define PIXEL10_21 Interp2(pOut+BpL, c[4], c[5], c[2]);
  111. #define PIXEL10_32 Interp3(pOut+BpL, c[5], c[2]);
  112. #define PIXEL10_50 Interp5(pOut+BpL, c[4], c[5]);
  113. #define PIXEL10_60 Interp6(pOut+BpL, c[5], c[4], c[2]);
  114. #define PIXEL10_61 Interp6(pOut+BpL, c[5], c[4], c[1]);
  115. #define PIXEL10_81 Interp8(pOut+BpL, c[5], c[4]);
  116. #define PIXEL10_83 Interp8(pOut+BpL, c[4], c[2]);
  117. #define PIXEL11_0 *((int*)(pOut+BpL+4)) = c[5];
  118. #define PIXEL11_30 Interp3(pOut+BpL+4, c[5], c[1]);
  119. #define PIXEL11_31 Interp3(pOut+BpL+4, c[5], c[4]);
  120. #define PIXEL11_32 Interp3(pOut+BpL+4, c[5], c[2]);
  121. #define PIXEL11_70 Interp7(pOut+BpL+4, c[5], c[4], c[2]);
  122. #define PIXEL12_0 *((int*)(pOut+BpL+8)) = c[5];
  123. #define PIXEL12_30 Interp3(pOut+BpL+8, c[5], c[3]);
  124. #define PIXEL12_31 Interp3(pOut+BpL+8, c[5], c[2]);
  125. #define PIXEL12_32 Interp3(pOut+BpL+8, c[5], c[6]);
  126. #define PIXEL12_70 Interp7(pOut+BpL+8, c[5], c[6], c[2]);
  127. #define PIXEL13_0 *((int*)(pOut+BpL+12)) = c[5];
  128. #define PIXEL13_10 Interp1(pOut+BpL+12, c[5], c[3]);
  129. #define PIXEL13_12 Interp1(pOut+BpL+12, c[5], c[6]);
  130. #define PIXEL13_14 Interp1(pOut+BpL+12, c[6], c[5]);
  131. #define PIXEL13_21 Interp2(pOut+BpL+12, c[6], c[5], c[2]);
  132. #define PIXEL13_31 Interp3(pOut+BpL+12, c[5], c[2]);
  133. #define PIXEL13_50 Interp5(pOut+BpL+12, c[6], c[5]);
  134. #define PIXEL13_60 Interp6(pOut+BpL+12, c[5], c[6], c[2]);
  135. #define PIXEL13_61 Interp6(pOut+BpL+12, c[5], c[6], c[3]);
  136. #define PIXEL13_82 Interp8(pOut+BpL+12, c[5], c[6]);
  137. #define PIXEL13_83 Interp8(pOut+BpL+12, c[6], c[2]);
  138. #define PIXEL20_0 *((int*)(pOut+BpL+BpL)) = c[5];
  139. #define PIXEL20_10 Interp1(pOut+BpL+BpL, c[5], c[7]);
  140. #define PIXEL20_12 Interp1(pOut+BpL+BpL, c[5], c[4]);
  141. #define PIXEL20_14 Interp1(pOut+BpL+BpL, c[4], c[5]);
  142. #define PIXEL20_21 Interp2(pOut+BpL+BpL, c[4], c[5], c[8]);
  143. #define PIXEL20_31 Interp3(pOut+BpL+BpL, c[5], c[8]);
  144. #define PIXEL20_50 Interp5(pOut+BpL+BpL, c[4], c[5]);
  145. #define PIXEL20_60 Interp6(pOut+BpL+BpL, c[5], c[4], c[8]);
  146. #define PIXEL20_61 Interp6(pOut+BpL+BpL, c[5], c[4], c[7]);
  147. #define PIXEL20_82 Interp8(pOut+BpL+BpL, c[5], c[4]);
  148. #define PIXEL20_83 Interp8(pOut+BpL+BpL, c[4], c[8]);
  149. #define PIXEL21_0 *((int*)(pOut+BpL+BpL+4)) = c[5];
  150. #define PIXEL21_30 Interp3(pOut+BpL+BpL+4, c[5], c[7]);
  151. #define PIXEL21_31 Interp3(pOut+BpL+BpL+4, c[5], c[8]);
  152. #define PIXEL21_32 Interp3(pOut+BpL+BpL+4, c[5], c[4]);
  153. #define PIXEL21_70 Interp7(pOut+BpL+BpL+4, c[5], c[4], c[8]);
  154. #define PIXEL22_0 *((int*)(pOut+BpL+BpL+8)) = c[5];
  155. #define PIXEL22_30 Interp3(pOut+BpL+BpL+8, c[5], c[9]);
  156. #define PIXEL22_31 Interp3(pOut+BpL+BpL+8, c[5], c[6]);
  157. #define PIXEL22_32 Interp3(pOut+BpL+BpL+8, c[5], c[8]);
  158. #define PIXEL22_70 Interp7(pOut+BpL+BpL+8, c[5], c[6], c[8]);
  159. #define PIXEL23_0 *((int*)(pOut+BpL+BpL+12)) = c[5];
  160. #define PIXEL23_10 Interp1(pOut+BpL+BpL+12, c[5], c[9]);
  161. #define PIXEL23_11 Interp1(pOut+BpL+BpL+12, c[5], c[6]);
  162. #define PIXEL23_13 Interp1(pOut+BpL+BpL+12, c[6], c[5]);
  163. #define PIXEL23_21 Interp2(pOut+BpL+BpL+12, c[6], c[5], c[8]);
  164. #define PIXEL23_32 Interp3(pOut+BpL+BpL+12, c[5], c[8]);
  165. #define PIXEL23_50 Interp5(pOut+BpL+BpL+12, c[6], c[5]);
  166. #define PIXEL23_60 Interp6(pOut+BpL+BpL+12, c[5], c[6], c[8]);
  167. #define PIXEL23_61 Interp6(pOut+BpL+BpL+12, c[5], c[6], c[9]);
  168. #define PIXEL23_81 Interp8(pOut+BpL+BpL+12, c[5], c[6]);
  169. #define PIXEL23_83 Interp8(pOut+BpL+BpL+12, c[6], c[8]);
  170. #define PIXEL30_0 *((int*)(pOut+BpL+BpL+BpL)) = c[5];
  171. #define PIXEL30_11 Interp1(pOut+BpL+BpL+BpL, c[5], c[8]);
  172. #define PIXEL30_12 Interp1(pOut+BpL+BpL+BpL, c[5], c[4]);
  173. #define PIXEL30_20 Interp2(pOut+BpL+BpL+BpL, c[5], c[8], c[4]);
  174. #define PIXEL30_50 Interp5(pOut+BpL+BpL+BpL, c[8], c[4]);
  175. #define PIXEL30_80 Interp8(pOut+BpL+BpL+BpL, c[5], c[7]);
  176. #define PIXEL30_81 Interp8(pOut+BpL+BpL+BpL, c[5], c[8]);
  177. #define PIXEL30_82 Interp8(pOut+BpL+BpL+BpL, c[5], c[4]);
  178. #define PIXEL31_0 *((int*)(pOut+BpL+BpL+BpL+4)) = c[5];
  179. #define PIXEL31_10 Interp1(pOut+BpL+BpL+BpL+4, c[5], c[7]);
  180. #define PIXEL31_11 Interp1(pOut+BpL+BpL+BpL+4, c[5], c[8]);
  181. #define PIXEL31_13 Interp1(pOut+BpL+BpL+BpL+4, c[8], c[5]);
  182. #define PIXEL31_21 Interp2(pOut+BpL+BpL+BpL+4, c[8], c[5], c[4]);
  183. #define PIXEL31_32 Interp3(pOut+BpL+BpL+BpL+4, c[5], c[4]);
  184. #define PIXEL31_50 Interp5(pOut+BpL+BpL+BpL+4, c[8], c[5]);
  185. #define PIXEL31_60 Interp6(pOut+BpL+BpL+BpL+4, c[5], c[8], c[4]);
  186. #define PIXEL31_61 Interp6(pOut+BpL+BpL+BpL+4, c[5], c[8], c[7]);
  187. #define PIXEL31_81 Interp8(pOut+BpL+BpL+BpL+4, c[5], c[8]);
  188. #define PIXEL31_83 Interp8(pOut+BpL+BpL+BpL+4, c[8], c[4]);
  189. #define PIXEL32_0 *((int*)(pOut+BpL+BpL+BpL+8)) = c[5];
  190. #define PIXEL32_10 Interp1(pOut+BpL+BpL+BpL+8, c[5], c[9]);
  191. #define PIXEL32_12 Interp1(pOut+BpL+BpL+BpL+8, c[5], c[8]);
  192. #define PIXEL32_14 Interp1(pOut+BpL+BpL+BpL+8, c[8], c[5]);
  193. #define PIXEL32_21 Interp2(pOut+BpL+BpL+BpL+8, c[8], c[5], c[6]);
  194. #define PIXEL32_31 Interp3(pOut+BpL+BpL+BpL+8, c[5], c[6]);
  195. #define PIXEL32_50 Interp5(pOut+BpL+BpL+BpL+8, c[8], c[5]);
  196. #define PIXEL32_60 Interp6(pOut+BpL+BpL+BpL+8, c[5], c[8], c[6]);
  197. #define PIXEL32_61 Interp6(pOut+BpL+BpL+BpL+8, c[5], c[8], c[9]);
  198. #define PIXEL32_82 Interp8(pOut+BpL+BpL+BpL+8, c[5], c[8]);
  199. #define PIXEL32_83 Interp8(pOut+BpL+BpL+BpL+8, c[8], c[6]);
  200. #define PIXEL33_0 *((int*)(pOut+BpL+BpL+BpL+12)) = c[5];
  201. #define PIXEL33_11 Interp1(pOut+BpL+BpL+BpL+12, c[5], c[6]);
  202. #define PIXEL33_12 Interp1(pOut+BpL+BpL+BpL+12, c[5], c[8]);
  203. #define PIXEL33_20 Interp2(pOut+BpL+BpL+BpL+12, c[5], c[8], c[6]);
  204. #define PIXEL33_50 Interp5(pOut+BpL+BpL+BpL+12, c[8], c[6]);
  205. #define PIXEL33_80 Interp8(pOut+BpL+BpL+BpL+12, c[5], c[9]);
  206. #define PIXEL33_81 Interp8(pOut+BpL+BpL+BpL+12, c[5], c[6]);
  207. #define PIXEL33_82 Interp8(pOut+BpL+BpL+BpL+12, c[5], c[8]);
  208. inline bool Diff(unsigned int w1, unsigned int w2)
  209. {
  210. YUV1 = RGBtoYUV[w1];
  211. YUV2 = RGBtoYUV[w2];
  212. return ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) ||
  213. ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) ||
  214. ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) );
  215. }
  216. void hq4x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int BpL )
  217. {
  218. int i, j, k;
  219. int prevline, nextline;
  220. int w[10];
  221. int c[10];
  222. // +----+----+----+
  223. // | | | |
  224. // | w1 | w2 | w3 |
  225. // +----+----+----+
  226. // | | | |
  227. // | w4 | w5 | w6 |
  228. // +----+----+----+
  229. // | | | |
  230. // | w7 | w8 | w9 |
  231. // +----+----+----+
  232. for (j=0; j<Yres; j++)
  233. {
  234. if (j>0) prevline = -Xres*2; else prevline = 0;
  235. if (j<Yres-1) nextline = Xres*2; else nextline = 0;
  236. for (i=0; i<Xres; i++)
  237. {
  238. w[2] = *((unsigned short*)(pIn + prevline));
  239. w[5] = *((unsigned short*)pIn);
  240. w[8] = *((unsigned short*)(pIn + nextline));
  241. if (i>0)
  242. {
  243. w[1] = *((unsigned short*)(pIn + prevline - 2));
  244. w[4] = *((unsigned short*)(pIn - 2));
  245. w[7] = *((unsigned short*)(pIn + nextline - 2));
  246. }
  247. else
  248. {
  249. w[1] = w[2];
  250. w[4] = w[5];
  251. w[7] = w[8];
  252. }
  253. if (i<Xres-1)
  254. {
  255. w[3] = *((unsigned short*)(pIn + prevline + 2));
  256. w[6] = *((unsigned short*)(pIn + 2));
  257. w[9] = *((unsigned short*)(pIn + nextline + 2));
  258. }
  259. else
  260. {
  261. w[3] = w[2];
  262. w[6] = w[5];
  263. w[9] = w[8];
  264. }
  265. int pattern = 0;
  266. int flag = 1;
  267. YUV1 = RGBtoYUV[w[5]];
  268. for (k=1; k<=9; k++)
  269. {
  270. if (k==5) continue;
  271. if ( w[k] != w[5] )
  272. {
  273. YUV2 = RGBtoYUV[w[k]];
  274. if ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) ||
  275. ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) ||
  276. ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) )
  277. pattern |= flag;
  278. }
  279. flag <<= 1;
  280. }
  281. for (k=1; k<=9; k++)
  282. c[k] = LUT16to32[w[k]];
  283. switch (pattern)
  284. {
  285. case 0:
  286. case 1:
  287. case 4:
  288. case 32:
  289. case 128:
  290. case 5:
  291. case 132:
  292. case 160:
  293. case 33:
  294. case 129:
  295. case 36:
  296. case 133:
  297. case 164:
  298. case 161:
  299. case 37:
  300. case 165:
  301. {
  302. PIXEL00_20
  303. PIXEL01_60
  304. PIXEL02_60
  305. PIXEL03_20
  306. PIXEL10_60
  307. PIXEL11_70
  308. PIXEL12_70
  309. PIXEL13_60
  310. PIXEL20_60
  311. PIXEL21_70
  312. PIXEL22_70
  313. PIXEL23_60
  314. PIXEL30_20
  315. PIXEL31_60
  316. PIXEL32_60
  317. PIXEL33_20
  318. break;
  319. }
  320. case 2:
  321. case 34:
  322. case 130:
  323. case 162:
  324. {
  325. PIXEL00_80
  326. PIXEL01_10
  327. PIXEL02_10
  328. PIXEL03_80
  329. PIXEL10_61
  330. PIXEL11_30
  331. PIXEL12_30
  332. PIXEL13_61
  333. PIXEL20_60
  334. PIXEL21_70
  335. PIXEL22_70
  336. PIXEL23_60
  337. PIXEL30_20
  338. PIXEL31_60
  339. PIXEL32_60
  340. PIXEL33_20
  341. break;
  342. }
  343. case 16:
  344. case 17:
  345. case 48:
  346. case 49:
  347. {
  348. PIXEL00_20
  349. PIXEL01_60
  350. PIXEL02_61
  351. PIXEL03_80
  352. PIXEL10_60
  353. PIXEL11_70
  354. PIXEL12_30
  355. PIXEL13_10
  356. PIXEL20_60
  357. PIXEL21_70
  358. PIXEL22_30
  359. PIXEL23_10
  360. PIXEL30_20
  361. PIXEL31_60
  362. PIXEL32_61
  363. PIXEL33_80
  364. break;
  365. }
  366. case 64:
  367. case 65:
  368. case 68:
  369. case 69:
  370. {
  371. PIXEL00_20
  372. PIXEL01_60
  373. PIXEL02_60
  374. PIXEL03_20
  375. PIXEL10_60
  376. PIXEL11_70
  377. PIXEL12_70
  378. PIXEL13_60
  379. PIXEL20_61
  380. PIXEL21_30
  381. PIXEL22_30
  382. PIXEL23_61
  383. PIXEL30_80
  384. PIXEL31_10
  385. PIXEL32_10
  386. PIXEL33_80
  387. break;
  388. }
  389. case 8:
  390. case 12:
  391. case 136:
  392. case 140:
  393. {
  394. PIXEL00_80
  395. PIXEL01_61
  396. PIXEL02_60
  397. PIXEL03_20
  398. PIXEL10_10
  399. PIXEL11_30
  400. PIXEL12_70
  401. PIXEL13_60
  402. PIXEL20_10
  403. PIXEL21_30
  404. PIXEL22_70
  405. PIXEL23_60
  406. PIXEL30_80
  407. PIXEL31_61
  408. PIXEL32_60
  409. PIXEL33_20
  410. break;
  411. }
  412. case 3:
  413. case 35:
  414. case 131:
  415. case 163:
  416. {
  417. PIXEL00_81
  418. PIXEL01_31
  419. PIXEL02_10
  420. PIXEL03_80
  421. PIXEL10_81
  422. PIXEL11_31
  423. PIXEL12_30
  424. PIXEL13_61
  425. PIXEL20_60
  426. PIXEL21_70
  427. PIXEL22_70
  428. PIXEL23_60
  429. PIXEL30_20
  430. PIXEL31_60
  431. PIXEL32_60
  432. PIXEL33_20
  433. break;
  434. }
  435. case 6:
  436. case 38:
  437. case 134:
  438. case 166:
  439. {
  440. PIXEL00_80
  441. PIXEL01_10
  442. PIXEL02_32
  443. PIXEL03_82
  444. PIXEL10_61
  445. PIXEL11_30
  446. PIXEL12_32
  447. PIXEL13_82
  448. PIXEL20_60
  449. PIXEL21_70
  450. PIXEL22_70
  451. PIXEL23_60
  452. PIXEL30_20
  453. PIXEL31_60
  454. PIXEL32_60
  455. PIXEL33_20
  456. break;
  457. }
  458. case 20:
  459. case 21:
  460. case 52:
  461. case 53:
  462. {
  463. PIXEL00_20
  464. PIXEL01_60
  465. PIXEL02_81
  466. PIXEL03_81
  467. PIXEL10_60
  468. PIXEL11_70
  469. PIXEL12_31
  470. PIXEL13_31
  471. PIXEL20_60
  472. PIXEL21_70
  473. PIXEL22_30
  474. PIXEL23_10
  475. PIXEL30_20
  476. PIXEL31_60
  477. PIXEL32_61
  478. PIXEL33_80
  479. break;
  480. }
  481. case 144:
  482. case 145:
  483. case 176:
  484. case 177:
  485. {
  486. PIXEL00_20
  487. PIXEL01_60
  488. PIXEL02_61
  489. PIXEL03_80
  490. PIXEL10_60
  491. PIXEL11_70
  492. PIXEL12_30
  493. PIXEL13_10
  494. PIXEL20_60
  495. PIXEL21_70
  496. PIXEL22_32
  497. PIXEL23_32
  498. PIXEL30_20
  499. PIXEL31_60
  500. PIXEL32_82
  501. PIXEL33_82
  502. break;
  503. }
  504. case 192:
  505. case 193:
  506. case 196:
  507. case 197:
  508. {
  509. PIXEL00_20
  510. PIXEL01_60
  511. PIXEL02_60
  512. PIXEL03_20
  513. PIXEL10_60
  514. PIXEL11_70
  515. PIXEL12_70
  516. PIXEL13_60
  517. PIXEL20_61
  518. PIXEL21_30
  519. PIXEL22_31
  520. PIXEL23_81
  521. PIXEL30_80
  522. PIXEL31_10
  523. PIXEL32_31
  524. PIXEL33_81
  525. break;
  526. }
  527. case 96:
  528. case 97:
  529. case 100:
  530. case 101:
  531. {
  532. PIXEL00_20
  533. PIXEL01_60
  534. PIXEL02_60
  535. PIXEL03_20
  536. PIXEL10_60
  537. PIXEL11_70
  538. PIXEL12_70
  539. PIXEL13_60
  540. PIXEL20_82
  541. PIXEL21_32
  542. PIXEL22_30
  543. PIXEL23_61
  544. PIXEL30_82
  545. PIXEL31_32
  546. PIXEL32_10
  547. PIXEL33_80
  548. break;
  549. }
  550. case 40:
  551. case 44:
  552. case 168:
  553. case 172:
  554. {
  555. PIXEL00_80
  556. PIXEL01_61
  557. PIXEL02_60
  558. PIXEL03_20
  559. PIXEL10_10
  560. PIXEL11_30
  561. PIXEL12_70
  562. PIXEL13_60
  563. PIXEL20_31
  564. PIXEL21_31
  565. PIXEL22_70
  566. PIXEL23_60
  567. PIXEL30_81
  568. PIXEL31_81
  569. PIXEL32_60
  570. PIXEL33_20
  571. break;
  572. }
  573. case 9:
  574. case 13:
  575. case 137:
  576. case 141:
  577. {
  578. PIXEL00_82
  579. PIXEL01_82
  580. PIXEL02_60
  581. PIXEL03_20
  582. PIXEL10_32
  583. PIXEL11_32
  584. PIXEL12_70
  585. PIXEL13_60
  586. PIXEL20_10
  587. PIXEL21_30
  588. PIXEL22_70
  589. PIXEL23_60
  590. PIXEL30_80
  591. PIXEL31_61
  592. PIXEL32_60
  593. PIXEL33_20
  594. break;
  595. }
  596. case 18:
  597. case 50:
  598. {
  599. PIXEL00_80
  600. PIXEL01_10
  601. if (Diff(w[2], w[6]))
  602. {
  603. PIXEL02_10
  604. PIXEL03_80
  605. PIXEL12_30
  606. PIXEL13_10
  607. }
  608. else
  609. {
  610. PIXEL02_50
  611. PIXEL03_50
  612. PIXEL12_0
  613. PIXEL13_50
  614. }
  615. PIXEL10_61
  616. PIXEL11_30
  617. PIXEL20_60
  618. PIXEL21_70
  619. PIXEL22_30
  620. PIXEL23_10
  621. PIXEL30_20
  622. PIXEL31_60
  623. PIXEL32_61
  624. PIXEL33_80
  625. break;
  626. }
  627. case 80:
  628. case 81:
  629. {
  630. PIXEL00_20
  631. PIXEL01_60
  632. PIXEL02_61
  633. PIXEL03_80
  634. PIXEL10_60
  635. PIXEL11_70
  636. PIXEL12_30
  637. PIXEL13_10
  638. PIXEL20_61
  639. PIXEL21_30
  640. if (Diff(w[6], w[8]))
  641. {
  642. PIXEL22_30
  643. PIXEL23_10
  644. PIXEL32_10
  645. PIXEL33_80
  646. }
  647. else
  648. {
  649. PIXEL22_0
  650. PIXEL23_50
  651. PIXEL32_50
  652. PIXEL33_50
  653. }
  654. PIXEL30_80
  655. PIXEL31_10
  656. break;
  657. }
  658. case 72:
  659. case 76:
  660. {
  661. PIXEL00_80
  662. PIXEL01_61
  663. PIXEL02_60
  664. PIXEL03_20
  665. PIXEL10_10
  666. PIXEL11_30
  667. PIXEL12_70
  668. PIXEL13_60
  669. if (Diff(w[8], w[4]))
  670. {
  671. PIXEL20_10
  672. PIXEL21_30
  673. PIXEL30_80
  674. PIXEL31_10
  675. }
  676. else
  677. {
  678. PIXEL20_50
  679. PIXEL21_0
  680. PIXEL30_50
  681. PIXEL31_50
  682. }
  683. PIXEL22_30
  684. PIXEL23_61
  685. PIXEL32_10
  686. PIXEL33_80
  687. break;
  688. }
  689. case 10:
  690. case 138:
  691. {
  692. if (Diff(w[4], w[2]))
  693. {
  694. PIXEL00_80
  695. PIXEL01_10
  696. PIXEL10_10
  697. PIXEL11_30
  698. }
  699. else
  700. {
  701. PIXEL00_50
  702. PIXEL01_50
  703. PIXEL10_50
  704. PIXEL11_0
  705. }
  706. PIXEL02_10
  707. PIXEL03_80
  708. PIXEL12_30
  709. PIXEL13_61
  710. PIXEL20_10
  711. PIXEL21_30
  712. PIXEL22_70
  713. PIXEL23_60
  714. PIXEL30_80
  715. PIXEL31_61
  716. PIXEL32_60
  717. PIXEL33_20
  718. break;
  719. }
  720. case 66:
  721. {
  722. PIXEL00_80
  723. PIXEL01_10
  724. PIXEL02_10
  725. PIXEL03_80
  726. PIXEL10_61
  727. PIXEL11_30
  728. PIXEL12_30
  729. PIXEL13_61
  730. PIXEL20_61
  731. PIXEL21_30
  732. PIXEL22_30
  733. PIXEL23_61
  734. PIXEL30_80
  735. PIXEL31_10
  736. PIXEL32_10
  737. PIXEL33_80
  738. break;
  739. }
  740. case 24:
  741. {
  742. PIXEL00_80
  743. PIXEL01_61
  744. PIXEL02_61
  745. PIXEL03_80
  746. PIXEL10_10
  747. PIXEL11_30
  748. PIXEL12_30
  749. PIXEL13_10
  750. PIXEL20_10
  751. PIXEL21_30
  752. PIXEL22_30
  753. PIXEL23_10
  754. PIXEL30_80
  755. PIXEL31_61
  756. PIXEL32_61
  757. PIXEL33_80
  758. break;
  759. }
  760. case 7:
  761. case 39:
  762. case 135:
  763. {
  764. PIXEL00_81
  765. PIXEL01_31
  766. PIXEL02_32
  767. PIXEL03_82
  768. PIXEL10_81
  769. PIXEL11_31
  770. PIXEL12_32
  771. PIXEL13_82
  772. PIXEL20_60
  773. PIXEL21_70
  774. PIXEL22_70
  775. PIXEL23_60
  776. PIXEL30_20
  777. PIXEL31_60
  778. PIXEL32_60
  779. PIXEL33_20
  780. break;
  781. }
  782. case 148:
  783. case 149:
  784. case 180:
  785. {
  786. PIXEL00_20
  787. PIXEL01_60
  788. PIXEL02_81
  789. PIXEL03_81
  790. PIXEL10_60
  791. PIXEL11_70
  792. PIXEL12_31
  793. PIXEL13_31
  794. PIXEL20_60
  795. PIXEL21_70
  796. PIXEL22_32
  797. PIXEL23_32
  798. PIXEL30_20
  799. PIXEL31_60
  800. PIXEL32_82
  801. PIXEL33_82
  802. break;
  803. }
  804. case 224:
  805. case 228:
  806. case 225:
  807. {
  808. PIXEL00_20
  809. PIXEL01_60
  810. PIXEL02_60
  811. PIXEL03_20
  812. PIXEL10_60
  813. PIXEL11_70
  814. PIXEL12_70
  815. PIXEL13_60
  816. PIXEL20_82
  817. PIXEL21_32
  818. PIXEL22_31
  819. PIXEL23_81
  820. PIXEL30_82
  821. PIXEL31_32
  822. PIXEL32_31
  823. PIXEL33_81
  824. break;
  825. }
  826. case 41:
  827. case 169:
  828. case 45:
  829. {
  830. PIXEL00_82
  831. PIXEL01_82
  832. PIXEL02_60
  833. PIXEL03_20
  834. PIXEL10_32
  835. PIXEL11_32
  836. PIXEL12_70
  837. PIXEL13_60
  838. PIXEL20_31
  839. PIXEL21_31
  840. PIXEL22_70
  841. PIXEL23_60
  842. PIXEL30_81
  843. PIXEL31_81
  844. PIXEL32_60
  845. PIXEL33_20
  846. break;
  847. }
  848. case 22:
  849. case 54:
  850. {
  851. PIXEL00_80
  852. PIXEL01_10
  853. if (Diff(w[2], w[6]))
  854. {
  855. PIXEL02_0
  856. PIXEL03_0
  857. PIXEL13_0
  858. }
  859. else
  860. {
  861. PIXEL02_50
  862. PIXEL03_50
  863. PIXEL13_50
  864. }
  865. PIXEL10_61
  866. PIXEL11_30
  867. PIXEL12_0
  868. PIXEL20_60
  869. PIXEL21_70
  870. PIXEL22_30
  871. PIXEL23_10
  872. PIXEL30_20
  873. PIXEL31_60
  874. PIXEL32_61
  875. PIXEL33_80
  876. break;
  877. }
  878. case 208:
  879. case 209:
  880. {
  881. PIXEL00_20
  882. PIXEL01_60
  883. PIXEL02_61
  884. PIXEL03_80
  885. PIXEL10_60
  886. PIXEL11_70
  887. PIXEL12_30
  888. PIXEL13_10
  889. PIXEL20_61
  890. PIXEL21_30
  891. PIXEL22_0
  892. if (Diff(w[6], w[8]))
  893. {
  894. PIXEL23_0
  895. PIXEL32_0
  896. PIXEL33_0
  897. }
  898. else
  899. {
  900. PIXEL23_50
  901. PIXEL32_50
  902. PIXEL33_50
  903. }
  904. PIXEL30_80
  905. PIXEL31_10
  906. break;
  907. }
  908. case 104:
  909. case 108:
  910. {
  911. PIXEL00_80
  912. PIXEL01_61
  913. PIXEL02_60
  914. PIXEL03_20
  915. PIXEL10_10
  916. PIXEL11_30
  917. PIXEL12_70
  918. PIXEL13_60
  919. if (Diff(w[8], w[4]))
  920. {
  921. PIXEL20_0
  922. PIXEL30_0
  923. PIXEL31_0
  924. }
  925. else
  926. {
  927. PIXEL20_50
  928. PIXEL30_50
  929. PIXEL31_50
  930. }
  931. PIXEL21_0
  932. PIXEL22_30
  933. PIXEL23_61
  934. PIXEL32_10
  935. PIXEL33_80
  936. break;
  937. }
  938. case 11:
  939. case 139:
  940. {
  941. if (Diff(w[4], w[2]))
  942. {
  943. PIXEL00_0
  944. PIXEL01_0
  945. PIXEL10_0
  946. }
  947. else
  948. {
  949. PIXEL00_50
  950. PIXEL01_50
  951. PIXEL10_50
  952. }
  953. PIXEL02_10
  954. PIXEL03_80
  955. PIXEL11_0
  956. PIXEL12_30
  957. PIXEL13_61
  958. PIXEL20_10
  959. PIXEL21_30
  960. PIXEL22_70
  961. PIXEL23_60
  962. PIXEL30_80
  963. PIXEL31_61
  964. PIXEL32_60
  965. PIXEL33_20
  966. break;
  967. }
  968. case 19:
  969. case 51:
  970. {
  971. if (Diff(w[2], w[6]))
  972. {
  973. PIXEL00_81
  974. PIXEL01_31
  975. PIXEL02_10
  976. PIXEL03_80
  977. PIXEL12_30
  978. PIXEL13_10
  979. }
  980. else
  981. {
  982. PIXEL00_12
  983. PIXEL01_14
  984. PIXEL02_83
  985. PIXEL03_50
  986. PIXEL12_70
  987. PIXEL13_21
  988. }
  989. PIXEL10_81
  990. PIXEL11_31
  991. PIXEL20_60
  992. PIXEL21_70
  993. PIXEL22_30
  994. PIXEL23_10
  995. PIXEL30_20
  996. PIXEL31_60
  997. PIXEL32_61
  998. PIXEL33_80
  999. break;
  1000. }
  1001. case 146:
  1002. case 178:
  1003. {
  1004. PIXEL00_80
  1005. PIXEL01_10
  1006. if (Diff(w[2], w[6]))
  1007. {
  1008. PIXEL02_10
  1009. PIXEL03_80
  1010. PIXEL12_30
  1011. PIXEL13_10
  1012. PIXEL23_32
  1013. PIXEL33_82
  1014. }
  1015. else
  1016. {
  1017. PIXEL02_21
  1018. PIXEL03_50
  1019. PIXEL12_70
  1020. PIXEL13_83
  1021. PIXEL23_13
  1022. PIXEL33_11
  1023. }
  1024. PIXEL10_61
  1025. PIXEL11_30
  1026. PIXEL20_60
  1027. PIXEL21_70
  1028. PIXEL22_32
  1029. PIXEL30_20
  1030. PIXEL31_60
  1031. PIXEL32_82
  1032. break;
  1033. }
  1034. case 84:
  1035. case 85:
  1036. {
  1037. PIXEL00_20
  1038. PIXEL01_60
  1039. PIXEL02_81
  1040. if (Diff(w[6], w[8]))
  1041. {
  1042. PIXEL03_81
  1043. PIXEL13_31
  1044. PIXEL22_30
  1045. PIXEL23_10
  1046. PIXEL32_10
  1047. PIXEL33_80
  1048. }
  1049. else
  1050. {
  1051. PIXEL03_12
  1052. PIXEL13_14
  1053. PIXEL22_70
  1054. PIXEL23_83
  1055. PIXEL32_21
  1056. PIXEL33_50
  1057. }
  1058. PIXEL10_60
  1059. PIXEL11_70
  1060. PIXEL12_31
  1061. PIXEL20_61
  1062. PIXEL21_30
  1063. PIXEL30_80
  1064. PIXEL31_10
  1065. break;
  1066. }
  1067. case 112:
  1068. case 113:
  1069. {
  1070. PIXEL00_20
  1071. PIXEL01_60
  1072. PIXEL02_61
  1073. PIXEL03_80
  1074. PIXEL10_60
  1075. PIXEL11_70
  1076. PIXEL12_30
  1077. PIXEL13_10
  1078. PIXEL20_82
  1079. PIXEL21_32
  1080. if (Diff(w[6], w[8]))
  1081. {
  1082. PIXEL22_30
  1083. PIXEL23_10
  1084. PIXEL30_82
  1085. PIXEL31_32
  1086. PIXEL32_10
  1087. PIXEL33_80
  1088. }
  1089. else
  1090. {
  1091. PIXEL22_70
  1092. PIXEL23_21
  1093. PIXEL30_11
  1094. PIXEL31_13
  1095. PIXEL32_83
  1096. PIXEL33_50
  1097. }
  1098. break;
  1099. }
  1100. case 200:
  1101. case 204:
  1102. {
  1103. PIXEL00_80
  1104. PIXEL01_61
  1105. PIXEL02_60
  1106. PIXEL03_20
  1107. PIXEL10_10
  1108. PIXEL11_30
  1109. PIXEL12_70
  1110. PIXEL13_60
  1111. if (Diff(w[8], w[4]))
  1112. {
  1113. PIXEL20_10
  1114. PIXEL21_30
  1115. PIXEL30_80
  1116. PIXEL31_10
  1117. PIXEL32_31
  1118. PIXEL33_81
  1119. }
  1120. else
  1121. {
  1122. PIXEL20_21
  1123. PIXEL21_70
  1124. PIXEL30_50
  1125. PIXEL31_83
  1126. PIXEL32_14
  1127. PIXEL33_12
  1128. }
  1129. PIXEL22_31
  1130. PIXEL23_81
  1131. break;
  1132. }
  1133. case 73:
  1134. case 77:
  1135. {
  1136. if (Diff(w[8], w[4]))
  1137. {
  1138. PIXEL00_82
  1139. PIXEL10_32
  1140. PIXEL20_10
  1141. PIXEL21_30
  1142. PIXEL30_80
  1143. PIXEL31_10
  1144. }
  1145. else
  1146. {
  1147. PIXEL00_11
  1148. PIXEL10_13
  1149. PIXEL20_83
  1150. PIXEL21_70
  1151. PIXEL30_50
  1152. PIXEL31_21
  1153. }
  1154. PIXEL01_82
  1155. PIXEL02_60
  1156. PIXEL03_20
  1157. PIXEL11_32
  1158. PIXEL12_70
  1159. PIXEL13_60
  1160. PIXEL22_30
  1161. PIXEL23_61
  1162. PIXEL32_10
  1163. PIXEL33_80
  1164. break;
  1165. }
  1166. case 42:
  1167. case 170:
  1168. {
  1169. if (Diff(w[4], w[2]))
  1170. {
  1171. PIXEL00_80
  1172. PIXEL01_10
  1173. PIXEL10_10
  1174. PIXEL11_30
  1175. PIXEL20_31
  1176. PIXEL30_81
  1177. }
  1178. else
  1179. {
  1180. PIXEL00_50
  1181. PIXEL01_21
  1182. PIXEL10_83
  1183. PIXEL11_70
  1184. PIXEL20_14
  1185. PIXEL30_12
  1186. }
  1187. PIXEL02_10
  1188. PIXEL03_80
  1189. PIXEL12_30
  1190. PIXEL13_61
  1191. PIXEL21_31
  1192. PIXEL22_70
  1193. PIXEL23_60
  1194. PIXEL31_81
  1195. PIXEL32_60
  1196. PIXEL33_20
  1197. break;
  1198. }
  1199. case 14:
  1200. case 142:
  1201. {
  1202. if (Diff(w[4], w[2]))
  1203. {
  1204. PIXEL00_80
  1205. PIXEL01_10
  1206. PIXEL02_32
  1207. PIXEL03_82
  1208. PIXEL10_10
  1209. PIXEL11_30
  1210. }
  1211. else
  1212. {
  1213. PIXEL00_50
  1214. PIXEL01_83
  1215. PIXEL02_13
  1216. PIXEL03_11
  1217. PIXEL10_21
  1218. PIXEL11_70
  1219. }
  1220. PIXEL12_32
  1221. PIXEL13_82
  1222. PIXEL20_10
  1223. PIXEL21_30
  1224. PIXEL22_70
  1225. PIXEL23_60
  1226. PIXEL30_80
  1227. PIXEL31_61
  1228. PIXEL32_60
  1229. PIXEL33_20
  1230. break;
  1231. }
  1232. case 67:
  1233. {
  1234. PIXEL00_81
  1235. PIXEL01_31
  1236. PIXEL02_10
  1237. PIXEL03_80
  1238. PIXEL10_81
  1239. PIXEL11_31
  1240. PIXEL12_30
  1241. PIXEL13_61
  1242. PIXEL20_61
  1243. PIXEL21_30
  1244. PIXEL22_30
  1245. PIXEL23_61
  1246. PIXEL30_80
  1247. PIXEL31_10
  1248. PIXEL32_10
  1249. PIXEL33_80
  1250. break;
  1251. }
  1252. case 70:
  1253. {
  1254. PIXEL00_80
  1255. PIXEL01_10
  1256. PIXEL02_32
  1257. PIXEL03_82
  1258. PIXEL10_61
  1259. PIXEL11_30
  1260. PIXEL12_32
  1261. PIXEL13_82
  1262. PIXEL20_61
  1263. PIXEL21_30
  1264. PIXEL22_30
  1265. PIXEL23_61
  1266. PIXEL30_80
  1267. PIXEL31_10
  1268. PIXEL32_10
  1269. PIXEL33_80
  1270. break;
  1271. }
  1272. case 28:
  1273. {
  1274. PIXEL00_80
  1275. PIXEL01_61
  1276. PIXEL02_81
  1277. PIXEL03_81
  1278. PIXEL10_10
  1279. PIXEL11_30
  1280. PIXEL12_31
  1281. PIXEL13_31
  1282. PIXEL20_10
  1283. PIXEL21_30
  1284. PIXEL22_30
  1285. PIXEL23_10
  1286. PIXEL30_80
  1287. PIXEL31_61
  1288. PIXEL32_61
  1289. PIXEL33_80
  1290. break;
  1291. }
  1292. case 152:
  1293. {
  1294. PIXEL00_80
  1295. PIXEL01_61
  1296. PIXEL02_61
  1297. PIXEL03_80
  1298. PIXEL10_10
  1299. PIXEL11_30
  1300. PIXEL12_30
  1301. PIXEL13_10
  1302. PIXEL20_10
  1303. PIXEL21_30
  1304. PIXEL22_32
  1305. PIXEL23_32
  1306. PIXEL30_80
  1307. PIXEL31_61
  1308. PIXEL32_82
  1309. PIXEL33_82
  1310. break;
  1311. }
  1312. case 194:
  1313. {
  1314. PIXEL00_80
  1315. PIXEL01_10
  1316. PIXEL02_10
  1317. PIXEL03_80
  1318. PIXEL10_61
  1319. PIXEL11_30
  1320. PIXEL12_30
  1321. PIXEL13_61
  1322. PIXEL20_61
  1323. PIXEL21_30
  1324. PIXEL22_31
  1325. PIXEL23_81
  1326. PIXEL30_80
  1327. PIXEL31_10
  1328. PIXEL32_31
  1329. PIXEL33_81
  1330. break;
  1331. }
  1332. case 98:
  1333. {
  1334. PIXEL00_80
  1335. PIXEL01_10
  1336. PIXEL02_10
  1337. PIXEL03_80
  1338. PIXEL10_61
  1339. PIXEL11_30
  1340. PIXEL12_30
  1341. PIXEL13_61
  1342. PIXEL20_82
  1343. PIXEL21_32
  1344. PIXEL22_30
  1345. PIXEL23_61
  1346. PIXEL30_82
  1347. PIXEL31_32
  1348. PIXEL32_10
  1349. PIXEL33_80
  1350. break;
  1351. }
  1352. case 56:
  1353. {
  1354. PIXEL00_80
  1355. PIXEL01_61
  1356. PIXEL02_61
  1357. PIXEL03_80
  1358. PIXEL10_10
  1359. PIXEL11_30
  1360. PIXEL12_30
  1361. PIXEL13_10
  1362. PIXEL20_31
  1363. PIXEL21_31
  1364. PIXEL22_30
  1365. PIXEL23_10
  1366. PIXEL30_81
  1367. PIXEL31_81
  1368. PIXEL32_61
  1369. PIXEL33_80
  1370. break;
  1371. }
  1372. case 25:
  1373. {
  1374. PIXEL00_82
  1375. PIXEL01_82
  1376. PIXEL02_61
  1377. PIXEL03_80
  1378. PIXEL10_32
  1379. PIXEL11_32
  1380. PIXEL12_30
  1381. PIXEL13_10
  1382. PIXEL20_10
  1383. PIXEL21_30
  1384. PIXEL22_30
  1385. PIXEL23_10
  1386. PIXEL30_80
  1387. PIXEL31_61
  1388. PIXEL32_61
  1389. PIXEL33_80
  1390. break;
  1391. }
  1392. case 26:
  1393. case 31:
  1394. {
  1395. if (Diff(w[4], w[2]))
  1396. {
  1397. PIXEL00_0
  1398. PIXEL01_0
  1399. PIXEL10_0
  1400. }
  1401. else
  1402. {
  1403. PIXEL00_50
  1404. PIXEL01_50
  1405. PIXEL10_50
  1406. }
  1407. if (Diff(w[2], w[6]))
  1408. {
  1409. PIXEL02_0
  1410. PIXEL03_0
  1411. PIXEL13_0
  1412. }
  1413. else
  1414. {
  1415. PIXEL02_50
  1416. PIXEL03_50
  1417. PIXEL13_50
  1418. }
  1419. PIXEL11_0
  1420. PIXEL12_0
  1421. PIXEL20_10
  1422. PIXEL21_30
  1423. PIXEL22_30
  1424. PIXEL23_10
  1425. PIXEL30_80
  1426. PIXEL31_61
  1427. PIXEL32_61
  1428. PIXEL33_80
  1429. break;
  1430. }
  1431. case 82:
  1432. case 214:
  1433. {
  1434. PIXEL00_80
  1435. PIXEL01_10
  1436. if (Diff(w[2], w[6]))
  1437. {
  1438. PIXEL02_0
  1439. PIXEL03_0
  1440. PIXEL13_0
  1441. }
  1442. else
  1443. {
  1444. PIXEL02_50
  1445. PIXEL03_50
  1446. PIXEL13_50
  1447. }
  1448. PIXEL10_61
  1449. PIXEL11_30
  1450. PIXEL12_0
  1451. PIXEL20_61
  1452. PIXEL21_30
  1453. PIXEL22_0
  1454. if (Diff(w[6], w[8]))
  1455. {
  1456. PIXEL23_0
  1457. PIXEL32_0
  1458. PIXEL33_0
  1459. }
  1460. else
  1461. {
  1462. PIXEL23_50
  1463. PIXEL32_50
  1464. PIXEL33_50
  1465. }
  1466. PIXEL30_80
  1467. PIXEL31_10
  1468. break;
  1469. }
  1470. case 88:
  1471. case 248:
  1472. {
  1473. PIXEL00_80
  1474. PIXEL01_61
  1475. PIXEL02_61
  1476. PIXEL03_80
  1477. PIXEL10_10
  1478. PIXEL11_30
  1479. PIXEL12_30
  1480. PIXEL13_10
  1481. if (Diff(w[8], w[4]))
  1482. {
  1483. PIXEL20_0
  1484. PIXEL30_0
  1485. PIXEL31_0
  1486. }
  1487. else
  1488. {
  1489. PIXEL20_50
  1490. PIXEL30_50
  1491. PIXEL31_50
  1492. }
  1493. PIXEL21_0
  1494. PIXEL22_0
  1495. if (Diff(w[6], w[8]))
  1496. {
  1497. PIXEL23_0
  1498. PIXEL32_0
  1499. PIXEL33_0
  1500. }
  1501. else
  1502. {
  1503. PIXEL23_50
  1504. PIXEL32_50
  1505. PIXEL33_50
  1506. }
  1507. break;
  1508. }
  1509. case 74:
  1510. case 107:
  1511. {
  1512. if (Diff(w[4], w[2]))
  1513. {
  1514. PIXEL00_0
  1515. PIXEL01_0
  1516. PIXEL10_0
  1517. }
  1518. else
  1519. {
  1520. PIXEL00_50
  1521. PIXEL01_50
  1522. PIXEL10_50
  1523. }
  1524. PIXEL02_10
  1525. PIXEL03_80
  1526. PIXEL11_0
  1527. PIXEL12_30
  1528. PIXEL13_61
  1529. if (Diff(w[8], w[4]))
  1530. {
  1531. PIXEL20_0
  1532. PIXEL30_0
  1533. PIXEL31_0
  1534. }
  1535. else
  1536. {
  1537. PIXEL20_50
  1538. PIXEL30_50
  1539. PIXEL31_50
  1540. }
  1541. PIXEL21_0
  1542. PIXEL22_30
  1543. PIXEL23_61
  1544. PIXEL32_10
  1545. PIXEL33_80
  1546. break;
  1547. }
  1548. case 27:
  1549. {
  1550. if (Diff(w[4], w[2]))
  1551. {
  1552. PIXEL00_0
  1553. PIXEL01_0
  1554. PIXEL10_0
  1555. }
  1556. else
  1557. {
  1558. PIXEL00_50
  1559. PIXEL01_50
  1560. PIXEL10_50
  1561. }
  1562. PIXEL02_10
  1563. PIXEL03_80
  1564. PIXEL11_0
  1565. PIXEL12_30
  1566. PIXEL13_10
  1567. PIXEL20_10
  1568. PIXEL21_30
  1569. PIXEL22_30
  1570. PIXEL23_10
  1571. PIXEL30_80
  1572. PIXEL31_61
  1573. PIXEL32_61
  1574. PIXEL33_80
  1575. break;
  1576. }
  1577. case 86:
  1578. {
  1579. PIXEL00_80
  1580. PIXEL01_10
  1581. if (Diff(w[2], w[6]))
  1582. {
  1583. PIXEL02_0
  1584. PIXEL03_0
  1585. PIXEL13_0
  1586. }
  1587. else
  1588. {
  1589. PIXEL02_50
  1590. PIXEL03_50
  1591. PIXEL13_50
  1592. }
  1593. PIXEL10_61
  1594. PIXEL11_30
  1595. PIXEL12_0
  1596. PIXEL20_61
  1597. PIXEL21_30
  1598. PIXEL22_30
  1599. PIXEL23_10
  1600. PIXEL30_80
  1601. PIXEL31_10
  1602. PIXEL32_10
  1603. PIXEL33_80
  1604. break;
  1605. }
  1606. case 216:
  1607. {
  1608. PIXEL00_80
  1609. PIXEL01_61
  1610. PIXEL02_61
  1611. PIXEL03_80
  1612. PIXEL10_10
  1613. PIXEL11_30
  1614. PIXEL12_30
  1615. PIXEL13_10
  1616. PIXEL20_10
  1617. PIXEL21_30
  1618. PIXEL22_0
  1619. if (Diff(w[6], w[8]))
  1620. {
  1621. PIXEL23_0
  1622. PIXEL32_0
  1623. PIXEL33_0
  1624. }
  1625. else
  1626. {
  1627. PIXEL23_50
  1628. PIXEL32_50
  1629. PIXEL33_50
  1630. }
  1631. PIXEL30_80
  1632. PIXEL31_10
  1633. break;
  1634. }
  1635. case 106:
  1636. {
  1637. PIXEL00_80
  1638. PIXEL01_10
  1639. PIXEL02_10
  1640. PIXEL03_80
  1641. PIXEL10_10
  1642. PIXEL11_30
  1643. PIXEL12_30
  1644. PIXEL13_61
  1645. if (Diff(w[8], w[4]))
  1646. {
  1647. PIXEL20_0
  1648. PIXEL30_0
  1649. PIXEL31_0
  1650. }
  1651. else
  1652. {
  1653. PIXEL20_50
  1654. PIXEL30_50
  1655. PIXEL31_50
  1656. }
  1657. PIXEL21_0
  1658. PIXEL22_30
  1659. PIXEL23_61
  1660. PIXEL32_10
  1661. PIXEL33_80
  1662. break;
  1663. }
  1664. case 30:
  1665. {
  1666. PIXEL00_80
  1667. PIXEL01_10
  1668. if (Diff(w[2], w[6]))
  1669. {
  1670. PIXEL02_0
  1671. PIXEL03_0
  1672. PIXEL13_0
  1673. }
  1674. else
  1675. {
  1676. PIXEL02_50
  1677. PIXEL03_50
  1678. PIXEL13_50
  1679. }
  1680. PIXEL10_10
  1681. PIXEL11_30
  1682. PIXEL12_0
  1683. PIXEL20_10
  1684. PIXEL21_30
  1685. PIXEL22_30
  1686. PIXEL23_10
  1687. PIXEL30_80
  1688. PIXEL31_61
  1689. PIXEL32_61
  1690. PIXEL33_80
  1691. break;
  1692. }
  1693. case 210:
  1694. {
  1695. PIXEL00_80
  1696. PIXEL01_10
  1697. PIXEL02_10
  1698. PIXEL03_80
  1699. PIXEL10_61
  1700. PIXEL11_30
  1701. PIXEL12_30
  1702. PIXEL13_10
  1703. PIXEL20_61
  1704. PIXEL21_30
  1705. PIXEL22_0
  1706. if (Diff(w[6], w[8]))
  1707. {
  1708. PIXEL23_0
  1709. PIXEL32_0
  1710. PIXEL33_0
  1711. }
  1712. else
  1713. {
  1714. PIXEL23_50
  1715. PIXEL32_50
  1716. PIXEL33_50
  1717. }
  1718. PIXEL30_80
  1719. PIXEL31_10
  1720. break;
  1721. }
  1722. case 120:
  1723. {
  1724. PIXEL00_80
  1725. PIXEL01_61
  1726. PIXEL02_61
  1727. PIXEL03_80
  1728. PIXEL10_10
  1729. PIXEL11_30
  1730. PIXEL12_30
  1731. PIXEL13_10
  1732. if (Diff(w[8], w[4]))
  1733. {
  1734. PIXEL20_0
  1735. PIXEL30_0
  1736. PIXEL31_0
  1737. }
  1738. else
  1739. {
  1740. PIXEL20_50
  1741. PIXEL30_50
  1742. PIXEL31_50
  1743. }
  1744. PIXEL21_0
  1745. PIXEL22_30
  1746. PIXEL23_10
  1747. PIXEL32_10
  1748. PIXEL33_80
  1749. break;
  1750. }
  1751. case 75:
  1752. {
  1753. if (Diff(w[4], w[2]))
  1754. {
  1755. PIXEL00_0
  1756. PIXEL01_0
  1757. PIXEL10_0
  1758. }
  1759. else
  1760. {
  1761. PIXEL00_50
  1762. PIXEL01_50
  1763. PIXEL10_50
  1764. }
  1765. PIXEL02_10
  1766. PIXEL03_80
  1767. PIXEL11_0
  1768. PIXEL12_30
  1769. PIXEL13_61
  1770. PIXEL20_10
  1771. PIXEL21_30
  1772. PIXEL22_30
  1773. PIXEL23_61
  1774. PIXEL30_80
  1775. PIXEL31_10
  1776. PIXEL32_10
  1777. PIXEL33_80
  1778. break;
  1779. }
  1780. case 29:
  1781. {
  1782. PIXEL00_82
  1783. PIXEL01_82
  1784. PIXEL02_81
  1785. PIXEL03_81
  1786. PIXEL10_32
  1787. PIXEL11_32
  1788. PIXEL12_31
  1789. PIXEL13_31
  1790. PIXEL20_10
  1791. PIXEL21_30
  1792. PIXEL22_30
  1793. PIXEL23_10
  1794. PIXEL30_80
  1795. PIXEL31_61
  1796. PIXEL32_61
  1797. PIXEL33_80
  1798. break;
  1799. }
  1800. case 198:
  1801. {
  1802. PIXEL00_80
  1803. PIXEL01_10
  1804. PIXEL02_32
  1805. PIXEL03_82
  1806. PIXEL10_61
  1807. PIXEL11_30
  1808. PIXEL12_32
  1809. PIXEL13_82
  1810. PIXEL20_61
  1811. PIXEL21_30
  1812. PIXEL22_31
  1813. PIXEL23_81
  1814. PIXEL30_80
  1815. PIXEL31_10
  1816. PIXEL32_31
  1817. PIXEL33_81
  1818. break;
  1819. }
  1820. case 184:
  1821. {
  1822. PIXEL00_80
  1823. PIXEL01_61
  1824. PIXEL02_61
  1825. PIXEL03_80
  1826. PIXEL10_10
  1827. PIXEL11_30
  1828. PIXEL12_30
  1829. PIXEL13_10
  1830. PIXEL20_31
  1831. PIXEL21_31
  1832. PIXEL22_32
  1833. PIXEL23_32
  1834. PIXEL30_81
  1835. PIXEL31_81
  1836. PIXEL32_82
  1837. PIXEL33_82
  1838. break;
  1839. }
  1840. case 99:
  1841. {
  1842. PIXEL00_81
  1843. PIXEL01_31
  1844. PIXEL02_10
  1845. PIXEL03_80
  1846. PIXEL10_81
  1847. PIXEL11_31
  1848. PIXEL12_30
  1849. PIXEL13_61
  1850. PIXEL20_82
  1851. PIXEL21_32
  1852. PIXEL22_30
  1853. PIXEL23_61
  1854. PIXEL30_82
  1855. PIXEL31_32
  1856. PIXEL32_10
  1857. PIXEL33_80
  1858. break;
  1859. }
  1860. case 57:
  1861. {
  1862. PIXEL00_82
  1863. PIXEL01_82
  1864. PIXEL02_61
  1865. PIXEL03_80
  1866. PIXEL10_32
  1867. PIXEL11_32
  1868. PIXEL12_30
  1869. PIXEL13_10
  1870. PIXEL20_31
  1871. PIXEL21_31
  1872. PIXEL22_30
  1873. PIXEL23_10
  1874. PIXEL30_81
  1875. PIXEL31_81
  1876. PIXEL32_61
  1877. PIXEL33_80
  1878. break;
  1879. }
  1880. case 71:
  1881. {
  1882. PIXEL00_81
  1883. PIXEL01_31
  1884. PIXEL02_32
  1885. PIXEL03_82
  1886. PIXEL10_81
  1887. PIXEL11_31
  1888. PIXEL12_32
  1889. PIXEL13_82
  1890. PIXEL20_61
  1891. PIXEL21_30
  1892. PIXEL22_30
  1893. PIXEL23_61
  1894. PIXEL30_80
  1895. PIXEL31_10
  1896. PIXEL32_10
  1897. PIXEL33_80
  1898. break;
  1899. }
  1900. case 156:
  1901. {
  1902. PIXEL00_80
  1903. PIXEL01_61
  1904. PIXEL02_81
  1905. PIXEL03_81
  1906. PIXEL10_10
  1907. PIXEL11_30
  1908. PIXEL12_31
  1909. PIXEL13_31
  1910. PIXEL20_10
  1911. PIXEL21_30
  1912. PIXEL22_32
  1913. PIXEL23_32
  1914. PIXEL30_80
  1915. PIXEL31_61
  1916. PIXEL32_82
  1917. PIXEL33_82
  1918. break;
  1919. }
  1920. case 226:
  1921. {
  1922. PIXEL00_80
  1923. PIXEL01_10
  1924. PIXEL02_10
  1925. PIXEL03_80
  1926. PIXEL10_61
  1927. PIXEL11_30
  1928. PIXEL12_30
  1929. PIXEL13_61
  1930. PIXEL20_82
  1931. PIXEL21_32
  1932. PIXEL22_31
  1933. PIXEL23_81
  1934. PIXEL30_82
  1935. PIXEL31_32
  1936. PIXEL32_31
  1937. PIXEL33_81
  1938. break;
  1939. }
  1940. case 60:
  1941. {
  1942. PIXEL00_80
  1943. PIXEL01_61
  1944. PIXEL02_81
  1945. PIXEL03_81
  1946. PIXEL10_10
  1947. PIXEL11_30
  1948. PIXEL12_31
  1949. PIXEL13_31
  1950. PIXEL20_31
  1951. PIXEL21_31
  1952. PIXEL22_30
  1953. PIXEL23_10
  1954. PIXEL30_81
  1955. PIXEL31_81
  1956. PIXEL32_61
  1957. PIXEL33_80
  1958. break;
  1959. }
  1960. case 195:
  1961. {
  1962. PIXEL00_81
  1963. PIXEL01_31
  1964. PIXEL02_10
  1965. PIXEL03_80
  1966. PIXEL10_81
  1967. PIXEL11_31
  1968. PIXEL12_30
  1969. PIXEL13_61
  1970. PIXEL20_61
  1971. PIXEL21_30
  1972. PIXEL22_31
  1973. PIXEL23_81
  1974. PIXEL30_80
  1975. PIXEL31_10
  1976. PIXEL32_31
  1977. PIXEL33_81
  1978. break;
  1979. }
  1980. case 102:
  1981. {
  1982. PIXEL00_80
  1983. PIXEL01_10
  1984. PIXEL02_32
  1985. PIXEL03_82
  1986. PIXEL10_61
  1987. PIXEL11_30
  1988. PIXEL12_32
  1989. PIXEL13_82
  1990. PIXEL20_82
  1991. PIXEL21_32
  1992. PIXEL22_30
  1993. PIXEL23_61
  1994. PIXEL30_82
  1995. PIXEL31_32
  1996. PIXEL32_10
  1997. PIXEL33_80
  1998. break;
  1999. }
  2000. case 153:
  2001. {
  2002. PIXEL00_82
  2003. PIXEL01_82
  2004. PIXEL02_61
  2005. PIXEL03_80
  2006. PIXEL10_32
  2007. PIXEL11_32
  2008. PIXEL12_30
  2009. PIXEL13_10
  2010. PIXEL20_10
  2011. PIXEL21_30
  2012. PIXEL22_32
  2013. PIXEL23_32
  2014. PIXEL30_80
  2015. PIXEL31_61
  2016. PIXEL32_82
  2017. PIXEL33_82
  2018. break;
  2019. }
  2020. case 58:
  2021. {
  2022. if (Diff(w[4], w[2]))
  2023. {
  2024. PIXEL00_80
  2025. PIXEL01_10
  2026. PIXEL10_10
  2027. PIXEL11_30
  2028. }
  2029. else
  2030. {
  2031. PIXEL00_20
  2032. PIXEL01_12
  2033. PIXEL10_11
  2034. PIXEL11_0
  2035. }
  2036. if (Diff(w[2], w[6]))
  2037. {
  2038. PIXEL02_10
  2039. PIXEL03_80
  2040. PIXEL12_30
  2041. PIXEL13_10
  2042. }
  2043. else
  2044. {
  2045. PIXEL02_11
  2046. PIXEL03_20
  2047. PIXEL12_0
  2048. PIXEL13_12
  2049. }
  2050. PIXEL20_31
  2051. PIXEL21_31
  2052. PIXEL22_30
  2053. PIXEL23_10
  2054. PIXEL30_81
  2055. PIXEL31_81
  2056. PIXEL32_61
  2057. PIXEL33_80
  2058. break;
  2059. }
  2060. case 83:
  2061. {
  2062. PIXEL00_81
  2063. PIXEL01_31
  2064. if (Diff(w[2], w[6]))
  2065. {
  2066. PIXEL02_10
  2067. PIXEL03_80
  2068. PIXEL12_30
  2069. PIXEL13_10
  2070. }
  2071. else
  2072. {
  2073. PIXEL02_11
  2074. PIXEL03_20
  2075. PIXEL12_0
  2076. PIXEL13_12
  2077. }
  2078. PIXEL10_81
  2079. PIXEL11_31
  2080. PIXEL20_61
  2081. PIXEL21_30
  2082. if (Diff(w[6], w[8]))
  2083. {
  2084. PIXEL22_30
  2085. PIXEL23_10
  2086. PIXEL32_10
  2087. PIXEL33_80
  2088. }
  2089. else
  2090. {
  2091. PIXEL22_0
  2092. PIXEL23_11
  2093. PIXEL32_12
  2094. PIXEL33_20
  2095. }
  2096. PIXEL30_80
  2097. PIXEL31_10
  2098. break;
  2099. }
  2100. case 92:
  2101. {
  2102. PIXEL00_80
  2103. PIXEL01_61
  2104. PIXEL02_81
  2105. PIXEL03_81
  2106. PIXEL10_10
  2107. PIXEL11_30
  2108. PIXEL12_31
  2109. PIXEL13_31
  2110. if (Diff(w[8], w[4]))
  2111. {
  2112. PIXEL20_10
  2113. PIXEL21_30
  2114. PIXEL30_80
  2115. PIXEL31_10
  2116. }
  2117. else
  2118. {
  2119. PIXEL20_12
  2120. PIXEL21_0
  2121. PIXEL30_20
  2122. PIXEL31_11
  2123. }
  2124. if (Diff(w[6], w[8]))
  2125. {
  2126. PIXEL22_30
  2127. PIXEL23_10
  2128. PIXEL32_10
  2129. PIXEL33_80
  2130. }
  2131. else
  2132. {
  2133. PIXEL22_0
  2134. PIXEL23_11
  2135. PIXEL32_12
  2136. PIXEL33_20
  2137. }
  2138. break;
  2139. }
  2140. case 202:
  2141. {
  2142. if (Diff(w[4], w[2]))
  2143. {
  2144. PIXEL00_80
  2145. PIXEL01_10
  2146. PIXEL10_10
  2147. PIXEL11_30
  2148. }
  2149. else
  2150. {
  2151. PIXEL00_20
  2152. PIXEL01_12
  2153. PIXEL10_11
  2154. PIXEL11_0
  2155. }
  2156. PIXEL02_10
  2157. PIXEL03_80
  2158. PIXEL12_30
  2159. PIXEL13_61
  2160. if (Diff(w[8], w[4]))
  2161. {
  2162. PIXEL20_10
  2163. PIXEL21_30
  2164. PIXEL30_80
  2165. PIXEL31_10
  2166. }
  2167. else
  2168. {
  2169. PIXEL20_12
  2170. PIXEL21_0
  2171. PIXEL30_20
  2172. PIXEL31_11
  2173. }
  2174. PIXEL22_31
  2175. PIXEL23_81
  2176. PIXEL32_31
  2177. PIXEL33_81
  2178. break;
  2179. }
  2180. case 78:
  2181. {
  2182. if (Diff(w[4], w[2]))
  2183. {
  2184. PIXEL00_80
  2185. PIXEL01_10
  2186. PIXEL10_10
  2187. PIXEL11_30
  2188. }
  2189. else
  2190. {
  2191. PIXEL00_20
  2192. PIXEL01_12
  2193. PIXEL10_11
  2194. PIXEL11_0
  2195. }
  2196. PIXEL02_32
  2197. PIXEL03_82
  2198. PIXEL12_32
  2199. PIXEL13_82
  2200. if (Diff(w[8], w[4]))
  2201. {
  2202. PIXEL20_10
  2203. PIXEL21_30
  2204. PIXEL30_80
  2205. PIXEL31_10
  2206. }
  2207. else
  2208. {
  2209. PIXEL20_12
  2210. PIXEL21_0
  2211. PIXEL30_20
  2212. PIXEL31_11
  2213. }
  2214. PIXEL22_30
  2215. PIXEL23_61
  2216. PIXEL32_10
  2217. PIXEL33_80
  2218. break;
  2219. }
  2220. case 154:
  2221. {
  2222. if (Diff(w[4], w[2]))
  2223. {
  2224. PIXEL00_80
  2225. PIXEL01_10
  2226. PIXEL10_10
  2227. PIXEL11_30
  2228. }
  2229. else
  2230. {
  2231. PIXEL00_20
  2232. PIXEL01_12
  2233. PIXEL10_11
  2234. PIXEL11_0
  2235. }
  2236. if (Diff(w[2], w[6]))
  2237. {
  2238. PIXEL02_10
  2239. PIXEL03_80
  2240. PIXEL12_30
  2241. PIXEL13_10
  2242. }
  2243. else
  2244. {
  2245. PIXEL02_11
  2246. PIXEL03_20
  2247. PIXEL12_0
  2248. PIXEL13_12
  2249. }
  2250. PIXEL20_10
  2251. PIXEL21_30
  2252. PIXEL22_32
  2253. PIXEL23_32
  2254. PIXEL30_80
  2255. PIXEL31_61
  2256. PIXEL32_82
  2257. PIXEL33_82
  2258. break;
  2259. }
  2260. case 114:
  2261. {
  2262. PIXEL00_80
  2263. PIXEL01_10
  2264. if (Diff(w[2], w[6]))
  2265. {
  2266. PIXEL02_10
  2267. PIXEL03_80
  2268. PIXEL12_30
  2269. PIXEL13_10
  2270. }
  2271. else
  2272. {
  2273. PIXEL02_11
  2274. PIXEL03_20
  2275. PIXEL12_0
  2276. PIXEL13_12
  2277. }
  2278. PIXEL10_61
  2279. PIXEL11_30
  2280. PIXEL20_82
  2281. PIXEL21_32
  2282. if (Diff(w[6], w[8]))
  2283. {
  2284. PIXEL22_30
  2285. PIXEL23_10
  2286. PIXEL32_10
  2287. PIXEL33_80
  2288. }
  2289. else
  2290. {
  2291. PIXEL22_0
  2292. PIXEL23_11
  2293. PIXEL32_12
  2294. PIXEL33_20
  2295. }
  2296. PIXEL30_82
  2297. PIXEL31_32
  2298. break;
  2299. }
  2300. case 89:
  2301. {
  2302. PIXEL00_82
  2303. PIXEL01_82
  2304. PIXEL02_61
  2305. PIXEL03_80
  2306. PIXEL10_32
  2307. PIXEL11_32
  2308. PIXEL12_30
  2309. PIXEL13_10
  2310. if (Diff(w[8], w[4]))
  2311. {
  2312. PIXEL20_10
  2313. PIXEL21_30
  2314. PIXEL30_80
  2315. PIXEL31_10
  2316. }
  2317. else
  2318. {
  2319. PIXEL20_12
  2320. PIXEL21_0
  2321. PIXEL30_20
  2322. PIXEL31_11
  2323. }
  2324. if (Diff(w[6], w[8]))
  2325. {
  2326. PIXEL22_30
  2327. PIXEL23_10
  2328. PIXEL32_10
  2329. PIXEL33_80
  2330. }
  2331. else
  2332. {
  2333. PIXEL22_0
  2334. PIXEL23_11
  2335. PIXEL32_12
  2336. PIXEL33_20
  2337. }
  2338. break;
  2339. }
  2340. case 90:
  2341. {
  2342. if (Diff(w[4], w[2]))
  2343. {
  2344. PIXEL00_80
  2345. PIXEL01_10
  2346. PIXEL10_10
  2347. PIXEL11_30
  2348. }
  2349. else
  2350. {
  2351. PIXEL00_20
  2352. PIXEL01_12
  2353. PIXEL10_11
  2354. PIXEL11_0
  2355. }
  2356. if (Diff(w[2], w[6]))
  2357. {
  2358. PIXEL02_10
  2359. PIXEL03_80
  2360. PIXEL12_30
  2361. PIXEL13_10
  2362. }
  2363. else
  2364. {
  2365. PIXEL02_11
  2366. PIXEL03_20
  2367. PIXEL12_0
  2368. PIXEL13_12
  2369. }
  2370. if (Diff(w[8], w[4]))
  2371. {
  2372. PIXEL20_10
  2373. PIXEL21_30
  2374. PIXEL30_80
  2375. PIXEL31_10
  2376. }
  2377. else
  2378. {
  2379. PIXEL20_12
  2380. PIXEL21_0
  2381. PIXEL30_20
  2382. PIXEL31_11
  2383. }
  2384. if (Diff(w[6], w[8]))
  2385. {
  2386. PIXEL22_30
  2387. PIXEL23_10
  2388. PIXEL32_10
  2389. PIXEL33_80
  2390. }
  2391. else
  2392. {
  2393. PIXEL22_0
  2394. PIXEL23_11
  2395. PIXEL32_12
  2396. PIXEL33_20
  2397. }
  2398. break;
  2399. }
  2400. case 55:
  2401. case 23:
  2402. {
  2403. if (Diff(w[2], w[6]))
  2404. {
  2405. PIXEL00_81
  2406. PIXEL01_31
  2407. PIXEL02_0
  2408. PIXEL03_0
  2409. PIXEL12_0
  2410. PIXEL13_0
  2411. }
  2412. else
  2413. {
  2414. PIXEL00_12
  2415. PIXEL01_14
  2416. PIXEL02_83
  2417. PIXEL03_50
  2418. PIXEL12_70
  2419. PIXEL13_21
  2420. }
  2421. PIXEL10_81
  2422. PIXEL11_31
  2423. PIXEL20_60
  2424. PIXEL21_70
  2425. PIXEL22_30
  2426. PIXEL23_10
  2427. PIXEL30_20
  2428. PIXEL31_60
  2429. PIXEL32_61
  2430. PIXEL33_80
  2431. break;
  2432. }
  2433. case 182:
  2434. case 150:
  2435. {
  2436. PIXEL00_80
  2437. PIXEL01_10
  2438. if (Diff(w[2], w[6]))
  2439. {
  2440. PIXEL02_0
  2441. PIXEL03_0
  2442. PIXEL12_0
  2443. PIXEL13_0
  2444. PIXEL23_32
  2445. PIXEL33_82
  2446. }
  2447. else
  2448. {
  2449. PIXEL02_21
  2450. PIXEL03_50
  2451. PIXEL12_70
  2452. PIXEL13_83
  2453. PIXEL23_13
  2454. PIXEL33_11
  2455. }
  2456. PIXEL10_61
  2457. PIXEL11_30
  2458. PIXEL20_60
  2459. PIXEL21_70
  2460. PIXEL22_32
  2461. PIXEL30_20
  2462. PIXEL31_60
  2463. PIXEL32_82
  2464. break;
  2465. }
  2466. case 213:
  2467. case 212:
  2468. {
  2469. PIXEL00_20
  2470. PIXEL01_60
  2471. PIXEL02_81
  2472. if (Diff(w[6], w[8]))
  2473. {
  2474. PIXEL03_81
  2475. PIXEL13_31
  2476. PIXEL22_0
  2477. PIXEL23_0
  2478. PIXEL32_0
  2479. PIXEL33_0
  2480. }
  2481. else
  2482. {
  2483. PIXEL03_12
  2484. PIXEL13_14
  2485. PIXEL22_70
  2486. PIXEL23_83
  2487. PIXEL32_21
  2488. PIXEL33_50
  2489. }
  2490. PIXEL10_60
  2491. PIXEL11_70
  2492. PIXEL12_31
  2493. PIXEL20_61
  2494. PIXEL21_30
  2495. PIXEL30_80
  2496. PIXEL31_10
  2497. break;
  2498. }
  2499. case 241:
  2500. case 240:
  2501. {
  2502. PIXEL00_20
  2503. PIXEL01_60
  2504. PIXEL02_61
  2505. PIXEL03_80
  2506. PIXEL10_60
  2507. PIXEL11_70
  2508. PIXEL12_30
  2509. PIXEL13_10
  2510. PIXEL20_82
  2511. PIXEL21_32
  2512. if (Diff(w[6], w[8]))
  2513. {
  2514. PIXEL22_0
  2515. PIXEL23_0
  2516. PIXEL30_82
  2517. PIXEL31_32
  2518. PIXEL32_0
  2519. PIXEL33_0
  2520. }
  2521. else
  2522. {
  2523. PIXEL22_70
  2524. PIXEL23_21
  2525. PIXEL30_11
  2526. PIXEL31_13
  2527. PIXEL32_83
  2528. PIXEL33_50
  2529. }
  2530. break;
  2531. }
  2532. case 236:
  2533. case 232:
  2534. {
  2535. PIXEL00_80
  2536. PIXEL01_61
  2537. PIXEL02_60
  2538. PIXEL03_20
  2539. PIXEL10_10
  2540. PIXEL11_30
  2541. PIXEL12_70
  2542. PIXEL13_60
  2543. if (Diff(w[8], w[4]))
  2544. {
  2545. PIXEL20_0
  2546. PIXEL21_0
  2547. PIXEL30_0
  2548. PIXEL31_0
  2549. PIXEL32_31
  2550. PIXEL33_81
  2551. }
  2552. else
  2553. {
  2554. PIXEL20_21
  2555. PIXEL21_70
  2556. PIXEL30_50
  2557. PIXEL31_83
  2558. PIXEL32_14
  2559. PIXEL33_12
  2560. }
  2561. PIXEL22_31
  2562. PIXEL23_81
  2563. break;
  2564. }
  2565. case 109:
  2566. case 105:
  2567. {
  2568. if (Diff(w[8], w[4]))
  2569. {
  2570. PIXEL00_82
  2571. PIXEL10_32
  2572. PIXEL20_0
  2573. PIXEL21_0
  2574. PIXEL30_0
  2575. PIXEL31_0
  2576. }
  2577. else
  2578. {
  2579. PIXEL00_11
  2580. PIXEL10_13
  2581. PIXEL20_83
  2582. PIXEL21_70
  2583. PIXEL30_50
  2584. PIXEL31_21
  2585. }
  2586. PIXEL01_82
  2587. PIXEL02_60
  2588. PIXEL03_20
  2589. PIXEL11_32
  2590. PIXEL12_70
  2591. PIXEL13_60
  2592. PIXEL22_30
  2593. PIXEL23_61
  2594. PIXEL32_10
  2595. PIXEL33_80
  2596. break;
  2597. }
  2598. case 171:
  2599. case 43:
  2600. {
  2601. if (Diff(w[4], w[2]))
  2602. {
  2603. PIXEL00_0
  2604. PIXEL01_0
  2605. PIXEL10_0
  2606. PIXEL11_0
  2607. PIXEL20_31
  2608. PIXEL30_81
  2609. }
  2610. else
  2611. {
  2612. PIXEL00_50
  2613. PIXEL01_21
  2614. PIXEL10_83
  2615. PIXEL11_70
  2616. PIXEL20_14
  2617. PIXEL30_12
  2618. }
  2619. PIXEL02_10
  2620. PIXEL03_80
  2621. PIXEL12_30
  2622. PIXEL13_61
  2623. PIXEL21_31
  2624. PIXEL22_70
  2625. PIXEL23_60
  2626. PIXEL31_81
  2627. PIXEL32_60
  2628. PIXEL33_20
  2629. break;
  2630. }
  2631. case 143:
  2632. case 15:
  2633. {
  2634. if (Diff(w[4], w[2]))
  2635. {
  2636. PIXEL00_0
  2637. PIXEL01_0
  2638. PIXEL02_32
  2639. PIXEL03_82
  2640. PIXEL10_0
  2641. PIXEL11_0
  2642. }
  2643. else
  2644. {
  2645. PIXEL00_50
  2646. PIXEL01_83
  2647. PIXEL02_13
  2648. PIXEL03_11
  2649. PIXEL10_21
  2650. PIXEL11_70
  2651. }
  2652. PIXEL12_32
  2653. PIXEL13_82
  2654. PIXEL20_10
  2655. PIXEL21_30
  2656. PIXEL22_70
  2657. PIXEL23_60
  2658. PIXEL30_80
  2659. PIXEL31_61
  2660. PIXEL32_60
  2661. PIXEL33_20
  2662. break;
  2663. }
  2664. case 124:
  2665. {
  2666. PIXEL00_80
  2667. PIXEL01_61
  2668. PIXEL02_81
  2669. PIXEL03_81
  2670. PIXEL10_10
  2671. PIXEL11_30
  2672. PIXEL12_31
  2673. PIXEL13_31
  2674. if (Diff(w[8], w[4]))
  2675. {
  2676. PIXEL20_0
  2677. PIXEL30_0
  2678. PIXEL31_0
  2679. }
  2680. else
  2681. {
  2682. PIXEL20_50
  2683. PIXEL30_50
  2684. PIXEL31_50
  2685. }
  2686. PIXEL21_0
  2687. PIXEL22_30
  2688. PIXEL23_10
  2689. PIXEL32_10
  2690. PIXEL33_80
  2691. break;
  2692. }
  2693. case 203:
  2694. {
  2695. if (Diff(w[4], w[2]))
  2696. {
  2697. PIXEL00_0
  2698. PIXEL01_0
  2699. PIXEL10_0
  2700. }
  2701. else
  2702. {
  2703. PIXEL00_50
  2704. PIXEL01_50
  2705. PIXEL10_50
  2706. }
  2707. PIXEL02_10
  2708. PIXEL03_80
  2709. PIXEL11_0
  2710. PIXEL12_30
  2711. PIXEL13_61
  2712. PIXEL20_10
  2713. PIXEL21_30
  2714. PIXEL22_31
  2715. PIXEL23_81
  2716. PIXEL30_80
  2717. PIXEL31_10
  2718. PIXEL32_31
  2719. PIXEL33_81
  2720. break;
  2721. }
  2722. case 62:
  2723. {
  2724. PIXEL00_80
  2725. PIXEL01_10
  2726. if (Diff(w[2], w[6]))
  2727. {
  2728. PIXEL02_0
  2729. PIXEL03_0
  2730. PIXEL13_0
  2731. }
  2732. else
  2733. {
  2734. PIXEL02_50
  2735. PIXEL03_50
  2736. PIXEL13_50
  2737. }
  2738. PIXEL10_10
  2739. PIXEL11_30
  2740. PIXEL12_0
  2741. PIXEL20_31
  2742. PIXEL21_31
  2743. PIXEL22_30
  2744. PIXEL23_10
  2745. PIXEL30_81
  2746. PIXEL31_81
  2747. PIXEL32_61
  2748. PIXEL33_80
  2749. break;
  2750. }
  2751. case 211:
  2752. {
  2753. PIXEL00_81
  2754. PIXEL01_31
  2755. PIXEL02_10
  2756. PIXEL03_80
  2757. PIXEL10_81
  2758. PIXEL11_31
  2759. PIXEL12_30
  2760. PIXEL13_10
  2761. PIXEL20_61
  2762. PIXEL21_30
  2763. PIXEL22_0
  2764. if (Diff(w[6], w[8]))
  2765. {
  2766. PIXEL23_0
  2767. PIXEL32_0
  2768. PIXEL33_0
  2769. }
  2770. else
  2771. {
  2772. PIXEL23_50
  2773. PIXEL32_50
  2774. PIXEL33_50
  2775. }
  2776. PIXEL30_80
  2777. PIXEL31_10
  2778. break;
  2779. }
  2780. case 118:
  2781. {
  2782. PIXEL00_80
  2783. PIXEL01_10
  2784. if (Diff(w[2], w[6]))
  2785. {
  2786. PIXEL02_0
  2787. PIXEL03_0
  2788. PIXEL13_0
  2789. }
  2790. else
  2791. {
  2792. PIXEL02_50
  2793. PIXEL03_50
  2794. PIXEL13_50
  2795. }
  2796. PIXEL10_61
  2797. PIXEL11_30
  2798. PIXEL12_0
  2799. PIXEL20_82
  2800. PIXEL21_32
  2801. PIXEL22_30
  2802. PIXEL23_10
  2803. PIXEL30_82
  2804. PIXEL31_32
  2805. PIXEL32_10
  2806. PIXEL33_80
  2807. break;
  2808. }
  2809. case 217:
  2810. {
  2811. PIXEL00_82
  2812. PIXEL01_82
  2813. PIXEL02_61
  2814. PIXEL03_80
  2815. PIXEL10_32
  2816. PIXEL11_32
  2817. PIXEL12_30
  2818. PIXEL13_10
  2819. PIXEL20_10
  2820. PIXEL21_30
  2821. PIXEL22_0
  2822. if (Diff(w[6], w[8]))
  2823. {
  2824. PIXEL23_0
  2825. PIXEL32_0
  2826. PIXEL33_0
  2827. }
  2828. else
  2829. {
  2830. PIXEL23_50
  2831. PIXEL32_50
  2832. PIXEL33_50
  2833. }
  2834. PIXEL30_80
  2835. PIXEL31_10
  2836. break;
  2837. }
  2838. case 110:
  2839. {
  2840. PIXEL00_80
  2841. PIXEL01_10
  2842. PIXEL02_32
  2843. PIXEL03_82
  2844. PIXEL10_10
  2845. PIXEL11_30
  2846. PIXEL12_32
  2847. PIXEL13_82
  2848. if (Diff(w[8], w[4]))
  2849. {
  2850. PIXEL20_0
  2851. PIXEL30_0
  2852. PIXEL31_0
  2853. }
  2854. else
  2855. {
  2856. PIXEL20_50
  2857. PIXEL30_50
  2858. PIXEL31_50
  2859. }
  2860. PIXEL21_0
  2861. PIXEL22_30
  2862. PIXEL23_61
  2863. PIXEL32_10
  2864. PIXEL33_80
  2865. break;
  2866. }
  2867. case 155:
  2868. {
  2869. if (Diff(w[4], w[2]))
  2870. {
  2871. PIXEL00_0
  2872. PIXEL01_0
  2873. PIXEL10_0
  2874. }
  2875. else
  2876. {
  2877. PIXEL00_50
  2878. PIXEL01_50
  2879. PIXEL10_50
  2880. }
  2881. PIXEL02_10
  2882. PIXEL03_80
  2883. PIXEL11_0
  2884. PIXEL12_30
  2885. PIXEL13_10
  2886. PIXEL20_10
  2887. PIXEL21_30
  2888. PIXEL22_32
  2889. PIXEL23_32
  2890. PIXEL30_80
  2891. PIXEL31_61
  2892. PIXEL32_82
  2893. PIXEL33_82
  2894. break;
  2895. }
  2896. case 188:
  2897. {
  2898. PIXEL00_80
  2899. PIXEL01_61
  2900. PIXEL02_81
  2901. PIXEL03_81
  2902. PIXEL10_10
  2903. PIXEL11_30
  2904. PIXEL12_31
  2905. PIXEL13_31
  2906. PIXEL20_31
  2907. PIXEL21_31
  2908. PIXEL22_32
  2909. PIXEL23_32
  2910. PIXEL30_81
  2911. PIXEL31_81
  2912. PIXEL32_82
  2913. PIXEL33_82
  2914. break;
  2915. }
  2916. case 185:
  2917. {
  2918. PIXEL00_82
  2919. PIXEL01_82
  2920. PIXEL02_61
  2921. PIXEL03_80
  2922. PIXEL10_32
  2923. PIXEL11_32
  2924. PIXEL12_30
  2925. PIXEL13_10
  2926. PIXEL20_31
  2927. PIXEL21_31
  2928. PIXEL22_32
  2929. PIXEL23_32
  2930. PIXEL30_81
  2931. PIXEL31_81
  2932. PIXEL32_82
  2933. PIXEL33_82
  2934. break;
  2935. }
  2936. case 61:
  2937. {
  2938. PIXEL00_82
  2939. PIXEL01_82
  2940. PIXEL02_81
  2941. PIXEL03_81
  2942. PIXEL10_32
  2943. PIXEL11_32
  2944. PIXEL12_31
  2945. PIXEL13_31
  2946. PIXEL20_31
  2947. PIXEL21_31
  2948. PIXEL22_30
  2949. PIXEL23_10
  2950. PIXEL30_81
  2951. PIXEL31_81
  2952. PIXEL32_61
  2953. PIXEL33_80
  2954. break;
  2955. }
  2956. case 157:
  2957. {
  2958. PIXEL00_82
  2959. PIXEL01_82
  2960. PIXEL02_81
  2961. PIXEL03_81
  2962. PIXEL10_32
  2963. PIXEL11_32
  2964. PIXEL12_31
  2965. PIXEL13_31
  2966. PIXEL20_10
  2967. PIXEL21_30
  2968. PIXEL22_32
  2969. PIXEL23_32
  2970. PIXEL30_80
  2971. PIXEL31_61
  2972. PIXEL32_82
  2973. PIXEL33_82
  2974. break;
  2975. }
  2976. case 103:
  2977. {
  2978. PIXEL00_81
  2979. PIXEL01_31
  2980. PIXEL02_32
  2981. PIXEL03_82
  2982. PIXEL10_81
  2983. PIXEL11_31
  2984. PIXEL12_32
  2985. PIXEL13_82
  2986. PIXEL20_82
  2987. PIXEL21_32
  2988. PIXEL22_30
  2989. PIXEL23_61
  2990. PIXEL30_82
  2991. PIXEL31_32
  2992. PIXEL32_10
  2993. PIXEL33_80
  2994. break;
  2995. }
  2996. case 227:
  2997. {
  2998. PIXEL00_81
  2999. PIXEL01_31
  3000. PIXEL02_10
  3001. PIXEL03_80
  3002. PIXEL10_81
  3003. PIXEL11_31
  3004. PIXEL12_30
  3005. PIXEL13_61
  3006. PIXEL20_82
  3007. PIXEL21_32
  3008. PIXEL22_31
  3009. PIXEL23_81
  3010. PIXEL30_82
  3011. PIXEL31_32
  3012. PIXEL32_31
  3013. PIXEL33_81
  3014. break;
  3015. }
  3016. case 230:
  3017. {
  3018. PIXEL00_80
  3019. PIXEL01_10
  3020. PIXEL02_32
  3021. PIXEL03_82
  3022. PIXEL10_61
  3023. PIXEL11_30
  3024. PIXEL12_32
  3025. PIXEL13_82
  3026. PIXEL20_82
  3027. PIXEL21_32
  3028. PIXEL22_31
  3029. PIXEL23_81
  3030. PIXEL30_82
  3031. PIXEL31_32
  3032. PIXEL32_31
  3033. PIXEL33_81
  3034. break;
  3035. }
  3036. case 199:
  3037. {
  3038. PIXEL00_81
  3039. PIXEL01_31
  3040. PIXEL02_32
  3041. PIXEL03_82
  3042. PIXEL10_81
  3043. PIXEL11_31
  3044. PIXEL12_32
  3045. PIXEL13_82
  3046. PIXEL20_61
  3047. PIXEL21_30
  3048. PIXEL22_31
  3049. PIXEL23_81
  3050. PIXEL30_80
  3051. PIXEL31_10
  3052. PIXEL32_31
  3053. PIXEL33_81
  3054. break;
  3055. }
  3056. case 220:
  3057. {
  3058. PIXEL00_80
  3059. PIXEL01_61
  3060. PIXEL02_81
  3061. PIXEL03_81
  3062. PIXEL10_10
  3063. PIXEL11_30
  3064. PIXEL12_31
  3065. PIXEL13_31
  3066. if (Diff(w[8], w[4]))
  3067. {
  3068. PIXEL20_10
  3069. PIXEL21_30
  3070. PIXEL30_80
  3071. PIXEL31_10
  3072. }
  3073. else
  3074. {
  3075. PIXEL20_12
  3076. PIXEL21_0
  3077. PIXEL30_20
  3078. PIXEL31_11
  3079. }
  3080. PIXEL22_0
  3081. if (Diff(w[6], w[8]))
  3082. {
  3083. PIXEL23_0
  3084. PIXEL32_0
  3085. PIXEL33_0
  3086. }
  3087. else
  3088. {
  3089. PIXEL23_50
  3090. PIXEL32_50
  3091. PIXEL33_50
  3092. }
  3093. break;
  3094. }
  3095. case 158:
  3096. {
  3097. if (Diff(w[4], w[2]))
  3098. {
  3099. PIXEL00_80
  3100. PIXEL01_10
  3101. PIXEL10_10
  3102. PIXEL11_30
  3103. }
  3104. else
  3105. {
  3106. PIXEL00_20
  3107. PIXEL01_12
  3108. PIXEL10_11
  3109. PIXEL11_0
  3110. }
  3111. if (Diff(w[2], w[6]))
  3112. {
  3113. PIXEL02_0
  3114. PIXEL03_0
  3115. PIXEL13_0
  3116. }
  3117. else
  3118. {
  3119. PIXEL02_50
  3120. PIXEL03_50
  3121. PIXEL13_50
  3122. }
  3123. PIXEL12_0
  3124. PIXEL20_10
  3125. PIXEL21_30
  3126. PIXEL22_32
  3127. PIXEL23_32
  3128. PIXEL30_80
  3129. PIXEL31_61
  3130. PIXEL32_82
  3131. PIXEL33_82
  3132. break;
  3133. }
  3134. case 234:
  3135. {
  3136. if (Diff(w[4], w[2]))
  3137. {
  3138. PIXEL00_80
  3139. PIXEL01_10
  3140. PIXEL10_10
  3141. PIXEL11_30
  3142. }
  3143. else
  3144. {
  3145. PIXEL00_20
  3146. PIXEL01_12
  3147. PIXEL10_11
  3148. PIXEL11_0
  3149. }
  3150. PIXEL02_10
  3151. PIXEL03_80
  3152. PIXEL12_30
  3153. PIXEL13_61
  3154. if (Diff(w[8], w[4]))
  3155. {
  3156. PIXEL20_0
  3157. PIXEL30_0
  3158. PIXEL31_0
  3159. }
  3160. else
  3161. {
  3162. PIXEL20_50
  3163. PIXEL30_50
  3164. PIXEL31_50
  3165. }
  3166. PIXEL21_0
  3167. PIXEL22_31
  3168. PIXEL23_81
  3169. PIXEL32_31
  3170. PIXEL33_81
  3171. break;
  3172. }
  3173. case 242:
  3174. {
  3175. PIXEL00_80
  3176. PIXEL01_10
  3177. if (Diff(w[2], w[6]))
  3178. {
  3179. PIXEL02_10
  3180. PIXEL03_80
  3181. PIXEL12_30
  3182. PIXEL13_10
  3183. }
  3184. else
  3185. {
  3186. PIXEL02_11
  3187. PIXEL03_20
  3188. PIXEL12_0
  3189. PIXEL13_12
  3190. }
  3191. PIXEL10_61
  3192. PIXEL11_30
  3193. PIXEL20_82
  3194. PIXEL21_32
  3195. PIXEL22_0
  3196. if (Diff(w[6], w[8]))
  3197. {
  3198. PIXEL23_0
  3199. PIXEL32_0
  3200. PIXEL33_0
  3201. }
  3202. else
  3203. {
  3204. PIXEL23_50
  3205. PIXEL32_50
  3206. PIXEL33_50
  3207. }
  3208. PIXEL30_82
  3209. PIXEL31_32
  3210. break;
  3211. }
  3212. case 59:
  3213. {
  3214. if (Diff(w[4], w[2]))
  3215. {
  3216. PIXEL00_0
  3217. PIXEL01_0
  3218. PIXEL10_0
  3219. }
  3220. else
  3221. {
  3222. PIXEL00_50
  3223. PIXEL01_50
  3224. PIXEL10_50
  3225. }
  3226. if (Diff(w[2], w[6]))
  3227. {
  3228. PIXEL02_10
  3229. PIXEL03_80
  3230. PIXEL12_30
  3231. PIXEL13_10
  3232. }
  3233. else
  3234. {
  3235. PIXEL02_11
  3236. PIXEL03_20
  3237. PIXEL12_0
  3238. PIXEL13_12
  3239. }
  3240. PIXEL11_0
  3241. PIXEL20_31
  3242. PIXEL21_31
  3243. PIXEL22_30
  3244. PIXEL23_10
  3245. PIXEL30_81
  3246. PIXEL31_81
  3247. PIXEL32_61
  3248. PIXEL33_80
  3249. break;
  3250. }
  3251. case 121:
  3252. {
  3253. PIXEL00_82
  3254. PIXEL01_82
  3255. PIXEL02_61
  3256. PIXEL03_80
  3257. PIXEL10_32
  3258. PIXEL11_32
  3259. PIXEL12_30
  3260. PIXEL13_10
  3261. if (Diff(w[8], w[4]))
  3262. {
  3263. PIXEL20_0
  3264. PIXEL30_0
  3265. PIXEL31_0
  3266. }
  3267. else
  3268. {
  3269. PIXEL20_50
  3270. PIXEL30_50
  3271. PIXEL31_50
  3272. }
  3273. PIXEL21_0
  3274. if (Diff(w[6], w[8]))
  3275. {
  3276. PIXEL22_30
  3277. PIXEL23_10
  3278. PIXEL32_10
  3279. PIXEL33_80
  3280. }
  3281. else
  3282. {
  3283. PIXEL22_0
  3284. PIXEL23_11
  3285. PIXEL32_12
  3286. PIXEL33_20
  3287. }
  3288. break;
  3289. }
  3290. case 87:
  3291. {
  3292. PIXEL00_81
  3293. PIXEL01_31
  3294. if (Diff(w[2], w[6]))
  3295. {
  3296. PIXEL02_0
  3297. PIXEL03_0
  3298. PIXEL13_0
  3299. }
  3300. else
  3301. {
  3302. PIXEL02_50
  3303. PIXEL03_50
  3304. PIXEL13_50
  3305. }
  3306. PIXEL10_81
  3307. PIXEL11_31
  3308. PIXEL12_0
  3309. PIXEL20_61
  3310. PIXEL21_30
  3311. if (Diff(w[6], w[8]))
  3312. {
  3313. PIXEL22_30
  3314. PIXEL23_10
  3315. PIXEL32_10
  3316. PIXEL33_80
  3317. }
  3318. else
  3319. {
  3320. PIXEL22_0
  3321. PIXEL23_11
  3322. PIXEL32_12
  3323. PIXEL33_20
  3324. }
  3325. PIXEL30_80
  3326. PIXEL31_10
  3327. break;
  3328. }
  3329. case 79:
  3330. {
  3331. if (Diff(w[4], w[2]))
  3332. {
  3333. PIXEL00_0
  3334. PIXEL01_0
  3335. PIXEL10_0
  3336. }
  3337. else
  3338. {
  3339. PIXEL00_50
  3340. PIXEL01_50
  3341. PIXEL10_50
  3342. }
  3343. PIXEL02_32
  3344. PIXEL03_82
  3345. PIXEL11_0
  3346. PIXEL12_32
  3347. PIXEL13_82
  3348. if (Diff(w[8], w[4]))
  3349. {
  3350. PIXEL20_10
  3351. PIXEL21_30
  3352. PIXEL30_80
  3353. PIXEL31_10
  3354. }
  3355. else
  3356. {
  3357. PIXEL20_12
  3358. PIXEL21_0
  3359. PIXEL30_20
  3360. PIXEL31_11
  3361. }
  3362. PIXEL22_30
  3363. PIXEL23_61
  3364. PIXEL32_10
  3365. PIXEL33_80
  3366. break;
  3367. }
  3368. case 122:
  3369. {
  3370. if (Diff(w[4], w[2]))
  3371. {
  3372. PIXEL00_80
  3373. PIXEL01_10
  3374. PIXEL10_10
  3375. PIXEL11_30
  3376. }
  3377. else
  3378. {
  3379. PIXEL00_20
  3380. PIXEL01_12
  3381. PIXEL10_11
  3382. PIXEL11_0
  3383. }
  3384. if (Diff(w[2], w[6]))
  3385. {
  3386. PIXEL02_10
  3387. PIXEL03_80
  3388. PIXEL12_30
  3389. PIXEL13_10
  3390. }
  3391. else
  3392. {
  3393. PIXEL02_11
  3394. PIXEL03_20
  3395. PIXEL12_0
  3396. PIXEL13_12
  3397. }
  3398. if (Diff(w[8], w[4]))
  3399. {
  3400. PIXEL20_0
  3401. PIXEL30_0
  3402. PIXEL31_0
  3403. }
  3404. else
  3405. {
  3406. PIXEL20_50
  3407. PIXEL30_50
  3408. PIXEL31_50
  3409. }
  3410. PIXEL21_0
  3411. if (Diff(w[6], w[8]))
  3412. {
  3413. PIXEL22_30
  3414. PIXEL23_10
  3415. PIXEL32_10
  3416. PIXEL33_80
  3417. }
  3418. else
  3419. {
  3420. PIXEL22_0
  3421. PIXEL23_11
  3422. PIXEL32_12
  3423. PIXEL33_20
  3424. }
  3425. break;
  3426. }
  3427. case 94:
  3428. {
  3429. if (Diff(w[4], w[2]))
  3430. {
  3431. PIXEL00_80
  3432. PIXEL01_10
  3433. PIXEL10_10
  3434. PIXEL11_30
  3435. }
  3436. else
  3437. {
  3438. PIXEL00_20
  3439. PIXEL01_12
  3440. PIXEL10_11
  3441. PIXEL11_0
  3442. }
  3443. if (Diff(w[2], w[6]))
  3444. {
  3445. PIXEL02_0
  3446. PIXEL03_0
  3447. PIXEL13_0
  3448. }
  3449. else
  3450. {
  3451. PIXEL02_50
  3452. PIXEL03_50
  3453. PIXEL13_50
  3454. }
  3455. PIXEL12_0
  3456. if (Diff(w[8], w[4]))
  3457. {
  3458. PIXEL20_10
  3459. PIXEL21_30
  3460. PIXEL30_80
  3461. PIXEL31_10
  3462. }
  3463. else
  3464. {
  3465. PIXEL20_12
  3466. PIXEL21_0
  3467. PIXEL30_20
  3468. PIXEL31_11
  3469. }
  3470. if (Diff(w[6], w[8]))
  3471. {
  3472. PIXEL22_30
  3473. PIXEL23_10
  3474. PIXEL32_10
  3475. PIXEL33_80
  3476. }
  3477. else
  3478. {
  3479. PIXEL22_0
  3480. PIXEL23_11
  3481. PIXEL32_12
  3482. PIXEL33_20
  3483. }
  3484. break;
  3485. }
  3486. case 218:
  3487. {
  3488. if (Diff(w[4], w[2]))
  3489. {
  3490. PIXEL00_80
  3491. PIXEL01_10
  3492. PIXEL10_10
  3493. PIXEL11_30
  3494. }
  3495. else
  3496. {
  3497. PIXEL00_20
  3498. PIXEL01_12
  3499. PIXEL10_11
  3500. PIXEL11_0
  3501. }
  3502. if (Diff(w[2], w[6]))
  3503. {
  3504. PIXEL02_10
  3505. PIXEL03_80
  3506. PIXEL12_30
  3507. PIXEL13_10
  3508. }
  3509. else
  3510. {
  3511. PIXEL02_11
  3512. PIXEL03_20
  3513. PIXEL12_0
  3514. PIXEL13_12
  3515. }
  3516. if (Diff(w[8], w[4]))
  3517. {
  3518. PIXEL20_10
  3519. PIXEL21_30
  3520. PIXEL30_80
  3521. PIXEL31_10
  3522. }
  3523. else
  3524. {
  3525. PIXEL20_12
  3526. PIXEL21_0
  3527. PIXEL30_20
  3528. PIXEL31_11
  3529. }
  3530. PIXEL22_0
  3531. if (Diff(w[6], w[8]))
  3532. {
  3533. PIXEL23_0
  3534. PIXEL32_0
  3535. PIXEL33_0
  3536. }
  3537. else
  3538. {
  3539. PIXEL23_50
  3540. PIXEL32_50
  3541. PIXEL33_50
  3542. }
  3543. break;
  3544. }
  3545. case 91:
  3546. {
  3547. if (Diff(w[4], w[2]))
  3548. {
  3549. PIXEL00_0
  3550. PIXEL01_0
  3551. PIXEL10_0
  3552. }
  3553. else
  3554. {
  3555. PIXEL00_50
  3556. PIXEL01_50
  3557. PIXEL10_50
  3558. }
  3559. if (Diff(w[2], w[6]))
  3560. {
  3561. PIXEL02_10
  3562. PIXEL03_80
  3563. PIXEL12_30
  3564. PIXEL13_10
  3565. }
  3566. else
  3567. {
  3568. PIXEL02_11
  3569. PIXEL03_20
  3570. PIXEL12_0
  3571. PIXEL13_12
  3572. }
  3573. PIXEL11_0
  3574. if (Diff(w[8], w[4]))
  3575. {
  3576. PIXEL20_10
  3577. PIXEL21_30
  3578. PIXEL30_80
  3579. PIXEL31_10
  3580. }
  3581. else
  3582. {
  3583. PIXEL20_12
  3584. PIXEL21_0
  3585. PIXEL30_20
  3586. PIXEL31_11
  3587. }
  3588. if (Diff(w[6], w[8]))
  3589. {
  3590. PIXEL22_30
  3591. PIXEL23_10
  3592. PIXEL32_10
  3593. PIXEL33_80
  3594. }
  3595. else
  3596. {
  3597. PIXEL22_0
  3598. PIXEL23_11
  3599. PIXEL32_12
  3600. PIXEL33_20
  3601. }
  3602. break;
  3603. }
  3604. case 229:
  3605. {
  3606. PIXEL00_20
  3607. PIXEL01_60
  3608. PIXEL02_60
  3609. PIXEL03_20
  3610. PIXEL10_60
  3611. PIXEL11_70
  3612. PIXEL12_70
  3613. PIXEL13_60
  3614. PIXEL20_82
  3615. PIXEL21_32
  3616. PIXEL22_31
  3617. PIXEL23_81
  3618. PIXEL30_82
  3619. PIXEL31_32
  3620. PIXEL32_31
  3621. PIXEL33_81
  3622. break;
  3623. }
  3624. case 167:
  3625. {
  3626. PIXEL00_81
  3627. PIXEL01_31
  3628. PIXEL02_32
  3629. PIXEL03_82
  3630. PIXEL10_81
  3631. PIXEL11_31
  3632. PIXEL12_32
  3633. PIXEL13_82
  3634. PIXEL20_60
  3635. PIXEL21_70
  3636. PIXEL22_70
  3637. PIXEL23_60
  3638. PIXEL30_20
  3639. PIXEL31_60
  3640. PIXEL32_60
  3641. PIXEL33_20
  3642. break;
  3643. }
  3644. case 173:
  3645. {
  3646. PIXEL00_82
  3647. PIXEL01_82
  3648. PIXEL02_60
  3649. PIXEL03_20
  3650. PIXEL10_32
  3651. PIXEL11_32
  3652. PIXEL12_70
  3653. PIXEL13_60
  3654. PIXEL20_31
  3655. PIXEL21_31
  3656. PIXEL22_70
  3657. PIXEL23_60
  3658. PIXEL30_81
  3659. PIXEL31_81
  3660. PIXEL32_60
  3661. PIXEL33_20
  3662. break;
  3663. }
  3664. case 181:
  3665. {
  3666. PIXEL00_20
  3667. PIXEL01_60
  3668. PIXEL02_81
  3669. PIXEL03_81
  3670. PIXEL10_60
  3671. PIXEL11_70
  3672. PIXEL12_31
  3673. PIXEL13_31
  3674. PIXEL20_60
  3675. PIXEL21_70
  3676. PIXEL22_32
  3677. PIXEL23_32
  3678. PIXEL30_20
  3679. PIXEL31_60
  3680. PIXEL32_82
  3681. PIXEL33_82
  3682. break;
  3683. }
  3684. case 186:
  3685. {
  3686. if (Diff(w[4], w[2]))
  3687. {
  3688. PIXEL00_80
  3689. PIXEL01_10
  3690. PIXEL10_10
  3691. PIXEL11_30
  3692. }
  3693. else
  3694. {
  3695. PIXEL00_20
  3696. PIXEL01_12
  3697. PIXEL10_11
  3698. PIXEL11_0
  3699. }
  3700. if (Diff(w[2], w[6]))
  3701. {
  3702. PIXEL02_10
  3703. PIXEL03_80
  3704. PIXEL12_30
  3705. PIXEL13_10
  3706. }
  3707. else
  3708. {
  3709. PIXEL02_11
  3710. PIXEL03_20
  3711. PIXEL12_0
  3712. PIXEL13_12
  3713. }
  3714. PIXEL20_31
  3715. PIXEL21_31
  3716. PIXEL22_32
  3717. PIXEL23_32
  3718. PIXEL30_81
  3719. PIXEL31_81
  3720. PIXEL32_82
  3721. PIXEL33_82
  3722. break;
  3723. }
  3724. case 115:
  3725. {
  3726. PIXEL00_81
  3727. PIXEL01_31
  3728. if (Diff(w[2], w[6]))
  3729. {
  3730. PIXEL02_10
  3731. PIXEL03_80
  3732. PIXEL12_30
  3733. PIXEL13_10
  3734. }
  3735. else
  3736. {
  3737. PIXEL02_11
  3738. PIXEL03_20
  3739. PIXEL12_0
  3740. PIXEL13_12
  3741. }
  3742. PIXEL10_81
  3743. PIXEL11_31
  3744. PIXEL20_82
  3745. PIXEL21_32
  3746. if (Diff(w[6], w[8]))
  3747. {
  3748. PIXEL22_30
  3749. PIXEL23_10
  3750. PIXEL32_10
  3751. PIXEL33_80
  3752. }
  3753. else
  3754. {
  3755. PIXEL22_0
  3756. PIXEL23_11
  3757. PIXEL32_12
  3758. PIXEL33_20
  3759. }
  3760. PIXEL30_82
  3761. PIXEL31_32
  3762. break;
  3763. }
  3764. case 93:
  3765. {
  3766. PIXEL00_82
  3767. PIXEL01_82
  3768. PIXEL02_81
  3769. PIXEL03_81
  3770. PIXEL10_32
  3771. PIXEL11_32
  3772. PIXEL12_31
  3773. PIXEL13_31
  3774. if (Diff(w[8], w[4]))
  3775. {
  3776. PIXEL20_10
  3777. PIXEL21_30
  3778. PIXEL30_80
  3779. PIXEL31_10
  3780. }
  3781. else
  3782. {
  3783. PIXEL20_12
  3784. PIXEL21_0
  3785. PIXEL30_20
  3786. PIXEL31_11
  3787. }
  3788. if (Diff(w[6], w[8]))
  3789. {
  3790. PIXEL22_30
  3791. PIXEL23_10
  3792. PIXEL32_10
  3793. PIXEL33_80
  3794. }
  3795. else
  3796. {
  3797. PIXEL22_0
  3798. PIXEL23_11
  3799. PIXEL32_12
  3800. PIXEL33_20
  3801. }
  3802. break;
  3803. }
  3804. case 206:
  3805. {
  3806. if (Diff(w[4], w[2]))
  3807. {
  3808. PIXEL00_80
  3809. PIXEL01_10
  3810. PIXEL10_10
  3811. PIXEL11_30
  3812. }
  3813. else
  3814. {
  3815. PIXEL00_20
  3816. PIXEL01_12
  3817. PIXEL10_11
  3818. PIXEL11_0
  3819. }
  3820. PIXEL02_32
  3821. PIXEL03_82
  3822. PIXEL12_32
  3823. PIXEL13_82
  3824. if (Diff(w[8], w[4]))
  3825. {
  3826. PIXEL20_10
  3827. PIXEL21_30
  3828. PIXEL30_80
  3829. PIXEL31_10
  3830. }
  3831. else
  3832. {
  3833. PIXEL20_12
  3834. PIXEL21_0
  3835. PIXEL30_20
  3836. PIXEL31_11
  3837. }
  3838. PIXEL22_31
  3839. PIXEL23_81
  3840. PIXEL32_31
  3841. PIXEL33_81
  3842. break;
  3843. }
  3844. case 205:
  3845. case 201:
  3846. {
  3847. PIXEL00_82
  3848. PIXEL01_82
  3849. PIXEL02_60
  3850. PIXEL03_20
  3851. PIXEL10_32
  3852. PIXEL11_32
  3853. PIXEL12_70
  3854. PIXEL13_60
  3855. if (Diff(w[8], w[4]))
  3856. {
  3857. PIXEL20_10
  3858. PIXEL21_30
  3859. PIXEL30_80
  3860. PIXEL31_10
  3861. }
  3862. else
  3863. {
  3864. PIXEL20_12
  3865. PIXEL21_0
  3866. PIXEL30_20
  3867. PIXEL31_11
  3868. }
  3869. PIXEL22_31
  3870. PIXEL23_81
  3871. PIXEL32_31
  3872. PIXEL33_81
  3873. break;
  3874. }
  3875. case 174:
  3876. case 46:
  3877. {
  3878. if (Diff(w[4], w[2]))
  3879. {
  3880. PIXEL00_80
  3881. PIXEL01_10
  3882. PIXEL10_10
  3883. PIXEL11_30
  3884. }
  3885. else
  3886. {
  3887. PIXEL00_20
  3888. PIXEL01_12
  3889. PIXEL10_11
  3890. PIXEL11_0
  3891. }
  3892. PIXEL02_32
  3893. PIXEL03_82
  3894. PIXEL12_32
  3895. PIXEL13_82
  3896. PIXEL20_31
  3897. PIXEL21_31
  3898. PIXEL22_70
  3899. PIXEL23_60
  3900. PIXEL30_81
  3901. PIXEL31_81
  3902. PIXEL32_60
  3903. PIXEL33_20
  3904. break;
  3905. }
  3906. case 179:
  3907. case 147:
  3908. {
  3909. PIXEL00_81
  3910. PIXEL01_31
  3911. if (Diff(w[2], w[6]))
  3912. {
  3913. PIXEL02_10
  3914. PIXEL03_80
  3915. PIXEL12_30
  3916. PIXEL13_10
  3917. }
  3918. else
  3919. {
  3920. PIXEL02_11
  3921. PIXEL03_20
  3922. PIXEL12_0
  3923. PIXEL13_12
  3924. }
  3925. PIXEL10_81
  3926. PIXEL11_31
  3927. PIXEL20_60
  3928. PIXEL21_70
  3929. PIXEL22_32
  3930. PIXEL23_32
  3931. PIXEL30_20
  3932. PIXEL31_60
  3933. PIXEL32_82
  3934. PIXEL33_82
  3935. break;
  3936. }
  3937. case 117:
  3938. case 116:
  3939. {
  3940. PIXEL00_20
  3941. PIXEL01_60
  3942. PIXEL02_81
  3943. PIXEL03_81
  3944. PIXEL10_60
  3945. PIXEL11_70
  3946. PIXEL12_31
  3947. PIXEL13_31
  3948. PIXEL20_82
  3949. PIXEL21_32
  3950. if (Diff(w[6], w[8]))
  3951. {
  3952. PIXEL22_30
  3953. PIXEL23_10
  3954. PIXEL32_10
  3955. PIXEL33_80
  3956. }
  3957. else
  3958. {
  3959. PIXEL22_0
  3960. PIXEL23_11
  3961. PIXEL32_12
  3962. PIXEL33_20
  3963. }
  3964. PIXEL30_82
  3965. PIXEL31_32
  3966. break;
  3967. }
  3968. case 189:
  3969. {
  3970. PIXEL00_82
  3971. PIXEL01_82
  3972. PIXEL02_81
  3973. PIXEL03_81
  3974. PIXEL10_32
  3975. PIXEL11_32
  3976. PIXEL12_31
  3977. PIXEL13_31
  3978. PIXEL20_31
  3979. PIXEL21_31
  3980. PIXEL22_32
  3981. PIXEL23_32
  3982. PIXEL30_81
  3983. PIXEL31_81
  3984. PIXEL32_82
  3985. PIXEL33_82
  3986. break;
  3987. }
  3988. case 231:
  3989. {
  3990. PIXEL00_81
  3991. PIXEL01_31
  3992. PIXEL02_32
  3993. PIXEL03_82
  3994. PIXEL10_81
  3995. PIXEL11_31
  3996. PIXEL12_32
  3997. PIXEL13_82
  3998. PIXEL20_82
  3999. PIXEL21_32
  4000. PIXEL22_31
  4001. PIXEL23_81
  4002. PIXEL30_82
  4003. PIXEL31_32
  4004. PIXEL32_31
  4005. PIXEL33_81
  4006. break;
  4007. }
  4008. case 126:
  4009. {
  4010. PIXEL00_80
  4011. PIXEL01_10
  4012. if (Diff(w[2], w[6]))
  4013. {
  4014. PIXEL02_0
  4015. PIXEL03_0
  4016. PIXEL13_0
  4017. }
  4018. else
  4019. {
  4020. PIXEL02_50
  4021. PIXEL03_50
  4022. PIXEL13_50
  4023. }
  4024. PIXEL10_10
  4025. PIXEL11_30
  4026. PIXEL12_0
  4027. if (Diff(w[8], w[4]))
  4028. {
  4029. PIXEL20_0
  4030. PIXEL30_0
  4031. PIXEL31_0
  4032. }
  4033. else
  4034. {
  4035. PIXEL20_50
  4036. PIXEL30_50
  4037. PIXEL31_50
  4038. }
  4039. PIXEL21_0
  4040. PIXEL22_30
  4041. PIXEL23_10
  4042. PIXEL32_10
  4043. PIXEL33_80
  4044. break;
  4045. }
  4046. case 219:
  4047. {
  4048. if (Diff(w[4], w[2]))
  4049. {
  4050. PIXEL00_0
  4051. PIXEL01_0
  4052. PIXEL10_0
  4053. }
  4054. else
  4055. {
  4056. PIXEL00_50
  4057. PIXEL01_50
  4058. PIXEL10_50
  4059. }
  4060. PIXEL02_10
  4061. PIXEL03_80
  4062. PIXEL11_0
  4063. PIXEL12_30
  4064. PIXEL13_10
  4065. PIXEL20_10
  4066. PIXEL21_30
  4067. PIXEL22_0
  4068. if (Diff(w[6], w[8]))
  4069. {
  4070. PIXEL23_0
  4071. PIXEL32_0
  4072. PIXEL33_0
  4073. }
  4074. else
  4075. {
  4076. PIXEL23_50
  4077. PIXEL32_50
  4078. PIXEL33_50
  4079. }
  4080. PIXEL30_80
  4081. PIXEL31_10
  4082. break;
  4083. }
  4084. case 125:
  4085. {
  4086. if (Diff(w[8], w[4]))
  4087. {
  4088. PIXEL00_82
  4089. PIXEL10_32
  4090. PIXEL20_0
  4091. PIXEL21_0
  4092. PIXEL30_0
  4093. PIXEL31_0
  4094. }
  4095. else
  4096. {
  4097. PIXEL00_11
  4098. PIXEL10_13
  4099. PIXEL20_83
  4100. PIXEL21_70
  4101. PIXEL30_50
  4102. PIXEL31_21
  4103. }
  4104. PIXEL01_82
  4105. PIXEL02_81
  4106. PIXEL03_81
  4107. PIXEL11_32
  4108. PIXEL12_31
  4109. PIXEL13_31
  4110. PIXEL22_30
  4111. PIXEL23_10
  4112. PIXEL32_10
  4113. PIXEL33_80
  4114. break;
  4115. }
  4116. case 221:
  4117. {
  4118. PIXEL00_82
  4119. PIXEL01_82
  4120. PIXEL02_81
  4121. if (Diff(w[6], w[8]))
  4122. {
  4123. PIXEL03_81
  4124. PIXEL13_31
  4125. PIXEL22_0
  4126. PIXEL23_0
  4127. PIXEL32_0
  4128. PIXEL33_0
  4129. }
  4130. else
  4131. {
  4132. PIXEL03_12
  4133. PIXEL13_14
  4134. PIXEL22_70
  4135. PIXEL23_83
  4136. PIXEL32_21
  4137. PIXEL33_50
  4138. }
  4139. PIXEL10_32
  4140. PIXEL11_32
  4141. PIXEL12_31
  4142. PIXEL20_10
  4143. PIXEL21_30
  4144. PIXEL30_80
  4145. PIXEL31_10
  4146. break;
  4147. }
  4148. case 207:
  4149. {
  4150. if (Diff(w[4], w[2]))
  4151. {
  4152. PIXEL00_0
  4153. PIXEL01_0
  4154. PIXEL02_32
  4155. PIXEL03_82
  4156. PIXEL10_0
  4157. PIXEL11_0
  4158. }
  4159. else
  4160. {
  4161. PIXEL00_50
  4162. PIXEL01_83
  4163. PIXEL02_13
  4164. PIXEL03_11
  4165. PIXEL10_21
  4166. PIXEL11_70
  4167. }
  4168. PIXEL12_32
  4169. PIXEL13_82
  4170. PIXEL20_10
  4171. PIXEL21_30
  4172. PIXEL22_31
  4173. PIXEL23_81
  4174. PIXEL30_80
  4175. PIXEL31_10
  4176. PIXEL32_31
  4177. PIXEL33_81
  4178. break;
  4179. }
  4180. case 238:
  4181. {
  4182. PIXEL00_80
  4183. PIXEL01_10
  4184. PIXEL02_32
  4185. PIXEL03_82
  4186. PIXEL10_10
  4187. PIXEL11_30
  4188. PIXEL12_32
  4189. PIXEL13_82
  4190. if (Diff(w[8], w[4]))
  4191. {
  4192. PIXEL20_0
  4193. PIXEL21_0
  4194. PIXEL30_0
  4195. PIXEL31_0
  4196. PIXEL32_31
  4197. PIXEL33_81
  4198. }
  4199. else
  4200. {
  4201. PIXEL20_21
  4202. PIXEL21_70
  4203. PIXEL30_50
  4204. PIXEL31_83
  4205. PIXEL32_14
  4206. PIXEL33_12
  4207. }
  4208. PIXEL22_31
  4209. PIXEL23_81
  4210. break;
  4211. }
  4212. case 190:
  4213. {
  4214. PIXEL00_80
  4215. PIXEL01_10
  4216. if (Diff(w[2], w[6]))
  4217. {
  4218. PIXEL02_0
  4219. PIXEL03_0
  4220. PIXEL12_0
  4221. PIXEL13_0
  4222. PIXEL23_32
  4223. PIXEL33_82
  4224. }
  4225. else
  4226. {
  4227. PIXEL02_21
  4228. PIXEL03_50
  4229. PIXEL12_70
  4230. PIXEL13_83
  4231. PIXEL23_13
  4232. PIXEL33_11
  4233. }
  4234. PIXEL10_10
  4235. PIXEL11_30
  4236. PIXEL20_31
  4237. PIXEL21_31
  4238. PIXEL22_32
  4239. PIXEL30_81
  4240. PIXEL31_81
  4241. PIXEL32_82
  4242. break;
  4243. }
  4244. case 187:
  4245. {
  4246. if (Diff(w[4], w[2]))
  4247. {
  4248. PIXEL00_0
  4249. PIXEL01_0
  4250. PIXEL10_0
  4251. PIXEL11_0
  4252. PIXEL20_31
  4253. PIXEL30_81
  4254. }
  4255. else
  4256. {
  4257. PIXEL00_50
  4258. PIXEL01_21
  4259. PIXEL10_83
  4260. PIXEL11_70
  4261. PIXEL20_14
  4262. PIXEL30_12
  4263. }
  4264. PIXEL02_10
  4265. PIXEL03_80
  4266. PIXEL12_30
  4267. PIXEL13_10
  4268. PIXEL21_31
  4269. PIXEL22_32
  4270. PIXEL23_32
  4271. PIXEL31_81
  4272. PIXEL32_82
  4273. PIXEL33_82
  4274. break;
  4275. }
  4276. case 243:
  4277. {
  4278. PIXEL00_81
  4279. PIXEL01_31
  4280. PIXEL02_10
  4281. PIXEL03_80
  4282. PIXEL10_81
  4283. PIXEL11_31
  4284. PIXEL12_30
  4285. PIXEL13_10
  4286. PIXEL20_82
  4287. PIXEL21_32
  4288. if (Diff(w[6], w[8]))
  4289. {
  4290. PIXEL22_0
  4291. PIXEL23_0
  4292. PIXEL30_82
  4293. PIXEL31_32
  4294. PIXEL32_0
  4295. PIXEL33_0
  4296. }
  4297. else
  4298. {
  4299. PIXEL22_70
  4300. PIXEL23_21
  4301. PIXEL30_11
  4302. PIXEL31_13
  4303. PIXEL32_83
  4304. PIXEL33_50
  4305. }
  4306. break;
  4307. }
  4308. case 119:
  4309. {
  4310. if (Diff(w[2], w[6]))
  4311. {
  4312. PIXEL00_81
  4313. PIXEL01_31
  4314. PIXEL02_0
  4315. PIXEL03_0
  4316. PIXEL12_0
  4317. PIXEL13_0
  4318. }
  4319. else
  4320. {
  4321. PIXEL00_12
  4322. PIXEL01_14
  4323. PIXEL02_83
  4324. PIXEL03_50
  4325. PIXEL12_70
  4326. PIXEL13_21
  4327. }
  4328. PIXEL10_81
  4329. PIXEL11_31
  4330. PIXEL20_82
  4331. PIXEL21_32
  4332. PIXEL22_30
  4333. PIXEL23_10
  4334. PIXEL30_82
  4335. PIXEL31_32
  4336. PIXEL32_10
  4337. PIXEL33_80
  4338. break;
  4339. }
  4340. case 237:
  4341. case 233:
  4342. {
  4343. PIXEL00_82
  4344. PIXEL01_82
  4345. PIXEL02_60
  4346. PIXEL03_20
  4347. PIXEL10_32
  4348. PIXEL11_32
  4349. PIXEL12_70
  4350. PIXEL13_60
  4351. PIXEL20_0
  4352. PIXEL21_0
  4353. PIXEL22_31
  4354. PIXEL23_81
  4355. if (Diff(w[8], w[4]))
  4356. {
  4357. PIXEL30_0
  4358. }
  4359. else
  4360. {
  4361. PIXEL30_20
  4362. }
  4363. PIXEL31_0
  4364. PIXEL32_31
  4365. PIXEL33_81
  4366. break;
  4367. }
  4368. case 175:
  4369. case 47:
  4370. {
  4371. if (Diff(w[4], w[2]))
  4372. {
  4373. PIXEL00_0
  4374. }
  4375. else
  4376. {
  4377. PIXEL00_20
  4378. }
  4379. PIXEL01_0
  4380. PIXEL02_32
  4381. PIXEL03_82
  4382. PIXEL10_0
  4383. PIXEL11_0
  4384. PIXEL12_32
  4385. PIXEL13_82
  4386. PIXEL20_31
  4387. PIXEL21_31
  4388. PIXEL22_70
  4389. PIXEL23_60
  4390. PIXEL30_81
  4391. PIXEL31_81
  4392. PIXEL32_60
  4393. PIXEL33_20
  4394. break;
  4395. }
  4396. case 183:
  4397. case 151:
  4398. {
  4399. PIXEL00_81
  4400. PIXEL01_31
  4401. PIXEL02_0
  4402. if (Diff(w[2], w[6]))
  4403. {
  4404. PIXEL03_0
  4405. }
  4406. else
  4407. {
  4408. PIXEL03_20
  4409. }
  4410. PIXEL10_81
  4411. PIXEL11_31
  4412. PIXEL12_0
  4413. PIXEL13_0
  4414. PIXEL20_60
  4415. PIXEL21_70
  4416. PIXEL22_32
  4417. PIXEL23_32
  4418. PIXEL30_20
  4419. PIXEL31_60
  4420. PIXEL32_82
  4421. PIXEL33_82
  4422. break;
  4423. }
  4424. case 245:
  4425. case 244:
  4426. {
  4427. PIXEL00_20
  4428. PIXEL01_60
  4429. PIXEL02_81
  4430. PIXEL03_81
  4431. PIXEL10_60
  4432. PIXEL11_70
  4433. PIXEL12_31
  4434. PIXEL13_31
  4435. PIXEL20_82
  4436. PIXEL21_32
  4437. PIXEL22_0
  4438. PIXEL23_0
  4439. PIXEL30_82
  4440. PIXEL31_32
  4441. PIXEL32_0
  4442. if (Diff(w[6], w[8]))
  4443. {
  4444. PIXEL33_0
  4445. }
  4446. else
  4447. {
  4448. PIXEL33_20
  4449. }
  4450. break;
  4451. }
  4452. case 250:
  4453. {
  4454. PIXEL00_80
  4455. PIXEL01_10
  4456. PIXEL02_10
  4457. PIXEL03_80
  4458. PIXEL10_10
  4459. PIXEL11_30
  4460. PIXEL12_30
  4461. PIXEL13_10
  4462. if (Diff(w[8], w[4]))
  4463. {
  4464. PIXEL20_0
  4465. PIXEL30_0
  4466. PIXEL31_0
  4467. }
  4468. else
  4469. {
  4470. PIXEL20_50
  4471. PIXEL30_50
  4472. PIXEL31_50
  4473. }
  4474. PIXEL21_0
  4475. PIXEL22_0
  4476. if (Diff(w[6], w[8]))
  4477. {
  4478. PIXEL23_0
  4479. PIXEL32_0
  4480. PIXEL33_0
  4481. }
  4482. else
  4483. {
  4484. PIXEL23_50
  4485. PIXEL32_50
  4486. PIXEL33_50
  4487. }
  4488. break;
  4489. }
  4490. case 123:
  4491. {
  4492. if (Diff(w[4], w[2]))
  4493. {
  4494. PIXEL00_0
  4495. PIXEL01_0
  4496. PIXEL10_0
  4497. }
  4498. else
  4499. {
  4500. PIXEL00_50
  4501. PIXEL01_50
  4502. PIXEL10_50
  4503. }
  4504. PIXEL02_10
  4505. PIXEL03_80
  4506. PIXEL11_0
  4507. PIXEL12_30
  4508. PIXEL13_10
  4509. if (Diff(w[8], w[4]))
  4510. {
  4511. PIXEL20_0
  4512. PIXEL30_0
  4513. PIXEL31_0
  4514. }
  4515. else
  4516. {
  4517. PIXEL20_50
  4518. PIXEL30_50
  4519. PIXEL31_50
  4520. }
  4521. PIXEL21_0
  4522. PIXEL22_30
  4523. PIXEL23_10
  4524. PIXEL32_10
  4525. PIXEL33_80
  4526. break;
  4527. }
  4528. case 95:
  4529. {
  4530. if (Diff(w[4], w[2]))
  4531. {
  4532. PIXEL00_0
  4533. PIXEL01_0
  4534. PIXEL10_0
  4535. }
  4536. else
  4537. {
  4538. PIXEL00_50
  4539. PIXEL01_50
  4540. PIXEL10_50
  4541. }
  4542. if (Diff(w[2], w[6]))
  4543. {
  4544. PIXEL02_0
  4545. PIXEL03_0
  4546. PIXEL13_0
  4547. }
  4548. else
  4549. {
  4550. PIXEL02_50
  4551. PIXEL03_50
  4552. PIXEL13_50
  4553. }
  4554. PIXEL11_0
  4555. PIXEL12_0
  4556. PIXEL20_10
  4557. PIXEL21_30
  4558. PIXEL22_30
  4559. PIXEL23_10
  4560. PIXEL30_80
  4561. PIXEL31_10
  4562. PIXEL32_10
  4563. PIXEL33_80
  4564. break;
  4565. }
  4566. case 222:
  4567. {
  4568. PIXEL00_80
  4569. PIXEL01_10
  4570. if (Diff(w[2], w[6]))
  4571. {
  4572. PIXEL02_0
  4573. PIXEL03_0
  4574. PIXEL13_0
  4575. }
  4576. else
  4577. {
  4578. PIXEL02_50
  4579. PIXEL03_50
  4580. PIXEL13_50
  4581. }
  4582. PIXEL10_10
  4583. PIXEL11_30
  4584. PIXEL12_0
  4585. PIXEL20_10
  4586. PIXEL21_30
  4587. PIXEL22_0
  4588. if (Diff(w[6], w[8]))
  4589. {
  4590. PIXEL23_0
  4591. PIXEL32_0
  4592. PIXEL33_0
  4593. }
  4594. else
  4595. {
  4596. PIXEL23_50
  4597. PIXEL32_50
  4598. PIXEL33_50
  4599. }
  4600. PIXEL30_80
  4601. PIXEL31_10
  4602. break;
  4603. }
  4604. case 252:
  4605. {
  4606. PIXEL00_80
  4607. PIXEL01_61
  4608. PIXEL02_81
  4609. PIXEL03_81
  4610. PIXEL10_10
  4611. PIXEL11_30
  4612. PIXEL12_31
  4613. PIXEL13_31
  4614. if (Diff(w[8], w[4]))
  4615. {
  4616. PIXEL20_0
  4617. PIXEL30_0
  4618. PIXEL31_0
  4619. }
  4620. else
  4621. {
  4622. PIXEL20_50
  4623. PIXEL30_50
  4624. PIXEL31_50
  4625. }
  4626. PIXEL21_0
  4627. PIXEL22_0
  4628. PIXEL23_0
  4629. PIXEL32_0
  4630. if (Diff(w[6], w[8]))
  4631. {
  4632. PIXEL33_0
  4633. }
  4634. else
  4635. {
  4636. PIXEL33_20
  4637. }
  4638. break;
  4639. }
  4640. case 249:
  4641. {
  4642. PIXEL00_82
  4643. PIXEL01_82
  4644. PIXEL02_61
  4645. PIXEL03_80
  4646. PIXEL10_32
  4647. PIXEL11_32
  4648. PIXEL12_30
  4649. PIXEL13_10
  4650. PIXEL20_0
  4651. PIXEL21_0
  4652. PIXEL22_0
  4653. if (Diff(w[6], w[8]))
  4654. {
  4655. PIXEL23_0
  4656. PIXEL32_0
  4657. PIXEL33_0
  4658. }
  4659. else
  4660. {
  4661. PIXEL23_50
  4662. PIXEL32_50
  4663. PIXEL33_50
  4664. }
  4665. if (Diff(w[8], w[4]))
  4666. {
  4667. PIXEL30_0
  4668. }
  4669. else
  4670. {
  4671. PIXEL30_20
  4672. }
  4673. PIXEL31_0
  4674. break;
  4675. }
  4676. case 235:
  4677. {
  4678. if (Diff(w[4], w[2]))
  4679. {
  4680. PIXEL00_0
  4681. PIXEL01_0
  4682. PIXEL10_0
  4683. }
  4684. else
  4685. {
  4686. PIXEL00_50
  4687. PIXEL01_50
  4688. PIXEL10_50
  4689. }
  4690. PIXEL02_10
  4691. PIXEL03_80
  4692. PIXEL11_0
  4693. PIXEL12_30
  4694. PIXEL13_61
  4695. PIXEL20_0
  4696. PIXEL21_0
  4697. PIXEL22_31
  4698. PIXEL23_81
  4699. if (Diff(w[8], w[4]))
  4700. {
  4701. PIXEL30_0
  4702. }
  4703. else
  4704. {
  4705. PIXEL30_20
  4706. }
  4707. PIXEL31_0
  4708. PIXEL32_31
  4709. PIXEL33_81
  4710. break;
  4711. }
  4712. case 111:
  4713. {
  4714. if (Diff(w[4], w[2]))
  4715. {
  4716. PIXEL00_0
  4717. }
  4718. else
  4719. {
  4720. PIXEL00_20
  4721. }
  4722. PIXEL01_0
  4723. PIXEL02_32
  4724. PIXEL03_82
  4725. PIXEL10_0
  4726. PIXEL11_0
  4727. PIXEL12_32
  4728. PIXEL13_82
  4729. if (Diff(w[8], w[4]))
  4730. {
  4731. PIXEL20_0
  4732. PIXEL30_0
  4733. PIXEL31_0
  4734. }
  4735. else
  4736. {
  4737. PIXEL20_50
  4738. PIXEL30_50
  4739. PIXEL31_50
  4740. }
  4741. PIXEL21_0
  4742. PIXEL22_30
  4743. PIXEL23_61
  4744. PIXEL32_10
  4745. PIXEL33_80
  4746. break;
  4747. }
  4748. case 63:
  4749. {
  4750. if (Diff(w[4], w[2]))
  4751. {
  4752. PIXEL00_0
  4753. }
  4754. else
  4755. {
  4756. PIXEL00_20
  4757. }
  4758. PIXEL01_0
  4759. if (Diff(w[2], w[6]))
  4760. {
  4761. PIXEL02_0
  4762. PIXEL03_0
  4763. PIXEL13_0
  4764. }
  4765. else
  4766. {
  4767. PIXEL02_50
  4768. PIXEL03_50
  4769. PIXEL13_50
  4770. }
  4771. PIXEL10_0
  4772. PIXEL11_0
  4773. PIXEL12_0
  4774. PIXEL20_31
  4775. PIXEL21_31
  4776. PIXEL22_30
  4777. PIXEL23_10
  4778. PIXEL30_81
  4779. PIXEL31_81
  4780. PIXEL32_61
  4781. PIXEL33_80
  4782. break;
  4783. }
  4784. case 159:
  4785. {
  4786. if (Diff(w[4], w[2]))
  4787. {
  4788. PIXEL00_0
  4789. PIXEL01_0
  4790. PIXEL10_0
  4791. }
  4792. else
  4793. {
  4794. PIXEL00_50
  4795. PIXEL01_50
  4796. PIXEL10_50
  4797. }
  4798. PIXEL02_0
  4799. if (Diff(w[2], w[6]))
  4800. {
  4801. PIXEL03_0
  4802. }
  4803. else
  4804. {
  4805. PIXEL03_20
  4806. }
  4807. PIXEL11_0
  4808. PIXEL12_0
  4809. PIXEL13_0
  4810. PIXEL20_10
  4811. PIXEL21_30
  4812. PIXEL22_32
  4813. PIXEL23_32
  4814. PIXEL30_80
  4815. PIXEL31_61
  4816. PIXEL32_82
  4817. PIXEL33_82
  4818. break;
  4819. }
  4820. case 215:
  4821. {
  4822. PIXEL00_81
  4823. PIXEL01_31
  4824. PIXEL02_0
  4825. if (Diff(w[2], w[6]))
  4826. {
  4827. PIXEL03_0
  4828. }
  4829. else
  4830. {
  4831. PIXEL03_20
  4832. }
  4833. PIXEL10_81
  4834. PIXEL11_31
  4835. PIXEL12_0
  4836. PIXEL13_0
  4837. PIXEL20_61
  4838. PIXEL21_30
  4839. PIXEL22_0
  4840. if (Diff(w[6], w[8]))
  4841. {
  4842. PIXEL23_0
  4843. PIXEL32_0
  4844. PIXEL33_0
  4845. }
  4846. else
  4847. {
  4848. PIXEL23_50
  4849. PIXEL32_50
  4850. PIXEL33_50
  4851. }
  4852. PIXEL30_80
  4853. PIXEL31_10
  4854. break;
  4855. }
  4856. case 246:
  4857. {
  4858. PIXEL00_80
  4859. PIXEL01_10
  4860. if (Diff(w[2], w[6]))
  4861. {
  4862. PIXEL02_0
  4863. PIXEL03_0
  4864. PIXEL13_0
  4865. }
  4866. else
  4867. {
  4868. PIXEL02_50
  4869. PIXEL03_50
  4870. PIXEL13_50
  4871. }
  4872. PIXEL10_61
  4873. PIXEL11_30
  4874. PIXEL12_0
  4875. PIXEL20_82
  4876. PIXEL21_32
  4877. PIXEL22_0
  4878. PIXEL23_0
  4879. PIXEL30_82
  4880. PIXEL31_32
  4881. PIXEL32_0
  4882. if (Diff(w[6], w[8]))
  4883. {
  4884. PIXEL33_0
  4885. }
  4886. else
  4887. {
  4888. PIXEL33_20
  4889. }
  4890. break;
  4891. }
  4892. case 254:
  4893. {
  4894. PIXEL00_80
  4895. PIXEL01_10
  4896. if (Diff(w[2], w[6]))
  4897. {
  4898. PIXEL02_0
  4899. PIXEL03_0
  4900. PIXEL13_0
  4901. }
  4902. else
  4903. {
  4904. PIXEL02_50
  4905. PIXEL03_50
  4906. PIXEL13_50
  4907. }
  4908. PIXEL10_10
  4909. PIXEL11_30
  4910. PIXEL12_0
  4911. if (Diff(w[8], w[4]))
  4912. {
  4913. PIXEL20_0
  4914. PIXEL30_0
  4915. PIXEL31_0
  4916. }
  4917. else
  4918. {
  4919. PIXEL20_50
  4920. PIXEL30_50
  4921. PIXEL31_50
  4922. }
  4923. PIXEL21_0
  4924. PIXEL22_0
  4925. PIXEL23_0
  4926. PIXEL32_0
  4927. if (Diff(w[6], w[8]))
  4928. {
  4929. PIXEL33_0
  4930. }
  4931. else
  4932. {
  4933. PIXEL33_20
  4934. }
  4935. break;
  4936. }
  4937. case 253:
  4938. {
  4939. PIXEL00_82
  4940. PIXEL01_82
  4941. PIXEL02_81
  4942. PIXEL03_81
  4943. PIXEL10_32
  4944. PIXEL11_32
  4945. PIXEL12_31
  4946. PIXEL13_31
  4947. PIXEL20_0
  4948. PIXEL21_0
  4949. PIXEL22_0
  4950. PIXEL23_0
  4951. if (Diff(w[8], w[4]))
  4952. {
  4953. PIXEL30_0
  4954. }
  4955. else
  4956. {
  4957. PIXEL30_20
  4958. }
  4959. PIXEL31_0
  4960. PIXEL32_0
  4961. if (Diff(w[6], w[8]))
  4962. {
  4963. PIXEL33_0
  4964. }
  4965. else
  4966. {
  4967. PIXEL33_20
  4968. }
  4969. break;
  4970. }
  4971. case 251:
  4972. {
  4973. if (Diff(w[4], w[2]))
  4974. {
  4975. PIXEL00_0
  4976. PIXEL01_0
  4977. PIXEL10_0
  4978. }
  4979. else
  4980. {
  4981. PIXEL00_50
  4982. PIXEL01_50
  4983. PIXEL10_50
  4984. }
  4985. PIXEL02_10
  4986. PIXEL03_80
  4987. PIXEL11_0
  4988. PIXEL12_30
  4989. PIXEL13_10
  4990. PIXEL20_0
  4991. PIXEL21_0
  4992. PIXEL22_0
  4993. if (Diff(w[6], w[8]))
  4994. {
  4995. PIXEL23_0
  4996. PIXEL32_0
  4997. PIXEL33_0
  4998. }
  4999. else
  5000. {
  5001. PIXEL23_50
  5002. PIXEL32_50
  5003. PIXEL33_50
  5004. }
  5005. if (Diff(w[8], w[4]))
  5006. {
  5007. PIXEL30_0
  5008. }
  5009. else
  5010. {
  5011. PIXEL30_20
  5012. }
  5013. PIXEL31_0
  5014. break;
  5015. }
  5016. case 239:
  5017. {
  5018. if (Diff(w[4], w[2]))
  5019. {
  5020. PIXEL00_0
  5021. }
  5022. else
  5023. {
  5024. PIXEL00_20
  5025. }
  5026. PIXEL01_0
  5027. PIXEL02_32
  5028. PIXEL03_82
  5029. PIXEL10_0
  5030. PIXEL11_0
  5031. PIXEL12_32
  5032. PIXEL13_82
  5033. PIXEL20_0
  5034. PIXEL21_0
  5035. PIXEL22_31
  5036. PIXEL23_81
  5037. if (Diff(w[8], w[4]))
  5038. {
  5039. PIXEL30_0
  5040. }
  5041. else
  5042. {
  5043. PIXEL30_20
  5044. }
  5045. PIXEL31_0
  5046. PIXEL32_31
  5047. PIXEL33_81
  5048. break;
  5049. }
  5050. case 127:
  5051. {
  5052. if (Diff(w[4], w[2]))
  5053. {
  5054. PIXEL00_0
  5055. }
  5056. else
  5057. {
  5058. PIXEL00_20
  5059. }
  5060. PIXEL01_0
  5061. if (Diff(w[2], w[6]))
  5062. {
  5063. PIXEL02_0
  5064. PIXEL03_0
  5065. PIXEL13_0
  5066. }
  5067. else
  5068. {
  5069. PIXEL02_50
  5070. PIXEL03_50
  5071. PIXEL13_50
  5072. }
  5073. PIXEL10_0
  5074. PIXEL11_0
  5075. PIXEL12_0
  5076. if (Diff(w[8], w[4]))
  5077. {
  5078. PIXEL20_0
  5079. PIXEL30_0
  5080. PIXEL31_0
  5081. }
  5082. else
  5083. {
  5084. PIXEL20_50
  5085. PIXEL30_50
  5086. PIXEL31_50
  5087. }
  5088. PIXEL21_0
  5089. PIXEL22_30
  5090. PIXEL23_10
  5091. PIXEL32_10
  5092. PIXEL33_80
  5093. break;
  5094. }
  5095. case 191:
  5096. {
  5097. if (Diff(w[4], w[2]))
  5098. {
  5099. PIXEL00_0
  5100. }
  5101. else
  5102. {
  5103. PIXEL00_20
  5104. }
  5105. PIXEL01_0
  5106. PIXEL02_0
  5107. if (Diff(w[2], w[6]))
  5108. {
  5109. PIXEL03_0
  5110. }
  5111. else
  5112. {
  5113. PIXEL03_20
  5114. }
  5115. PIXEL10_0
  5116. PIXEL11_0
  5117. PIXEL12_0
  5118. PIXEL13_0
  5119. PIXEL20_31
  5120. PIXEL21_31
  5121. PIXEL22_32
  5122. PIXEL23_32
  5123. PIXEL30_81
  5124. PIXEL31_81
  5125. PIXEL32_82
  5126. PIXEL33_82
  5127. break;
  5128. }
  5129. case 223:
  5130. {
  5131. if (Diff(w[4], w[2]))
  5132. {
  5133. PIXEL00_0
  5134. PIXEL01_0
  5135. PIXEL10_0
  5136. }
  5137. else
  5138. {
  5139. PIXEL00_50
  5140. PIXEL01_50
  5141. PIXEL10_50
  5142. }
  5143. PIXEL02_0
  5144. if (Diff(w[2], w[6]))
  5145. {
  5146. PIXEL03_0
  5147. }
  5148. else
  5149. {
  5150. PIXEL03_20
  5151. }
  5152. PIXEL11_0
  5153. PIXEL12_0
  5154. PIXEL13_0
  5155. PIXEL20_10
  5156. PIXEL21_30
  5157. PIXEL22_0
  5158. if (Diff(w[6], w[8]))
  5159. {
  5160. PIXEL23_0
  5161. PIXEL32_0
  5162. PIXEL33_0
  5163. }
  5164. else
  5165. {
  5166. PIXEL23_50
  5167. PIXEL32_50
  5168. PIXEL33_50
  5169. }
  5170. PIXEL30_80
  5171. PIXEL31_10
  5172. break;
  5173. }
  5174. case 247:
  5175. {
  5176. PIXEL00_81
  5177. PIXEL01_31
  5178. PIXEL02_0
  5179. if (Diff(w[2], w[6]))
  5180. {
  5181. PIXEL03_0
  5182. }
  5183. else
  5184. {
  5185. PIXEL03_20
  5186. }
  5187. PIXEL10_81
  5188. PIXEL11_31
  5189. PIXEL12_0
  5190. PIXEL13_0
  5191. PIXEL20_82
  5192. PIXEL21_32
  5193. PIXEL22_0
  5194. PIXEL23_0
  5195. PIXEL30_82
  5196. PIXEL31_32
  5197. PIXEL32_0
  5198. if (Diff(w[6], w[8]))
  5199. {
  5200. PIXEL33_0
  5201. }
  5202. else
  5203. {
  5204. PIXEL33_20
  5205. }
  5206. break;
  5207. }
  5208. case 255:
  5209. {
  5210. if (Diff(w[4], w[2]))
  5211. {
  5212. PIXEL00_0
  5213. }
  5214. else
  5215. {
  5216. PIXEL00_20
  5217. }
  5218. PIXEL01_0
  5219. PIXEL02_0
  5220. if (Diff(w[2], w[6]))
  5221. {
  5222. PIXEL03_0
  5223. }
  5224. else
  5225. {
  5226. PIXEL03_20
  5227. }
  5228. PIXEL10_0
  5229. PIXEL11_0
  5230. PIXEL12_0
  5231. PIXEL13_0
  5232. PIXEL20_0
  5233. PIXEL21_0
  5234. PIXEL22_0
  5235. PIXEL23_0
  5236. if (Diff(w[8], w[4]))
  5237. {
  5238. PIXEL30_0
  5239. }
  5240. else
  5241. {
  5242. PIXEL30_20
  5243. }
  5244. PIXEL31_0
  5245. PIXEL32_0
  5246. if (Diff(w[6], w[8]))
  5247. {
  5248. PIXEL33_0
  5249. }
  5250. else
  5251. {
  5252. PIXEL33_20
  5253. }
  5254. break;
  5255. }
  5256. }
  5257. pIn+=2;
  5258. pOut+=16;
  5259. }
  5260. pOut+=BpL;
  5261. pOut+=BpL;
  5262. pOut+=BpL;
  5263. }
  5264. }
  5265. void InitLUTs(void)
  5266. {
  5267. int i, j, k, r, g, b, Y, u, v;
  5268. for (i=0; i<65536; i++)
  5269. LUT16to32[i] = ((i & 0xF800) << 8) + ((i & 0x07E0) << 5) + ((i & 0x001F) << 3);
  5270. for (i=0; i<32; i++)
  5271. for (j=0; j<64; j++)
  5272. for (k=0; k<32; k++)
  5273. {
  5274. r = i << 3;
  5275. g = j << 2;
  5276. b = k << 3;
  5277. Y = (r + g + b) >> 2;
  5278. u = 128 + ((r - b) >> 2);
  5279. v = 128 + ((-r + 2*g -b)>>3);
  5280. RGBtoYUV[ (i << 11) + (j << 5) + k ] = (Y<<16) + (u<<8) + v;
  5281. }
  5282. }
  5283. int main(int argc, char* argv[])
  5284. {
  5285. int nRes;
  5286. CImage ImageIn;
  5287. CImage ImageOut;
  5288. char * szFilenameIn;
  5289. char * szFilenameOut;
  5290. if (argc <= 2)
  5291. {
  5292. printf("\nUsage: hq4x.exe input.bmp output.bmp\n");
  5293. printf("supports .bmp and .tga formats\n");
  5294. return 1;
  5295. }
  5296. szFilenameIn = argv[1];
  5297. szFilenameOut = argv[2];
  5298. if ( GetFileAttributes( szFilenameIn ) == -1 )
  5299. {
  5300. printf( "ERROR: file '%s'\n not found", szFilenameIn );
  5301. return 1;
  5302. }
  5303. if ( ImageIn.Load( szFilenameIn ) != 0 )
  5304. {
  5305. printf( "ERROR: can't load '%s'\n", szFilenameIn );
  5306. return 1;
  5307. }
  5308. if ( ImageIn.m_BitPerPixel != 16 )
  5309. {
  5310. if ( ImageIn.ConvertTo16() != 0 )
  5311. {
  5312. printf( "ERROR: '%s' conversion to 16 bit failed\n", szFilenameIn );
  5313. return 1;
  5314. }
  5315. }
  5316. printf( "\n%s is %ix%ix%i\n", szFilenameIn, ImageIn.m_Xres, ImageIn.m_Yres, ImageIn.m_BitPerPixel );
  5317. if ( ImageOut.Init( ImageIn.m_Xres*4, ImageIn.m_Yres*4, 32 ) != 0 )
  5318. {
  5319. printf( "ERROR: ImageOut.Init()\n" );
  5320. return 1;
  5321. };
  5322. InitLUTs();
  5323. hq4x_32( ImageIn.m_pBitmap, ImageOut.m_pBitmap, ImageIn.m_Xres, ImageIn.m_Yres, ImageOut.m_Xres*4 );
  5324. nRes = ImageOut.Save( szFilenameOut );
  5325. if ( nRes != 0 )
  5326. {
  5327. printf( "ERROR %i: ImageOut.Save(\"%s\")\n", nRes, szFilenameOut );
  5328. return nRes;
  5329. }
  5330. printf( "%s is %ix%ix%i\n", szFilenameOut, ImageOut.m_Xres, ImageOut.m_Yres, ImageOut.m_BitPerPixel );
  5331. printf( "\nOK\n" );
  5332. return 0;
  5333. }