From 5adcd6568e0ecb92d4c2f5a590655671a5d66971 Mon Sep 17 00:00:00 2001 From: ClemensF Date: Sat, 28 Nov 2015 21:09:25 +0100 Subject: [PATCH] Version 2.7.0. - WPF TileImageLoader reverted to caching byte arrays instead of BitmapFrames. - Uses FileDb version 6.1. --- Caching/FileDb/FileDb.dll | Bin 101376 -> 87040 bytes Caching/FileDb/FileDb.xml | 88 +++++--- Caching/FileDb/FileDbPcl.dll | Bin 90624 -> 80384 bytes Caching/FileDb/FileDbPcl.xml | 64 +++--- .../FileDbCache.WPF/FileDbCache.WPF.csproj | 3 - Caching/FileDbCache.WPF/FileDbCache.cs | 84 ++------ .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- .../ImageFileCache.WPF.csproj | 3 - Caching/ImageFileCache.WPF/ImageFileCache.cs | 188 +++++++++--------- .../Properties/AssemblyInfo.cs | 4 +- .../ImageFileCache.WinRT/ImageFileCache.cs | 50 +++-- .../Properties/AssemblyInfo.cs | 4 +- MapControl/BingMapsTileLayer.cs | 11 +- MapControl/BingMapsTileSource.cs | 2 +- MapControl/Map.Silverlight.cs | 2 +- MapControl/Map.WPF.cs | 2 +- MapControl/Map.WinRT.cs | 2 +- MapControl/MapBase.cs | 2 +- MapControl/Properties/AssemblyInfo.cs | 4 +- MapControl/TileImageLoader.WPF.cs | 78 +++++--- MapControl/TileLayer.cs | 2 +- MapControl/TileSource.cs | 2 +- MapControl/WinRT/Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- SampleApps/UniversalApp/MainPage.xaml.cs | 1 + .../UniversalApp/Properties/AssemblyInfo.cs | 4 +- SampleApps/UniversalApp/UniversalApp.csproj | 4 + .../WpfApplication/Properties/AssemblyInfo.cs | 4 +- 32 files changed, 336 insertions(+), 300 deletions(-) diff --git a/Caching/FileDb/FileDb.dll b/Caching/FileDb/FileDb.dll index 73f4061bfe488ca26868f202d1a93cb62d69eabb..794da39c7ef1f166b2a8b252ec7e39f28474be04 100644 GIT binary patch literal 87040 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

