IconCodecTest.cs 108 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049
  1. //
  2. // ICO Codec class testing unit
  3. //
  4. // Authors:
  5. // Jordi Mas i Hernàndez ([email protected])
  6. // Sebastien Pouliot <[email protected]>
  7. //
  8. // Copyright (C) 2006-2007 Novell, Inc (http://www.novell.com)
  9. //
  10. // Permission is hereby granted, free of charge, to any person obtaining
  11. // a copy of this software and associated documentation files (the
  12. // "Software"), to deal in the Software without restriction, including
  13. // without limitation the rights to use, copy, modify, merge, publish,
  14. // distribute, sublicense, and/or sell copies of the Software, and to
  15. // permit persons to whom the Software is furnished to do so, subject to
  16. // the following conditions:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  21. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. //
  29. using System;
  30. using System.Drawing;
  31. using System.Drawing.Imaging;
  32. using System.IO;
  33. using System.Security.Permissions;
  34. using System.Text;
  35. using NUnit.Framework;
  36. namespace MonoTests.System.Drawing.Imaging {
  37. [TestFixture]
  38. [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
  39. public class IconCodecTest {
  40. /* Get suffix to add to the filename */
  41. internal string getOutSufix ()
  42. {
  43. string s;
  44. int p = (int) Environment.OSVersion.Platform;
  45. if ((p == 4) || (p == 128) || (p == 6))
  46. s = "-unix";
  47. else
  48. s = "-windows";
  49. if (Type.GetType ("Mono.Runtime", false) == null)
  50. s += "-msnet";
  51. else
  52. s += "-mono";
  53. return s;
  54. }
  55. /* Get the input directory depending on the runtime*/
  56. internal string getInFile (string file)
  57. {
  58. string sRslt = Path.GetFullPath ("../System.Drawing/" + file);
  59. if (!File.Exists (sRslt))
  60. sRslt = "Test/System.Drawing/" + file;
  61. return sRslt;
  62. }
  63. [Test]
  64. public void Image16 ()
  65. {
  66. string sInFile = getInFile ("bitmaps/16x16x16.ico");
  67. using (Image image = Image.FromFile (sInFile)) {
  68. Assert.IsTrue (image.RawFormat.Equals (ImageFormat.Icon), "Icon");
  69. // note that image is "promoted" to 32bits
  70. Assert.AreEqual (PixelFormat.Format32bppArgb, image.PixelFormat);
  71. Assert.AreEqual (73746, image.Flags, "bmp.Flags");
  72. Assert.AreEqual (16, image.Palette.Entries.Length, "Palette");
  73. using (Bitmap bmp = new Bitmap (image)) {
  74. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.MemoryBmp), "Icon");
  75. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  76. Assert.AreEqual (2, bmp.Flags, "bmp.Flags");
  77. Assert.AreEqual (0, bmp.Palette.Entries.Length, "Palette");
  78. }
  79. }
  80. }
  81. // simley.ico has 48x48, 32x32 and 16x16 images (in that order)
  82. [Test]
  83. public void Bitmap16Features ()
  84. {
  85. string sInFile = getInFile ("bitmaps/smiley.ico");
  86. using (Bitmap bmp = new Bitmap (sInFile)) {
  87. GraphicsUnit unit = GraphicsUnit.World;
  88. RectangleF rect = bmp.GetBounds (ref unit);
  89. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  90. // note that image is "promoted" to 32bits
  91. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  92. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  93. Assert.AreEqual (16, bmp.Palette.Entries.Length, "Palette");
  94. Assert.AreEqual (-16777216, bmp.Palette.Entries[0].ToArgb (), "Palette#0");
  95. Assert.AreEqual (-16777216, bmp.Palette.Entries[1].ToArgb (), "Palette#1");
  96. Assert.AreEqual (-16744448, bmp.Palette.Entries[2].ToArgb (), "Palette#2");
  97. Assert.AreEqual (-8355840, bmp.Palette.Entries[3].ToArgb (), "Palette#3");
  98. Assert.AreEqual (-16777088, bmp.Palette.Entries[4].ToArgb (), "Palette#4");
  99. Assert.AreEqual (-8388480, bmp.Palette.Entries[5].ToArgb (), "Palette#5");
  100. Assert.AreEqual (-16744320, bmp.Palette.Entries[6].ToArgb (), "Palette#6");
  101. Assert.AreEqual (-4144960, bmp.Palette.Entries[7].ToArgb (), "Palette#7");
  102. Assert.AreEqual (-8355712, bmp.Palette.Entries[8].ToArgb (), "Palette#8");
  103. Assert.AreEqual (-65536, bmp.Palette.Entries[9].ToArgb (), "Palette#9");
  104. Assert.AreEqual (-16711936, bmp.Palette.Entries[10].ToArgb (), "Palette#10");
  105. Assert.AreEqual (-256, bmp.Palette.Entries[11].ToArgb (), "Palette#11");
  106. Assert.AreEqual (-16776961, bmp.Palette.Entries[12].ToArgb (), "Palette#12");
  107. Assert.AreEqual (-65281, bmp.Palette.Entries[13].ToArgb (), "Palette#13");
  108. Assert.AreEqual (-16711681, bmp.Palette.Entries[14].ToArgb (), "Palette#14");
  109. Assert.AreEqual (-1, bmp.Palette.Entries[15].ToArgb (), "Palette#15");
  110. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  111. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  112. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  113. #if NET_2_0
  114. Assert.IsNull (bmp.Tag, "Tag");
  115. #endif
  116. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  117. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  118. Assert.AreEqual (16, bmp.Width, "bmp.Width");
  119. Assert.AreEqual (16, bmp.Height, "bmp.Height");
  120. Assert.AreEqual (0, rect.X, "rect.X");
  121. Assert.AreEqual (0, rect.Y, "rect.Y");
  122. Assert.AreEqual (16, rect.Width, "rect.Width");
  123. Assert.AreEqual (16, rect.Height, "rect.Height");
  124. Assert.AreEqual (16, bmp.Size.Width, "bmp.Size.Width");
  125. Assert.AreEqual (16, bmp.Size.Height, "bmp.Size.Height");
  126. }
  127. }
  128. [Test]
  129. public void Bitmap16Pixels ()
  130. {
  131. string sInFile = getInFile ("bitmaps/smiley.ico");
  132. using (Bitmap bmp = new Bitmap (sInFile)) {
  133. #if false
  134. for (int x = 0; x < bmp.Width; x += 4) {
  135. for (int y = 0; y < bmp.Height; y += 4)
  136. Console.WriteLine ("\t\t\t\tAssert.AreEqual ({0}, bmp.GetPixel ({1}, {2}).ToArgb (), \"{1},{2}\");", bmp.GetPixel (x, y).ToArgb (), x, y);
  137. }
  138. #else
  139. // sampling values from a well known bitmap
  140. Assert.AreEqual (0, bmp.GetPixel (0, 0).ToArgb (), "0,0");
  141. Assert.AreEqual (0, bmp.GetPixel (0, 4).ToArgb (), "0,4");
  142. Assert.AreEqual (0, bmp.GetPixel (0, 8).ToArgb (), "0,8");
  143. Assert.AreEqual (0, bmp.GetPixel (0, 12).ToArgb (), "0,12");
  144. Assert.AreEqual (0, bmp.GetPixel (4, 0).ToArgb (), "4,0");
  145. Assert.AreEqual (-256, bmp.GetPixel (4, 4).ToArgb (), "4,4");
  146. Assert.AreEqual (-256, bmp.GetPixel (4, 8).ToArgb (), "4,8");
  147. Assert.AreEqual (-8355840, bmp.GetPixel (4, 12).ToArgb (), "4,12");
  148. Assert.AreEqual (0, bmp.GetPixel (8, 0).ToArgb (), "8,0");
  149. Assert.AreEqual (-256, bmp.GetPixel (8, 4).ToArgb (), "8,4");
  150. Assert.AreEqual (-256, bmp.GetPixel (8, 8).ToArgb (), "8,8");
  151. Assert.AreEqual (-256, bmp.GetPixel (8, 12).ToArgb (), "8,12");
  152. Assert.AreEqual (0, bmp.GetPixel (12, 0).ToArgb (), "12,0");
  153. Assert.AreEqual (0, bmp.GetPixel (12, 4).ToArgb (), "12,4");
  154. Assert.AreEqual (-8355840, bmp.GetPixel (12, 8).ToArgb (), "12,8");
  155. Assert.AreEqual (0, bmp.GetPixel (12, 12).ToArgb (), "12,12");
  156. #endif
  157. }
  158. }
  159. [Test]
  160. public void Bitmap16Data ()
  161. {
  162. string sInFile = getInFile ("bitmaps/smiley.ico");
  163. using (Bitmap bmp = new Bitmap (sInFile)) {
  164. BitmapData data = bmp.LockBits (new Rectangle (0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  165. try {
  166. Assert.AreEqual (bmp.Height, data.Height, "Height");
  167. Assert.AreEqual (bmp.Width, data.Width, "Width");
  168. Assert.AreEqual (PixelFormat.Format24bppRgb, data.PixelFormat, "PixelFormat");
  169. int size = data.Height * data.Stride;
  170. unsafe {
  171. byte* scan = (byte*) data.Scan0;
  172. #if false
  173. // 13 is prime (so we're not affected by a recurring pattern)
  174. for (int p = 0; p < size; p += 13) {
  175. Console.WriteLine ("\t\t\t\t\t\tAssert.AreEqual ({0}, *(scan + {1}), \"{1}\");", *(scan + p), p);
  176. }
  177. #else
  178. // sampling values from a well known bitmap
  179. Assert.AreEqual (0, *(scan + 0), "0");
  180. Assert.AreEqual (0, *(scan + 13), "13");
  181. Assert.AreEqual (0, *(scan + 26), "26");
  182. Assert.AreEqual (0, *(scan + 39), "39");
  183. Assert.AreEqual (0, *(scan + 52), "52");
  184. Assert.AreEqual (0, *(scan + 65), "65");
  185. Assert.AreEqual (0, *(scan + 78), "78");
  186. Assert.AreEqual (0, *(scan + 91), "91");
  187. Assert.AreEqual (0, *(scan + 104), "104");
  188. Assert.AreEqual (0, *(scan + 117), "117");
  189. Assert.AreEqual (0, *(scan + 130), "130");
  190. Assert.AreEqual (0, *(scan + 143), "143");
  191. Assert.AreEqual (0, *(scan + 156), "156");
  192. Assert.AreEqual (255, *(scan + 169), "169");
  193. Assert.AreEqual (0, *(scan + 182), "182");
  194. Assert.AreEqual (0, *(scan + 195), "195");
  195. Assert.AreEqual (255, *(scan + 208), "208");
  196. Assert.AreEqual (255, *(scan + 221), "221");
  197. Assert.AreEqual (0, *(scan + 234), "234");
  198. Assert.AreEqual (128, *(scan + 247), "247");
  199. Assert.AreEqual (0, *(scan + 260), "260");
  200. Assert.AreEqual (0, *(scan + 273), "273");
  201. Assert.AreEqual (0, *(scan + 286), "286");
  202. Assert.AreEqual (255, *(scan + 299), "299");
  203. Assert.AreEqual (0, *(scan + 312), "312");
  204. Assert.AreEqual (128, *(scan + 325), "325");
  205. Assert.AreEqual (0, *(scan + 338), "338");
  206. Assert.AreEqual (0, *(scan + 351), "351");
  207. Assert.AreEqual (255, *(scan + 364), "364");
  208. Assert.AreEqual (0, *(scan + 377), "377");
  209. Assert.AreEqual (0, *(scan + 390), "390");
  210. Assert.AreEqual (255, *(scan + 403), "403");
  211. Assert.AreEqual (255, *(scan + 416), "416");
  212. Assert.AreEqual (0, *(scan + 429), "429");
  213. Assert.AreEqual (255, *(scan + 442), "442");
  214. Assert.AreEqual (0, *(scan + 455), "455");
  215. Assert.AreEqual (0, *(scan + 468), "468");
  216. Assert.AreEqual (0, *(scan + 481), "481");
  217. Assert.AreEqual (255, *(scan + 494), "494");
  218. Assert.AreEqual (0, *(scan + 507), "507");
  219. Assert.AreEqual (0, *(scan + 520), "520");
  220. Assert.AreEqual (0, *(scan + 533), "533");
  221. Assert.AreEqual (0, *(scan + 546), "546");
  222. Assert.AreEqual (255, *(scan + 559), "559");
  223. Assert.AreEqual (0, *(scan + 572), "572");
  224. Assert.AreEqual (0, *(scan + 585), "585");
  225. Assert.AreEqual (255, *(scan + 598), "598");
  226. Assert.AreEqual (0, *(scan + 611), "611");
  227. Assert.AreEqual (0, *(scan + 624), "624");
  228. Assert.AreEqual (0, *(scan + 637), "637");
  229. Assert.AreEqual (128, *(scan + 650), "650");
  230. Assert.AreEqual (0, *(scan + 663), "663");
  231. Assert.AreEqual (0, *(scan + 676), "676");
  232. Assert.AreEqual (0, *(scan + 689), "689");
  233. Assert.AreEqual (0, *(scan + 702), "702");
  234. Assert.AreEqual (0, *(scan + 715), "715");
  235. Assert.AreEqual (0, *(scan + 728), "728");
  236. Assert.AreEqual (0, *(scan + 741), "741");
  237. Assert.AreEqual (0, *(scan + 754), "754");
  238. Assert.AreEqual (0, *(scan + 767), "767");
  239. #endif
  240. }
  241. }
  242. finally {
  243. bmp.UnlockBits (data);
  244. }
  245. }
  246. }
  247. // VisualPng.ico only has a 32x32 size available
  248. [Test]
  249. public void Bitmap32Features ()
  250. {
  251. string sInFile = getInFile ("bitmaps/VisualPng.ico");
  252. using (Bitmap bmp = new Bitmap (sInFile)) {
  253. GraphicsUnit unit = GraphicsUnit.World;
  254. RectangleF rect = bmp.GetBounds (ref unit);
  255. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  256. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  257. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  258. Assert.AreEqual (16, bmp.Palette.Entries.Length, "Palette");
  259. Assert.AreEqual (-16777216, bmp.Palette.Entries[0].ToArgb (), "Palette#0");
  260. Assert.AreEqual (-8388608, bmp.Palette.Entries[1].ToArgb (), "Palette#1");
  261. Assert.AreEqual (-16744448, bmp.Palette.Entries[2].ToArgb (), "Palette#2");
  262. Assert.AreEqual (-8355840, bmp.Palette.Entries[3].ToArgb (), "Palette#3");
  263. Assert.AreEqual (-16777088, bmp.Palette.Entries[4].ToArgb (), "Palette#4");
  264. Assert.AreEqual (-8388480, bmp.Palette.Entries[5].ToArgb (), "Palette#5");
  265. Assert.AreEqual (-16744320, bmp.Palette.Entries[6].ToArgb (), "Palette#6");
  266. Assert.AreEqual (-4144960, bmp.Palette.Entries[7].ToArgb (), "Palette#7");
  267. Assert.AreEqual (-8355712, bmp.Palette.Entries[8].ToArgb (), "Palette#8");
  268. Assert.AreEqual (-65536, bmp.Palette.Entries[9].ToArgb (), "Palette#9");
  269. Assert.AreEqual (-16711936, bmp.Palette.Entries[10].ToArgb (), "Palette#10");
  270. Assert.AreEqual (-256, bmp.Palette.Entries[11].ToArgb (), "Palette#11");
  271. Assert.AreEqual (-16776961, bmp.Palette.Entries[12].ToArgb (), "Palette#12");
  272. Assert.AreEqual (-65281, bmp.Palette.Entries[13].ToArgb (), "Palette#13");
  273. Assert.AreEqual (-16711681, bmp.Palette.Entries[14].ToArgb (), "Palette#14");
  274. Assert.AreEqual (-1, bmp.Palette.Entries[15].ToArgb (), "Palette#15");
  275. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  276. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  277. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  278. #if NET_2_0
  279. Assert.IsNull (bmp.Tag, "Tag");
  280. #endif
  281. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  282. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  283. Assert.AreEqual (32, bmp.Width, "bmp.Width");
  284. Assert.AreEqual (32, bmp.Height, "bmp.Height");
  285. Assert.AreEqual (0, rect.X, "rect.X");
  286. Assert.AreEqual (0, rect.Y, "rect.Y");
  287. Assert.AreEqual (32, rect.Width, "rect.Width");
  288. Assert.AreEqual (32, rect.Height, "rect.Height");
  289. Assert.AreEqual (32, bmp.Size.Width, "bmp.Size.Width");
  290. Assert.AreEqual (32, bmp.Size.Height, "bmp.Size.Height");
  291. }
  292. }
  293. [Test]
  294. public void Bitmap32Pixels ()
  295. {
  296. string sInFile = getInFile ("bitmaps/VisualPng.ico");
  297. using (Bitmap bmp = new Bitmap (sInFile)) {
  298. #if false
  299. for (int x = 0; x < bmp.Width; x += 4) {
  300. for (int y = 0; y < bmp.Height; y += 4)
  301. Console.WriteLine ("\t\t\t\tAssert.AreEqual ({0}, bmp.GetPixel ({1}, {2}).ToArgb (), \"{1},{2}\");", bmp.GetPixel (x, y).ToArgb (), x, y);
  302. }
  303. #else
  304. // sampling values from a well known bitmap
  305. Assert.AreEqual (0, bmp.GetPixel (0, 0).ToArgb (), "0,0");
  306. Assert.AreEqual (-8388608, bmp.GetPixel (0, 4).ToArgb (), "0,4");
  307. Assert.AreEqual (0, bmp.GetPixel (0, 8).ToArgb (), "0,8");
  308. Assert.AreEqual (0, bmp.GetPixel (0, 12).ToArgb (), "0,12");
  309. Assert.AreEqual (0, bmp.GetPixel (0, 16).ToArgb (), "0,16");
  310. Assert.AreEqual (0, bmp.GetPixel (0, 20).ToArgb (), "0,20");
  311. Assert.AreEqual (0, bmp.GetPixel (0, 24).ToArgb (), "0,24");
  312. Assert.AreEqual (0, bmp.GetPixel (0, 28).ToArgb (), "0,28");
  313. Assert.AreEqual (0, bmp.GetPixel (4, 0).ToArgb (), "4,0");
  314. Assert.AreEqual (0, bmp.GetPixel (4, 4).ToArgb (), "4,4");
  315. Assert.AreEqual (0, bmp.GetPixel (4, 8).ToArgb (), "4,8");
  316. Assert.AreEqual (0, bmp.GetPixel (4, 12).ToArgb (), "4,12");
  317. Assert.AreEqual (0, bmp.GetPixel (4, 16).ToArgb (), "4,16");
  318. Assert.AreEqual (0, bmp.GetPixel (4, 20).ToArgb (), "4,20");
  319. Assert.AreEqual (0, bmp.GetPixel (4, 24).ToArgb (), "4,24");
  320. Assert.AreEqual (0, bmp.GetPixel (4, 28).ToArgb (), "4,28");
  321. Assert.AreEqual (0, bmp.GetPixel (8, 0).ToArgb (), "8,0");
  322. Assert.AreEqual (0, bmp.GetPixel (8, 4).ToArgb (), "8,4");
  323. Assert.AreEqual (0, bmp.GetPixel (8, 8).ToArgb (), "8,8");
  324. Assert.AreEqual (0, bmp.GetPixel (8, 12).ToArgb (), "8,12");
  325. Assert.AreEqual (0, bmp.GetPixel (8, 16).ToArgb (), "8,16");
  326. Assert.AreEqual (-65536, bmp.GetPixel (8, 20).ToArgb (), "8,20");
  327. Assert.AreEqual (0, bmp.GetPixel (8, 24).ToArgb (), "8,24");
  328. Assert.AreEqual (0, bmp.GetPixel (8, 28).ToArgb (), "8,28");
  329. Assert.AreEqual (0, bmp.GetPixel (12, 0).ToArgb (), "12,0");
  330. Assert.AreEqual (0, bmp.GetPixel (12, 4).ToArgb (), "12,4");
  331. Assert.AreEqual (-8388608, bmp.GetPixel (12, 8).ToArgb (), "12,8");
  332. Assert.AreEqual (0, bmp.GetPixel (12, 12).ToArgb (), "12,12");
  333. Assert.AreEqual (0, bmp.GetPixel (12, 16).ToArgb (), "12,16");
  334. Assert.AreEqual (-65536, bmp.GetPixel (12, 20).ToArgb (), "12,20");
  335. Assert.AreEqual (0, bmp.GetPixel (12, 24).ToArgb (), "12,24");
  336. Assert.AreEqual (0, bmp.GetPixel (12, 28).ToArgb (), "12,28");
  337. Assert.AreEqual (0, bmp.GetPixel (16, 0).ToArgb (), "16,0");
  338. Assert.AreEqual (0, bmp.GetPixel (16, 4).ToArgb (), "16,4");
  339. Assert.AreEqual (0, bmp.GetPixel (16, 8).ToArgb (), "16,8");
  340. Assert.AreEqual (0, bmp.GetPixel (16, 12).ToArgb (), "16,12");
  341. Assert.AreEqual (0, bmp.GetPixel (16, 16).ToArgb (), "16,16");
  342. Assert.AreEqual (0, bmp.GetPixel (16, 20).ToArgb (), "16,20");
  343. Assert.AreEqual (-65536, bmp.GetPixel (16, 24).ToArgb (), "16,24");
  344. Assert.AreEqual (0, bmp.GetPixel (16, 28).ToArgb (), "16,28");
  345. Assert.AreEqual (0, bmp.GetPixel (20, 0).ToArgb (), "20,0");
  346. Assert.AreEqual (0, bmp.GetPixel (20, 4).ToArgb (), "20,4");
  347. Assert.AreEqual (-8388608, bmp.GetPixel (20, 8).ToArgb (), "20,8");
  348. Assert.AreEqual (0, bmp.GetPixel (20, 12).ToArgb (), "20,12");
  349. Assert.AreEqual (0, bmp.GetPixel (20, 16).ToArgb (), "20,16");
  350. Assert.AreEqual (0, bmp.GetPixel (20, 20).ToArgb (), "20,20");
  351. Assert.AreEqual (0, bmp.GetPixel (20, 24).ToArgb (), "20,24");
  352. Assert.AreEqual (0, bmp.GetPixel (20, 28).ToArgb (), "20,28");
  353. Assert.AreEqual (0, bmp.GetPixel (24, 0).ToArgb (), "24,0");
  354. Assert.AreEqual (0, bmp.GetPixel (24, 4).ToArgb (), "24,4");
  355. Assert.AreEqual (-16777216, bmp.GetPixel (24, 8).ToArgb (), "24,8");
  356. Assert.AreEqual (0, bmp.GetPixel (24, 12).ToArgb (), "24,12");
  357. Assert.AreEqual (0, bmp.GetPixel (24, 16).ToArgb (), "24,16");
  358. Assert.AreEqual (0, bmp.GetPixel (24, 20).ToArgb (), "24,20");
  359. Assert.AreEqual (0, bmp.GetPixel (24, 24).ToArgb (), "24,24");
  360. Assert.AreEqual (0, bmp.GetPixel (24, 28).ToArgb (), "24,28");
  361. Assert.AreEqual (0, bmp.GetPixel (28, 0).ToArgb (), "28,0");
  362. Assert.AreEqual (0, bmp.GetPixel (28, 4).ToArgb (), "28,4");
  363. Assert.AreEqual (0, bmp.GetPixel (28, 8).ToArgb (), "28,8");
  364. Assert.AreEqual (0, bmp.GetPixel (28, 12).ToArgb (), "28,12");
  365. Assert.AreEqual (0, bmp.GetPixel (28, 16).ToArgb (), "28,16");
  366. Assert.AreEqual (0, bmp.GetPixel (28, 20).ToArgb (), "28,20");
  367. Assert.AreEqual (-8388608, bmp.GetPixel (28, 24).ToArgb (), "28,24");
  368. Assert.AreEqual (0, bmp.GetPixel (28, 28).ToArgb (), "28,28");
  369. #endif
  370. }
  371. }
  372. [Test]
  373. public void Bitmap32Data ()
  374. {
  375. string sInFile = getInFile ("bitmaps/VisualPng.ico");
  376. using (Bitmap bmp = new Bitmap (sInFile)) {
  377. BitmapData data = bmp.LockBits (new Rectangle (0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  378. try {
  379. Assert.AreEqual (bmp.Height, data.Height, "Height");
  380. Assert.AreEqual (bmp.Width, data.Width, "Width");
  381. Assert.AreEqual (PixelFormat.Format24bppRgb, data.PixelFormat, "PixelFormat");
  382. int size = data.Height * data.Stride;
  383. unsafe {
  384. byte* scan = (byte*) data.Scan0;
  385. #if false
  386. // 13 is prime (so we're not affected by a recurring pattern)
  387. for (int p = 0; p < size; p += 13) {
  388. Console.WriteLine ("\t\t\t\t\t\tAssert.AreEqual ({0}, *(scan + {1}), \"{1}\");", *(scan + p), p);
  389. }
  390. #else
  391. // sampling values from a well known bitmap
  392. Assert.AreEqual (0, *(scan + 0), "0");
  393. Assert.AreEqual (0, *(scan + 13), "13");
  394. Assert.AreEqual (0, *(scan + 26), "26");
  395. Assert.AreEqual (0, *(scan + 39), "39");
  396. Assert.AreEqual (0, *(scan + 52), "52");
  397. Assert.AreEqual (0, *(scan + 65), "65");
  398. Assert.AreEqual (0, *(scan + 78), "78");
  399. Assert.AreEqual (0, *(scan + 91), "91");
  400. Assert.AreEqual (0, *(scan + 104), "104");
  401. Assert.AreEqual (0, *(scan + 117), "117");
  402. Assert.AreEqual (0, *(scan + 130), "130");
  403. Assert.AreEqual (0, *(scan + 143), "143");
  404. Assert.AreEqual (0, *(scan + 156), "156");
  405. Assert.AreEqual (0, *(scan + 169), "169");
  406. Assert.AreEqual (0, *(scan + 182), "182");
  407. Assert.AreEqual (0, *(scan + 195), "195");
  408. Assert.AreEqual (0, *(scan + 208), "208");
  409. Assert.AreEqual (0, *(scan + 221), "221");
  410. Assert.AreEqual (0, *(scan + 234), "234");
  411. Assert.AreEqual (0, *(scan + 247), "247");
  412. Assert.AreEqual (0, *(scan + 260), "260");
  413. Assert.AreEqual (0, *(scan + 273), "273");
  414. Assert.AreEqual (0, *(scan + 286), "286");
  415. Assert.AreEqual (0, *(scan + 299), "299");
  416. Assert.AreEqual (0, *(scan + 312), "312");
  417. Assert.AreEqual (0, *(scan + 325), "325");
  418. Assert.AreEqual (0, *(scan + 338), "338");
  419. Assert.AreEqual (0, *(scan + 351), "351");
  420. Assert.AreEqual (0, *(scan + 364), "364");
  421. Assert.AreEqual (0, *(scan + 377), "377");
  422. Assert.AreEqual (0, *(scan + 390), "390");
  423. Assert.AreEqual (0, *(scan + 403), "403");
  424. Assert.AreEqual (0, *(scan + 416), "416");
  425. Assert.AreEqual (0, *(scan + 429), "429");
  426. Assert.AreEqual (0, *(scan + 442), "442");
  427. Assert.AreEqual (0, *(scan + 455), "455");
  428. Assert.AreEqual (0, *(scan + 468), "468");
  429. Assert.AreEqual (0, *(scan + 481), "481");
  430. Assert.AreEqual (128, *(scan + 494), "494");
  431. Assert.AreEqual (0, *(scan + 507), "507");
  432. Assert.AreEqual (0, *(scan + 520), "520");
  433. Assert.AreEqual (0, *(scan + 533), "533");
  434. Assert.AreEqual (0, *(scan + 546), "546");
  435. Assert.AreEqual (0, *(scan + 559), "559");
  436. Assert.AreEqual (128, *(scan + 572), "572");
  437. Assert.AreEqual (0, *(scan + 585), "585");
  438. Assert.AreEqual (0, *(scan + 598), "598");
  439. Assert.AreEqual (0, *(scan + 611), "611");
  440. Assert.AreEqual (0, *(scan + 624), "624");
  441. Assert.AreEqual (0, *(scan + 637), "637");
  442. Assert.AreEqual (128, *(scan + 650), "650");
  443. Assert.AreEqual (0, *(scan + 663), "663");
  444. Assert.AreEqual (0, *(scan + 676), "676");
  445. Assert.AreEqual (0, *(scan + 689), "689");
  446. Assert.AreEqual (0, *(scan + 702), "702");
  447. Assert.AreEqual (0, *(scan + 715), "715");
  448. Assert.AreEqual (0, *(scan + 728), "728");
  449. Assert.AreEqual (0, *(scan + 741), "741");
  450. Assert.AreEqual (0, *(scan + 754), "754");
  451. Assert.AreEqual (0, *(scan + 767), "767");
  452. Assert.AreEqual (0, *(scan + 780), "780");
  453. Assert.AreEqual (0, *(scan + 793), "793");
  454. Assert.AreEqual (128, *(scan + 806), "806");
  455. Assert.AreEqual (0, *(scan + 819), "819");
  456. Assert.AreEqual (0, *(scan + 832), "832");
  457. Assert.AreEqual (128, *(scan + 845), "845");
  458. Assert.AreEqual (0, *(scan + 858), "858");
  459. Assert.AreEqual (0, *(scan + 871), "871");
  460. Assert.AreEqual (0, *(scan + 884), "884");
  461. #endif
  462. }
  463. }
  464. finally {
  465. bmp.UnlockBits (data);
  466. }
  467. }
  468. }
  469. // 48x48x1.ico only has a 48x48 size available
  470. [Test]
  471. public void Bitmap48Features ()
  472. {
  473. string sInFile = getInFile ("bitmaps/48x48x1.ico");
  474. using (Bitmap bmp = new Bitmap (sInFile)) {
  475. GraphicsUnit unit = GraphicsUnit.World;
  476. RectangleF rect = bmp.GetBounds (ref unit);
  477. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  478. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  479. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  480. Assert.AreEqual (2, bmp.Palette.Entries.Length, "Palette");
  481. Assert.AreEqual (-16777216, bmp.Palette.Entries[0].ToArgb (), "Palette#0");
  482. Assert.AreEqual (-1, bmp.Palette.Entries[1].ToArgb (), "Palette#1");
  483. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  484. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  485. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  486. #if NET_2_0
  487. Assert.IsNull (bmp.Tag, "Tag");
  488. #endif
  489. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  490. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  491. Assert.AreEqual (48, bmp.Width, "bmp.Width");
  492. Assert.AreEqual (48, bmp.Height, "bmp.Height");
  493. Assert.AreEqual (0, rect.X, "rect.X");
  494. Assert.AreEqual (0, rect.Y, "rect.Y");
  495. Assert.AreEqual (48, rect.Width, "rect.Width");
  496. Assert.AreEqual (48, rect.Height, "rect.Height");
  497. Assert.AreEqual (48, bmp.Size.Width, "bmp.Size.Width");
  498. Assert.AreEqual (48, bmp.Size.Height, "bmp.Size.Height");
  499. }
  500. }
  501. [Test]
  502. public void Bitmap48Pixels ()
  503. {
  504. string sInFile = getInFile ("bitmaps/48x48x1.ico");
  505. using (Bitmap bmp = new Bitmap (sInFile)) {
  506. #if false
  507. for (int x = 0; x < bmp.Width; x += 4) {
  508. for (int y = 0; y < bmp.Height; y += 4)
  509. Console.WriteLine ("\t\t\t\tAssert.AreEqual ({0}, bmp.GetPixel ({1}, {2}).ToArgb (), \"{1},{2}\");", bmp.GetPixel (x, y).ToArgb (), x, y);
  510. }
  511. #else
  512. // sampling values from a well known bitmap
  513. Assert.AreEqual (-16777216, bmp.GetPixel (0, 0).ToArgb (), "0,0");
  514. Assert.AreEqual (-16777216, bmp.GetPixel (0, 4).ToArgb (), "0,4");
  515. Assert.AreEqual (-16777216, bmp.GetPixel (0, 8).ToArgb (), "0,8");
  516. Assert.AreEqual (-16777216, bmp.GetPixel (0, 12).ToArgb (), "0,12");
  517. Assert.AreEqual (-16777216, bmp.GetPixel (0, 16).ToArgb (), "0,16");
  518. Assert.AreEqual (-16777216, bmp.GetPixel (0, 20).ToArgb (), "0,20");
  519. Assert.AreEqual (-16777216, bmp.GetPixel (0, 24).ToArgb (), "0,24");
  520. Assert.AreEqual (-16777216, bmp.GetPixel (0, 28).ToArgb (), "0,28");
  521. Assert.AreEqual (-16777216, bmp.GetPixel (0, 32).ToArgb (), "0,32");
  522. Assert.AreEqual (-16777216, bmp.GetPixel (0, 36).ToArgb (), "0,36");
  523. Assert.AreEqual (-16777216, bmp.GetPixel (0, 40).ToArgb (), "0,40");
  524. Assert.AreEqual (-16777216, bmp.GetPixel (0, 44).ToArgb (), "0,44");
  525. Assert.AreEqual (-16777216, bmp.GetPixel (4, 0).ToArgb (), "4,0");
  526. Assert.AreEqual (0, bmp.GetPixel (4, 4).ToArgb (), "4,4");
  527. Assert.AreEqual (0, bmp.GetPixel (4, 8).ToArgb (), "4,8");
  528. Assert.AreEqual (0, bmp.GetPixel (4, 12).ToArgb (), "4,12");
  529. Assert.AreEqual (0, bmp.GetPixel (4, 16).ToArgb (), "4,16");
  530. Assert.AreEqual (0, bmp.GetPixel (4, 20).ToArgb (), "4,20");
  531. Assert.AreEqual (0, bmp.GetPixel (4, 24).ToArgb (), "4,24");
  532. Assert.AreEqual (0, bmp.GetPixel (4, 28).ToArgb (), "4,28");
  533. Assert.AreEqual (0, bmp.GetPixel (4, 32).ToArgb (), "4,32");
  534. Assert.AreEqual (0, bmp.GetPixel (4, 36).ToArgb (), "4,36");
  535. Assert.AreEqual (0, bmp.GetPixel (4, 40).ToArgb (), "4,40");
  536. Assert.AreEqual (-1, bmp.GetPixel (4, 44).ToArgb (), "4,44");
  537. Assert.AreEqual (-16777216, bmp.GetPixel (8, 0).ToArgb (), "8,0");
  538. Assert.AreEqual (0, bmp.GetPixel (8, 4).ToArgb (), "8,4");
  539. Assert.AreEqual (-16777216, bmp.GetPixel (8, 8).ToArgb (), "8,8");
  540. Assert.AreEqual (-16777216, bmp.GetPixel (8, 12).ToArgb (), "8,12");
  541. Assert.AreEqual (-16777216, bmp.GetPixel (8, 16).ToArgb (), "8,16");
  542. Assert.AreEqual (-16777216, bmp.GetPixel (8, 20).ToArgb (), "8,20");
  543. Assert.AreEqual (-16777216, bmp.GetPixel (8, 24).ToArgb (), "8,24");
  544. Assert.AreEqual (-16777216, bmp.GetPixel (8, 28).ToArgb (), "8,28");
  545. Assert.AreEqual (-16777216, bmp.GetPixel (8, 32).ToArgb (), "8,32");
  546. Assert.AreEqual (-16777216, bmp.GetPixel (8, 36).ToArgb (), "8,36");
  547. Assert.AreEqual (-16777216, bmp.GetPixel (8, 40).ToArgb (), "8,40");
  548. Assert.AreEqual (-1, bmp.GetPixel (8, 44).ToArgb (), "8,44");
  549. Assert.AreEqual (-16777216, bmp.GetPixel (12, 0).ToArgb (), "12,0");
  550. Assert.AreEqual (0, bmp.GetPixel (12, 4).ToArgb (), "12,4");
  551. Assert.AreEqual (-16777216, bmp.GetPixel (12, 8).ToArgb (), "12,8");
  552. Assert.AreEqual (-1, bmp.GetPixel (12, 12).ToArgb (), "12,12");
  553. Assert.AreEqual (-1, bmp.GetPixel (12, 16).ToArgb (), "12,16");
  554. Assert.AreEqual (-1, bmp.GetPixel (12, 20).ToArgb (), "12,20");
  555. Assert.AreEqual (-1, bmp.GetPixel (12, 24).ToArgb (), "12,24");
  556. Assert.AreEqual (-1, bmp.GetPixel (12, 28).ToArgb (), "12,28");
  557. Assert.AreEqual (-1, bmp.GetPixel (12, 32).ToArgb (), "12,32");
  558. Assert.AreEqual (0, bmp.GetPixel (12, 36).ToArgb (), "12,36");
  559. Assert.AreEqual (-16777216, bmp.GetPixel (12, 40).ToArgb (), "12,40");
  560. Assert.AreEqual (-1, bmp.GetPixel (12, 44).ToArgb (), "12,44");
  561. Assert.AreEqual (-16777216, bmp.GetPixel (16, 0).ToArgb (), "16,0");
  562. Assert.AreEqual (0, bmp.GetPixel (16, 4).ToArgb (), "16,4");
  563. Assert.AreEqual (-16777216, bmp.GetPixel (16, 8).ToArgb (), "16,8");
  564. Assert.AreEqual (-1, bmp.GetPixel (16, 12).ToArgb (), "16,12");
  565. Assert.AreEqual (0, bmp.GetPixel (16, 16).ToArgb (), "16,16");
  566. Assert.AreEqual (0, bmp.GetPixel (16, 20).ToArgb (), "16,20");
  567. Assert.AreEqual (0, bmp.GetPixel (16, 24).ToArgb (), "16,24");
  568. Assert.AreEqual (0, bmp.GetPixel (16, 28).ToArgb (), "16,28");
  569. Assert.AreEqual (-1, bmp.GetPixel (16, 32).ToArgb (), "16,32");
  570. Assert.AreEqual (0, bmp.GetPixel (16, 36).ToArgb (), "16,36");
  571. Assert.AreEqual (-16777216, bmp.GetPixel (16, 40).ToArgb (), "16,40");
  572. Assert.AreEqual (-1, bmp.GetPixel (16, 44).ToArgb (), "16,44");
  573. Assert.AreEqual (-16777216, bmp.GetPixel (20, 0).ToArgb (), "20,0");
  574. Assert.AreEqual (0, bmp.GetPixel (20, 4).ToArgb (), "20,4");
  575. Assert.AreEqual (-16777216, bmp.GetPixel (20, 8).ToArgb (), "20,8");
  576. Assert.AreEqual (-1, bmp.GetPixel (20, 12).ToArgb (), "20,12");
  577. Assert.AreEqual (0, bmp.GetPixel (20, 16).ToArgb (), "20,16");
  578. Assert.AreEqual (-16777216, bmp.GetPixel (20, 20).ToArgb (), "20,20");
  579. Assert.AreEqual (-16777216, bmp.GetPixel (20, 24).ToArgb (), "20,24");
  580. Assert.AreEqual (0, bmp.GetPixel (20, 28).ToArgb (), "20,28");
  581. Assert.AreEqual (-1, bmp.GetPixel (20, 32).ToArgb (), "20,32");
  582. Assert.AreEqual (0, bmp.GetPixel (20, 36).ToArgb (), "20,36");
  583. Assert.AreEqual (-16777216, bmp.GetPixel (20, 40).ToArgb (), "20,40");
  584. Assert.AreEqual (-1, bmp.GetPixel (20, 44).ToArgb (), "20,44");
  585. Assert.AreEqual (-16777216, bmp.GetPixel (24, 0).ToArgb (), "24,0");
  586. Assert.AreEqual (0, bmp.GetPixel (24, 4).ToArgb (), "24,4");
  587. Assert.AreEqual (-16777216, bmp.GetPixel (24, 8).ToArgb (), "24,8");
  588. Assert.AreEqual (-1, bmp.GetPixel (24, 12).ToArgb (), "24,12");
  589. Assert.AreEqual (0, bmp.GetPixel (24, 16).ToArgb (), "24,16");
  590. #endif
  591. }
  592. }
  593. [Test]
  594. public void Bitmap48Data ()
  595. {
  596. string sInFile = getInFile ("bitmaps/48x48x1.ico");
  597. using (Bitmap bmp = new Bitmap (sInFile)) {
  598. BitmapData data = bmp.LockBits (new Rectangle (0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  599. try {
  600. Assert.AreEqual (bmp.Height, data.Height, "Height");
  601. Assert.AreEqual (bmp.Width, data.Width, "Width");
  602. Assert.AreEqual (PixelFormat.Format24bppRgb, data.PixelFormat, "PixelFormat");
  603. int size = data.Height * data.Stride;
  604. unsafe {
  605. byte* scan = (byte*) data.Scan0;
  606. #if false
  607. // 13 is prime (so we're not affected by a recurring pattern)
  608. for (int p = 0; p < size; p += 13) {
  609. Console.WriteLine ("\t\t\t\t\t\tAssert.AreEqual ({0}, *(scan + {1}), \"{1}\");", *(scan + p), p);
  610. }
  611. #else
  612. // sampling values from a well known bitmap
  613. Assert.AreEqual (0, *(scan + 0), "0");
  614. Assert.AreEqual (0, *(scan + 13), "13");
  615. Assert.AreEqual (0, *(scan + 26), "26");
  616. Assert.AreEqual (0, *(scan + 39), "39");
  617. Assert.AreEqual (0, *(scan + 52), "52");
  618. Assert.AreEqual (0, *(scan + 65), "65");
  619. Assert.AreEqual (0, *(scan + 78), "78");
  620. Assert.AreEqual (0, *(scan + 91), "91");
  621. Assert.AreEqual (0, *(scan + 104), "104");
  622. Assert.AreEqual (0, *(scan + 117), "117");
  623. Assert.AreEqual (0, *(scan + 130), "130");
  624. Assert.AreEqual (0, *(scan + 143), "143");
  625. Assert.AreEqual (0, *(scan + 156), "156");
  626. Assert.AreEqual (0, *(scan + 169), "169");
  627. Assert.AreEqual (0, *(scan + 182), "182");
  628. Assert.AreEqual (0, *(scan + 195), "195");
  629. Assert.AreEqual (0, *(scan + 208), "208");
  630. Assert.AreEqual (0, *(scan + 221), "221");
  631. Assert.AreEqual (0, *(scan + 234), "234");
  632. Assert.AreEqual (0, *(scan + 247), "247");
  633. Assert.AreEqual (0, *(scan + 260), "260");
  634. Assert.AreEqual (0, *(scan + 273), "273");
  635. Assert.AreEqual (0, *(scan + 286), "286");
  636. Assert.AreEqual (255, *(scan + 299), "299");
  637. Assert.AreEqual (255, *(scan + 312), "312");
  638. Assert.AreEqual (255, *(scan + 325), "325");
  639. Assert.AreEqual (255, *(scan + 338), "338");
  640. Assert.AreEqual (255, *(scan + 351), "351");
  641. Assert.AreEqual (255, *(scan + 364), "364");
  642. Assert.AreEqual (255, *(scan + 377), "377");
  643. Assert.AreEqual (255, *(scan + 390), "390");
  644. Assert.AreEqual (255, *(scan + 403), "403");
  645. Assert.AreEqual (255, *(scan + 416), "416");
  646. Assert.AreEqual (0, *(scan + 429), "429");
  647. Assert.AreEqual (255, *(scan + 442), "442");
  648. Assert.AreEqual (255, *(scan + 455), "455");
  649. Assert.AreEqual (255, *(scan + 468), "468");
  650. Assert.AreEqual (255, *(scan + 481), "481");
  651. Assert.AreEqual (255, *(scan + 494), "494");
  652. Assert.AreEqual (255, *(scan + 507), "507");
  653. Assert.AreEqual (255, *(scan + 520), "520");
  654. Assert.AreEqual (255, *(scan + 533), "533");
  655. Assert.AreEqual (255, *(scan + 546), "546");
  656. Assert.AreEqual (255, *(scan + 559), "559");
  657. Assert.AreEqual (0, *(scan + 572), "572");
  658. Assert.AreEqual (255, *(scan + 585), "585");
  659. Assert.AreEqual (0, *(scan + 598), "598");
  660. Assert.AreEqual (0, *(scan + 611), "611");
  661. Assert.AreEqual (0, *(scan + 624), "624");
  662. Assert.AreEqual (0, *(scan + 637), "637");
  663. Assert.AreEqual (0, *(scan + 650), "650");
  664. Assert.AreEqual (0, *(scan + 663), "663");
  665. Assert.AreEqual (0, *(scan + 676), "676");
  666. Assert.AreEqual (0, *(scan + 689), "689");
  667. Assert.AreEqual (0, *(scan + 702), "702");
  668. Assert.AreEqual (0, *(scan + 715), "715");
  669. Assert.AreEqual (255, *(scan + 728), "728");
  670. Assert.AreEqual (0, *(scan + 741), "741");
  671. Assert.AreEqual (0, *(scan + 754), "754");
  672. Assert.AreEqual (0, *(scan + 767), "767");
  673. Assert.AreEqual (0, *(scan + 780), "780");
  674. Assert.AreEqual (0, *(scan + 793), "793");
  675. Assert.AreEqual (0, *(scan + 806), "806");
  676. Assert.AreEqual (0, *(scan + 819), "819");
  677. Assert.AreEqual (0, *(scan + 832), "832");
  678. Assert.AreEqual (0, *(scan + 845), "845");
  679. Assert.AreEqual (0, *(scan + 858), "858");
  680. Assert.AreEqual (255, *(scan + 871), "871");
  681. Assert.AreEqual (0, *(scan + 884), "884");
  682. Assert.AreEqual (0, *(scan + 897), "897");
  683. Assert.AreEqual (0, *(scan + 910), "910");
  684. Assert.AreEqual (0, *(scan + 923), "923");
  685. Assert.AreEqual (0, *(scan + 936), "936");
  686. #endif
  687. }
  688. }
  689. finally {
  690. bmp.UnlockBits (data);
  691. }
  692. }
  693. }
  694. // 64x64x256 only has a 64x64 size available
  695. [Test]
  696. public void Bitmap64Features ()
  697. {
  698. string sInFile = getInFile ("bitmaps/64x64x256.ico");
  699. using (Bitmap bmp = new Bitmap (sInFile)) {
  700. GraphicsUnit unit = GraphicsUnit.World;
  701. RectangleF rect = bmp.GetBounds (ref unit);
  702. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  703. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  704. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  705. Assert.AreEqual (256, bmp.Palette.Entries.Length, "Palette");
  706. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  707. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  708. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  709. #if NET_2_0
  710. Assert.IsNull (bmp.Tag, "Tag");
  711. #endif
  712. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  713. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  714. Assert.AreEqual (64, bmp.Width, "bmp.Width");
  715. Assert.AreEqual (64, bmp.Height, "bmp.Height");
  716. Assert.AreEqual (0, rect.X, "rect.X");
  717. Assert.AreEqual (0, rect.Y, "rect.Y");
  718. Assert.AreEqual (64, rect.Width, "rect.Width");
  719. Assert.AreEqual (64, rect.Height, "rect.Height");
  720. Assert.AreEqual (64, bmp.Size.Width, "bmp.Size.Width");
  721. Assert.AreEqual (64, bmp.Size.Height, "bmp.Size.Height");
  722. }
  723. }
  724. [Test]
  725. public void Bitmap64Pixels ()
  726. {
  727. string sInFile = getInFile ("bitmaps/64x64x256.ico");
  728. using (Bitmap bmp = new Bitmap (sInFile)) {
  729. #if false
  730. for (int x = 0; x < bmp.Width; x += 4) {
  731. for (int y = 0; y < bmp.Height; y += 4)
  732. Console.WriteLine ("\t\t\t\tAssert.AreEqual ({0}, bmp.GetPixel ({1}, {2}).ToArgb (), \"{1},{2}\");", bmp.GetPixel (x, y).ToArgb (), x, y);
  733. }
  734. #else
  735. // sampling values from a well known bitmap
  736. Assert.AreEqual (-65383, bmp.GetPixel (0, 0).ToArgb (), "0,0");
  737. Assert.AreEqual (-65383, bmp.GetPixel (0, 4).ToArgb (), "0,4");
  738. Assert.AreEqual (-65383, bmp.GetPixel (0, 8).ToArgb (), "0,8");
  739. Assert.AreEqual (-65383, bmp.GetPixel (0, 12).ToArgb (), "0,12");
  740. Assert.AreEqual (-65383, bmp.GetPixel (0, 16).ToArgb (), "0,16");
  741. Assert.AreEqual (-65383, bmp.GetPixel (0, 20).ToArgb (), "0,20");
  742. Assert.AreEqual (-65383, bmp.GetPixel (0, 24).ToArgb (), "0,24");
  743. Assert.AreEqual (-65383, bmp.GetPixel (0, 28).ToArgb (), "0,28");
  744. Assert.AreEqual (-65383, bmp.GetPixel (0, 32).ToArgb (), "0,32");
  745. Assert.AreEqual (-65383, bmp.GetPixel (0, 36).ToArgb (), "0,36");
  746. Assert.AreEqual (-65383, bmp.GetPixel (0, 40).ToArgb (), "0,40");
  747. Assert.AreEqual (-65383, bmp.GetPixel (0, 44).ToArgb (), "0,44");
  748. Assert.AreEqual (-65383, bmp.GetPixel (0, 48).ToArgb (), "0,48");
  749. Assert.AreEqual (-65383, bmp.GetPixel (0, 52).ToArgb (), "0,52");
  750. Assert.AreEqual (-65383, bmp.GetPixel (0, 56).ToArgb (), "0,56");
  751. Assert.AreEqual (-65383, bmp.GetPixel (0, 60).ToArgb (), "0,60");
  752. Assert.AreEqual (-65383, bmp.GetPixel (4, 0).ToArgb (), "4,0");
  753. Assert.AreEqual (-10079335, bmp.GetPixel (4, 4).ToArgb (), "4,4");
  754. Assert.AreEqual (-10079335, bmp.GetPixel (4, 8).ToArgb (), "4,8");
  755. Assert.AreEqual (-10079335, bmp.GetPixel (4, 12).ToArgb (), "4,12");
  756. Assert.AreEqual (-10079335, bmp.GetPixel (4, 16).ToArgb (), "4,16");
  757. Assert.AreEqual (-10079335, bmp.GetPixel (4, 20).ToArgb (), "4,20");
  758. Assert.AreEqual (-10079335, bmp.GetPixel (4, 24).ToArgb (), "4,24");
  759. Assert.AreEqual (-10079335, bmp.GetPixel (4, 28).ToArgb (), "4,28");
  760. Assert.AreEqual (-10079335, bmp.GetPixel (4, 32).ToArgb (), "4,32");
  761. Assert.AreEqual (-10079335, bmp.GetPixel (4, 36).ToArgb (), "4,36");
  762. Assert.AreEqual (-10079335, bmp.GetPixel (4, 40).ToArgb (), "4,40");
  763. Assert.AreEqual (-10079335, bmp.GetPixel (4, 44).ToArgb (), "4,44");
  764. Assert.AreEqual (-10079335, bmp.GetPixel (4, 48).ToArgb (), "4,48");
  765. Assert.AreEqual (-10079335, bmp.GetPixel (4, 52).ToArgb (), "4,52");
  766. Assert.AreEqual (-10079335, bmp.GetPixel (4, 56).ToArgb (), "4,56");
  767. Assert.AreEqual (0, bmp.GetPixel (4, 60).ToArgb (), "4,60");
  768. Assert.AreEqual (-65383, bmp.GetPixel (8, 0).ToArgb (), "8,0");
  769. Assert.AreEqual (-10079335, bmp.GetPixel (8, 4).ToArgb (), "8,4");
  770. Assert.AreEqual (-3342490, bmp.GetPixel (8, 8).ToArgb (), "8,8");
  771. Assert.AreEqual (-3342490, bmp.GetPixel (8, 12).ToArgb (), "8,12");
  772. Assert.AreEqual (-3342490, bmp.GetPixel (8, 16).ToArgb (), "8,16");
  773. Assert.AreEqual (-3342490, bmp.GetPixel (8, 20).ToArgb (), "8,20");
  774. Assert.AreEqual (-3342490, bmp.GetPixel (8, 24).ToArgb (), "8,24");
  775. Assert.AreEqual (-3342490, bmp.GetPixel (8, 28).ToArgb (), "8,28");
  776. Assert.AreEqual (-3342490, bmp.GetPixel (8, 32).ToArgb (), "8,32");
  777. Assert.AreEqual (-3342490, bmp.GetPixel (8, 36).ToArgb (), "8,36");
  778. Assert.AreEqual (-3342490, bmp.GetPixel (8, 40).ToArgb (), "8,40");
  779. Assert.AreEqual (-3342490, bmp.GetPixel (8, 44).ToArgb (), "8,44");
  780. Assert.AreEqual (-3342490, bmp.GetPixel (8, 48).ToArgb (), "8,48");
  781. Assert.AreEqual (-3342490, bmp.GetPixel (8, 52).ToArgb (), "8,52");
  782. Assert.AreEqual (0, bmp.GetPixel (8, 56).ToArgb (), "8,56");
  783. Assert.AreEqual (0, bmp.GetPixel (8, 60).ToArgb (), "8,60");
  784. Assert.AreEqual (-65383, bmp.GetPixel (12, 0).ToArgb (), "12,0");
  785. Assert.AreEqual (-10079335, bmp.GetPixel (12, 4).ToArgb (), "12,4");
  786. Assert.AreEqual (-3342490, bmp.GetPixel (12, 8).ToArgb (), "12,8");
  787. Assert.AreEqual (-33664, bmp.GetPixel (12, 12).ToArgb (), "12,12");
  788. Assert.AreEqual (-33664, bmp.GetPixel (12, 16).ToArgb (), "12,16");
  789. Assert.AreEqual (-33664, bmp.GetPixel (12, 20).ToArgb (), "12,20");
  790. Assert.AreEqual (-33664, bmp.GetPixel (12, 24).ToArgb (), "12,24");
  791. Assert.AreEqual (-33664, bmp.GetPixel (12, 28).ToArgb (), "12,28");
  792. Assert.AreEqual (-33664, bmp.GetPixel (12, 32).ToArgb (), "12,32");
  793. Assert.AreEqual (-33664, bmp.GetPixel (12, 36).ToArgb (), "12,36");
  794. Assert.AreEqual (-33664, bmp.GetPixel (12, 40).ToArgb (), "12,40");
  795. #endif
  796. }
  797. }
  798. [Test]
  799. public void Bitmap64Data ()
  800. {
  801. string sInFile = getInFile ("bitmaps/64x64x256.ico");
  802. using (Bitmap bmp = new Bitmap (sInFile)) {
  803. BitmapData data = bmp.LockBits (new Rectangle (0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  804. try {
  805. Assert.AreEqual (bmp.Height, data.Height, "Height");
  806. Assert.AreEqual (bmp.Width, data.Width, "Width");
  807. Assert.AreEqual (PixelFormat.Format24bppRgb, data.PixelFormat, "PixelFormat");
  808. int size = data.Height * data.Stride;
  809. unsafe {
  810. byte* scan = (byte*) data.Scan0;
  811. #if false
  812. // 97 is prime (so we're not affected by a recurring pattern)
  813. for (int p = 0; p < size; p += 97) {
  814. Console.WriteLine ("\t\t\t\t\t\tAssert.AreEqual ({0}, *(scan + {1}), \"{1}\");", *(scan + p), p);
  815. }
  816. #else
  817. // sampling values from a well known bitmap
  818. Assert.AreEqual (153, *(scan + 0), "0");
  819. Assert.AreEqual (0, *(scan + 97), "97");
  820. Assert.AreEqual (255, *(scan + 194), "194");
  821. Assert.AreEqual (0, *(scan + 291), "291");
  822. Assert.AreEqual (0, *(scan + 388), "388");
  823. Assert.AreEqual (204, *(scan + 485), "485");
  824. Assert.AreEqual (204, *(scan + 582), "582");
  825. Assert.AreEqual (0, *(scan + 679), "679");
  826. Assert.AreEqual (204, *(scan + 776), "776");
  827. Assert.AreEqual (153, *(scan + 873), "873");
  828. Assert.AreEqual (0, *(scan + 970), "970");
  829. Assert.AreEqual (0, *(scan + 1067), "1067");
  830. Assert.AreEqual (153, *(scan + 1164), "1164");
  831. Assert.AreEqual (153, *(scan + 1261), "1261");
  832. Assert.AreEqual (102, *(scan + 1358), "1358");
  833. Assert.AreEqual (0, *(scan + 1455), "1455");
  834. Assert.AreEqual (0, *(scan + 1552), "1552");
  835. Assert.AreEqual (204, *(scan + 1649), "1649");
  836. Assert.AreEqual (153, *(scan + 1746), "1746");
  837. Assert.AreEqual (0, *(scan + 1843), "1843");
  838. Assert.AreEqual (0, *(scan + 1940), "1940");
  839. Assert.AreEqual (51, *(scan + 2037), "2037");
  840. Assert.AreEqual (0, *(scan + 2134), "2134");
  841. Assert.AreEqual (0, *(scan + 2231), "2231");
  842. Assert.AreEqual (102, *(scan + 2328), "2328");
  843. Assert.AreEqual (124, *(scan + 2425), "2425");
  844. Assert.AreEqual (204, *(scan + 2522), "2522");
  845. Assert.AreEqual (0, *(scan + 2619), "2619");
  846. Assert.AreEqual (0, *(scan + 2716), "2716");
  847. Assert.AreEqual (204, *(scan + 2813), "2813");
  848. Assert.AreEqual (51, *(scan + 2910), "2910");
  849. Assert.AreEqual (0, *(scan + 3007), "3007");
  850. Assert.AreEqual (255, *(scan + 3104), "3104");
  851. Assert.AreEqual (0, *(scan + 3201), "3201");
  852. Assert.AreEqual (0, *(scan + 3298), "3298");
  853. Assert.AreEqual (0, *(scan + 3395), "3395");
  854. Assert.AreEqual (128, *(scan + 3492), "3492");
  855. Assert.AreEqual (0, *(scan + 3589), "3589");
  856. Assert.AreEqual (255, *(scan + 3686), "3686");
  857. Assert.AreEqual (128, *(scan + 3783), "3783");
  858. Assert.AreEqual (0, *(scan + 3880), "3880");
  859. Assert.AreEqual (128, *(scan + 3977), "3977");
  860. Assert.AreEqual (0, *(scan + 4074), "4074");
  861. Assert.AreEqual (0, *(scan + 4171), "4171");
  862. Assert.AreEqual (204, *(scan + 4268), "4268");
  863. Assert.AreEqual (0, *(scan + 4365), "4365");
  864. Assert.AreEqual (0, *(scan + 4462), "4462");
  865. Assert.AreEqual (102, *(scan + 4559), "4559");
  866. Assert.AreEqual (0, *(scan + 4656), "4656");
  867. Assert.AreEqual (0, *(scan + 4753), "4753");
  868. Assert.AreEqual (102, *(scan + 4850), "4850");
  869. Assert.AreEqual (0, *(scan + 4947), "4947");
  870. Assert.AreEqual (0, *(scan + 5044), "5044");
  871. Assert.AreEqual (204, *(scan + 5141), "5141");
  872. Assert.AreEqual (128, *(scan + 5238), "5238");
  873. Assert.AreEqual (0, *(scan + 5335), "5335");
  874. Assert.AreEqual (128, *(scan + 5432), "5432");
  875. Assert.AreEqual (128, *(scan + 5529), "5529");
  876. Assert.AreEqual (0, *(scan + 5626), "5626");
  877. Assert.AreEqual (255, *(scan + 5723), "5723");
  878. Assert.AreEqual (153, *(scan + 5820), "5820");
  879. Assert.AreEqual (0, *(scan + 5917), "5917");
  880. Assert.AreEqual (0, *(scan + 6014), "6014");
  881. Assert.AreEqual (51, *(scan + 6111), "6111");
  882. Assert.AreEqual (0, *(scan + 6208), "6208");
  883. Assert.AreEqual (255, *(scan + 6305), "6305");
  884. Assert.AreEqual (153, *(scan + 6402), "6402");
  885. Assert.AreEqual (0, *(scan + 6499), "6499");
  886. Assert.AreEqual (153, *(scan + 6596), "6596");
  887. Assert.AreEqual (102, *(scan + 6693), "6693");
  888. Assert.AreEqual (0, *(scan + 6790), "6790");
  889. Assert.AreEqual (204, *(scan + 6887), "6887");
  890. Assert.AreEqual (153, *(scan + 6984), "6984");
  891. Assert.AreEqual (0, *(scan + 7081), "7081");
  892. Assert.AreEqual (204, *(scan + 7178), "7178");
  893. Assert.AreEqual (153, *(scan + 7275), "7275");
  894. Assert.AreEqual (0, *(scan + 7372), "7372");
  895. Assert.AreEqual (0, *(scan + 7469), "7469");
  896. Assert.AreEqual (153, *(scan + 7566), "7566");
  897. Assert.AreEqual (0, *(scan + 7663), "7663");
  898. Assert.AreEqual (0, *(scan + 7760), "7760");
  899. Assert.AreEqual (153, *(scan + 7857), "7857");
  900. Assert.AreEqual (102, *(scan + 7954), "7954");
  901. Assert.AreEqual (102, *(scan + 8051), "8051");
  902. Assert.AreEqual (0, *(scan + 8148), "8148");
  903. Assert.AreEqual (0, *(scan + 8245), "8245");
  904. Assert.AreEqual (0, *(scan + 8342), "8342");
  905. Assert.AreEqual (204, *(scan + 8439), "8439");
  906. Assert.AreEqual (0, *(scan + 8536), "8536");
  907. Assert.AreEqual (204, *(scan + 8633), "8633");
  908. Assert.AreEqual (128, *(scan + 8730), "8730");
  909. Assert.AreEqual (0, *(scan + 8827), "8827");
  910. Assert.AreEqual (0, *(scan + 8924), "8924");
  911. Assert.AreEqual (153, *(scan + 9021), "9021");
  912. Assert.AreEqual (153, *(scan + 9118), "9118");
  913. Assert.AreEqual (255, *(scan + 9215), "9215");
  914. Assert.AreEqual (0, *(scan + 9312), "9312");
  915. Assert.AreEqual (0, *(scan + 9409), "9409");
  916. Assert.AreEqual (204, *(scan + 9506), "9506");
  917. Assert.AreEqual (0, *(scan + 9603), "9603");
  918. Assert.AreEqual (0, *(scan + 9700), "9700");
  919. Assert.AreEqual (0, *(scan + 9797), "9797");
  920. Assert.AreEqual (128, *(scan + 9894), "9894");
  921. Assert.AreEqual (0, *(scan + 9991), "9991");
  922. Assert.AreEqual (0, *(scan + 10088), "10088");
  923. Assert.AreEqual (0, *(scan + 10185), "10185");
  924. Assert.AreEqual (102, *(scan + 10282), "10282");
  925. Assert.AreEqual (0, *(scan + 10379), "10379");
  926. Assert.AreEqual (0, *(scan + 10476), "10476");
  927. Assert.AreEqual (51, *(scan + 10573), "10573");
  928. Assert.AreEqual (204, *(scan + 10670), "10670");
  929. Assert.AreEqual (0, *(scan + 10767), "10767");
  930. Assert.AreEqual (0, *(scan + 10864), "10864");
  931. Assert.AreEqual (0, *(scan + 10961), "10961");
  932. Assert.AreEqual (153, *(scan + 11058), "11058");
  933. Assert.AreEqual (0, *(scan + 11155), "11155");
  934. Assert.AreEqual (0, *(scan + 11252), "11252");
  935. Assert.AreEqual (153, *(scan + 11349), "11349");
  936. Assert.AreEqual (51, *(scan + 11446), "11446");
  937. Assert.AreEqual (0, *(scan + 11543), "11543");
  938. Assert.AreEqual (0, *(scan + 11640), "11640");
  939. Assert.AreEqual (0, *(scan + 11737), "11737");
  940. Assert.AreEqual (204, *(scan + 11834), "11834");
  941. Assert.AreEqual (0, *(scan + 11931), "11931");
  942. Assert.AreEqual (0, *(scan + 12028), "12028");
  943. Assert.AreEqual (255, *(scan + 12125), "12125");
  944. Assert.AreEqual (153, *(scan + 12222), "12222");
  945. #endif
  946. }
  947. }
  948. finally {
  949. bmp.UnlockBits (data);
  950. }
  951. }
  952. }
  953. // 96x96x256.ico only has a 96x96 size available
  954. [Test]
  955. public void Bitmap96Features ()
  956. {
  957. string sInFile = getInFile ("bitmaps/96x96x256.ico");
  958. using (Bitmap bmp = new Bitmap (sInFile)) {
  959. GraphicsUnit unit = GraphicsUnit.World;
  960. RectangleF rect = bmp.GetBounds (ref unit);
  961. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  962. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  963. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  964. Assert.AreEqual (256, bmp.Palette.Entries.Length, "Palette");
  965. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  966. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  967. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  968. #if NET_2_0
  969. Assert.IsNull (bmp.Tag, "Tag");
  970. #endif
  971. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  972. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  973. Assert.AreEqual (96, bmp.Width, "bmp.Width");
  974. Assert.AreEqual (96, bmp.Height, "bmp.Height");
  975. Assert.AreEqual (0, rect.X, "rect.X");
  976. Assert.AreEqual (0, rect.Y, "rect.Y");
  977. Assert.AreEqual (96, rect.Width, "rect.Width");
  978. Assert.AreEqual (96, rect.Height, "rect.Height");
  979. Assert.AreEqual (96, bmp.Size.Width, "bmp.Size.Width");
  980. Assert.AreEqual (96, bmp.Size.Height, "bmp.Size.Height");
  981. }
  982. }
  983. [Test]
  984. public void Bitmap96Pixels ()
  985. {
  986. string sInFile = getInFile ("bitmaps/96x96x256.ico");
  987. using (Bitmap bmp = new Bitmap (sInFile)) {
  988. #if false
  989. for (int x = 0; x < bmp.Width; x += 4) {
  990. for (int y = 0; y < bmp.Height; y += 4)
  991. Console.WriteLine ("\t\t\t\tAssert.AreEqual ({0}, bmp.GetPixel ({1}, {2}).ToArgb (), \"{1},{2}\");", bmp.GetPixel (x, y).ToArgb (), x, y);
  992. }
  993. #else
  994. // sampling values from a well known bitmap
  995. Assert.AreEqual (0, bmp.GetPixel (0, 0).ToArgb (), "0,0");
  996. Assert.AreEqual (0, bmp.GetPixel (0, 4).ToArgb (), "0,4");
  997. Assert.AreEqual (0, bmp.GetPixel (0, 8).ToArgb (), "0,8");
  998. Assert.AreEqual (0, bmp.GetPixel (0, 12).ToArgb (), "0,12");
  999. Assert.AreEqual (0, bmp.GetPixel (0, 16).ToArgb (), "0,16");
  1000. Assert.AreEqual (0, bmp.GetPixel (0, 20).ToArgb (), "0,20");
  1001. Assert.AreEqual (0, bmp.GetPixel (0, 24).ToArgb (), "0,24");
  1002. Assert.AreEqual (0, bmp.GetPixel (0, 28).ToArgb (), "0,28");
  1003. Assert.AreEqual (0, bmp.GetPixel (0, 32).ToArgb (), "0,32");
  1004. Assert.AreEqual (0, bmp.GetPixel (0, 36).ToArgb (), "0,36");
  1005. Assert.AreEqual (0, bmp.GetPixel (0, 40).ToArgb (), "0,40");
  1006. Assert.AreEqual (0, bmp.GetPixel (0, 44).ToArgb (), "0,44");
  1007. Assert.AreEqual (0, bmp.GetPixel (0, 48).ToArgb (), "0,48");
  1008. Assert.AreEqual (0, bmp.GetPixel (0, 52).ToArgb (), "0,52");
  1009. Assert.AreEqual (0, bmp.GetPixel (0, 56).ToArgb (), "0,56");
  1010. Assert.AreEqual (0, bmp.GetPixel (0, 60).ToArgb (), "0,60");
  1011. Assert.AreEqual (0, bmp.GetPixel (0, 64).ToArgb (), "0,64");
  1012. Assert.AreEqual (-14935012, bmp.GetPixel (0, 68).ToArgb (), "0,68");
  1013. Assert.AreEqual (0, bmp.GetPixel (0, 72).ToArgb (), "0,72");
  1014. Assert.AreEqual (0, bmp.GetPixel (0, 76).ToArgb (), "0,76");
  1015. Assert.AreEqual (0, bmp.GetPixel (0, 80).ToArgb (), "0,80");
  1016. Assert.AreEqual (0, bmp.GetPixel (0, 84).ToArgb (), "0,84");
  1017. Assert.AreEqual (0, bmp.GetPixel (0, 88).ToArgb (), "0,88");
  1018. Assert.AreEqual (0, bmp.GetPixel (0, 92).ToArgb (), "0,92");
  1019. Assert.AreEqual (0, bmp.GetPixel (4, 0).ToArgb (), "4,0");
  1020. Assert.AreEqual (0, bmp.GetPixel (4, 4).ToArgb (), "4,4");
  1021. Assert.AreEqual (-14935012, bmp.GetPixel (4, 8).ToArgb (), "4,8");
  1022. Assert.AreEqual (-3407872, bmp.GetPixel (4, 12).ToArgb (), "4,12");
  1023. Assert.AreEqual (-3407872, bmp.GetPixel (4, 16).ToArgb (), "4,16");
  1024. Assert.AreEqual (-14935012, bmp.GetPixel (4, 20).ToArgb (), "4,20");
  1025. Assert.AreEqual (0, bmp.GetPixel (4, 24).ToArgb (), "4,24");
  1026. Assert.AreEqual (0, bmp.GetPixel (4, 28).ToArgb (), "4,28");
  1027. Assert.AreEqual (0, bmp.GetPixel (4, 32).ToArgb (), "4,32");
  1028. Assert.AreEqual (0, bmp.GetPixel (4, 36).ToArgb (), "4,36");
  1029. Assert.AreEqual (-3368602, bmp.GetPixel (4, 40).ToArgb (), "4,40");
  1030. Assert.AreEqual (-3368602, bmp.GetPixel (4, 44).ToArgb (), "4,44");
  1031. Assert.AreEqual (-3368602, bmp.GetPixel (4, 48).ToArgb (), "4,48");
  1032. Assert.AreEqual (-3368602, bmp.GetPixel (4, 52).ToArgb (), "4,52");
  1033. Assert.AreEqual (0, bmp.GetPixel (4, 56).ToArgb (), "4,56");
  1034. Assert.AreEqual (0, bmp.GetPixel (4, 60).ToArgb (), "4,60");
  1035. Assert.AreEqual (-3342541, bmp.GetPixel (4, 64).ToArgb (), "4,64");
  1036. Assert.AreEqual (-3342541, bmp.GetPixel (4, 68).ToArgb (), "4,68");
  1037. Assert.AreEqual (-3342541, bmp.GetPixel (4, 72).ToArgb (), "4,72");
  1038. Assert.AreEqual (0, bmp.GetPixel (4, 76).ToArgb (), "4,76");
  1039. Assert.AreEqual (0, bmp.GetPixel (4, 80).ToArgb (), "4,80");
  1040. Assert.AreEqual (-26317, bmp.GetPixel (4, 84).ToArgb (), "4,84");
  1041. Assert.AreEqual (-26317, bmp.GetPixel (4, 88).ToArgb (), "4,88");
  1042. Assert.AreEqual (-26317, bmp.GetPixel (4, 92).ToArgb (), "4,92");
  1043. Assert.AreEqual (0, bmp.GetPixel (8, 0).ToArgb (), "8,0");
  1044. Assert.AreEqual (-14935012, bmp.GetPixel (8, 4).ToArgb (), "8,4");
  1045. Assert.AreEqual (-3407872, bmp.GetPixel (8, 8).ToArgb (), "8,8");
  1046. Assert.AreEqual (-3407872, bmp.GetPixel (8, 12).ToArgb (), "8,12");
  1047. Assert.AreEqual (-3407872, bmp.GetPixel (8, 16).ToArgb (), "8,16");
  1048. Assert.AreEqual (-3407872, bmp.GetPixel (8, 20).ToArgb (), "8,20");
  1049. Assert.AreEqual (-14935012, bmp.GetPixel (8, 24).ToArgb (), "8,24");
  1050. Assert.AreEqual (0, bmp.GetPixel (8, 28).ToArgb (), "8,28");
  1051. Assert.AreEqual (0, bmp.GetPixel (8, 32).ToArgb (), "8,32");
  1052. Assert.AreEqual (-3368602, bmp.GetPixel (8, 36).ToArgb (), "8,36");
  1053. Assert.AreEqual (-3368602, bmp.GetPixel (8, 40).ToArgb (), "8,40");
  1054. Assert.AreEqual (-3368602, bmp.GetPixel (8, 44).ToArgb (), "8,44");
  1055. Assert.AreEqual (-3368602, bmp.GetPixel (8, 48).ToArgb (), "8,48");
  1056. Assert.AreEqual (-3368602, bmp.GetPixel (8, 52).ToArgb (), "8,52");
  1057. Assert.AreEqual (-3368602, bmp.GetPixel (8, 56).ToArgb (), "8,56");
  1058. Assert.AreEqual (0, bmp.GetPixel (8, 60).ToArgb (), "8,60");
  1059. Assert.AreEqual (-3342541, bmp.GetPixel (8, 64).ToArgb (), "8,64");
  1060. Assert.AreEqual (-3342541, bmp.GetPixel (8, 68).ToArgb (), "8,68");
  1061. Assert.AreEqual (-3342541, bmp.GetPixel (8, 72).ToArgb (), "8,72");
  1062. Assert.AreEqual (0, bmp.GetPixel (8, 76).ToArgb (), "8,76");
  1063. Assert.AreEqual (0, bmp.GetPixel (8, 80).ToArgb (), "8,80");
  1064. Assert.AreEqual (-26317, bmp.GetPixel (8, 84).ToArgb (), "8,84");
  1065. Assert.AreEqual (-26317, bmp.GetPixel (8, 88).ToArgb (), "8,88");
  1066. Assert.AreEqual (-26317, bmp.GetPixel (8, 92).ToArgb (), "8,92");
  1067. Assert.AreEqual (0, bmp.GetPixel (12, 0).ToArgb (), "12,0");
  1068. Assert.AreEqual (-3407872, bmp.GetPixel (12, 4).ToArgb (), "12,4");
  1069. Assert.AreEqual (-3407872, bmp.GetPixel (12, 8).ToArgb (), "12,8");
  1070. Assert.AreEqual (-3407872, bmp.GetPixel (12, 12).ToArgb (), "12,12");
  1071. Assert.AreEqual (-3407872, bmp.GetPixel (12, 16).ToArgb (), "12,16");
  1072. Assert.AreEqual (-3407872, bmp.GetPixel (12, 20).ToArgb (), "12,20");
  1073. Assert.AreEqual (-3407872, bmp.GetPixel (12, 24).ToArgb (), "12,24");
  1074. Assert.AreEqual (0, bmp.GetPixel (12, 28).ToArgb (), "12,28");
  1075. Assert.AreEqual (-3368602, bmp.GetPixel (12, 32).ToArgb (), "12,32");
  1076. Assert.AreEqual (-3368602, bmp.GetPixel (12, 36).ToArgb (), "12,36");
  1077. Assert.AreEqual (-3368602, bmp.GetPixel (12, 40).ToArgb (), "12,40");
  1078. Assert.AreEqual (-3368602, bmp.GetPixel (12, 44).ToArgb (), "12,44");
  1079. Assert.AreEqual (-3368602, bmp.GetPixel (12, 48).ToArgb (), "12,48");
  1080. Assert.AreEqual (-3368602, bmp.GetPixel (12, 52).ToArgb (), "12,52");
  1081. Assert.AreEqual (-3368602, bmp.GetPixel (12, 56).ToArgb (), "12,56");
  1082. Assert.AreEqual (-3368602, bmp.GetPixel (12, 60).ToArgb (), "12,60");
  1083. Assert.AreEqual (-3342541, bmp.GetPixel (12, 64).ToArgb (), "12,64");
  1084. Assert.AreEqual (-3342541, bmp.GetPixel (12, 68).ToArgb (), "12,68");
  1085. Assert.AreEqual (-14935012, bmp.GetPixel (12, 72).ToArgb (), "12,72");
  1086. Assert.AreEqual (0, bmp.GetPixel (12, 76).ToArgb (), "12,76");
  1087. Assert.AreEqual (0, bmp.GetPixel (12, 80).ToArgb (), "12,80");
  1088. Assert.AreEqual (-26317, bmp.GetPixel (12, 84).ToArgb (), "12,84");
  1089. Assert.AreEqual (-26317, bmp.GetPixel (12, 88).ToArgb (), "12,88");
  1090. Assert.AreEqual (-26317, bmp.GetPixel (12, 92).ToArgb (), "12,92");
  1091. Assert.AreEqual (0, bmp.GetPixel (16, 0).ToArgb (), "16,0");
  1092. Assert.AreEqual (-3407872, bmp.GetPixel (16, 4).ToArgb (), "16,4");
  1093. Assert.AreEqual (-3407872, bmp.GetPixel (16, 8).ToArgb (), "16,8");
  1094. Assert.AreEqual (-3407872, bmp.GetPixel (16, 12).ToArgb (), "16,12");
  1095. Assert.AreEqual (-3407872, bmp.GetPixel (16, 16).ToArgb (), "16,16");
  1096. Assert.AreEqual (-3407872, bmp.GetPixel (16, 20).ToArgb (), "16,20");
  1097. Assert.AreEqual (-3407872, bmp.GetPixel (16, 24).ToArgb (), "16,24");
  1098. Assert.AreEqual (0, bmp.GetPixel (16, 28).ToArgb (), "16,28");
  1099. Assert.AreEqual (-3368602, bmp.GetPixel (16, 32).ToArgb (), "16,32");
  1100. Assert.AreEqual (-3368602, bmp.GetPixel (16, 36).ToArgb (), "16,36");
  1101. Assert.AreEqual (-3368602, bmp.GetPixel (16, 40).ToArgb (), "16,40");
  1102. Assert.AreEqual (-3368602, bmp.GetPixel (16, 44).ToArgb (), "16,44");
  1103. Assert.AreEqual (-3368602, bmp.GetPixel (16, 48).ToArgb (), "16,48");
  1104. Assert.AreEqual (-3368602, bmp.GetPixel (16, 52).ToArgb (), "16,52");
  1105. Assert.AreEqual (-3368602, bmp.GetPixel (16, 56).ToArgb (), "16,56");
  1106. Assert.AreEqual (-3368602, bmp.GetPixel (16, 60).ToArgb (), "16,60");
  1107. Assert.AreEqual (0, bmp.GetPixel (16, 64).ToArgb (), "16,64");
  1108. Assert.AreEqual (0, bmp.GetPixel (16, 68).ToArgb (), "16,68");
  1109. Assert.AreEqual (0, bmp.GetPixel (16, 72).ToArgb (), "16,72");
  1110. Assert.AreEqual (0, bmp.GetPixel (16, 76).ToArgb (), "16,76");
  1111. Assert.AreEqual (-14935012, bmp.GetPixel (16, 80).ToArgb (), "16,80");
  1112. Assert.AreEqual (0, bmp.GetPixel (16, 84).ToArgb (), "16,84");
  1113. Assert.AreEqual (-14935012, bmp.GetPixel (16, 88).ToArgb (), "16,88");
  1114. Assert.AreEqual (0, bmp.GetPixel (16, 92).ToArgb (), "16,92");
  1115. Assert.AreEqual (0, bmp.GetPixel (20, 0).ToArgb (), "20,0");
  1116. Assert.AreEqual (-14935012, bmp.GetPixel (20, 4).ToArgb (), "20,4");
  1117. Assert.AreEqual (-3407872, bmp.GetPixel (20, 8).ToArgb (), "20,8");
  1118. Assert.AreEqual (-3407872, bmp.GetPixel (20, 12).ToArgb (), "20,12");
  1119. Assert.AreEqual (-3407872, bmp.GetPixel (20, 16).ToArgb (), "20,16");
  1120. Assert.AreEqual (-3407872, bmp.GetPixel (20, 20).ToArgb (), "20,20");
  1121. Assert.AreEqual (-14935012, bmp.GetPixel (20, 24).ToArgb (), "20,24");
  1122. Assert.AreEqual (0, bmp.GetPixel (20, 28).ToArgb (), "20,28");
  1123. Assert.AreEqual (-3368602, bmp.GetPixel (20, 32).ToArgb (), "20,32");
  1124. Assert.AreEqual (-3368602, bmp.GetPixel (20, 36).ToArgb (), "20,36");
  1125. Assert.AreEqual (-3368602, bmp.GetPixel (20, 40).ToArgb (), "20,40");
  1126. Assert.AreEqual (-3368602, bmp.GetPixel (20, 44).ToArgb (), "20,44");
  1127. Assert.AreEqual (-3368602, bmp.GetPixel (20, 48).ToArgb (), "20,48");
  1128. Assert.AreEqual (-3368602, bmp.GetPixel (20, 52).ToArgb (), "20,52");
  1129. Assert.AreEqual (-3368602, bmp.GetPixel (20, 56).ToArgb (), "20,56");
  1130. Assert.AreEqual (-3368602, bmp.GetPixel (20, 60).ToArgb (), "20,60");
  1131. Assert.AreEqual (0, bmp.GetPixel (20, 64).ToArgb (), "20,64");
  1132. Assert.AreEqual (0, bmp.GetPixel (20, 68).ToArgb (), "20,68");
  1133. Assert.AreEqual (-13434829, bmp.GetPixel (20, 72).ToArgb (), "20,72");
  1134. Assert.AreEqual (-13434829, bmp.GetPixel (20, 76).ToArgb (), "20,76");
  1135. Assert.AreEqual (-13434829, bmp.GetPixel (20, 80).ToArgb (), "20,80");
  1136. Assert.AreEqual (-13434829, bmp.GetPixel (20, 84).ToArgb (), "20,84");
  1137. Assert.AreEqual (-13434829, bmp.GetPixel (20, 88).ToArgb (), "20,88");
  1138. Assert.AreEqual (0, bmp.GetPixel (20, 92).ToArgb (), "20,92");
  1139. Assert.AreEqual (0, bmp.GetPixel (24, 0).ToArgb (), "24,0");
  1140. Assert.AreEqual (0, bmp.GetPixel (24, 4).ToArgb (), "24,4");
  1141. Assert.AreEqual (-14935012, bmp.GetPixel (24, 8).ToArgb (), "24,8");
  1142. Assert.AreEqual (-3407872, bmp.GetPixel (24, 12).ToArgb (), "24,12");
  1143. Assert.AreEqual (-3407872, bmp.GetPixel (24, 16).ToArgb (), "24,16");
  1144. Assert.AreEqual (-14935012, bmp.GetPixel (24, 20).ToArgb (), "24,20");
  1145. Assert.AreEqual (0, bmp.GetPixel (24, 24).ToArgb (), "24,24");
  1146. Assert.AreEqual (0, bmp.GetPixel (24, 28).ToArgb (), "24,28");
  1147. Assert.AreEqual (-3368602, bmp.GetPixel (24, 32).ToArgb (), "24,32");
  1148. Assert.AreEqual (-3368602, bmp.GetPixel (24, 36).ToArgb (), "24,36");
  1149. Assert.AreEqual (-3368602, bmp.GetPixel (24, 40).ToArgb (), "24,40");
  1150. Assert.AreEqual (-3368602, bmp.GetPixel (24, 44).ToArgb (), "24,44");
  1151. Assert.AreEqual (-3368602, bmp.GetPixel (24, 48).ToArgb (), "24,48");
  1152. Assert.AreEqual (-3368602, bmp.GetPixel (24, 52).ToArgb (), "24,52");
  1153. Assert.AreEqual (-3368602, bmp.GetPixel (24, 56).ToArgb (), "24,56");
  1154. Assert.AreEqual (-3368602, bmp.GetPixel (24, 60).ToArgb (), "24,60");
  1155. Assert.AreEqual (0, bmp.GetPixel (24, 64).ToArgb (), "24,64");
  1156. Assert.AreEqual (-13434829, bmp.GetPixel (24, 68).ToArgb (), "24,68");
  1157. Assert.AreEqual (-13434829, bmp.GetPixel (24, 72).ToArgb (), "24,72");
  1158. Assert.AreEqual (-13434829, bmp.GetPixel (24, 76).ToArgb (), "24,76");
  1159. Assert.AreEqual (-13434829, bmp.GetPixel (24, 80).ToArgb (), "24,80");
  1160. Assert.AreEqual (-13434829, bmp.GetPixel (24, 84).ToArgb (), "24,84");
  1161. Assert.AreEqual (-13434829, bmp.GetPixel (24, 88).ToArgb (), "24,88");
  1162. Assert.AreEqual (-14935012, bmp.GetPixel (24, 92).ToArgb (), "24,92");
  1163. Assert.AreEqual (0, bmp.GetPixel (28, 0).ToArgb (), "28,0");
  1164. Assert.AreEqual (0, bmp.GetPixel (28, 4).ToArgb (), "28,4");
  1165. Assert.AreEqual (-14935012, bmp.GetPixel (28, 8).ToArgb (), "28,8");
  1166. Assert.AreEqual (0, bmp.GetPixel (28, 12).ToArgb (), "28,12");
  1167. Assert.AreEqual (0, bmp.GetPixel (28, 16).ToArgb (), "28,16");
  1168. Assert.AreEqual (-14935012, bmp.GetPixel (28, 20).ToArgb (), "28,20");
  1169. Assert.AreEqual (-16777012, bmp.GetPixel (28, 24).ToArgb (), "28,24");
  1170. Assert.AreEqual (0, bmp.GetPixel (28, 28).ToArgb (), "28,28");
  1171. Assert.AreEqual (-3368602, bmp.GetPixel (28, 32).ToArgb (), "28,32");
  1172. Assert.AreEqual (-3368602, bmp.GetPixel (28, 36).ToArgb (), "28,36");
  1173. Assert.AreEqual (-3368602, bmp.GetPixel (28, 40).ToArgb (), "28,40");
  1174. Assert.AreEqual (-3368602, bmp.GetPixel (28, 44).ToArgb (), "28,44");
  1175. Assert.AreEqual (-3368602, bmp.GetPixel (28, 48).ToArgb (), "28,48");
  1176. Assert.AreEqual (-3368602, bmp.GetPixel (28, 52).ToArgb (), "28,52");
  1177. Assert.AreEqual (-3368602, bmp.GetPixel (28, 56).ToArgb (), "28,56");
  1178. Assert.AreEqual (-3368602, bmp.GetPixel (28, 60).ToArgb (), "28,60");
  1179. Assert.AreEqual (0, bmp.GetPixel (28, 64).ToArgb (), "28,64");
  1180. Assert.AreEqual (-13434829, bmp.GetPixel (28, 68).ToArgb (), "28,68");
  1181. Assert.AreEqual (-13434829, bmp.GetPixel (28, 72).ToArgb (), "28,72");
  1182. Assert.AreEqual (-13434829, bmp.GetPixel (28, 76).ToArgb (), "28,76");
  1183. Assert.AreEqual (-13434829, bmp.GetPixel (28, 80).ToArgb (), "28,80");
  1184. Assert.AreEqual (-13434829, bmp.GetPixel (28, 84).ToArgb (), "28,84");
  1185. Assert.AreEqual (-13434829, bmp.GetPixel (28, 88).ToArgb (), "28,88");
  1186. Assert.AreEqual (-13434829, bmp.GetPixel (28, 92).ToArgb (), "28,92");
  1187. Assert.AreEqual (0, bmp.GetPixel (32, 0).ToArgb (), "32,0");
  1188. Assert.AreEqual (-10027264, bmp.GetPixel (32, 4).ToArgb (), "32,4");
  1189. Assert.AreEqual (-10027264, bmp.GetPixel (32, 8).ToArgb (), "32,8");
  1190. Assert.AreEqual (-10027264, bmp.GetPixel (32, 12).ToArgb (), "32,12");
  1191. Assert.AreEqual (-14935012, bmp.GetPixel (32, 16).ToArgb (), "32,16");
  1192. Assert.AreEqual (-16777012, bmp.GetPixel (32, 20).ToArgb (), "32,20");
  1193. Assert.AreEqual (-16777012, bmp.GetPixel (32, 24).ToArgb (), "32,24");
  1194. Assert.AreEqual (-16777012, bmp.GetPixel (32, 28).ToArgb (), "32,28");
  1195. Assert.AreEqual (0, bmp.GetPixel (32, 32).ToArgb (), "32,32");
  1196. Assert.AreEqual (-3368602, bmp.GetPixel (32, 36).ToArgb (), "32,36");
  1197. Assert.AreEqual (-3368602, bmp.GetPixel (32, 40).ToArgb (), "32,40");
  1198. Assert.AreEqual (-3368602, bmp.GetPixel (32, 44).ToArgb (), "32,44");
  1199. Assert.AreEqual (-3368602, bmp.GetPixel (32, 48).ToArgb (), "32,48");
  1200. Assert.AreEqual (-3368602, bmp.GetPixel (32, 52).ToArgb (), "32,52");
  1201. Assert.AreEqual (-3368602, bmp.GetPixel (32, 56).ToArgb (), "32,56");
  1202. Assert.AreEqual (0, bmp.GetPixel (32, 60).ToArgb (), "32,60");
  1203. Assert.AreEqual (0, bmp.GetPixel (32, 64).ToArgb (), "32,64");
  1204. Assert.AreEqual (-13434829, bmp.GetPixel (32, 68).ToArgb (), "32,68");
  1205. Assert.AreEqual (-13434829, bmp.GetPixel (32, 72).ToArgb (), "32,72");
  1206. Assert.AreEqual (-13434829, bmp.GetPixel (32, 76).ToArgb (), "32,76");
  1207. Assert.AreEqual (-13434829, bmp.GetPixel (32, 80).ToArgb (), "32,80");
  1208. Assert.AreEqual (-13434829, bmp.GetPixel (32, 84).ToArgb (), "32,84");
  1209. Assert.AreEqual (-13434829, bmp.GetPixel (32, 88).ToArgb (), "32,88");
  1210. Assert.AreEqual (-13434829, bmp.GetPixel (32, 92).ToArgb (), "32,92");
  1211. Assert.AreEqual (0, bmp.GetPixel (36, 0).ToArgb (), "36,0");
  1212. Assert.AreEqual (-10027264, bmp.GetPixel (36, 4).ToArgb (), "36,4");
  1213. Assert.AreEqual (-10027264, bmp.GetPixel (36, 8).ToArgb (), "36,8");
  1214. Assert.AreEqual (-10027264, bmp.GetPixel (36, 12).ToArgb (), "36,12");
  1215. Assert.AreEqual (-10027264, bmp.GetPixel (36, 16).ToArgb (), "36,16");
  1216. Assert.AreEqual (-14935012, bmp.GetPixel (36, 20).ToArgb (), "36,20");
  1217. Assert.AreEqual (-16777012, bmp.GetPixel (36, 24).ToArgb (), "36,24");
  1218. Assert.AreEqual (0, bmp.GetPixel (36, 28).ToArgb (), "36,28");
  1219. Assert.AreEqual (0, bmp.GetPixel (36, 32).ToArgb (), "36,32");
  1220. Assert.AreEqual (0, bmp.GetPixel (36, 36).ToArgb (), "36,36");
  1221. Assert.AreEqual (-3368602, bmp.GetPixel (36, 40).ToArgb (), "36,40");
  1222. Assert.AreEqual (-3368602, bmp.GetPixel (36, 44).ToArgb (), "36,44");
  1223. Assert.AreEqual (-3368602, bmp.GetPixel (36, 48).ToArgb (), "36,48");
  1224. Assert.AreEqual (-3368602, bmp.GetPixel (36, 52).ToArgb (), "36,52");
  1225. Assert.AreEqual (0, bmp.GetPixel (36, 56).ToArgb (), "36,56");
  1226. Assert.AreEqual (0, bmp.GetPixel (36, 60).ToArgb (), "36,60");
  1227. Assert.AreEqual (0, bmp.GetPixel (36, 64).ToArgb (), "36,64");
  1228. Assert.AreEqual (-13434829, bmp.GetPixel (36, 68).ToArgb (), "36,68");
  1229. Assert.AreEqual (-13434829, bmp.GetPixel (36, 72).ToArgb (), "36,72");
  1230. Assert.AreEqual (-13434829, bmp.GetPixel (36, 76).ToArgb (), "36,76");
  1231. Assert.AreEqual (-13434829, bmp.GetPixel (36, 80).ToArgb (), "36,80");
  1232. Assert.AreEqual (-13434829, bmp.GetPixel (36, 84).ToArgb (), "36,84");
  1233. Assert.AreEqual (-13434829, bmp.GetPixel (36, 88).ToArgb (), "36,88");
  1234. Assert.AreEqual (-13434829, bmp.GetPixel (36, 92).ToArgb (), "36,92");
  1235. Assert.AreEqual (0, bmp.GetPixel (40, 0).ToArgb (), "40,0");
  1236. Assert.AreEqual (-10027264, bmp.GetPixel (40, 4).ToArgb (), "40,4");
  1237. Assert.AreEqual (-10027264, bmp.GetPixel (40, 8).ToArgb (), "40,8");
  1238. Assert.AreEqual (-10027264, bmp.GetPixel (40, 12).ToArgb (), "40,12");
  1239. Assert.AreEqual (-14935012, bmp.GetPixel (40, 16).ToArgb (), "40,16");
  1240. Assert.AreEqual (0, bmp.GetPixel (40, 20).ToArgb (), "40,20");
  1241. Assert.AreEqual (0, bmp.GetPixel (40, 24).ToArgb (), "40,24");
  1242. Assert.AreEqual (0, bmp.GetPixel (40, 28).ToArgb (), "40,28");
  1243. Assert.AreEqual (-13408717, bmp.GetPixel (40, 32).ToArgb (), "40,32");
  1244. Assert.AreEqual (-13408717, bmp.GetPixel (40, 36).ToArgb (), "40,36");
  1245. Assert.AreEqual (0, bmp.GetPixel (40, 40).ToArgb (), "40,40");
  1246. Assert.AreEqual (0, bmp.GetPixel (40, 44).ToArgb (), "40,44");
  1247. Assert.AreEqual (-14935012, bmp.GetPixel (40, 48).ToArgb (), "40,48");
  1248. Assert.AreEqual (0, bmp.GetPixel (40, 52).ToArgb (), "40,52");
  1249. Assert.AreEqual (0, bmp.GetPixel (40, 56).ToArgb (), "40,56");
  1250. Assert.AreEqual (-26317, bmp.GetPixel (40, 60).ToArgb (), "40,60");
  1251. Assert.AreEqual (-26317, bmp.GetPixel (40, 64).ToArgb (), "40,64");
  1252. Assert.AreEqual (-14935012, bmp.GetPixel (40, 68).ToArgb (), "40,68");
  1253. Assert.AreEqual (-13434829, bmp.GetPixel (40, 72).ToArgb (), "40,72");
  1254. Assert.AreEqual (-13434829, bmp.GetPixel (40, 76).ToArgb (), "40,76");
  1255. Assert.AreEqual (-13434829, bmp.GetPixel (40, 80).ToArgb (), "40,80");
  1256. Assert.AreEqual (-13434829, bmp.GetPixel (40, 84).ToArgb (), "40,84");
  1257. Assert.AreEqual (-13434829, bmp.GetPixel (40, 88).ToArgb (), "40,88");
  1258. Assert.AreEqual (0, bmp.GetPixel (40, 92).ToArgb (), "40,92");
  1259. Assert.AreEqual (0, bmp.GetPixel (44, 0).ToArgb (), "44,0");
  1260. Assert.AreEqual (0, bmp.GetPixel (44, 4).ToArgb (), "44,4");
  1261. Assert.AreEqual (-14935012, bmp.GetPixel (44, 8).ToArgb (), "44,8");
  1262. Assert.AreEqual (0, bmp.GetPixel (44, 12).ToArgb (), "44,12");
  1263. Assert.AreEqual (0, bmp.GetPixel (44, 16).ToArgb (), "44,16");
  1264. Assert.AreEqual (0, bmp.GetPixel (44, 20).ToArgb (), "44,20");
  1265. Assert.AreEqual (0, bmp.GetPixel (44, 24).ToArgb (), "44,24");
  1266. Assert.AreEqual (0, bmp.GetPixel (44, 28).ToArgb (), "44,28");
  1267. Assert.AreEqual (-13408717, bmp.GetPixel (44, 32).ToArgb (), "44,32");
  1268. Assert.AreEqual (-13408717, bmp.GetPixel (44, 36).ToArgb (), "44,36");
  1269. Assert.AreEqual (0, bmp.GetPixel (44, 40).ToArgb (), "44,40");
  1270. Assert.AreEqual (-13312, bmp.GetPixel (44, 44).ToArgb (), "44,44");
  1271. Assert.AreEqual (-13312, bmp.GetPixel (44, 48).ToArgb (), "44,48");
  1272. Assert.AreEqual (-13312, bmp.GetPixel (44, 52).ToArgb (), "44,52");
  1273. Assert.AreEqual (-13312, bmp.GetPixel (44, 56).ToArgb (), "44,56");
  1274. Assert.AreEqual (-14935012, bmp.GetPixel (44, 60).ToArgb (), "44,60");
  1275. Assert.AreEqual (-14935012, bmp.GetPixel (44, 64).ToArgb (), "44,64");
  1276. Assert.AreEqual (0, bmp.GetPixel (44, 68).ToArgb (), "44,68");
  1277. Assert.AreEqual (-14935012, bmp.GetPixel (44, 72).ToArgb (), "44,72");
  1278. Assert.AreEqual (-13434829, bmp.GetPixel (44, 76).ToArgb (), "44,76");
  1279. Assert.AreEqual (-13434829, bmp.GetPixel (44, 80).ToArgb (), "44,80");
  1280. Assert.AreEqual (-13434829, bmp.GetPixel (44, 84).ToArgb (), "44,84");
  1281. Assert.AreEqual (-14935012, bmp.GetPixel (44, 88).ToArgb (), "44,88");
  1282. Assert.AreEqual (0, bmp.GetPixel (44, 92).ToArgb (), "44,92");
  1283. Assert.AreEqual (0, bmp.GetPixel (48, 0).ToArgb (), "48,0");
  1284. Assert.AreEqual (0, bmp.GetPixel (48, 4).ToArgb (), "48,4");
  1285. Assert.AreEqual (0, bmp.GetPixel (48, 8).ToArgb (), "48,8");
  1286. Assert.AreEqual (0, bmp.GetPixel (48, 12).ToArgb (), "48,12");
  1287. Assert.AreEqual (-52429, bmp.GetPixel (48, 16).ToArgb (), "48,16");
  1288. Assert.AreEqual (-52429, bmp.GetPixel (48, 20).ToArgb (), "48,20");
  1289. Assert.AreEqual (-52429, bmp.GetPixel (48, 24).ToArgb (), "48,24");
  1290. Assert.AreEqual (-52429, bmp.GetPixel (48, 28).ToArgb (), "48,28");
  1291. Assert.AreEqual (-14935012, bmp.GetPixel (48, 32).ToArgb (), "48,32");
  1292. Assert.AreEqual (0, bmp.GetPixel (48, 36).ToArgb (), "48,36");
  1293. Assert.AreEqual (-14935012, bmp.GetPixel (48, 40).ToArgb (), "48,40");
  1294. Assert.AreEqual (-13312, bmp.GetPixel (48, 44).ToArgb (), "48,44");
  1295. Assert.AreEqual (-13312, bmp.GetPixel (48, 48).ToArgb (), "48,48");
  1296. Assert.AreEqual (-13312, bmp.GetPixel (48, 52).ToArgb (), "48,52");
  1297. Assert.AreEqual (-13312, bmp.GetPixel (48, 56).ToArgb (), "48,56");
  1298. Assert.AreEqual (0, bmp.GetPixel (48, 60).ToArgb (), "48,60");
  1299. Assert.AreEqual (1842204, bmp.GetPixel (48, 64).ToArgb (), "48,64");
  1300. Assert.AreEqual (-3355546, bmp.GetPixel (48, 68).ToArgb (), "48,68");
  1301. Assert.AreEqual (-3355546, bmp.GetPixel (48, 72).ToArgb (), "48,72");
  1302. Assert.AreEqual (0, bmp.GetPixel (48, 76).ToArgb (), "48,76");
  1303. Assert.AreEqual (0, bmp.GetPixel (48, 80).ToArgb (), "48,80");
  1304. Assert.AreEqual (0, bmp.GetPixel (48, 84).ToArgb (), "48,84");
  1305. Assert.AreEqual (0, bmp.GetPixel (48, 88).ToArgb (), "48,88");
  1306. Assert.AreEqual (0, bmp.GetPixel (48, 92).ToArgb (), "48,92");
  1307. Assert.AreEqual (0, bmp.GetPixel (52, 0).ToArgb (), "52,0");
  1308. Assert.AreEqual (0, bmp.GetPixel (52, 4).ToArgb (), "52,4");
  1309. Assert.AreEqual (-14935012, bmp.GetPixel (52, 8).ToArgb (), "52,8");
  1310. Assert.AreEqual (-52429, bmp.GetPixel (52, 12).ToArgb (), "52,12");
  1311. Assert.AreEqual (-52429, bmp.GetPixel (52, 16).ToArgb (), "52,16");
  1312. Assert.AreEqual (-52429, bmp.GetPixel (52, 20).ToArgb (), "52,20");
  1313. Assert.AreEqual (-52429, bmp.GetPixel (52, 24).ToArgb (), "52,24");
  1314. Assert.AreEqual (-52429, bmp.GetPixel (52, 28).ToArgb (), "52,28");
  1315. Assert.AreEqual (-52429, bmp.GetPixel (52, 32).ToArgb (), "52,32");
  1316. Assert.AreEqual (-52429, bmp.GetPixel (52, 36).ToArgb (), "52,36");
  1317. Assert.AreEqual (-14935012, bmp.GetPixel (52, 40).ToArgb (), "52,40");
  1318. Assert.AreEqual (-13312, bmp.GetPixel (52, 44).ToArgb (), "52,44");
  1319. Assert.AreEqual (-13312, bmp.GetPixel (52, 48).ToArgb (), "52,48");
  1320. Assert.AreEqual (-13312, bmp.GetPixel (52, 52).ToArgb (), "52,52");
  1321. Assert.AreEqual (-13312, bmp.GetPixel (52, 56).ToArgb (), "52,56");
  1322. Assert.AreEqual (0, bmp.GetPixel (52, 60).ToArgb (), "52,60");
  1323. Assert.AreEqual (-3355546, bmp.GetPixel (52, 64).ToArgb (), "52,64");
  1324. Assert.AreEqual (-3355546, bmp.GetPixel (52, 68).ToArgb (), "52,68");
  1325. Assert.AreEqual (-3355546, bmp.GetPixel (52, 72).ToArgb (), "52,72");
  1326. Assert.AreEqual (-3355546, bmp.GetPixel (52, 76).ToArgb (), "52,76");
  1327. Assert.AreEqual (0, bmp.GetPixel (52, 80).ToArgb (), "52,80");
  1328. Assert.AreEqual (-6737101, bmp.GetPixel (52, 84).ToArgb (), "52,84");
  1329. Assert.AreEqual (-6737101, bmp.GetPixel (52, 88).ToArgb (), "52,88");
  1330. Assert.AreEqual (-6737101, bmp.GetPixel (52, 92).ToArgb (), "52,92");
  1331. Assert.AreEqual (0, bmp.GetPixel (56, 0).ToArgb (), "56,0");
  1332. Assert.AreEqual (0, bmp.GetPixel (56, 4).ToArgb (), "56,4");
  1333. Assert.AreEqual (-52429, bmp.GetPixel (56, 8).ToArgb (), "56,8");
  1334. Assert.AreEqual (-52429, bmp.GetPixel (56, 12).ToArgb (), "56,12");
  1335. Assert.AreEqual (-52429, bmp.GetPixel (56, 16).ToArgb (), "56,16");
  1336. Assert.AreEqual (-52429, bmp.GetPixel (56, 20).ToArgb (), "56,20");
  1337. Assert.AreEqual (-52429, bmp.GetPixel (56, 24).ToArgb (), "56,24");
  1338. Assert.AreEqual (-52429, bmp.GetPixel (56, 28).ToArgb (), "56,28");
  1339. Assert.AreEqual (-52429, bmp.GetPixel (56, 32).ToArgb (), "56,32");
  1340. Assert.AreEqual (-52429, bmp.GetPixel (56, 36).ToArgb (), "56,36");
  1341. Assert.AreEqual (-14935012, bmp.GetPixel (56, 40).ToArgb (), "56,40");
  1342. Assert.AreEqual (-13312, bmp.GetPixel (56, 44).ToArgb (), "56,44");
  1343. Assert.AreEqual (-13312, bmp.GetPixel (56, 48).ToArgb (), "56,48");
  1344. Assert.AreEqual (-13312, bmp.GetPixel (56, 52).ToArgb (), "56,52");
  1345. Assert.AreEqual (-13312, bmp.GetPixel (56, 56).ToArgb (), "56,56");
  1346. Assert.AreEqual (0, bmp.GetPixel (56, 60).ToArgb (), "56,60");
  1347. Assert.AreEqual (-3355546, bmp.GetPixel (56, 64).ToArgb (), "56,64");
  1348. Assert.AreEqual (-3355546, bmp.GetPixel (56, 68).ToArgb (), "56,68");
  1349. Assert.AreEqual (-3355546, bmp.GetPixel (56, 72).ToArgb (), "56,72");
  1350. Assert.AreEqual (-3355546, bmp.GetPixel (56, 76).ToArgb (), "56,76");
  1351. Assert.AreEqual (-6737101, bmp.GetPixel (56, 80).ToArgb (), "56,80");
  1352. Assert.AreEqual (-6737101, bmp.GetPixel (56, 84).ToArgb (), "56,84");
  1353. Assert.AreEqual (-6737101, bmp.GetPixel (56, 88).ToArgb (), "56,88");
  1354. Assert.AreEqual (-6737101, bmp.GetPixel (56, 92).ToArgb (), "56,92");
  1355. Assert.AreEqual (0, bmp.GetPixel (60, 0).ToArgb (), "60,0");
  1356. Assert.AreEqual (-52429, bmp.GetPixel (60, 4).ToArgb (), "60,4");
  1357. Assert.AreEqual (-52429, bmp.GetPixel (60, 8).ToArgb (), "60,8");
  1358. Assert.AreEqual (-52429, bmp.GetPixel (60, 12).ToArgb (), "60,12");
  1359. Assert.AreEqual (-52429, bmp.GetPixel (60, 16).ToArgb (), "60,16");
  1360. Assert.AreEqual (-52429, bmp.GetPixel (60, 20).ToArgb (), "60,20");
  1361. Assert.AreEqual (-52429, bmp.GetPixel (60, 24).ToArgb (), "60,24");
  1362. Assert.AreEqual (-52429, bmp.GetPixel (60, 28).ToArgb (), "60,28");
  1363. Assert.AreEqual (-52429, bmp.GetPixel (60, 32).ToArgb (), "60,32");
  1364. Assert.AreEqual (-52429, bmp.GetPixel (60, 36).ToArgb (), "60,36");
  1365. Assert.AreEqual (-52429, bmp.GetPixel (60, 40).ToArgb (), "60,40");
  1366. Assert.AreEqual (0, bmp.GetPixel (60, 44).ToArgb (), "60,44");
  1367. Assert.AreEqual (-14935012, bmp.GetPixel (60, 48).ToArgb (), "60,48");
  1368. Assert.AreEqual (0, bmp.GetPixel (60, 52).ToArgb (), "60,52");
  1369. Assert.AreEqual (0, bmp.GetPixel (60, 56).ToArgb (), "60,56");
  1370. Assert.AreEqual (0, bmp.GetPixel (60, 60).ToArgb (), "60,60");
  1371. Assert.AreEqual (0, bmp.GetPixel (60, 64).ToArgb (), "60,64");
  1372. Assert.AreEqual (-3355546, bmp.GetPixel (60, 68).ToArgb (), "60,68");
  1373. Assert.AreEqual (-3355546, bmp.GetPixel (60, 72).ToArgb (), "60,72");
  1374. Assert.AreEqual (0, bmp.GetPixel (60, 76).ToArgb (), "60,76");
  1375. Assert.AreEqual (-6737101, bmp.GetPixel (60, 80).ToArgb (), "60,80");
  1376. Assert.AreEqual (-6737101, bmp.GetPixel (60, 84).ToArgb (), "60,84");
  1377. Assert.AreEqual (-6737101, bmp.GetPixel (60, 88).ToArgb (), "60,88");
  1378. Assert.AreEqual (-6737101, bmp.GetPixel (60, 92).ToArgb (), "60,92");
  1379. Assert.AreEqual (0, bmp.GetPixel (64, 0).ToArgb (), "64,0");
  1380. Assert.AreEqual (-52429, bmp.GetPixel (64, 4).ToArgb (), "64,4");
  1381. Assert.AreEqual (-52429, bmp.GetPixel (64, 8).ToArgb (), "64,8");
  1382. Assert.AreEqual (-52429, bmp.GetPixel (64, 12).ToArgb (), "64,12");
  1383. Assert.AreEqual (-52429, bmp.GetPixel (64, 16).ToArgb (), "64,16");
  1384. Assert.AreEqual (-52429, bmp.GetPixel (64, 20).ToArgb (), "64,20");
  1385. Assert.AreEqual (-52429, bmp.GetPixel (64, 24).ToArgb (), "64,24");
  1386. Assert.AreEqual (-52429, bmp.GetPixel (64, 28).ToArgb (), "64,28");
  1387. Assert.AreEqual (-52429, bmp.GetPixel (64, 32).ToArgb (), "64,32");
  1388. Assert.AreEqual (-52429, bmp.GetPixel (64, 36).ToArgb (), "64,36");
  1389. Assert.AreEqual (-52429, bmp.GetPixel (64, 40).ToArgb (), "64,40");
  1390. Assert.AreEqual (-14935012, bmp.GetPixel (64, 44).ToArgb (), "64,44");
  1391. Assert.AreEqual (0, bmp.GetPixel (64, 48).ToArgb (), "64,48");
  1392. Assert.AreEqual (0, bmp.GetPixel (64, 52).ToArgb (), "64,52");
  1393. Assert.AreEqual (-6750157, bmp.GetPixel (64, 56).ToArgb (), "64,56");
  1394. Assert.AreEqual (-6750157, bmp.GetPixel (64, 60).ToArgb (), "64,60");
  1395. Assert.AreEqual (-6750157, bmp.GetPixel (64, 64).ToArgb (), "64,64");
  1396. Assert.AreEqual (-14935012, bmp.GetPixel (64, 68).ToArgb (), "64,68");
  1397. Assert.AreEqual (0, bmp.GetPixel (64, 72).ToArgb (), "64,72");
  1398. Assert.AreEqual (0, bmp.GetPixel (64, 76).ToArgb (), "64,76");
  1399. Assert.AreEqual (0, bmp.GetPixel (64, 80).ToArgb (), "64,80");
  1400. Assert.AreEqual (-6737101, bmp.GetPixel (64, 84).ToArgb (), "64,84");
  1401. Assert.AreEqual (-6737101, bmp.GetPixel (64, 88).ToArgb (), "64,88");
  1402. Assert.AreEqual (-14935012, bmp.GetPixel (64, 92).ToArgb (), "64,92");
  1403. Assert.AreEqual (-14935012, bmp.GetPixel (68, 0).ToArgb (), "68,0");
  1404. Assert.AreEqual (-52429, bmp.GetPixel (68, 4).ToArgb (), "68,4");
  1405. Assert.AreEqual (-52429, bmp.GetPixel (68, 8).ToArgb (), "68,8");
  1406. Assert.AreEqual (-52429, bmp.GetPixel (68, 12).ToArgb (), "68,12");
  1407. Assert.AreEqual (-52429, bmp.GetPixel (68, 16).ToArgb (), "68,16");
  1408. Assert.AreEqual (-52429, bmp.GetPixel (68, 20).ToArgb (), "68,20");
  1409. Assert.AreEqual (-52429, bmp.GetPixel (68, 24).ToArgb (), "68,24");
  1410. Assert.AreEqual (-52429, bmp.GetPixel (68, 28).ToArgb (), "68,28");
  1411. Assert.AreEqual (-52429, bmp.GetPixel (68, 32).ToArgb (), "68,32");
  1412. Assert.AreEqual (-52429, bmp.GetPixel (68, 36).ToArgb (), "68,36");
  1413. Assert.AreEqual (-52429, bmp.GetPixel (68, 40).ToArgb (), "68,40");
  1414. Assert.AreEqual (-52429, bmp.GetPixel (68, 44).ToArgb (), "68,44");
  1415. Assert.AreEqual (0, bmp.GetPixel (68, 48).ToArgb (), "68,48");
  1416. Assert.AreEqual (-6750157, bmp.GetPixel (68, 52).ToArgb (), "68,52");
  1417. Assert.AreEqual (-6750157, bmp.GetPixel (68, 56).ToArgb (), "68,56");
  1418. Assert.AreEqual (-6750157, bmp.GetPixel (68, 60).ToArgb (), "68,60");
  1419. Assert.AreEqual (-6750157, bmp.GetPixel (68, 64).ToArgb (), "68,64");
  1420. Assert.AreEqual (-6750157, bmp.GetPixel (68, 68).ToArgb (), "68,68");
  1421. Assert.AreEqual (-14935012, bmp.GetPixel (68, 72).ToArgb (), "68,72");
  1422. Assert.AreEqual (-16751002, bmp.GetPixel (68, 76).ToArgb (), "68,76");
  1423. Assert.AreEqual (-16751002, bmp.GetPixel (68, 80).ToArgb (), "68,80");
  1424. Assert.AreEqual (0, bmp.GetPixel (68, 84).ToArgb (), "68,84");
  1425. Assert.AreEqual (0, bmp.GetPixel (68, 88).ToArgb (), "68,88");
  1426. Assert.AreEqual (-39373, bmp.GetPixel (68, 92).ToArgb (), "68,92");
  1427. Assert.AreEqual (-14935012, bmp.GetPixel (72, 0).ToArgb (), "72,0");
  1428. Assert.AreEqual (-52429, bmp.GetPixel (72, 4).ToArgb (), "72,4");
  1429. Assert.AreEqual (-52429, bmp.GetPixel (72, 8).ToArgb (), "72,8");
  1430. Assert.AreEqual (-52429, bmp.GetPixel (72, 12).ToArgb (), "72,12");
  1431. Assert.AreEqual (-52429, bmp.GetPixel (72, 16).ToArgb (), "72,16");
  1432. Assert.AreEqual (-52429, bmp.GetPixel (72, 20).ToArgb (), "72,20");
  1433. Assert.AreEqual (-52429, bmp.GetPixel (72, 24).ToArgb (), "72,24");
  1434. Assert.AreEqual (-52429, bmp.GetPixel (72, 28).ToArgb (), "72,28");
  1435. Assert.AreEqual (-52429, bmp.GetPixel (72, 32).ToArgb (), "72,32");
  1436. Assert.AreEqual (-52429, bmp.GetPixel (72, 36).ToArgb (), "72,36");
  1437. Assert.AreEqual (-52429, bmp.GetPixel (72, 40).ToArgb (), "72,40");
  1438. Assert.AreEqual (-52429, bmp.GetPixel (72, 44).ToArgb (), "72,44");
  1439. Assert.AreEqual (-14935012, bmp.GetPixel (72, 48).ToArgb (), "72,48");
  1440. Assert.AreEqual (-6750157, bmp.GetPixel (72, 52).ToArgb (), "72,52");
  1441. Assert.AreEqual (-6750157, bmp.GetPixel (72, 56).ToArgb (), "72,56");
  1442. Assert.AreEqual (-6750157, bmp.GetPixel (72, 60).ToArgb (), "72,60");
  1443. Assert.AreEqual (-6750157, bmp.GetPixel (72, 64).ToArgb (), "72,64");
  1444. Assert.AreEqual (-6750157, bmp.GetPixel (72, 68).ToArgb (), "72,68");
  1445. Assert.AreEqual (-6750157, bmp.GetPixel (72, 72).ToArgb (), "72,72");
  1446. Assert.AreEqual (0, bmp.GetPixel (72, 76).ToArgb (), "72,76");
  1447. Assert.AreEqual (0, bmp.GetPixel (72, 80).ToArgb (), "72,80");
  1448. Assert.AreEqual (0, bmp.GetPixel (72, 84).ToArgb (), "72,84");
  1449. Assert.AreEqual (0, bmp.GetPixel (72, 88).ToArgb (), "72,88");
  1450. Assert.AreEqual (-39373, bmp.GetPixel (72, 92).ToArgb (), "72,92");
  1451. Assert.AreEqual (0, bmp.GetPixel (76, 0).ToArgb (), "76,0");
  1452. Assert.AreEqual (-52429, bmp.GetPixel (76, 4).ToArgb (), "76,4");
  1453. Assert.AreEqual (-52429, bmp.GetPixel (76, 8).ToArgb (), "76,8");
  1454. Assert.AreEqual (-52429, bmp.GetPixel (76, 12).ToArgb (), "76,12");
  1455. Assert.AreEqual (-52429, bmp.GetPixel (76, 16).ToArgb (), "76,16");
  1456. Assert.AreEqual (-52429, bmp.GetPixel (76, 20).ToArgb (), "76,20");
  1457. Assert.AreEqual (-52429, bmp.GetPixel (76, 24).ToArgb (), "76,24");
  1458. Assert.AreEqual (-52429, bmp.GetPixel (76, 28).ToArgb (), "76,28");
  1459. Assert.AreEqual (-52429, bmp.GetPixel (76, 32).ToArgb (), "76,32");
  1460. Assert.AreEqual (-52429, bmp.GetPixel (76, 36).ToArgb (), "76,36");
  1461. Assert.AreEqual (-52429, bmp.GetPixel (76, 40).ToArgb (), "76,40");
  1462. Assert.AreEqual (-14935012, bmp.GetPixel (76, 44).ToArgb (), "76,44");
  1463. Assert.AreEqual (-6750157, bmp.GetPixel (76, 48).ToArgb (), "76,48");
  1464. Assert.AreEqual (-6750157, bmp.GetPixel (76, 52).ToArgb (), "76,52");
  1465. Assert.AreEqual (-6750157, bmp.GetPixel (76, 56).ToArgb (), "76,56");
  1466. Assert.AreEqual (-6750157, bmp.GetPixel (76, 60).ToArgb (), "76,60");
  1467. Assert.AreEqual (-6750157, bmp.GetPixel (76, 64).ToArgb (), "76,64");
  1468. Assert.AreEqual (-6750157, bmp.GetPixel (76, 68).ToArgb (), "76,68");
  1469. Assert.AreEqual (-6750157, bmp.GetPixel (76, 72).ToArgb (), "76,72");
  1470. Assert.AreEqual (-14935012, bmp.GetPixel (76, 76).ToArgb (), "76,76");
  1471. Assert.AreEqual (0, bmp.GetPixel (76, 80).ToArgb (), "76,80");
  1472. Assert.AreEqual (-65383, bmp.GetPixel (76, 84).ToArgb (), "76,84");
  1473. Assert.AreEqual (-65383, bmp.GetPixel (76, 88).ToArgb (), "76,88");
  1474. Assert.AreEqual (-14935012, bmp.GetPixel (76, 92).ToArgb (), "76,92");
  1475. Assert.AreEqual (0, bmp.GetPixel (80, 0).ToArgb (), "80,0");
  1476. Assert.AreEqual (-52429, bmp.GetPixel (80, 4).ToArgb (), "80,4");
  1477. Assert.AreEqual (-52429, bmp.GetPixel (80, 8).ToArgb (), "80,8");
  1478. Assert.AreEqual (-52429, bmp.GetPixel (80, 12).ToArgb (), "80,12");
  1479. Assert.AreEqual (-52429, bmp.GetPixel (80, 16).ToArgb (), "80,16");
  1480. Assert.AreEqual (-52429, bmp.GetPixel (80, 20).ToArgb (), "80,20");
  1481. Assert.AreEqual (-52429, bmp.GetPixel (80, 24).ToArgb (), "80,24");
  1482. Assert.AreEqual (-52429, bmp.GetPixel (80, 28).ToArgb (), "80,28");
  1483. Assert.AreEqual (-52429, bmp.GetPixel (80, 32).ToArgb (), "80,32");
  1484. Assert.AreEqual (-52429, bmp.GetPixel (80, 36).ToArgb (), "80,36");
  1485. Assert.AreEqual (-52429, bmp.GetPixel (80, 40).ToArgb (), "80,40");
  1486. Assert.AreEqual (0, bmp.GetPixel (80, 44).ToArgb (), "80,44");
  1487. Assert.AreEqual (-6750157, bmp.GetPixel (80, 48).ToArgb (), "80,48");
  1488. Assert.AreEqual (-6750157, bmp.GetPixel (80, 52).ToArgb (), "80,52");
  1489. Assert.AreEqual (-6750157, bmp.GetPixel (80, 56).ToArgb (), "80,56");
  1490. Assert.AreEqual (-6750157, bmp.GetPixel (80, 60).ToArgb (), "80,60");
  1491. Assert.AreEqual (-6750157, bmp.GetPixel (80, 64).ToArgb (), "80,64");
  1492. Assert.AreEqual (-6750157, bmp.GetPixel (80, 68).ToArgb (), "80,68");
  1493. Assert.AreEqual (-6750157, bmp.GetPixel (80, 72).ToArgb (), "80,72");
  1494. Assert.AreEqual (-14935012, bmp.GetPixel (80, 76).ToArgb (), "80,76");
  1495. Assert.AreEqual (-65383, bmp.GetPixel (80, 80).ToArgb (), "80,80");
  1496. Assert.AreEqual (-65383, bmp.GetPixel (80, 84).ToArgb (), "80,84");
  1497. Assert.AreEqual (-65383, bmp.GetPixel (80, 88).ToArgb (), "80,88");
  1498. Assert.AreEqual (-65383, bmp.GetPixel (80, 92).ToArgb (), "80,92");
  1499. Assert.AreEqual (0, bmp.GetPixel (84, 0).ToArgb (), "84,0");
  1500. Assert.AreEqual (0, bmp.GetPixel (84, 4).ToArgb (), "84,4");
  1501. Assert.AreEqual (-52429, bmp.GetPixel (84, 8).ToArgb (), "84,8");
  1502. Assert.AreEqual (-52429, bmp.GetPixel (84, 12).ToArgb (), "84,12");
  1503. Assert.AreEqual (-52429, bmp.GetPixel (84, 16).ToArgb (), "84,16");
  1504. Assert.AreEqual (-52429, bmp.GetPixel (84, 20).ToArgb (), "84,20");
  1505. Assert.AreEqual (-52429, bmp.GetPixel (84, 24).ToArgb (), "84,24");
  1506. Assert.AreEqual (-52429, bmp.GetPixel (84, 28).ToArgb (), "84,28");
  1507. Assert.AreEqual (-52429, bmp.GetPixel (84, 32).ToArgb (), "84,32");
  1508. Assert.AreEqual (-52429, bmp.GetPixel (84, 36).ToArgb (), "84,36");
  1509. Assert.AreEqual (-14935012, bmp.GetPixel (84, 40).ToArgb (), "84,40");
  1510. Assert.AreEqual (0, bmp.GetPixel (84, 44).ToArgb (), "84,44");
  1511. Assert.AreEqual (-14935012, bmp.GetPixel (84, 48).ToArgb (), "84,48");
  1512. Assert.AreEqual (-6750157, bmp.GetPixel (84, 52).ToArgb (), "84,52");
  1513. Assert.AreEqual (-6750157, bmp.GetPixel (84, 56).ToArgb (), "84,56");
  1514. Assert.AreEqual (-6750157, bmp.GetPixel (84, 60).ToArgb (), "84,60");
  1515. Assert.AreEqual (-6750157, bmp.GetPixel (84, 64).ToArgb (), "84,64");
  1516. Assert.AreEqual (-6750157, bmp.GetPixel (84, 68).ToArgb (), "84,68");
  1517. Assert.AreEqual (-6750157, bmp.GetPixel (84, 72).ToArgb (), "84,72");
  1518. Assert.AreEqual (0, bmp.GetPixel (84, 76).ToArgb (), "84,76");
  1519. Assert.AreEqual (-65383, bmp.GetPixel (84, 80).ToArgb (), "84,80");
  1520. Assert.AreEqual (-65383, bmp.GetPixel (84, 84).ToArgb (), "84,84");
  1521. Assert.AreEqual (-65383, bmp.GetPixel (84, 88).ToArgb (), "84,88");
  1522. Assert.AreEqual (-65383, bmp.GetPixel (84, 92).ToArgb (), "84,92");
  1523. Assert.AreEqual (0, bmp.GetPixel (88, 0).ToArgb (), "88,0");
  1524. Assert.AreEqual (-3342490, bmp.GetPixel (88, 4).ToArgb (), "88,4");
  1525. Assert.AreEqual (-14935012, bmp.GetPixel (88, 8).ToArgb (), "88,8");
  1526. Assert.AreEqual (-52429, bmp.GetPixel (88, 12).ToArgb (), "88,12");
  1527. Assert.AreEqual (-52429, bmp.GetPixel (88, 16).ToArgb (), "88,16");
  1528. Assert.AreEqual (-52429, bmp.GetPixel (88, 20).ToArgb (), "88,20");
  1529. Assert.AreEqual (-52429, bmp.GetPixel (88, 24).ToArgb (), "88,24");
  1530. Assert.AreEqual (-52429, bmp.GetPixel (88, 28).ToArgb (), "88,28");
  1531. Assert.AreEqual (-52429, bmp.GetPixel (88, 32).ToArgb (), "88,32");
  1532. Assert.AreEqual (-52429, bmp.GetPixel (88, 36).ToArgb (), "88,36");
  1533. Assert.AreEqual (0, bmp.GetPixel (88, 40).ToArgb (), "88,40");
  1534. Assert.AreEqual (-16777063, bmp.GetPixel (88, 44).ToArgb (), "88,44");
  1535. Assert.AreEqual (0, bmp.GetPixel (88, 48).ToArgb (), "88,48");
  1536. Assert.AreEqual (-6750157, bmp.GetPixel (88, 52).ToArgb (), "88,52");
  1537. Assert.AreEqual (-6750157, bmp.GetPixel (88, 56).ToArgb (), "88,56");
  1538. Assert.AreEqual (-6750157, bmp.GetPixel (88, 60).ToArgb (), "88,60");
  1539. Assert.AreEqual (-6750157, bmp.GetPixel (88, 64).ToArgb (), "88,64");
  1540. Assert.AreEqual (-6750157, bmp.GetPixel (88, 68).ToArgb (), "88,68");
  1541. Assert.AreEqual (-6750157, bmp.GetPixel (88, 72).ToArgb (), "88,72");
  1542. Assert.AreEqual (0, bmp.GetPixel (88, 76).ToArgb (), "88,76");
  1543. Assert.AreEqual (-65383, bmp.GetPixel (88, 80).ToArgb (), "88,80");
  1544. Assert.AreEqual (-65383, bmp.GetPixel (88, 84).ToArgb (), "88,84");
  1545. Assert.AreEqual (-65383, bmp.GetPixel (88, 88).ToArgb (), "88,88");
  1546. Assert.AreEqual (-65383, bmp.GetPixel (88, 92).ToArgb (), "88,92");
  1547. Assert.AreEqual (-14935012, bmp.GetPixel (92, 0).ToArgb (), "92,0");
  1548. Assert.AreEqual (-3342490, bmp.GetPixel (92, 4).ToArgb (), "92,4");
  1549. Assert.AreEqual (-14935012, bmp.GetPixel (92, 8).ToArgb (), "92,8");
  1550. Assert.AreEqual (0, bmp.GetPixel (92, 12).ToArgb (), "92,12");
  1551. Assert.AreEqual (-52429, bmp.GetPixel (92, 16).ToArgb (), "92,16");
  1552. Assert.AreEqual (-52429, bmp.GetPixel (92, 20).ToArgb (), "92,20");
  1553. Assert.AreEqual (-52429, bmp.GetPixel (92, 24).ToArgb (), "92,24");
  1554. Assert.AreEqual (-52429, bmp.GetPixel (92, 28).ToArgb (), "92,28");
  1555. Assert.AreEqual (-14935012, bmp.GetPixel (92, 32).ToArgb (), "92,32");
  1556. Assert.AreEqual (0, bmp.GetPixel (92, 36).ToArgb (), "92,36");
  1557. Assert.AreEqual (0, bmp.GetPixel (92, 40).ToArgb (), "92,40");
  1558. Assert.AreEqual (0, bmp.GetPixel (92, 44).ToArgb (), "92,44");
  1559. Assert.AreEqual (0, bmp.GetPixel (92, 48).ToArgb (), "92,48");
  1560. Assert.AreEqual (0, bmp.GetPixel (92, 52).ToArgb (), "92,52");
  1561. Assert.AreEqual (-6750157, bmp.GetPixel (92, 56).ToArgb (), "92,56");
  1562. Assert.AreEqual (-6750157, bmp.GetPixel (92, 60).ToArgb (), "92,60");
  1563. Assert.AreEqual (-6750157, bmp.GetPixel (92, 64).ToArgb (), "92,64");
  1564. Assert.AreEqual (-6750157, bmp.GetPixel (92, 68).ToArgb (), "92,68");
  1565. Assert.AreEqual (0, bmp.GetPixel (92, 72).ToArgb (), "92,72");
  1566. Assert.AreEqual (0, bmp.GetPixel (92, 76).ToArgb (), "92,76");
  1567. Assert.AreEqual (-65383, bmp.GetPixel (92, 80).ToArgb (), "92,80");
  1568. Assert.AreEqual (-65383, bmp.GetPixel (92, 84).ToArgb (), "92,84");
  1569. Assert.AreEqual (-65383, bmp.GetPixel (92, 88).ToArgb (), "92,88");
  1570. Assert.AreEqual (-65383, bmp.GetPixel (92, 92).ToArgb (), "92,92");
  1571. #endif
  1572. }
  1573. }
  1574. [Test]
  1575. public void Bitmap96Data ()
  1576. {
  1577. string sInFile = getInFile ("bitmaps/96x96x256.ico");
  1578. using (Bitmap bmp = new Bitmap (sInFile)) {
  1579. BitmapData data = bmp.LockBits (new Rectangle (0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  1580. try {
  1581. Assert.AreEqual (bmp.Height, data.Height, "Height");
  1582. Assert.AreEqual (bmp.Width, data.Width, "Width");
  1583. Assert.AreEqual (PixelFormat.Format24bppRgb, data.PixelFormat, "PixelFormat");
  1584. int size = data.Height * data.Stride;
  1585. unsafe {
  1586. byte* scan = (byte*) data.Scan0;
  1587. #if false
  1588. // 97 is prime (so we're not affected by a recurring pattern)
  1589. for (int p = 0; p < size; p += 97) {
  1590. Console.WriteLine ("\t\t\t\t\t\tAssert.AreEqual ({0}, *(scan + {1}), \"{1}\");", *(scan + p), p);
  1591. }
  1592. #else
  1593. // sampling values from a well known bitmap
  1594. Assert.AreEqual (0, *(scan + 0), "0");
  1595. Assert.AreEqual (0, *(scan + 97), "97");
  1596. Assert.AreEqual (0, *(scan + 194), "194");
  1597. Assert.AreEqual (0, *(scan + 291), "291");
  1598. Assert.AreEqual (0, *(scan + 388), "388");
  1599. Assert.AreEqual (28, *(scan + 485), "485");
  1600. Assert.AreEqual (0, *(scan + 582), "582");
  1601. Assert.AreEqual (28, *(scan + 679), "679");
  1602. Assert.AreEqual (255, *(scan + 776), "776");
  1603. Assert.AreEqual (0, *(scan + 873), "873");
  1604. Assert.AreEqual (255, *(scan + 970), "970");
  1605. Assert.AreEqual (255, *(scan + 1067), "1067");
  1606. Assert.AreEqual (0, *(scan + 1164), "1164");
  1607. Assert.AreEqual (255, *(scan + 1261), "1261");
  1608. Assert.AreEqual (255, *(scan + 1358), "1358");
  1609. Assert.AreEqual (0, *(scan + 1455), "1455");
  1610. Assert.AreEqual (255, *(scan + 1552), "1552");
  1611. Assert.AreEqual (255, *(scan + 1649), "1649");
  1612. Assert.AreEqual (0, *(scan + 1746), "1746");
  1613. Assert.AreEqual (255, *(scan + 1843), "1843");
  1614. Assert.AreEqual (255, *(scan + 1940), "1940");
  1615. Assert.AreEqual (0, *(scan + 2037), "2037");
  1616. Assert.AreEqual (255, *(scan + 2134), "2134");
  1617. Assert.AreEqual (255, *(scan + 2231), "2231");
  1618. Assert.AreEqual (0, *(scan + 2328), "2328");
  1619. Assert.AreEqual (255, *(scan + 2425), "2425");
  1620. Assert.AreEqual (255, *(scan + 2522), "2522");
  1621. Assert.AreEqual (0, *(scan + 2619), "2619");
  1622. Assert.AreEqual (255, *(scan + 2716), "2716");
  1623. Assert.AreEqual (255, *(scan + 2813), "2813");
  1624. Assert.AreEqual (0, *(scan + 2910), "2910");
  1625. Assert.AreEqual (255, *(scan + 3007), "3007");
  1626. Assert.AreEqual (255, *(scan + 3104), "3104");
  1627. Assert.AreEqual (0, *(scan + 3201), "3201");
  1628. Assert.AreEqual (255, *(scan + 3298), "3298");
  1629. Assert.AreEqual (255, *(scan + 3395), "3395");
  1630. Assert.AreEqual (0, *(scan + 3492), "3492");
  1631. Assert.AreEqual (0, *(scan + 3589), "3589");
  1632. Assert.AreEqual (255, *(scan + 3686), "3686");
  1633. Assert.AreEqual (0, *(scan + 3783), "3783");
  1634. Assert.AreEqual (0, *(scan + 3880), "3880");
  1635. Assert.AreEqual (255, *(scan + 3977), "3977");
  1636. Assert.AreEqual (0, *(scan + 4074), "4074");
  1637. Assert.AreEqual (0, *(scan + 4171), "4171");
  1638. Assert.AreEqual (255, *(scan + 4268), "4268");
  1639. Assert.AreEqual (0, *(scan + 4365), "4365");
  1640. Assert.AreEqual (28, *(scan + 4462), "4462");
  1641. Assert.AreEqual (255, *(scan + 4559), "4559");
  1642. Assert.AreEqual (0, *(scan + 4656), "4656");
  1643. Assert.AreEqual (51, *(scan + 4753), "4753");
  1644. Assert.AreEqual (255, *(scan + 4850), "4850");
  1645. Assert.AreEqual (0, *(scan + 4947), "4947");
  1646. Assert.AreEqual (51, *(scan + 5044), "5044");
  1647. Assert.AreEqual (255, *(scan + 5141), "5141");
  1648. Assert.AreEqual (0, *(scan + 5238), "5238");
  1649. Assert.AreEqual (51, *(scan + 5335), "5335");
  1650. Assert.AreEqual (255, *(scan + 5432), "5432");
  1651. Assert.AreEqual (0, *(scan + 5529), "5529");
  1652. Assert.AreEqual (51, *(scan + 5626), "5626");
  1653. Assert.AreEqual (255, *(scan + 5723), "5723");
  1654. Assert.AreEqual (0, *(scan + 5820), "5820");
  1655. Assert.AreEqual (51, *(scan + 5917), "5917");
  1656. Assert.AreEqual (255, *(scan + 6014), "6014");
  1657. Assert.AreEqual (0, *(scan + 6111), "6111");
  1658. Assert.AreEqual (51, *(scan + 6208), "6208");
  1659. Assert.AreEqual (255, *(scan + 6305), "6305");
  1660. Assert.AreEqual (0, *(scan + 6402), "6402");
  1661. Assert.AreEqual (51, *(scan + 6499), "6499");
  1662. Assert.AreEqual (255, *(scan + 6596), "6596");
  1663. Assert.AreEqual (0, *(scan + 6693), "6693");
  1664. Assert.AreEqual (51, *(scan + 6790), "6790");
  1665. Assert.AreEqual (255, *(scan + 6887), "6887");
  1666. Assert.AreEqual (0, *(scan + 6984), "6984");
  1667. Assert.AreEqual (51, *(scan + 7081), "7081");
  1668. Assert.AreEqual (255, *(scan + 7178), "7178");
  1669. Assert.AreEqual (0, *(scan + 7275), "7275");
  1670. Assert.AreEqual (51, *(scan + 7372), "7372");
  1671. Assert.AreEqual (255, *(scan + 7469), "7469");
  1672. Assert.AreEqual (0, *(scan + 7566), "7566");
  1673. Assert.AreEqual (51, *(scan + 7663), "7663");
  1674. Assert.AreEqual (255, *(scan + 7760), "7760");
  1675. Assert.AreEqual (0, *(scan + 7857), "7857");
  1676. Assert.AreEqual (51, *(scan + 7954), "7954");
  1677. Assert.AreEqual (255, *(scan + 8051), "8051");
  1678. Assert.AreEqual (0, *(scan + 8148), "8148");
  1679. Assert.AreEqual (51, *(scan + 8245), "8245");
  1680. Assert.AreEqual (255, *(scan + 8342), "8342");
  1681. Assert.AreEqual (0, *(scan + 8439), "8439");
  1682. Assert.AreEqual (51, *(scan + 8536), "8536");
  1683. Assert.AreEqual (28, *(scan + 8633), "8633");
  1684. Assert.AreEqual (0, *(scan + 8730), "8730");
  1685. Assert.AreEqual (51, *(scan + 8827), "8827");
  1686. Assert.AreEqual (0, *(scan + 8924), "8924");
  1687. Assert.AreEqual (0, *(scan + 9021), "9021");
  1688. Assert.AreEqual (51, *(scan + 9118), "9118");
  1689. Assert.AreEqual (0, *(scan + 9215), "9215");
  1690. Assert.AreEqual (0, *(scan + 9312), "9312");
  1691. Assert.AreEqual (51, *(scan + 9409), "9409");
  1692. Assert.AreEqual (0, *(scan + 9506), "9506");
  1693. Assert.AreEqual (0, *(scan + 9603), "9603");
  1694. Assert.AreEqual (51, *(scan + 9700), "9700");
  1695. Assert.AreEqual (0, *(scan + 9797), "9797");
  1696. Assert.AreEqual (28, *(scan + 9894), "9894");
  1697. Assert.AreEqual (51, *(scan + 9991), "9991");
  1698. Assert.AreEqual (0, *(scan + 10088), "10088");
  1699. Assert.AreEqual (0, *(scan + 10185), "10185");
  1700. Assert.AreEqual (51, *(scan + 10282), "10282");
  1701. Assert.AreEqual (0, *(scan + 10379), "10379");
  1702. Assert.AreEqual (0, *(scan + 10476), "10476");
  1703. Assert.AreEqual (51, *(scan + 10573), "10573");
  1704. Assert.AreEqual (0, *(scan + 10670), "10670");
  1705. Assert.AreEqual (0, *(scan + 10767), "10767");
  1706. Assert.AreEqual (51, *(scan + 10864), "10864");
  1707. Assert.AreEqual (204, *(scan + 10961), "10961");
  1708. Assert.AreEqual (0, *(scan + 11058), "11058");
  1709. Assert.AreEqual (51, *(scan + 11155), "11155");
  1710. Assert.AreEqual (204, *(scan + 11252), "11252");
  1711. Assert.AreEqual (0, *(scan + 11349), "11349");
  1712. Assert.AreEqual (51, *(scan + 11446), "11446");
  1713. Assert.AreEqual (204, *(scan + 11543), "11543");
  1714. Assert.AreEqual (0, *(scan + 11640), "11640");
  1715. Assert.AreEqual (51, *(scan + 11737), "11737");
  1716. Assert.AreEqual (204, *(scan + 11834), "11834");
  1717. Assert.AreEqual (0, *(scan + 11931), "11931");
  1718. Assert.AreEqual (51, *(scan + 12028), "12028");
  1719. Assert.AreEqual (204, *(scan + 12125), "12125");
  1720. Assert.AreEqual (0, *(scan + 12222), "12222");
  1721. Assert.AreEqual (51, *(scan + 12319), "12319");
  1722. Assert.AreEqual (204, *(scan + 12416), "12416");
  1723. Assert.AreEqual (28, *(scan + 12513), "12513");
  1724. Assert.AreEqual (51, *(scan + 12610), "12610");
  1725. Assert.AreEqual (204, *(scan + 12707), "12707");
  1726. Assert.AreEqual (0, *(scan + 12804), "12804");
  1727. Assert.AreEqual (28, *(scan + 12901), "12901");
  1728. Assert.AreEqual (204, *(scan + 12998), "12998");
  1729. Assert.AreEqual (0, *(scan + 13095), "13095");
  1730. Assert.AreEqual (0, *(scan + 13192), "13192");
  1731. Assert.AreEqual (204, *(scan + 13289), "13289");
  1732. Assert.AreEqual (0, *(scan + 13386), "13386");
  1733. Assert.AreEqual (0, *(scan + 13483), "13483");
  1734. Assert.AreEqual (204, *(scan + 13580), "13580");
  1735. Assert.AreEqual (0, *(scan + 13677), "13677");
  1736. Assert.AreEqual (28, *(scan + 13774), "13774");
  1737. Assert.AreEqual (204, *(scan + 13871), "13871");
  1738. Assert.AreEqual (0, *(scan + 13968), "13968");
  1739. Assert.AreEqual (0, *(scan + 14065), "14065");
  1740. Assert.AreEqual (204, *(scan + 14162), "14162");
  1741. Assert.AreEqual (0, *(scan + 14259), "14259");
  1742. Assert.AreEqual (0, *(scan + 14356), "14356");
  1743. Assert.AreEqual (204, *(scan + 14453), "14453");
  1744. Assert.AreEqual (0, *(scan + 14550), "14550");
  1745. Assert.AreEqual (0, *(scan + 14647), "14647");
  1746. Assert.AreEqual (204, *(scan + 14744), "14744");
  1747. Assert.AreEqual (0, *(scan + 14841), "14841");
  1748. Assert.AreEqual (0, *(scan + 14938), "14938");
  1749. Assert.AreEqual (204, *(scan + 15035), "15035");
  1750. Assert.AreEqual (0, *(scan + 15132), "15132");
  1751. Assert.AreEqual (0, *(scan + 15229), "15229");
  1752. Assert.AreEqual (204, *(scan + 15326), "15326");
  1753. Assert.AreEqual (0, *(scan + 15423), "15423");
  1754. Assert.AreEqual (0, *(scan + 15520), "15520");
  1755. Assert.AreEqual (204, *(scan + 15617), "15617");
  1756. Assert.AreEqual (0, *(scan + 15714), "15714");
  1757. Assert.AreEqual (0, *(scan + 15811), "15811");
  1758. Assert.AreEqual (204, *(scan + 15908), "15908");
  1759. Assert.AreEqual (0, *(scan + 16005), "16005");
  1760. Assert.AreEqual (0, *(scan + 16102), "16102");
  1761. Assert.AreEqual (204, *(scan + 16199), "16199");
  1762. Assert.AreEqual (0, *(scan + 16296), "16296");
  1763. Assert.AreEqual (0, *(scan + 16393), "16393");
  1764. Assert.AreEqual (204, *(scan + 16490), "16490");
  1765. Assert.AreEqual (0, *(scan + 16587), "16587");
  1766. Assert.AreEqual (0, *(scan + 16684), "16684");
  1767. Assert.AreEqual (204, *(scan + 16781), "16781");
  1768. Assert.AreEqual (0, *(scan + 16878), "16878");
  1769. Assert.AreEqual (0, *(scan + 16975), "16975");
  1770. Assert.AreEqual (204, *(scan + 17072), "17072");
  1771. Assert.AreEqual (0, *(scan + 17169), "17169");
  1772. Assert.AreEqual (0, *(scan + 17266), "17266");
  1773. Assert.AreEqual (204, *(scan + 17363), "17363");
  1774. Assert.AreEqual (0, *(scan + 17460), "17460");
  1775. Assert.AreEqual (0, *(scan + 17557), "17557");
  1776. Assert.AreEqual (28, *(scan + 17654), "17654");
  1777. Assert.AreEqual (0, *(scan + 17751), "17751");
  1778. Assert.AreEqual (0, *(scan + 17848), "17848");
  1779. Assert.AreEqual (0, *(scan + 17945), "17945");
  1780. Assert.AreEqual (28, *(scan + 18042), "18042");
  1781. Assert.AreEqual (0, *(scan + 18139), "18139");
  1782. Assert.AreEqual (0, *(scan + 18236), "18236");
  1783. Assert.AreEqual (51, *(scan + 18333), "18333");
  1784. Assert.AreEqual (28, *(scan + 18430), "18430");
  1785. Assert.AreEqual (0, *(scan + 18527), "18527");
  1786. Assert.AreEqual (51, *(scan + 18624), "18624");
  1787. Assert.AreEqual (0, *(scan + 18721), "18721");
  1788. Assert.AreEqual (28, *(scan + 18818), "18818");
  1789. Assert.AreEqual (51, *(scan + 18915), "18915");
  1790. Assert.AreEqual (255, *(scan + 19012), "19012");
  1791. Assert.AreEqual (51, *(scan + 19109), "19109");
  1792. Assert.AreEqual (51, *(scan + 19206), "19206");
  1793. Assert.AreEqual (255, *(scan + 19303), "19303");
  1794. Assert.AreEqual (51, *(scan + 19400), "19400");
  1795. Assert.AreEqual (51, *(scan + 19497), "19497");
  1796. Assert.AreEqual (255, *(scan + 19594), "19594");
  1797. Assert.AreEqual (51, *(scan + 19691), "19691");
  1798. Assert.AreEqual (51, *(scan + 19788), "19788");
  1799. Assert.AreEqual (255, *(scan + 19885), "19885");
  1800. Assert.AreEqual (51, *(scan + 19982), "19982");
  1801. Assert.AreEqual (51, *(scan + 20079), "20079");
  1802. Assert.AreEqual (255, *(scan + 20176), "20176");
  1803. Assert.AreEqual (51, *(scan + 20273), "20273");
  1804. Assert.AreEqual (51, *(scan + 20370), "20370");
  1805. Assert.AreEqual (255, *(scan + 20467), "20467");
  1806. Assert.AreEqual (51, *(scan + 20564), "20564");
  1807. Assert.AreEqual (51, *(scan + 20661), "20661");
  1808. Assert.AreEqual (255, *(scan + 20758), "20758");
  1809. Assert.AreEqual (51, *(scan + 20855), "20855");
  1810. Assert.AreEqual (51, *(scan + 20952), "20952");
  1811. Assert.AreEqual (255, *(scan + 21049), "21049");
  1812. Assert.AreEqual (51, *(scan + 21146), "21146");
  1813. Assert.AreEqual (51, *(scan + 21243), "21243");
  1814. Assert.AreEqual (28, *(scan + 21340), "21340");
  1815. Assert.AreEqual (51, *(scan + 21437), "21437");
  1816. Assert.AreEqual (51, *(scan + 21534), "21534");
  1817. Assert.AreEqual (0, *(scan + 21631), "21631");
  1818. Assert.AreEqual (51, *(scan + 21728), "21728");
  1819. Assert.AreEqual (28, *(scan + 21825), "21825");
  1820. Assert.AreEqual (0, *(scan + 21922), "21922");
  1821. Assert.AreEqual (51, *(scan + 22019), "22019");
  1822. Assert.AreEqual (28, *(scan + 22116), "22116");
  1823. Assert.AreEqual (0, *(scan + 22213), "22213");
  1824. Assert.AreEqual (51, *(scan + 22310), "22310");
  1825. Assert.AreEqual (0, *(scan + 22407), "22407");
  1826. Assert.AreEqual (0, *(scan + 22504), "22504");
  1827. Assert.AreEqual (51, *(scan + 22601), "22601");
  1828. Assert.AreEqual (0, *(scan + 22698), "22698");
  1829. Assert.AreEqual (0, *(scan + 22795), "22795");
  1830. Assert.AreEqual (51, *(scan + 22892), "22892");
  1831. Assert.AreEqual (28, *(scan + 22989), "22989");
  1832. Assert.AreEqual (0, *(scan + 23086), "23086");
  1833. Assert.AreEqual (28, *(scan + 23183), "23183");
  1834. Assert.AreEqual (153, *(scan + 23280), "23280");
  1835. Assert.AreEqual (28, *(scan + 23377), "23377");
  1836. Assert.AreEqual (0, *(scan + 23474), "23474");
  1837. Assert.AreEqual (153, *(scan + 23571), "23571");
  1838. Assert.AreEqual (28, *(scan + 23668), "23668");
  1839. Assert.AreEqual (0, *(scan + 23765), "23765");
  1840. Assert.AreEqual (153, *(scan + 23862), "23862");
  1841. Assert.AreEqual (0, *(scan + 23959), "23959");
  1842. Assert.AreEqual (28, *(scan + 24056), "24056");
  1843. Assert.AreEqual (153, *(scan + 24153), "24153");
  1844. Assert.AreEqual (0, *(scan + 24250), "24250");
  1845. Assert.AreEqual (153, *(scan + 24347), "24347");
  1846. Assert.AreEqual (153, *(scan + 24444), "24444");
  1847. Assert.AreEqual (0, *(scan + 24541), "24541");
  1848. Assert.AreEqual (153, *(scan + 24638), "24638");
  1849. Assert.AreEqual (153, *(scan + 24735), "24735");
  1850. Assert.AreEqual (0, *(scan + 24832), "24832");
  1851. Assert.AreEqual (153, *(scan + 24929), "24929");
  1852. Assert.AreEqual (153, *(scan + 25026), "25026");
  1853. Assert.AreEqual (0, *(scan + 25123), "25123");
  1854. Assert.AreEqual (153, *(scan + 25220), "25220");
  1855. Assert.AreEqual (153, *(scan + 25317), "25317");
  1856. Assert.AreEqual (0, *(scan + 25414), "25414");
  1857. Assert.AreEqual (153, *(scan + 25511), "25511");
  1858. Assert.AreEqual (153, *(scan + 25608), "25608");
  1859. Assert.AreEqual (0, *(scan + 25705), "25705");
  1860. Assert.AreEqual (153, *(scan + 25802), "25802");
  1861. Assert.AreEqual (153, *(scan + 25899), "25899");
  1862. Assert.AreEqual (0, *(scan + 25996), "25996");
  1863. Assert.AreEqual (153, *(scan + 26093), "26093");
  1864. Assert.AreEqual (153, *(scan + 26190), "26190");
  1865. Assert.AreEqual (0, *(scan + 26287), "26287");
  1866. Assert.AreEqual (153, *(scan + 26384), "26384");
  1867. Assert.AreEqual (153, *(scan + 26481), "26481");
  1868. Assert.AreEqual (0, *(scan + 26578), "26578");
  1869. Assert.AreEqual (153, *(scan + 26675), "26675");
  1870. Assert.AreEqual (153, *(scan + 26772), "26772");
  1871. Assert.AreEqual (28, *(scan + 26869), "26869");
  1872. Assert.AreEqual (153, *(scan + 26966), "26966");
  1873. Assert.AreEqual (28, *(scan + 27063), "27063");
  1874. Assert.AreEqual (28, *(scan + 27160), "27160");
  1875. Assert.AreEqual (28, *(scan + 27257), "27257");
  1876. Assert.AreEqual (0, *(scan + 27354), "27354");
  1877. Assert.AreEqual (0, *(scan + 27451), "27451");
  1878. Assert.AreEqual (0, *(scan + 27548), "27548");
  1879. Assert.AreEqual (0, *(scan + 27645), "27645");
  1880. #endif
  1881. }
  1882. }
  1883. finally {
  1884. bmp.UnlockBits (data);
  1885. }
  1886. }
  1887. }
  1888. [Test]
  1889. public void Xp32bppIconFeatures ()
  1890. {
  1891. string sInFile = getInFile ("bitmaps/32bpp.ico");
  1892. using (Bitmap bmp = new Bitmap (sInFile)) {
  1893. GraphicsUnit unit = GraphicsUnit.World;
  1894. RectangleF rect = bmp.GetBounds (ref unit);
  1895. Assert.IsTrue (bmp.RawFormat.Equals (ImageFormat.Icon), "Icon");
  1896. // note that image is "promoted" to 32bits
  1897. Assert.AreEqual (PixelFormat.Format32bppArgb, bmp.PixelFormat);
  1898. Assert.AreEqual (73746, bmp.Flags, "bmp.Flags");
  1899. Assert.AreEqual (0, bmp.Palette.Entries.Length, "Palette");
  1900. Assert.AreEqual (1, bmp.FrameDimensionsList.Length, "FrameDimensionsList");
  1901. Assert.AreEqual (0, bmp.PropertyIdList.Length, "PropertyIdList");
  1902. Assert.AreEqual (0, bmp.PropertyItems.Length, "PropertyItems");
  1903. #if NET_2_0
  1904. Assert.IsNull (bmp.Tag, "Tag");
  1905. #endif
  1906. Assert.AreEqual (96.0f, bmp.HorizontalResolution, "HorizontalResolution");
  1907. Assert.AreEqual (96.0f, bmp.VerticalResolution, "VerticalResolution");
  1908. Assert.AreEqual (16, bmp.Width, "bmp.Width");
  1909. Assert.AreEqual (16, bmp.Height, "bmp.Height");
  1910. Assert.AreEqual (0, rect.X, "rect.X");
  1911. Assert.AreEqual (0, rect.Y, "rect.Y");
  1912. Assert.AreEqual (16, rect.Width, "rect.Width");
  1913. Assert.AreEqual (16, rect.Height, "rect.Height");
  1914. Assert.AreEqual (16, bmp.Size.Width, "bmp.Size.Width");
  1915. Assert.AreEqual (16, bmp.Size.Height, "bmp.Size.Height");
  1916. }
  1917. }
  1918. private void Save (PixelFormat original, PixelFormat expected, bool colorCheck)
  1919. {
  1920. string sOutFile = "linerect" + getOutSufix () + ".ico";
  1921. // Save
  1922. Bitmap bmp = new Bitmap (100, 100, original);
  1923. Graphics gr = Graphics.FromImage (bmp);
  1924. using (Pen p = new Pen (Color.Red, 2)) {
  1925. gr.DrawLine (p, 10.0F, 10.0F, 90.0F, 90.0F);
  1926. gr.DrawRectangle (p, 10.0F, 10.0F, 80.0F, 80.0F);
  1927. }
  1928. try {
  1929. // there's no encoder, so we're not saving a ICO but the alpha
  1930. // bit get sets so it's not like saving a bitmap either
  1931. bmp.Save (sOutFile, ImageFormat.Icon);
  1932. // Load
  1933. using (Bitmap bmpLoad = new Bitmap (sOutFile)) {
  1934. Assert.AreEqual (ImageFormat.Png, bmpLoad.RawFormat, "Png");
  1935. Assert.AreEqual (expected, bmpLoad.PixelFormat, "PixelFormat");
  1936. if (colorCheck) {
  1937. Color color = bmpLoad.GetPixel (10, 10);
  1938. Assert.AreEqual (Color.FromArgb (255, 255, 0, 0), color, "Red");
  1939. }
  1940. }
  1941. }
  1942. finally {
  1943. gr.Dispose ();
  1944. bmp.Dispose ();
  1945. try {
  1946. File.Delete (sOutFile);
  1947. }
  1948. catch {
  1949. }
  1950. }
  1951. }
  1952. [Test]
  1953. public void Save_24bppRgb ()
  1954. {
  1955. Save (PixelFormat.Format24bppRgb, PixelFormat.Format24bppRgb, true);
  1956. }
  1957. [Test]
  1958. public void Save_32bppRgb ()
  1959. {
  1960. Save (PixelFormat.Format32bppRgb, PixelFormat.Format32bppArgb, true);
  1961. }
  1962. [Test]
  1963. public void Save_32bppArgb ()
  1964. {
  1965. Save (PixelFormat.Format32bppArgb, PixelFormat.Format32bppArgb, true);
  1966. }
  1967. [Test]
  1968. public void Save_32bppPArgb ()
  1969. {
  1970. Save (PixelFormat.Format32bppPArgb, PixelFormat.Format32bppArgb, true);
  1971. }
  1972. [Test]
  1973. [Category ("NotWorking")]
  1974. public void Save_48bppRgb ()
  1975. {
  1976. Save (PixelFormat.Format48bppRgb, PixelFormat.Format48bppRgb, false);
  1977. }
  1978. [Test]
  1979. [Category ("NotWorking")]
  1980. public void Save_64bppArgb ()
  1981. {
  1982. Save (PixelFormat.Format64bppArgb, PixelFormat.Format64bppArgb, false);
  1983. }
  1984. [Test]
  1985. [Category ("NotWorking")]
  1986. public void Save_64bppPArgb ()
  1987. {
  1988. Save (PixelFormat.Format64bppPArgb, PixelFormat.Format64bppArgb, false);
  1989. }
  1990. }
  1991. }