6{@B-5vu1F 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 P{=>5IU$y^XB=Elgt?r0t literal 101376 zcmeEvdzci()pzf7PtQ!x?6SQx%xGsqVU+I#qS*)TvXas!u%QX3MrL%favU*DdQ2Jo(ov?tz`{h^}k>T%Gl))VIe! zQggz$$1l5JeSg~}edY7})?D0n?wXAo%bVNIS=ZKg>BhG88{3Xta!T99<+bZ()Yf{F z0?;QNWmzZGIM%}7oWIPJ_PkX$K3(Hl*0vhU@-+0GyYb$J_uY6BJHE#hZ@dZqd`1Ip zYxP?#t6u&qPs|{>>KXlO*KA&6S-(fL)E#xU-a=31uNT0T&rK&{#Rd%P z%^>zz<|?Ffl8GW7(>yoPyZ80iU+)+K<7*$uFCPvg_r_p=yotwitEMb5Fc9QK@Q4c@ z3HS^;IYKx`0nFo7#IkO;(-B+_Fy3Jz+*Tb0gTj1sX4=8 z2p$K9(S?3Ns}qmD-U(d+jMxCe1QA<1CP74EWF*7{55eSF_Kan*Zz6Dh@6A481UQ1s z8-jzDBR;1e-ZMXhgRm$*V57u`p}+@^k?;xNT%D_5KLQ-V=MBL@3lg6XJ5BRKI0%d4 zgP}ou7z%vw7zv*M&N+p#3rBz>_#6<<1|V_8No&stGov+~@_WJ8J1oX!YUj@o{<+n04}@`ru8k|I{rTImBdg=S zByq&$HfLIOd3O0RMiQ4D^)pvh=lfuo@2(q~OI2}p`9mh(HT}JnPL_6gQ1TJx$A8i> zB<{l!mz`-_XM_Hcoc()wW9vx)c)PP3;dXg67>eia!62(C=J8%E!0DWTICl@&Q%fYU z7J+>TyQHxvQ9@Mo_~P(?E8zR{bBl0F!T3Ft1dYq=8%iaqh)o zh1tx(xamV&>Y#W?bA@snGR2Bb=mWOf!-#(&-dY(u9`bf&5o31(2`g4?XZpe*!;v8k znj(Gh4_U`<%$k0VFU`E7Y>|;|;32?}H@h;XnUqZB1Nar$6C#cVIZd{*O z-oF!tX7aU8Hj&RJODhrXC;a5DtdsPe@~w#M1dp@&)?twNPO%MTw~mgE6=6F_dJ8Lf z3Y=^_>Bq}A;mwbyCKs01mXG3lvamdx^pk$##`QhBP^Z#bfDJmHoU1$@pbb9JaCD59 zO_fN14XNTp`rM?iWl1pzorKV?=fajs?aPCdgO-YSVrW{)zW?GdPbH|2GI2nCw7ps>e(DvjCcobYW5l zOQItjD~3MKLtAI&We+iJjj@(5&PH~$H{<^Dw$4zSrc$lwcrYrga zOm`gHXRp7~fX}C6lWQAlqGQ{sbK>PaDA0?!d?y=nGlF|U26{?yPgZb0XrA^R@q6cs z%Py+I{jdt|%l>yLd2}X3Q-fqE(Ug1STw#c3^yqSs#UIo#Gr#oW)#)S$`U>YFUtt!WfN6&?*%!wGzkrTvf1Byue_zC%@(+Lu+RctT`zInZ{-<`b+FYxt ze1eId{ZRABl9h%mL|&CSxX^!_na3y#9EE()k1_rA-OX$Ei<49Sc7TynJQ8msQ?;2J z>#g>~6epH(Or?zNzb~J)-!jmaUs@i$q< zTnI)G>DX4!bWS=gs7KDTJ0~LM|4UB?ke>R_42Vwq?nl-^@tQy$t&$a-Rdz^&!(=DO z$Dc>nMdpHv;ACjR%mtLSskaDZkYB!b*0F}}MuPjfHv@Mb;0ANolnGqBjt}<(u=-4nkQrLv+lnH+1 z5pM9FG{@j=OFIYc@$3y5!_SAeNBL{}!@9yZDl(*PQAU93kmK!?=0glW9}d?pe`CLZ z4Zan+sDe8u(`Tm6k>Gy)O~Vb^;g&hwA)gyg7v=x_ci}E7TpAr8L+GOX#G8Vlm3Qt-L8Y}5 zl3Fb5_)gxw&v)G7X{Jn-d;_UH&_~o;U5gBz#ATcZeEP4)^%WdS+~QghS_$DFf5=4F7-9PqcG{>!CJCgIMbv%7UNx{QYsIR$<+ZaX8P)7aIG3N> z57>}aD!i$xEee~b8F_akxK8<}`vGk5t+Yke+V;X5I#)-=V%QdePV=GtKplxkJJwBT zV`x&@#=m%Q^Ttpn>YswSH*J@Tcw}M&PIgG?7o z4l+%mAImncHszG3;i(`J<%5|179=I96`{#;JsF58U0B*)qE>UK%C`cy+Eo8^;7JtwXYeHsRoB6I@%D}a z4t~6o`apzX%y`ernnUsJw`#ZRb~WYZ*>ULM6yMILPc{1`RdS}6OFNwx02s7%u4?Jh zPS($78%o06eZOH>CXrMP9W|Sxp-UFqP_R+ZB_e9Hq$=n{E!O~5T!Y`>`%uOG2UT&a zkUx@ERAi>mX!rzHIa^{?8?vH`t4*X-2bWbH+)JSjE<0QYmk4xli6J_;JB?dbJm zwd_&nSOoD+D}wZ&hN(vD&eOFn7O`#Zdp@(3}79E(B(#XSxNo$N!Dz#pwW zaI^ukiPB5V9$;0;FtIuV(u5g4HDU&UjFtfLCCqTmh#An-(F|D6h8dQQnBf2=j2|&W zTXhLo+J+_k9<4CE(&*+WN?2Ef86F!k1G+Mr0n`v?xN*b`pp$3@bbXkCgJL*JoK+$n z2kAS^01h@n1`uI1LqjD4bl4DhJU^iuR0kt_AG8CPARGd+XUZmJ?m*RJLHZ(A6JGy( zI9vU=Nz{u(i0?)y#>6B%y1w^MvvH7%4n;fI3qVCI`^NSCpl&aVmF|1#&*t;lLg{U+ zNZv2(%BG9xQHoDnWdH&!rzI82ir42M=;4Ke^ePueNWWy ze%i0ym96(j`I#LY?S6f(3=M_n*Mb+-`nAdudhP=I@I60MKALd_#1;I4p9i11NMbrH zYXOSFkg^`eZ!&&A#t*F{e+-`q(mM>5I}bz5gi{A+{r2>ugNXrpA1Hn>BBlWz<6cd! zHcA`S!A0VZJ*KihEBeDA&gkG8QE`Cyh(96R8`zHyZVx69qd&yxnl`e)ZRYr>{xGw0 zyb)RzcMKha`@G_zMo3ZIBXNIu^_)l?^oK#*5Zv33ZCq#MhW+6F)W3!M5dGoXu0Gb3 zW7ef^5q-p}4AmbN&OOG=i(y))hyl&SL-dD#J9FFd0sfV=@gfE@5)aWIer~}ivmT11 zh5j&T8qptK{p{)s4Xuz=FvJJ~irOgN!qCbqrz3O4(Q{wB^Z;~Jtv}o^5g8gX`a`1+Y*JeN#0m5FuP?6X1M{>Z*$4?t5wGrUvlBI<;H|XtRcp#CIt|c9VHtq%55xG$8_I??sx5~aaM(`q zX0Wt!>*NCayGVsVY47b!Uu;#lOJg z3>5Ky5fARIemXbWOct>L)QWZ*Z%6p=>knEPG>&$hU8F1&a|SihjYzZd;!a?wn~yJHbJIh4Hl4Z*>(kg~)JuOupV zKIpwDK3K{SABO%*8@fs7U19VLv4IL4!RHOZ0kq{&%C}M^3-58`5d!NrCe*0_3S32=bpwk7ou=hd3Td>Re z4`wI~GNNOsz0aL{=bjXh3+#Oe`d`@laIDV&+_Aw}U%b-j=wbul&S;-5a^2X#8hB*T z^}*8n60tEMZSQ{MBx8UY8|W95tTPb)n44N)5U~d}g0^=jOm05Zgcm=}nhf+Y7vrYR z*c|R32XSB}P6y#-=PWjgo0vT)!4~tpw(4{v1jT|p>rI~cSI?@*FoP0o5$E@Pw=T4G z7{FlScw`y#U+6Vs4P|Hq)BojL3&Ju6&eHThNBGtS=Nx0|B5-7V5R)Wb;IEY~dw~_T z2ZOwX`TBFUM%f%2*rG7+L->=4&aflvhdZt(`w*-^$ndhkMK z%S#RLSfxHKd>8UP@#HdNygY(>3v)jjgnXRG0LCd@^u2hl*(-=?Rinh18zia3>f&0K z?KBlXt~HkM;wR`S7<@J=K4pDeqK{2{46KD)24Q24Y5U^mCf3Y_Txj({8*xcvV5k+O zL7luofe;N4Sg`?yx2`=SHbDRKK?TjgmTpdKeNO|PrrP0QcGYz9+Oh-lQ;jT3o2m*d zCLw9WV#SwHlfg>?sxGittaAq0U?ooQ@gmyT>nh+i79XZIWHK$arKg@r28dYOH}N_z zXw0tw`d*-9rGsIf*vh_MfXS49ZTL}t(T5*XWdVe1f*bJOs{Qnlcg(M>HPHB8*GY(s zH_qkyGG3UA?zG~~qBFFMs~ImXyfS885}J*YUWD8VUMYt3O8z#l%~JVeVl$R3Ujun6TVK^&^-4Xz_>047f&qHS8I zQ`dAE8DCR-vAi%r4umvhp-&<$|4{57ljnvkMCtSnM4;n1hVuJriZT*~nU&8$nR~Bb zbU0!zB6c~c1s=o)4?#J21cNFd_}n0Q7m}>j$7X#;-4xEdy&IXnuuSNJhJD+1b|Rdw-u_%NviDb%9u;Dd&I1?bc>cfxr&T63vMue@JJG3mrQ!~Y z=^p6{jefNY#F(}3(P+9CknZlao`GlUEKo!nctI^#fZ;}*ifpNp_FLSl1I0{G+;{)7 zJcK<)c}D*Zj3{ltZD?pu+A!~xYHI-B-IY#=9y5~+w3uuY5*>d--|07D=G{EQ^iX1Q z81>nzWcMg%kiz8_~h8GibTi5oV z&)Sed#+vl~GQ5L0Xd_y(Eo-9E#*X`@%nsPYXfK$!i_n8%mMs394`~F|mDiRQq0t*^ zW!(q5Sd5}N4@XdJU_F2fu_qGcMF=jR2*=ijO_Wc7CtKH0SHytyq_@kbBM6Yti(c1< z!Ubb(bio+u`mUS9Qu5u`;ystafLM(}%PRm#Y}QS{X$Z(9h57gW5F`NP~ zlaCGXQ3mc_VMVg|7gQHJl-*+izpvz&oJrYnDxx>MahgB1uCSsO+n57v{cJpDH#o)L zAam9ooy97O{g&@W`&+brJ`vB@02|*=mO;T-wkq@VQycPSbfVWDnQpV5@2#WbyFInY z>8G$Al!OMqk)FWbS-}b3J@=yR0(kKdo)QX{w%A}T{tB46`FU-E2P=%NBp?p-BenNR zSd0Qs2EoR<4AB5efgJ>PYL|?%Bv%0Dgexa|foLJb4b&J)$ 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�ywPS~L20{jJ{Pw7o}bTYr|*8!Ytx9dH>vq^) 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 be$rS+m&#h;wIO(?{O(d^#W

- Represents an open FileDb database file. None of the FileDb classes are re-entrant - - access to the class objects must be syncronised by the calling application. + Represents an open FileDb database file. All of the FileDb classes/methods are re-entrant - + there is no need to syncronise access to the class objects by the calling application. + However you should use the try-finally pattern when you open a FileDb to ensure + prompt closing in the finally code block. @@ -503,34 +505,39 @@ The name of the Field to rename - + + Used to set your own encryptor. Use this for cross-platform encryption scenarios, where you + have control over the encryption method being used. See the Windows Sample apps for an example. + + + + + + + Convienience method to encrypt a string value. You must first call SetEncryptor with an Encryptor. + + The string to encrypt + The encrypted value + + + + + Decrypt a string value. You must first call SetEncryptor with an Encryptor. + + The string to decrypt + The decrypted value + + + + + *** Only works on Windows platform. Use SetEncryptor to provide your own encryptor for cross platform databases *** + *** Do not use this method anymore *** Allows you to set an encryption key after the database has been opened. You must set the encryption key before reading or writing to the database. Encryption is "all or nothing", meaning all records are either encrypted or not. A string value to use as the encryption key - - - - - Encrypt a string value. - Not syncronized. - - The key to use for encryption - The value to encrypt - The encrypted value as a string - - - - - Decrypt a string value. - Not syncronized. - - The key to use for decryption - The value to decrypt - The decrypted value as a string - @@ -892,6 +899,39 @@ The record index + + + + Class uses the .NET AesManaged class for data encryption, but ONLY on the Windows platform + build...the PCL build just returns the same data without doing anything. This is because + encryption namespace isn't available for PCLs. In this case, create your own Encryptor + class using the IEncryptor interface and set it into the FileDb object via SetEncryptor. + + + + + + Constructor taking a key (password) and salt as a string + + + + + + + + Encrypt the passed byte array + + The data to encrypt + The encrypted data + + + + + Decrypt the passed byte array + + The data to decrypt + The decrypted data + diff --git a/Caching/FileDb/FileDbPcl.dll b/Caching/FileDb/FileDbPcl.dll index 1789b1cefeef4a0f8e21524faade15a6de83cadc..4a129a34de63fef1a16ac2593f81c573e5d50f46 100644 GIT binary patch literal 80384 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 diff --git a/Caching/FileDb/FileDbPcl.xml b/Caching/FileDb/FileDbPcl.xml index 3c65bc3d..87939810 100644 --- a/Caching/FileDb/FileDbPcl.xml +++ b/Caching/FileDb/FileDbPcl.xml @@ -6,8 +6,10 @@ - Represents an open FileDb database file. None of the FileDb classes are re-entrant - - access to the class objects must be syncronised by the calling application. + Represents an open FileDb database file. All of the FileDb classes/methods are re-entrant - + there is no need to syncronise access to the class objects by the calling application. + However you should use the try-finally pattern when you open a FileDb to ensure + prompt closing in the finally code block. @@ -471,34 +473,39 @@ The name of the Field to rename - + + Used to set your own encryptor. Use this for cross-platform encryption scenarios, where you + have control over the encryption method being used. See the Windows Sample apps for an example. + + + + + + + Convienience method to encrypt a string value. You must first call SetEncryptor with an Encryptor. + + The string to encrypt + The encrypted value + + + + + Decrypt a string value. You must first call SetEncryptor with an Encryptor. + + The string to decrypt + The decrypted value + + + + + *** Only works on Windows platform. Use SetEncryptor to provide your own encryptor for cross platform databases *** + *** Do not use this method anymore *** Allows you to set an encryption key after the database has been opened. You must set the encryption key before reading or writing to the database. Encryption is "all or nothing", meaning all records are either encrypted or not. A string value to use as the encryption key - - - - - Encrypt a string value. - Not syncronized. - - The key to use for encryption - The value to encrypt - The encrypted value as a string - - - - - Decrypt a string value. - Not syncronized. - - The key to use for decryption - The value to decrypt - The decrypted value as a string - @@ -860,6 +867,15 @@ The record index + + + + Class uses the .NET AesManaged class for data encryption, but ONLY on the Windows platform + build...the PCL build just returns the same data without doing anything. This is because + encryption namespace isn't available for PCLs. In this case, create your own Encryptor + class using the IEncryptor interface and set it into the FileDb object via SetEncryptor. + + diff --git a/Caching/FileDbCache.WPF/FileDbCache.WPF.csproj b/Caching/FileDbCache.WPF/FileDbCache.WPF.csproj index ab6c3a81..6dd330cb 100644 --- a/Caching/FileDbCache.WPF/FileDbCache.WPF.csproj +++ b/Caching/FileDbCache.WPF/FileDbCache.WPF.csproj @@ -44,12 +44,9 @@ False ..\FileDb\FileDb.dll - - - diff --git a/Caching/FileDbCache.WPF/FileDbCache.cs b/Caching/FileDbCache.WPF/FileDbCache.cs index b7942d65..03c8c761 100644 --- a/Caching/FileDbCache.WPF/FileDbCache.cs +++ b/Caching/FileDbCache.WPF/FileDbCache.cs @@ -9,7 +9,6 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.Caching; -using System.Windows.Media.Imaging; using FileDbNs; namespace MapControl.Caching @@ -17,7 +16,6 @@ namespace MapControl.Caching /// /// ObjectCache implementation based on FileDb, a free and simple No-SQL database by EzTools Software. /// See http://www.eztools-software.com/tools/filedb/. - /// The only valid data type for cached values is System.Windows.Media.Imaging.BitmapFrame. /// public class FileDbCache : ObjectCache, IDisposable { @@ -196,40 +194,19 @@ namespace MapControl.Caching if (fileDb.IsOpen) { - Record record = null; - try { - record = fileDb.GetRecordByKey(key, new string[] { valueField }, false); + var record = fileDb.GetRecordByKey(key, new string[] { valueField }, false); + + if (record != null) + { + return record[0]; + } } catch (Exception ex) { Debug.WriteLine("FileDbCache: FileDb.GetRecordByKey(\"{0}\") failed: {1}", key, ex.Message); } - - if (record != null) - { - try - { - using (var memoryStream = new MemoryStream((byte[])record[0])) - { - return BitmapFrame.Create(memoryStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); - } - } - catch (Exception ex) - { - Debug.WriteLine("FileDbCache: Decoding \"{0}\" failed: {1}", key, ex.Message); - } - - try - { - fileDb.DeleteRecordByKey(key); - } - catch (Exception ex) - { - Debug.WriteLine("FileDbCache: FileDb.DeleteRecordByKey(\"{0}\") failed: {1}", key, ex.Message); - } - } } return null; @@ -254,6 +231,11 @@ namespace MapControl.Caching throw new ArgumentNullException("The parameter key must not be null."); } + if (value == null) + { + throw new ArgumentNullException("The parameter value must not be null."); + } + if (policy == null) { throw new ArgumentNullException("The parameter policy must not be null."); @@ -264,50 +246,22 @@ namespace MapControl.Caching throw new NotSupportedException("The parameter regionName must be null."); } - var bitmap = value as BitmapFrame; - - if (bitmap == null) - { - throw new ArgumentException("The parameter value must contain a System.Windows.Media.Imaging.BitmapFrame."); - } - if (fileDb.IsOpen) { - byte[] buffer = null; + var expires = DateTime.MaxValue; - try + if (policy.AbsoluteExpiration != InfiniteAbsoluteExpiration) { - var encoder = new PngBitmapEncoder(); - encoder.Frames.Add(bitmap); - - using (var memoryStream = new MemoryStream()) - { - encoder.Save(memoryStream); - buffer = memoryStream.ToArray(); - } + expires = policy.AbsoluteExpiration.DateTime; } - catch (Exception ex) + else if (policy.SlidingExpiration != NoSlidingExpiration) { - Debug.WriteLine("FileDbCache: Encoding \"{0}\" failed: {1}", key, ex.Message); + expires = DateTime.UtcNow + policy.SlidingExpiration; } - if (buffer != null) + if (!AddOrUpdateRecord(key, value, expires) && RepairDatabase()) { - var expires = DateTime.MaxValue; - - if (policy.AbsoluteExpiration != InfiniteAbsoluteExpiration) - { - expires = policy.AbsoluteExpiration.DateTime; - } - else if (policy.SlidingExpiration != NoSlidingExpiration) - { - expires = DateTime.UtcNow + policy.SlidingExpiration; - } - - if (!AddOrUpdateRecord(key, buffer, expires) && RepairDatabase()) - { - AddOrUpdateRecord(key, buffer, expires); - } + AddOrUpdateRecord(key, value, expires); } } } @@ -447,7 +401,7 @@ namespace MapControl.Caching return false; } - private bool AddOrUpdateRecord(string key, byte[] value, DateTime expires) + private bool AddOrUpdateRecord(string key, object value, DateTime expires) { var fieldValues = new FieldValues(3); fieldValues.Add(valueField, value); diff --git a/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs b/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs index df431a18..a61ba671 100644 --- a/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs +++ b/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs b/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs index aa679200..103245ae 100644 --- a/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs +++ b/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/ImageFileCache.WPF/ImageFileCache.WPF.csproj b/Caching/ImageFileCache.WPF/ImageFileCache.WPF.csproj index b3514996..cd2a9813 100644 --- a/Caching/ImageFileCache.WPF/ImageFileCache.WPF.csproj +++ b/Caching/ImageFileCache.WPF/ImageFileCache.WPF.csproj @@ -40,12 +40,9 @@ ..\..\MapControl.snk - - - diff --git a/Caching/ImageFileCache.WPF/ImageFileCache.cs b/Caching/ImageFileCache.WPF/ImageFileCache.cs index d9031e94..627a5cb3 100644 --- a/Caching/ImageFileCache.WPF/ImageFileCache.cs +++ b/Caching/ImageFileCache.WPF/ImageFileCache.cs @@ -6,22 +6,32 @@ using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; -using System.Globalization; using System.IO; using System.Linq; using System.Runtime.Caching; using System.Security.AccessControl; using System.Security.Principal; -using System.Windows.Media.Imaging; namespace MapControl.Caching { /// /// ObjectCache implementation based on local image files. - /// The only valid data type for cached values is System.Windows.Media.Imaging.BitmapFrame. + /// The only valid data type for cached values is byte[]. /// public class ImageFileCache : ObjectCache { + private static readonly Tuple[] imageFileTypes = new Tuple[] + { + new Tuple(".png", new byte[] { 0x89, 0x50, 0x4E, 0x47, 0xD, 0xA, 0x1A, 0xA }), + new Tuple(".jpg", new byte[] { 0xFF, 0xD8, 0xFF, 0xE0, 0, 0x10, 0x4A, 0x46, 0x49, 0x46, 0 }), + new Tuple(".bmp", new byte[] { 0x42, 0x4D }), + new Tuple(".gif", new byte[] { 0x47, 0x49, 0x46 }), + new Tuple(".tif", new byte[] { 0x49, 0x49, 42, 0 }), + new Tuple(".tif", new byte[] { 0x4D, 0x4D, 0, 42 }), + new Tuple(".wdp", new byte[] { 0x49, 0x49, 0xBC }), + new Tuple(".bin", new byte[] { }), + }; + private static readonly FileSystemAccessRule fullControlRule = new FileSystemAccessRule( new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null), FileSystemRights.FullControl, AccessControlType.Allow); @@ -87,44 +97,52 @@ namespace MapControl.Caching public override bool Contains(string key, string regionName = null) { - return memoryCache.Contains(key, regionName) || FindFile(GetPath(key)) != null; + if (key == null) + { + throw new ArgumentNullException("The parameter key must not be null."); + } + + if (regionName != null) + { + throw new NotSupportedException("The parameter regionName must be null."); + } + + return memoryCache.Contains(key) || FindFile(key) != null; } public override object Get(string key, string regionName = null) { - var bitmap = memoryCache.Get(key, regionName) as BitmapFrame; - - if (bitmap == null) + if (key == null) { - try - { - var path = FindFile(GetPath(key)); + throw new ArgumentNullException("The parameter key must not be null."); + } - if (path != null) + if (regionName != null) + { + throw new NotSupportedException("The parameter regionName must be null."); + } + + var buffer = memoryCache.Get(key) as byte[]; + + if (buffer == null) + { + var path = FindFile(key); + + if (path != null) + { + try { - using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - bitmap = BitmapFrame.Create(fileStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); - - var metadata = (BitmapMetadata)bitmap.Metadata; - DateTime expiration; - - // metadata.DateTaken must be parsed in CurrentCulture - if (metadata != null && - metadata.DateTaken != null && - DateTime.TryParse(metadata.DateTaken, CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out expiration)) - { - memoryCache.Set(key, bitmap, expiration, regionName); - } - } + buffer = File.ReadAllBytes(path); + memoryCache.Set(key, buffer, new CacheItemPolicy()); + } + catch (Exception ex) + { + Debug.WriteLine("ImageFileCache: Writing file {0} failed: {1}", path, ex.Message); } - } - catch - { } } - return bitmap; + return buffer; } public override CacheItem GetCacheItem(string key, string regionName = null) @@ -141,59 +159,32 @@ namespace MapControl.Caching public override void Set(string key, object value, CacheItemPolicy policy, string regionName = null) { - var bitmap = value as BitmapFrame; - - if (bitmap == null) + if (key == null) { - throw new ArgumentException("The parameter value must contain a System.Windows.Media.Imaging.BitmapFrame."); + throw new ArgumentNullException("The parameter key must not be null."); } - var metadata = (BitmapMetadata)bitmap.Metadata; - var format = metadata != null ? metadata.Format : "bmp"; - BitmapEncoder encoder = null; - - switch (format) + if (regionName != null) { - case "bmp": - encoder = new BmpBitmapEncoder(); - break; - case "gif": - encoder = new GifBitmapEncoder(); - break; - case "jpg": - encoder = new JpegBitmapEncoder(); - break; - case "png": - encoder = new PngBitmapEncoder(); - break; - case "tiff": - encoder = new TiffBitmapEncoder(); - break; - case "wmphoto": - encoder = new WmpBitmapEncoder(); - break; - default: - break; + throw new NotSupportedException("The parameter regionName must be null."); } - if (encoder == null) + var buffer = value as byte[]; + + if (buffer == null || buffer.Length == 0) { - throw new NotSupportedException(string.Format("The bitmap format {0} is not supported.", format)); + throw new NotSupportedException("The parameter value must be a non-empty byte array."); } - memoryCache.Set(key, bitmap, policy, regionName); + memoryCache.Set(key, buffer, policy); - var path = string.Format("{0}.{1}", GetPath(key), format); + var path = Path.Combine(rootFolder, key) + + imageFileTypes.First(t => t.Item2.SequenceEqual(buffer.Take(t.Item2.Length))).Item1; try { Directory.CreateDirectory(Path.GetDirectoryName(path)); - - using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) - { - encoder.Frames.Add(bitmap); - encoder.Save(fileStream); - } + File.WriteAllBytes(path, buffer); var fileSecurity = File.GetAccessControl(path); fileSecurity.AddAccessRule(fullControlRule); @@ -240,43 +231,56 @@ namespace MapControl.Caching public override object Remove(string key, string regionName = null) { - var oldValue = Get(key, regionName); - - memoryCache.Remove(key, regionName); - - try + if (key == null) { - var path = FindFile(GetPath(key)); + throw new ArgumentNullException("The parameter key must not be null."); + } - if (path != null) + if (regionName != null) + { + throw new NotSupportedException("The parameter regionName must be null."); + } + + memoryCache.Remove(key); + + var path = FindFile(key); + + if (path != null) + { + try { File.Delete(path); } - } - catch - { + catch (Exception ex) + { + Debug.WriteLine("ImageFileCache: Removing file {0} failed: {1}", path, ex.Message); + } } - return oldValue; + return null; } - private string GetPath(string key) + private string FindFile(string key) { - return Path.Combine(rootFolder, key); - } + var path = Path.Combine(rootFolder, key); - private static string FindFile(string path) - { - if (!string.IsNullOrEmpty(Path.GetExtension(path))) + try { - return path; + if (!string.IsNullOrEmpty(Path.GetExtension(path))) + { + return path; + } + + string folderName = Path.GetDirectoryName(path); + + if (Directory.Exists(folderName)) + { + return Directory.EnumerateFiles(folderName, Path.GetFileName(path) + ".*").FirstOrDefault(); + } } - - string folderName = Path.GetDirectoryName(path); - - if (Directory.Exists(folderName)) + catch (Exception ex) { - return Directory.EnumerateFiles(folderName, Path.GetFileName(path) + ".*").FirstOrDefault(); + Debug.WriteLine("ImageFileCache: Finding file {0} failed: {1}", path, ex.Message); } return null; diff --git a/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs b/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs index c585e4bb..943d8964 100644 --- a/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs +++ b/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/ImageFileCache.WinRT/ImageFileCache.cs b/Caching/ImageFileCache.WinRT/ImageFileCache.cs index e22af7ec..dc2d6b8e 100644 --- a/Caching/ImageFileCache.WinRT/ImageFileCache.cs +++ b/Caching/ImageFileCache.WinRT/ImageFileCache.cs @@ -40,30 +40,26 @@ namespace MapControl.Caching { var item = await rootFolder.TryGetItemAsync(key); - if (item == null || !item.IsOfType(StorageItemTypes.File)) + if (item != null && item.IsOfType(StorageItemTypes.File)) { - return null; + var file = (StorageFile)item; + //Debug.WriteLine("ImageFileCache: Reading file {0}", file.Path); + + try + { + return new ImageCacheItem + { + Buffer = await FileIO.ReadBufferAsync(file), + Expires = (await file.Properties.GetImagePropertiesAsync()).DateTaken.UtcDateTime + }; + } + catch (Exception ex) + { + Debug.WriteLine("ImageFileCache: Reading file {0} failed: {1}", file.Path, ex.Message); + } } - var file = (StorageFile)item; - - var cacheItem = new ImageCacheItem - { - Buffer = await FileIO.ReadBufferAsync(file) - }; - - try - { - // Use ImageProperties.DateTaken to get expiration date - var imageProperties = await file.Properties.GetImagePropertiesAsync(); - cacheItem.Expires = imageProperties.DateTaken.UtcDateTime; - } - catch - { - } - - //Debug.WriteLine("Loaded cached image {0}", file.Path); - return cacheItem; + return null; } public virtual async Task SetAsync(string key, IBuffer buffer, DateTime expires) @@ -79,16 +75,18 @@ namespace MapControl.Caching } var file = await folder.CreateFileAsync(names[names.Length - 1], CreationCollisionOption.ReplaceExisting); + //Debug.WriteLine("ImageFileCache: Writing file {0}", file.Path); + await FileIO.WriteBufferAsync(file, buffer); - // Use ImageProperties.DateTaken to store expiration date - var imageProperties = await file.Properties.GetImagePropertiesAsync(); - imageProperties.DateTaken = expires; - await imageProperties.SavePropertiesAsync(); + // Store expiration date in ImageProperties.DateTaken + var properties = await file.Properties.GetImagePropertiesAsync(); + properties.DateTaken = expires; + await properties.SavePropertiesAsync(); } catch (Exception ex) { - Debug.WriteLine(ex.Message); + Debug.WriteLine("ImageFileCache: Writing file {0}\\{1} failed: {2}", rootFolder.Path, key, ex.Message); } } } diff --git a/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs b/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs index ab237da0..0f9bdc17 100644 --- a/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs +++ b/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/BingMapsTileLayer.cs b/MapControl/BingMapsTileLayer.cs index 34bf9fd4..ba7a45b9 100644 --- a/MapControl/BingMapsTileLayer.cs +++ b/MapControl/BingMapsTileLayer.cs @@ -18,6 +18,9 @@ using System.Windows.Media.Imaging; namespace MapControl { + /// + /// Displays Bing Maps tiles. The static ApiKey property must be set to a Bing Maps API Key. + /// public class BingMapsTileLayer : TileLayer { public enum MapMode @@ -26,6 +29,12 @@ namespace MapControl } public BingMapsTileLayer() + : this(new TileImageLoader()) + { + } + + public BingMapsTileLayer(ITileImageLoader tileImageLoader) + : base(tileImageLoader) { MinZoomLevel = 1; MaxZoomLevel = 21; @@ -43,7 +52,7 @@ namespace MapControl if (string.IsNullOrEmpty(ApiKey)) { - throw new InvalidOperationException("A Bing Maps API Key must be assigned to the ApiKey property."); + throw new InvalidOperationException("BingMapsTileLayer requires a Bing Maps API Key."); } var uri = string.Format("http://dev.virtualearth.net/REST/V1/Imagery/Metadata/{0}?output=xml&key={1}", Mode, ApiKey); diff --git a/MapControl/BingMapsTileSource.cs b/MapControl/BingMapsTileSource.cs index 656816d7..6cd8044a 100644 --- a/MapControl/BingMapsTileSource.cs +++ b/MapControl/BingMapsTileSource.cs @@ -8,7 +8,7 @@ namespace MapControl { internal class BingMapsTileSource : TileSource { - private string[] subdomains; + private readonly string[] subdomains; public BingMapsTileSource(string uriFormat, string[] subdomains) : base(uriFormat) diff --git a/MapControl/Map.Silverlight.cs b/MapControl/Map.Silverlight.cs index 1a6b4852..a260c941 100644 --- a/MapControl/Map.Silverlight.cs +++ b/MapControl/Map.Silverlight.cs @@ -8,7 +8,7 @@ using System.Windows.Input; namespace MapControl { /// - /// Default input event handling. + /// MapBase with default input event handling. /// public class Map : MapBase { diff --git a/MapControl/Map.WPF.cs b/MapControl/Map.WPF.cs index 73b5f509..57c92d46 100644 --- a/MapControl/Map.WPF.cs +++ b/MapControl/Map.WPF.cs @@ -8,7 +8,7 @@ using System.Windows.Input; namespace MapControl { /// - /// Default input event handling. + /// MapBase with default input event handling. /// public class Map : MapBase { diff --git a/MapControl/Map.WinRT.cs b/MapControl/Map.WinRT.cs index 8674ac7b..d3f32043 100644 --- a/MapControl/Map.WinRT.cs +++ b/MapControl/Map.WinRT.cs @@ -10,7 +10,7 @@ using Windows.UI.Xaml.Input; namespace MapControl { /// - /// Default input event handling. + /// MapBase with default input event handling. /// public class Map : MapBase { diff --git a/MapControl/MapBase.cs b/MapControl/MapBase.cs index aae93df7..818c6ecd 100644 --- a/MapControl/MapBase.cs +++ b/MapControl/MapBase.cs @@ -21,7 +21,7 @@ using System.Windows.Media.Animation; namespace MapControl { /// - /// The map control. Renders map content provided by the TileLayer or TileLayers property. + /// The map control. Displays map content provided by the TileLayer or TileLayers property. /// The visible map area is defined by the Center and ZoomLevel properties. /// The map can be rotated by an angle that is given by the Heading property. /// MapBase can contain map overlay child elements like other MapPanels or MapItemsControls. diff --git a/MapControl/Properties/AssemblyInfo.cs b/MapControl/Properties/AssemblyInfo.cs index 97ed6cc2..2ff000c3 100644 --- a/MapControl/Properties/AssemblyInfo.cs +++ b/MapControl/Properties/AssemblyInfo.cs @@ -14,8 +14,8 @@ using System.Windows; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/TileImageLoader.WPF.cs b/MapControl/TileImageLoader.WPF.cs index e5898770..4bbfc635 100644 --- a/MapControl/TileImageLoader.WPF.cs +++ b/MapControl/TileImageLoader.WPF.cs @@ -11,6 +11,7 @@ using System.IO; using System.Linq; using System.Net; using System.Runtime.Caching; +using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Media; @@ -197,7 +198,7 @@ namespace MapControl } catch (Exception ex) { - Debug.WriteLine("Loading tile image failed: {0}", (object)ex.Message); + Debug.WriteLine("ImageTileSource.LoadImage: " + ex.Message); } return image; @@ -218,7 +219,7 @@ namespace MapControl } catch (Exception ex) { - Debug.WriteLine("Creating tile image failed: {0}", (object)ex.Message); + Debug.WriteLine("{0}: {1}", path, ex.Message); } } @@ -232,7 +233,11 @@ namespace MapControl try { var request = HttpWebRequest.CreateHttp(uri); - request.UserAgent = HttpUserAgent; + + if (HttpUserAgent != null) + { + request.UserAgent = HttpUserAgent; + } using (var response = (HttpWebResponse)request.GetResponse()) { @@ -240,23 +245,24 @@ namespace MapControl using (var memoryStream = new MemoryStream()) { responseStream.CopyTo(memoryStream); - memoryStream.Position = 0; - image = BitmapFrame.Create(memoryStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); - } + memoryStream.Seek(0, SeekOrigin.Begin); - if (cacheKey != null) - { - SetCachedImage(cacheKey, image, GetExpiration(response.Headers)); + image = BitmapFrame.Create(memoryStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); + + if (cacheKey != null) + { + SetCachedImage(cacheKey, memoryStream, GetExpiration(response.Headers)); + } } } } catch (WebException ex) { - Debug.WriteLine("Downloading {0} failed: {1}: {2}", uri, ex.Status, ex.Message); + Debug.WriteLine("{0}: {1}: {2}", uri, ex.Status, ex.Message); } catch (Exception ex) { - Debug.WriteLine("Downloading {0} failed: {1}", uri, ex.Message); + Debug.WriteLine("{0}: {1}", uri, ex.Message); } return image; @@ -274,34 +280,44 @@ namespace MapControl private static bool GetCachedImage(string cacheKey, out BitmapSource image) { - image = Cache.Get(cacheKey) as BitmapSource; + image = null; - if (image == null) + var buffer = Cache.Get(cacheKey) as byte[]; + + if (buffer != null) { - return false; + try + { + using (var memoryStream = new MemoryStream(buffer)) + { + image = BitmapFrame.Create(memoryStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); + } + + DateTime expiration = DateTime.MinValue; + + if (buffer.Length >= 16 && Encoding.ASCII.GetString(buffer, buffer.Length - 16, 8) == "EXPIRES:") + { + expiration = new DateTime(BitConverter.ToInt64(buffer, buffer.Length - 8), DateTimeKind.Utc); + } + + return expiration > DateTime.UtcNow; + } + catch (Exception ex) + { + Debug.WriteLine("{0}: {1}", cacheKey, ex.Message); + } } - var metadata = (BitmapMetadata)image.Metadata; - DateTime expiration; - - // get cache expiration date from BitmapMetadata.DateTaken, must be parsed with CurrentCulture - return metadata == null - || metadata.DateTaken == null - || !DateTime.TryParse(metadata.DateTaken, CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out expiration) - || expiration > DateTime.UtcNow; + return false; } - private static void SetCachedImage(string cacheKey, BitmapSource image, DateTime expiration) + private static void SetCachedImage(string cacheKey, MemoryStream memoryStream, DateTime expiration) { - var bitmap = BitmapFrame.Create(image); - var metadata = (BitmapMetadata)bitmap.Metadata; + memoryStream.Seek(0, SeekOrigin.End); + memoryStream.Write(Encoding.ASCII.GetBytes("EXPIRES:"), 0, 8); + memoryStream.Write(BitConverter.GetBytes(expiration.Ticks), 0, 8); - // store cache expiration date in BitmapMetadata.DateTaken - metadata.DateTaken = expiration.ToString(CultureInfo.InvariantCulture); - metadata.Freeze(); - bitmap.Freeze(); - - Cache.Set(cacheKey, bitmap, new CacheItemPolicy { AbsoluteExpiration = expiration }); + Cache.Set(cacheKey, memoryStream.ToArray(), new CacheItemPolicy { AbsoluteExpiration = expiration }); //Debug.WriteLine("Cached {0}, Expires {1}", cacheKey, expiration); } diff --git a/MapControl/TileLayer.cs b/MapControl/TileLayer.cs index dc684381..0a41ef55 100644 --- a/MapControl/TileLayer.cs +++ b/MapControl/TileLayer.cs @@ -20,7 +20,7 @@ using System.Windows.Threading; namespace MapControl { /// - /// Fills a rectangular area with map tiles from a TileSource. + /// Fills the map viewport with map tiles from a TileSource. /// #if NETFX_CORE [ContentProperty(Name = "TileSource")] diff --git a/MapControl/TileSource.cs b/MapControl/TileSource.cs index 53ecb058..1d1ac2fe 100644 --- a/MapControl/TileSource.cs +++ b/MapControl/TileSource.cs @@ -153,7 +153,7 @@ namespace MapControl } return new Uri(uriFormat - .Replace("{i}", new string(quadkey[zoomLevel - 1], 1)) + .Replace("{i}", new string(quadkey, zoomLevel - 1, 1)) .Replace("{q}", new string(quadkey)), UriKind.RelativeOrAbsolute); } diff --git a/MapControl/WinRT/Properties/AssemblyInfo.cs b/MapControl/WinRT/Properties/AssemblyInfo.cs index 154be8d8..f7a0b7bc 100644 --- a/MapControl/WinRT/Properties/AssemblyInfo.cs +++ b/MapControl/WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs b/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs index 3283e985..0e9afe16 100644 --- a/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs index 6dfb8ef5..d17eed8a 100644 --- a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs +++ b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs index b4743952..41917307 100644 --- a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs index 3c55f8b6..6d2d925a 100644 --- a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/UniversalApp/MainPage.xaml.cs b/SampleApps/UniversalApp/MainPage.xaml.cs index 195842fa..68929a4d 100644 --- a/SampleApps/UniversalApp/MainPage.xaml.cs +++ b/SampleApps/UniversalApp/MainPage.xaml.cs @@ -10,6 +10,7 @@ namespace UniversalApp public MainPage() { //TileImageLoader.Cache = new MapControl.Caching.ImageFileCache(); + //TileImageLoader.Cache = new MapControl.Caching.FileDbCache(); this.InitializeComponent(); } diff --git a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs index 596f4506..9880050f 100644 --- a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs +++ b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/UniversalApp/UniversalApp.csproj b/SampleApps/UniversalApp/UniversalApp.csproj index 9be56786..54d3daf8 100644 --- a/SampleApps/UniversalApp/UniversalApp.csproj +++ b/SampleApps/UniversalApp/UniversalApp.csproj @@ -144,6 +144,10 @@ + + {c7bf2b18-cc74-430b-bcb2-600304efa3d8} + FileDbCache.WinRT + {f789647e-96f7-43e3-a895-fa3fe8d01260} ImageFileCache.WinRT diff --git a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs index a8ade36e..c7f56aa3 100644 --- a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.6.0")] -[assembly: AssemblyFileVersion("2.6.0")] +[assembly: AssemblyVersion("2.7.0")] +[assembly: AssemblyFileVersion("2.7.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)]