├── 7blur ├── en.lproj │ └── InfoPlist.strings ├── Images.xcassets │ ├── Up-30x30.imageset │ │ ├── Up-30x30@2x.png │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── Icon-60x60@2x.png │ │ └── Contents.json │ ├── Down-30x30.imageset │ │ ├── Down-30x30@2x.png │ │ └── Contents.json │ ├── Icon-32x32.imageset │ │ ├── Icon-32x32@2x.png │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── Sample Project │ ├── Sample Data │ │ ├── country-flags │ │ │ └── 96x64 │ │ │ │ ├── AD.png │ │ │ │ ├── AE.png │ │ │ │ ├── AF.png │ │ │ │ ├── AG.png │ │ │ │ ├── AI.png │ │ │ │ ├── AL.png │ │ │ │ ├── AM.png │ │ │ │ ├── AO.png │ │ │ │ ├── AQ.png │ │ │ │ ├── AR.png │ │ │ │ ├── AS.png │ │ │ │ ├── AT.png │ │ │ │ ├── AU.png │ │ │ │ ├── AW.png │ │ │ │ ├── AX.png │ │ │ │ ├── AZ.png │ │ │ │ ├── BA.png │ │ │ │ ├── BB.png │ │ │ │ ├── BD.png │ │ │ │ ├── BE.png │ │ │ │ ├── BF.png │ │ │ │ ├── BG.png │ │ │ │ ├── BH.png │ │ │ │ ├── BI.png │ │ │ │ ├── BJ.png │ │ │ │ ├── BL.png │ │ │ │ ├── BM.png │ │ │ │ ├── BN.png │ │ │ │ ├── BO.png │ │ │ │ ├── BQ.png │ │ │ │ ├── BR.png │ │ │ │ ├── BS.png │ │ │ │ ├── BT.png │ │ │ │ ├── BV.png │ │ │ │ ├── BW.png │ │ │ │ ├── BY.png │ │ │ │ ├── BZ.png │ │ │ │ ├── CA.png │ │ │ │ ├── CC.png │ │ │ │ ├── CD.png │ │ │ │ ├── CF.png │ │ │ │ ├── CG.png │ │ │ │ ├── CH.png │ │ │ │ ├── CI.png │ │ │ │ ├── CK.png │ │ │ │ ├── CL.png │ │ │ │ ├── CM.png │ │ │ │ ├── CN.png │ │ │ │ ├── CO.png │ │ │ │ ├── CR.png │ │ │ │ ├── CU.png │ │ │ │ ├── CV.png │ │ │ │ ├── CW.png │ │ │ │ ├── CX.png │ │ │ │ ├── CY.png │ │ │ │ ├── CZ.png │ │ │ │ ├── DE.png │ │ │ │ ├── DJ.png │ │ │ │ ├── DK.png │ │ │ │ ├── DM.png │ │ │ │ ├── DO.png │ │ │ │ ├── DZ.png │ │ │ │ ├── EC.png │ │ │ │ ├── EE.png │ │ │ │ ├── EG.png │ │ │ │ ├── EH.png │ │ │ │ ├── ER.png │ │ │ │ ├── ES.png │ │ │ │ ├── ET.png │ │ │ │ ├── FI.png │ │ │ │ ├── FJ.png │ │ │ │ ├── FK.png │ │ │ │ ├── FM.png │ │ │ │ ├── FO.png │ │ │ │ ├── FR.png │ │ │ │ ├── GA.png │ │ │ │ ├── GB.png │ │ │ │ ├── GD.png │ │ │ │ ├── GE.png │ │ │ │ ├── GF.png │ │ │ │ ├── GG.png │ │ │ │ ├── GH.png │ │ │ │ ├── GI.png │ │ │ │ ├── GL.png │ │ │ │ ├── GM.png │ │ │ │ ├── GN.png │ │ │ │ ├── GP.png │ │ │ │ ├── GQ.png │ │ │ │ ├── GR.png │ │ │ │ ├── GS.png │ │ │ │ ├── GT.png │ │ │ │ ├── GU.png │ │ │ │ ├── GW.png │ │ │ │ ├── GY.png │ │ │ │ ├── HK.png │ │ │ │ ├── HM.png │ │ │ │ ├── HN.png │ │ │ │ ├── HR.png │ │ │ │ ├── HT.png │ │ │ │ ├── HU.png │ │ │ │ ├── ID.png │ │ │ │ ├── IE.png │ │ │ │ ├── IL.png │ │ │ │ ├── IM.png │ │ │ │ ├── IN.png │ │ │ │ ├── IO.png │ │ │ │ ├── IQ.png │ │ │ │ ├── IR.png │ │ │ │ ├── IS.png │ │ │ │ ├── IT.png │ │ │ │ ├── JE.png │ │ │ │ ├── JM.png │ │ │ │ ├── JO.png │ │ │ │ ├── JP.png │ │ │ │ ├── KE.png │ │ │ │ ├── KG.png │ │ │ │ ├── KH.png │ │ │ │ ├── KI.png │ │ │ │ ├── KM.png │ │ │ │ ├── KN.png │ │ │ │ ├── KP.png │ │ │ │ ├── KR.png │ │ │ │ ├── KW.png │ │ │ │ ├── KY.png │ │ │ │ ├── KZ.png │ │ │ │ ├── LA.png │ │ │ │ ├── LB.png │ │ │ │ ├── LC.png │ │ │ │ ├── LI.png │ │ │ │ ├── LK.png │ │ │ │ ├── LR.png │ │ │ │ ├── LS.png │ │ │ │ ├── LT.png │ │ │ │ ├── LU.png │ │ │ │ ├── LV.png │ │ │ │ ├── LY.png │ │ │ │ ├── MA.png │ │ │ │ ├── MC.png │ │ │ │ ├── MD.png │ │ │ │ ├── ME.png │ │ │ │ ├── MF.png │ │ │ │ ├── MG.png │ │ │ │ ├── MH.png │ │ │ │ ├── MK.png │ │ │ │ ├── ML.png │ │ │ │ ├── MM.png │ │ │ │ ├── MN.png │ │ │ │ ├── MO.png │ │ │ │ ├── MP.png │ │ │ │ ├── MQ.png │ │ │ │ ├── MR.png │ │ │ │ ├── MS.png │ │ │ │ ├── MT.png │ │ │ │ ├── MU.png │ │ │ │ ├── MV.png │ │ │ │ ├── MW.png │ │ │ │ ├── MX.png │ │ │ │ ├── MY.png │ │ │ │ ├── MZ.png │ │ │ │ ├── NA.png │ │ │ │ ├── NC.png │ │ │ │ ├── NE.png │ │ │ │ ├── NF.png │ │ │ │ ├── NG.png │ │ │ │ ├── NI.png │ │ │ │ ├── NL.png │ │ │ │ ├── NO.png │ │ │ │ ├── NP.png │ │ │ │ ├── NR.png │ │ │ │ ├── NU.png │ │ │ │ ├── NZ.png │ │ │ │ ├── OM.png │ │ │ │ ├── PA.png │ │ │ │ ├── PE.png │ │ │ │ ├── PF.png │ │ │ │ ├── PG.png │ │ │ │ ├── PH.png │ │ │ │ ├── PK.png │ │ │ │ ├── PL.png │ │ │ │ ├── PM.png │ │ │ │ ├── PN.png │ │ │ │ ├── PR.png │ │ │ │ ├── PS.png │ │ │ │ ├── PT.png │ │ │ │ ├── PW.png │ │ │ │ ├── PY.png │ │ │ │ ├── QA.png │ │ │ │ ├── RE.png │ │ │ │ ├── RO.png │ │ │ │ ├── RS.png │ │ │ │ ├── RU.png │ │ │ │ ├── RW.png │ │ │ │ ├── SA.png │ │ │ │ ├── SB.png │ │ │ │ ├── SC.png │ │ │ │ ├── SD.png │ │ │ │ ├── SE.png │ │ │ │ ├── SG.png │ │ │ │ ├── SH.png │ │ │ │ ├── SI.png │ │ │ │ ├── SJ.png │ │ │ │ ├── SK.png │ │ │ │ ├── SL.png │ │ │ │ ├── SM.png │ │ │ │ ├── SN.png │ │ │ │ ├── SO.png │ │ │ │ ├── SR.png │ │ │ │ ├── SS.png │ │ │ │ ├── ST.png │ │ │ │ ├── SV.png │ │ │ │ ├── SX.png │ │ │ │ ├── SY.png │ │ │ │ ├── SZ.png │ │ │ │ ├── TC.png │ │ │ │ ├── TD.png │ │ │ │ ├── TF.png │ │ │ │ ├── TG.png │ │ │ │ ├── TH.png │ │ │ │ ├── TJ.png │ │ │ │ ├── TK.png │ │ │ │ ├── TL.png │ │ │ │ ├── TM.png │ │ │ │ ├── TN.png │ │ │ │ ├── TO.png │ │ │ │ ├── TR.png │ │ │ │ ├── TT.png │ │ │ │ ├── TV.png │ │ │ │ ├── TW.png │ │ │ │ ├── TZ.png │ │ │ │ ├── UA.png │ │ │ │ ├── UG.png │ │ │ │ ├── UM.png │ │ │ │ ├── US.png │ │ │ │ ├── UY.png │ │ │ │ ├── UZ.png │ │ │ │ ├── VA.png │ │ │ │ ├── VC.png │ │ │ │ ├── VE.png │ │ │ │ ├── VG.png │ │ │ │ ├── VI.png │ │ │ │ ├── VN.png │ │ │ │ ├── VU.png │ │ │ │ ├── WF.png │ │ │ │ ├── WS.png │ │ │ │ ├── YE.png │ │ │ │ ├── YT.png │ │ │ │ ├── ZA.png │ │ │ │ ├── ZM.png │ │ │ │ └── ZW.png │ │ ├── CountryManager.h │ │ ├── CountryManager.m │ │ └── Countries.plist │ ├── Images │ │ └── Eadweard-Muybridge │ │ │ ├── sallie-gardner-300x200-01.png │ │ │ ├── sallie-gardner-300x200-02.png │ │ │ ├── sallie-gardner-300x200-03.png │ │ │ ├── sallie-gardner-300x200-04.png │ │ │ ├── sallie-gardner-300x200-05.png │ │ │ ├── sallie-gardner-300x200-06.png │ │ │ ├── sallie-gardner-300x200-07.png │ │ │ ├── sallie-gardner-300x200-08.png │ │ │ ├── sallie-gardner-300x200-09.png │ │ │ ├── sallie-gardner-300x200-10.png │ │ │ ├── sallie-gardner-300x200-11.png │ │ │ ├── sallie-gardner-300x200-12.png │ │ │ ├── sallie-gardner-300x200-13.png │ │ │ ├── sallie-gardner-300x200-14.png │ │ │ └── sallie-gardner-300x200-15.png │ ├── Utilities.h │ ├── Constants.h │ ├── Cells │ │ ├── CountryCell.h │ │ ├── CountryCell.m │ │ └── CountryCell.xib │ ├── Utilities.m │ ├── LiveBlurVC.h │ ├── StaticBlurVC.h │ ├── PositionedBlurVC.h │ ├── PositionedBlurVC.m │ ├── LiveBlurVC.m │ └── StaticBlurVC.m ├── 7blur-Prefix.pch ├── 7blur-Info.plist ├── AppDelegate.h ├── main.m ├── AppDelegate.m ├── BLR │ ├── BLRView.xib │ ├── BLRView.h │ ├── Categories │ │ ├── UIImage+ImageEffects.h │ │ └── UIImage+ImageEffects.m │ └── BLRView.m └── Base.lproj │ └── Main.storyboard ├── .gitignore ├── LICENSE └── README.md /7blur/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /7blur/Images.xcassets/Up-30x30.imageset/Up-30x30@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Images.xcassets/Up-30x30.imageset/Up-30x30@2x.png -------------------------------------------------------------------------------- /7blur/Images.xcassets/AppIcon.appiconset/Icon-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Images.xcassets/AppIcon.appiconset/Icon-60x60@2x.png -------------------------------------------------------------------------------- /7blur/Images.xcassets/Down-30x30.imageset/Down-30x30@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Images.xcassets/Down-30x30.imageset/Down-30x30@2x.png -------------------------------------------------------------------------------- /7blur/Images.xcassets/Icon-32x32.imageset/Icon-32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Images.xcassets/Icon-32x32.imageset/Icon-32x32@2x.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AQ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AX.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/AZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/AZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BB.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BJ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BQ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/BZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/BZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CX.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/CZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/CZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DJ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/DZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/DZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/EC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/EC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/EE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/EE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/EG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/EG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/EH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/EH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ER.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ES.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ES.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ET.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FJ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/FR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/FR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GB.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GP.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GQ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/GY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/GY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/HU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/HU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ID.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IQ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/IT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/IT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/JE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/JE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/JM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/JM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/JO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/JO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/JP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/JP.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KP.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/KZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/KZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LB.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/LY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/LY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ME.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ML.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MP.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MQ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MX.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/MZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/MZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NP.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/NZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/NZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/OM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/OM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/PY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/PY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/QA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/QA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/RE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/RE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/RO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/RO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/RS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/RS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/RU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/RU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/RW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/RW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SB.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SJ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ST.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SX.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/SZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/SZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TD.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TH.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TJ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TK.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TL.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TO.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TR.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TV.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/TZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/TZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/UA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/UA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/UG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/UG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/UM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/UM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/US.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/UY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/UY.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/UZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/UZ.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VC.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VG.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VI.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VN.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/VU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/VU.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/WF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/WF.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/WS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/WS.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/YE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/YE.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/YT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/YT.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ZA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ZA.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ZM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ZM.png -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/country-flags/96x64/ZW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Sample Data/country-flags/96x64/ZW.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-01.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-02.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-03.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-04.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-05.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-06.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-07.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-08.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-09.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-10.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-11.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-12.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-13.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-14.png -------------------------------------------------------------------------------- /7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justinmfischer/7blur/HEAD/7blur/Sample Project/Images/Eadweard-Muybridge/sallie-gardner-300x200-15.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | *.xcworkspace 13 | !default.xcworkspace 14 | xcuserdata 15 | profile 16 | *.moved-aside 17 | DerivedData 18 | .idea/ 19 | -------------------------------------------------------------------------------- /7blur/Images.xcassets/Down-30x30.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "Down-30x30@2x.png" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /7blur/Images.xcassets/Icon-32x32.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "Icon-32x32@2x.png" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /7blur/Images.xcassets/Up-30x30.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "Up-30x30@2x.png" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /7blur/7blur-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /7blur/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "size" : "60x60", 15 | "idiom" : "iphone", 16 | "filename" : "Icon-60x60@2x.png", 17 | "scale" : "2x" 18 | } 19 | ], 20 | "info" : { 21 | "version" : 1, 22 | "author" : "xcode" 23 | } 24 | } -------------------------------------------------------------------------------- /7blur/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Justin M Fischer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /7blur/7blur-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | Project 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.github.7blur 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /7blur/Sample Project/Utilities.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // Utilities.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | @interface Utilities : NSObject 29 | 30 | + (NSArray *) loadCountries; 31 | 32 | @end -------------------------------------------------------------------------------- /7blur/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // AppDelegate.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import 29 | 30 | @interface AppDelegate : UIResponder 31 | 32 | @property (strong, nonatomic) UIWindow *window; 33 | 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /7blur/Sample Project/Constants.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // Constants.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | typedef enum { 29 | KShouldMoveDown = 0, 30 | KShouldMoveUp = 1 31 | } ViewDirection; 32 | 33 | typedef enum { 34 | KShouldPresent = 0, 35 | KShouldDismiss = 1 36 | } ViewDisplayAction; -------------------------------------------------------------------------------- /7blur/Sample Project/Cells/CountryCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // CountryCell.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | @interface CountryCell : UITableViewCell 29 | 30 | @property(nonatomic, strong) IBOutlet UILabel *countryName; 31 | @property(nonatomic, strong) IBOutlet UIImageView *countryFlag; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /7blur/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // main.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import 29 | 30 | #import "AppDelegate.h" 31 | 32 | int main(int argc, char * argv[]) 33 | { 34 | @autoreleasepool { 35 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /7blur/Sample Project/Utilities.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // Utilities.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "Utilities.h" 29 | 30 | @implementation Utilities 31 | 32 | + (NSArray *) loadCountries { 33 | NSString *path = [[NSBundle mainBundle] pathForResource:@"Countries" ofType:@"plist"]; 34 | return [[[NSDictionary alloc] initWithContentsOfFile:path] allValues]; 35 | } 36 | 37 | @end -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/CountryManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // CountryManager.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | @interface CountryManager : NSObject 29 | 30 | @property(nonatomic, strong) NSDictionary *countryDictionary; 31 | @property(nonatomic, strong) NSArray *countryCodes; 32 | @property(nonatomic, strong) NSMutableArray *countryNames; 33 | 34 | + (CountryManager *) sharedManager; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /7blur/Sample Project/LiveBlurVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // LiveBlurVC.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "Constants.h" 29 | 30 | @class BLRView; 31 | 32 | @interface LiveBlurVC : UIViewController 33 | 34 | @property(nonatomic, strong) IBOutlet UITableView *tableView; 35 | @property(nonatomic, strong) NSArray *countriesArray; 36 | @property(nonatomic, strong) BLRView *blrView; 37 | @property(nonatomic, assign) ViewDirection viewDirection; 38 | @property(nonatomic, strong) IBOutlet UIBarButtonItem *viewDirectionButton; 39 | 40 | - (IBAction) toggleViewDirection:(id) sender; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /7blur/Sample Project/StaticBlurVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // StaticBlurVC.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "Constants.h" 29 | 30 | @class BLRView; 31 | 32 | @interface StaticBlurVC : UIViewController 33 | 34 | @property(nonatomic, strong) IBOutlet UITableView *tableView; 35 | @property(nonatomic, strong) IBOutlet UIView *blackoutView; 36 | @property(nonatomic, strong) BLRView *blrView; 37 | @property(nonatomic, assign) ViewDirection viewDirection; 38 | @property(nonatomic, strong) IBOutlet UIBarButtonItem *viewDirectionButton; 39 | 40 | - (IBAction) toggleViewDirection:(id) sender; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /7blur/Sample Project/PositionedBlurVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // PositionedBlurVC.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 9/02/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "Constants.h" 29 | 30 | @class BLRView; 31 | 32 | @interface PositionedBlurVC : UIViewController 33 | 34 | @property(nonatomic, strong) IBOutlet UIImageView *imageView; 35 | @property(nonatomic, strong) IBOutlet UIView *backgroundView; 36 | @property(nonatomic, strong) IBOutlet UIView *foregroundView; 37 | @property(nonatomic, strong) BLRView *blrView; 38 | @property(nonatomic, assign) ViewDisplayAction viewDisplayAction; 39 | @property(nonatomic, strong) IBOutlet UIButton *toggleViewButton; 40 | 41 | - (IBAction) toggleView:(id) sender; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /7blur/Sample Project/Cells/CountryCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // CountryCell.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "CountryCell.h" 29 | 30 | @interface CountryCell () 31 | 32 | @end 33 | 34 | @implementation CountryCell 35 | 36 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 37 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 38 | if (self) { 39 | // Initialization code 40 | } 41 | return self; 42 | } 43 | 44 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 45 | [super setSelected:selected animated:animated]; 46 | // Configure the view for the selected state 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/CountryManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // CountryManager.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "CountryManager.h" 29 | 30 | @implementation CountryManager 31 | 32 | static CountryManager *sharedManager = nil; 33 | 34 | + (CountryManager *) sharedManager { 35 | @synchronized (self) { 36 | if (sharedManager == nil) { 37 | sharedManager = [[self alloc] init]; 38 | } 39 | } 40 | 41 | return sharedManager; 42 | } 43 | 44 | - (id) init { 45 | self = [super init]; 46 | 47 | if (self != nil) { 48 | 49 | [self load]; 50 | } 51 | 52 | return self; 53 | } 54 | 55 | - (void) load { 56 | NSString *path = [[NSBundle mainBundle] pathForResource:@"Countries" ofType:@"plist"]; 57 | self.countryDictionary = [[NSDictionary alloc] initWithContentsOfFile:path]; 58 | 59 | self.countryNames = [NSMutableArray array]; 60 | self.countryCodes = [self.countryDictionary allKeys]; 61 | 62 | for (NSString *code in self.countryCodes) { 63 | [self.countryNames addObject:[self.countryDictionary objectForKey:code]]; 64 | } 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /7blur/Sample Project/Cells/CountryCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /7blur/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // AppDelegate.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "AppDelegate.h" 29 | 30 | @implementation AppDelegate 31 | 32 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 33 | { 34 | // Override point for customization after application launch. 35 | return YES; 36 | } 37 | 38 | - (void)applicationWillResignActive:(UIApplication *)application 39 | { 40 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 41 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 42 | } 43 | 44 | - (void)applicationDidEnterBackground:(UIApplication *)application 45 | { 46 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 47 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 48 | } 49 | 50 | - (void)applicationWillEnterForeground:(UIApplication *)application 51 | { 52 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 53 | } 54 | 55 | - (void)applicationDidBecomeActive:(UIApplication *)application 56 | { 57 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 58 | } 59 | 60 | - (void)applicationWillTerminate:(UIApplication *)application 61 | { 62 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /7blur/BLR/BLRView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /7blur/Sample Project/PositionedBlurVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // StaticBlurVC.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "PositionedBlurVC.h" 29 | #import "BLRView.h" 30 | 31 | @interface PositionedBlurVC () 32 | @end 33 | 34 | @implementation PositionedBlurVC 35 | 36 | - (void) viewDidLoad { 37 | [super viewDidLoad]; 38 | 39 | self.toggleViewButton.layer.cornerRadius = 8; 40 | 41 | [self bindAnimation]; 42 | } 43 | 44 | - (NSArray *) imagesForAnimation { 45 | NSMutableArray *images = [NSMutableArray array]; 46 | 47 | for (int i = 1; i < 16; i++) { 48 | [images addObject:[UIImage imageNamed: [NSString stringWithFormat:@"sallie-gardner-300x200-%.2i", i]]]; 49 | } 50 | 51 | return images; 52 | } 53 | 54 | - (void) bindAnimation { 55 | self.imageView.animationImages = [self imagesForAnimation]; 56 | 57 | self.imageView.animationDuration = 1.2f; 58 | self.imageView.animationRepeatCount = 0; 59 | 60 | [self.imageView startAnimating]; 61 | } 62 | 63 | - (IBAction) toggleView:(id) sender { 64 | switch (self.viewDisplayAction) { 65 | case KShouldPresent: { 66 | 67 | //Location point to place BLRView 68 | CGPoint point = CGPointMake(0, 200); 69 | 70 | //Load BLRView with UIView as background content 71 | self.blrView = [BLRView loadWithLocation:point parent:self.backgroundView]; 72 | 73 | //Container foreground frame updated to match BLRView (x, y, w, h) 74 | self.foregroundView.frame = CGRectMake(point.x, point.y, CGRectGetWidth(self.blrView.frame), CGRectGetHeight(self.blrView.frame)); 75 | 76 | //Add BLRView to foreground view 77 | [self.foregroundView addSubview:self.blrView]; 78 | 79 | //Start live real time blur with .2f update interval 80 | [self.blrView blurWithColor:[BLRColorComponents lightEffect] updateInterval:.2f]; 81 | 82 | self.viewDisplayAction = KShouldDismiss; 83 | 84 | break; 85 | } 86 | 87 | case KShouldDismiss: { 88 | 89 | //Remove BLRView 90 | [self.blrView unload]; 91 | 92 | self.viewDisplayAction = KShouldPresent; 93 | 94 | break; 95 | } 96 | 97 | default: 98 | break; 99 | } 100 | } 101 | 102 | - (void) viewWillDisappear:(BOOL) animated { 103 | 104 | //Remove BLRView if not done previously 105 | [self.blrView unload]; 106 | } 107 | 108 | @end 109 | -------------------------------------------------------------------------------- /7blur/BLR/BLRView.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // BLRView.h 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 9/02/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | typedef enum { 29 | KBlurUndefined = 0, 30 | KStaticBlur = 1, 31 | KLiveBlur = 2 32 | } BlurType; 33 | 34 | @class BLRColorComponents; 35 | 36 | /// A UIView subclass that supports live real time and static blurs. See https://github.com/justinmfischer/7blur 37 | /// 38 | @interface BLRView : UIView 39 | 40 | @property(nonatomic, strong) IBOutlet UITextView *textView; 41 | @property(nonatomic, strong) IBOutlet UIView *gripBarView; 42 | 43 | /// Drop down menu style. 44 | /// 45 | /// @param UIView as background content 46 | /// @return A newly created BLRView instance 47 | + (BLRView *) load:(UIView *) view; 48 | 49 | ///Fixed position style. 50 | /// 51 | /// @param Location CGPoint point 52 | /// @param Parent UIView as background content 53 | /// @return A newly created BLRView instance 54 | + (BLRView *) loadWithLocation:(CGPoint) point parent:(UIView *) view; 55 | 56 | ///Remove. 57 | /// 58 | /// @brief Invalidates timers and removes view from superview. 59 | /// @return void 60 | - (void) unload; 61 | 62 | ///Down. 63 | /// 64 | /// @brief Slides down drop down menu into place. 65 | /// @return void 66 | - (void) slideDown; 67 | 68 | ///Up. 69 | /// 70 | /// @brief Slides up drop down menu. 71 | /// @return void 72 | - (void) slideUp; 73 | 74 | ///Static blur. 75 | /// 76 | /// @brief Blur content with static blur. 77 | /// @param BLRColorComponents as blur components 78 | /// @return void 79 | - (void) blurWithColor:(BLRColorComponents *) components; 80 | 81 | //Live real time blur. 82 | /// 83 | /// @brief Start live real time blur with update interval in seconds. 84 | /// @param BLRColorComponents as blur components 85 | /// @param Update interval float as interval for background content updates 86 | /// @return void 87 | - (void) blurWithColor:(BLRColorComponents *) components updateInterval:(float) interval; 88 | 89 | @end 90 | 91 | /// Blur color components. 92 | /// 93 | @interface BLRColorComponents : NSObject 94 | 95 | @property(nonatomic, assign) CGFloat radius; 96 | @property(nonatomic, strong) UIColor *tintColor; 97 | @property(nonatomic, assign) CGFloat saturationDeltaFactor; 98 | @property(nonatomic, strong) UIImage *maskImage; 99 | 100 | ///Light color effect. 101 | /// 102 | + (BLRColorComponents *) lightEffect; 103 | 104 | ///Dark color effect. 105 | /// 106 | + (BLRColorComponents *) darkEffect; 107 | 108 | ///Coral color effect. 109 | /// 110 | + (BLRColorComponents *) coralEffect; 111 | 112 | ///Neon color effect. 113 | /// 114 | + (BLRColorComponents *) neonEffect; 115 | 116 | ///Sky color effect. 117 | /// 118 | + (BLRColorComponents *) skyEffect; 119 | 120 | @end -------------------------------------------------------------------------------- /7blur/Sample Project/LiveBlurVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // LiveBlurVC.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "LiveBlurVC.h" 29 | #import "CountryManager.h" 30 | #import "Utilities.h" 31 | #import "CountryCell.h" 32 | #import "BLRView.h" 33 | 34 | @interface LiveBlurVC () 35 | @end 36 | 37 | @implementation LiveBlurVC 38 | 39 | - (void) viewDidLoad { 40 | [super viewDidLoad]; 41 | 42 | UINib *nib = [UINib nibWithNibName:@"CountryCell" bundle:nil]; 43 | [self.tableView registerNib:nib forCellReuseIdentifier:@"CountryCell"]; 44 | 45 | //Load BLRView with UITableView as background content 46 | self.blrView = [BLRView load:self.tableView]; 47 | 48 | //Add BLRView to main view 49 | [self.view addSubview:self.blrView]; 50 | } 51 | 52 | - (IBAction) toggleViewDirection:(id) sender { 53 | switch (self.viewDirection) { 54 | case KShouldMoveDown: { 55 | 56 | //Start live real time blur with .2f update interval 57 | [self.blrView blurWithColor:[BLRColorComponents lightEffect] updateInterval:.2f]; 58 | 59 | //Slide down - drop down style 60 | [self.blrView slideDown]; 61 | 62 | self.viewDirection = KShouldMoveUp; 63 | self.viewDirectionButton.image = [UIImage imageNamed:@"Up-30x30"]; 64 | 65 | break; 66 | } 67 | 68 | case KShouldMoveUp: { 69 | 70 | //Slide up 71 | [self.blrView slideUp]; 72 | 73 | self.viewDirection = KShouldMoveDown; 74 | self.viewDirectionButton.image = [UIImage imageNamed:@"Down-30x30"]; 75 | 76 | break; 77 | } 78 | 79 | default: 80 | break; 81 | } 82 | } 83 | 84 | - (NSInteger) numberOfSectionsInTableView:(UITableView *) tableView { 85 | return 1; 86 | } 87 | 88 | - (NSInteger) tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger) section { 89 | return [[CountryManager sharedManager].countryCodes count]; 90 | } 91 | 92 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath { 93 | 94 | CountryCell *cell = nil; 95 | 96 | cell = [tableView dequeueReusableCellWithIdentifier:@"CountryCell"]; 97 | 98 | if(cell == nil) { 99 | cell = [[CountryCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CountryCell"]; 100 | } 101 | 102 | cell.countryName.text = [NSString stringWithFormat:@"%@", [[CountryManager sharedManager].countryNames objectAtIndex:indexPath.row]]; 103 | 104 | cell.countryFlag.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", [[CountryManager sharedManager].countryCodes objectAtIndex:indexPath.row]]]; 105 | 106 | return cell; 107 | } 108 | 109 | - (void) viewWillDisappear:(BOOL) animated { 110 | 111 | //Remove BLRView 112 | [self.blrView unload]; 113 | } 114 | 115 | @end 116 | -------------------------------------------------------------------------------- /7blur/Sample Project/StaticBlurVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // StaticBlurVC.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 8/28/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "StaticBlurVC.h" 29 | #import "CountryManager.h" 30 | #import "Utilities.h" 31 | #import "CountryCell.h" 32 | #import "BLRView.h" 33 | 34 | @interface StaticBlurVC () 35 | @end 36 | 37 | @implementation StaticBlurVC 38 | 39 | - (void) viewDidLoad { 40 | [super viewDidLoad]; 41 | 42 | UINib *nib = [UINib nibWithNibName:@"CountryCell" bundle:nil]; 43 | [self.tableView registerNib:nib forCellReuseIdentifier:@"CountryCell"]; 44 | 45 | //Load BLRView with UITableView as background content 46 | self.blrView = [BLRView load:self.tableView]; 47 | 48 | //Change UITextView text color to white 49 | self.blrView.textView.textColor = [UIColor whiteColor]; 50 | 51 | //Add BLRView to main view 52 | [self.view addSubview:self.blrView]; 53 | } 54 | 55 | - (NSInteger) numberOfSectionsInTableView:(UITableView *) tableView { 56 | return 1; 57 | } 58 | 59 | - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section { 60 | return [[CountryManager sharedManager].countryCodes count]; 61 | } 62 | 63 | - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath { 64 | 65 | CountryCell *cell = nil; 66 | 67 | cell = [tableView dequeueReusableCellWithIdentifier:@"CountryCell"]; 68 | 69 | if(cell == nil) { 70 | cell = [[CountryCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CountryCell"]; 71 | } 72 | 73 | cell.countryName.text = [NSString stringWithFormat:@"%@", [[CountryManager sharedManager].countryNames objectAtIndex:indexPath.row]]; 74 | 75 | cell.countryFlag.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", [[CountryManager sharedManager].countryCodes objectAtIndex:indexPath.row]]]; 76 | 77 | return cell; 78 | } 79 | 80 | - (IBAction) toggleViewDirection:(id) sender { 81 | switch (self.viewDirection) { 82 | case KShouldMoveDown: { 83 | 84 | //Stop UITableView : UIScrollView from scrolling 85 | [self.tableView setContentOffset:self.tableView.contentOffset animated:NO]; 86 | 87 | //Show vignette 88 | [UIView animateWithDuration:.2f animations:^{ 89 | self.blackoutView.alpha = .2f; 90 | } completion:^(BOOL finished) { 91 | 92 | }]; 93 | 94 | //Static blur with dark color components 95 | [self.blrView blurWithColor:[BLRColorComponents darkEffect]]; 96 | 97 | //Slide down - drop down style 98 | [self.blrView slideDown]; 99 | 100 | self.viewDirection = KShouldMoveUp; 101 | self.viewDirectionButton.image = [UIImage imageNamed:@"Up-30x30"]; 102 | 103 | break; 104 | } 105 | 106 | case KShouldMoveUp: { 107 | 108 | //Hide vignette 109 | [UIView animateWithDuration:.5f animations:^{ 110 | self.blackoutView.alpha = 0; 111 | } completion:^(BOOL finished) { 112 | 113 | }]; 114 | 115 | //Slide up 116 | [self.blrView slideUp]; 117 | 118 | self.viewDirection = KShouldMoveDown; 119 | self.viewDirectionButton.image = [UIImage imageNamed:@"Down-30x30"]; 120 | 121 | break; 122 | } 123 | 124 | default: 125 | break; 126 | } 127 | } 128 | 129 | - (void) viewWillDisappear:(BOOL) animated { 130 | 131 | //Remove BLRView 132 | [self.blrView unload]; 133 | } 134 | 135 | @end 136 | -------------------------------------------------------------------------------- /7blur/BLR/Categories/UIImage+ImageEffects.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: UIImage+ImageEffects.h 3 | Abstract: This is a category of UIImage that adds methods to apply blur and tint effects to an image. This is the code you’ll want to look out to find out how to use vImage to efficiently calculate a blur. 4 | Version: 1.0 5 | 6 | Version: 1.1 7 | Created by JUSTIN M FISCHER on 9/02/13. 8 | Copyright (c) 2013 Justin M Fischer. All rights reserved. 9 | 10 | Abstract: This category crops and scales image efficiently using vImage prior to applying blur. 11 | 12 | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple 13 | Inc. ("Apple") in consideration of your agreement to the following 14 | terms, and your use, installation, modification or redistribution of 15 | this Apple software constitutes acceptance of these terms. If you do 16 | not agree with these terms, please do not use, install, modify or 17 | redistribute this Apple software. 18 | 19 | In consideration of your agreement to abide by the following terms, and 20 | subject to these terms, Apple grants you a personal, non-exclusive 21 | license, under Apple's copyrights in this original Apple software (the 22 | "Apple Software"), to use, reproduce, modify and redistribute the Apple 23 | Software, with or without modifications, in source and/or binary forms; 24 | provided that if you redistribute the Apple Software in its entirety and 25 | without modifications, you must retain this notice and the following 26 | text and disclaimers in all such redistributions of the Apple Software. 27 | Neither the name, trademarks, service marks or logos of Apple Inc. may 28 | be used to endorse or promote products derived from the Apple Software 29 | without specific prior written permission from Apple. Except as 30 | expressly stated in this notice, no other rights or licenses, express or 31 | implied, are granted by Apple herein, including but not limited to any 32 | patent rights that may be infringed by your derivative works or by other 33 | works in which the Apple Software may be incorporated. 34 | 35 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE 36 | MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION 37 | THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS 38 | FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 39 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 40 | 41 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 42 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 43 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 44 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 45 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 46 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 47 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 48 | POSSIBILITY OF SUCH DAMAGE. 49 | 50 | Copyright (C) 2013 Apple Inc. All Rights Reserved. 51 | 52 | Copyright © 2013 Apple Inc. All rights reserved. 53 | WWDC 2013 License 54 | 55 | NOTE: This Apple Software was supplied by Apple as part of a WWDC 2013 56 | Session. Please refer to the applicable WWDC 2013 Session for further 57 | information. 58 | 59 | IMPORTANT: This Apple software is supplied to you by Apple Inc. 60 | ("Apple") in consideration of your agreement to the following terms, and 61 | your use, installation, modification or redistribution of this Apple 62 | software constitutes acceptance of these terms. If you do not agree with 63 | these terms, please do not use, install, modify or redistribute this 64 | Apple software. 65 | 66 | In consideration of your agreement to abide by the following terms, and 67 | subject to these terms, Apple grants you a non-exclusive license, under 68 | Apple's copyrights in this original Apple software (the "Apple 69 | Software"), to use, reproduce, modify and redistribute the Apple 70 | Software, with or without modifications, in source and/or binary forms; 71 | provided that if you redistribute the Apple Software in its entirety and 72 | without modifications, you must retain this notice and the following 73 | text and disclaimers in all such redistributions of the Apple Software. 74 | Neither the name, trademarks, service marks or logos of Apple Inc. may 75 | be used to endorse or promote products derived from the Apple Software 76 | without specific prior written permission from Apple. Except as 77 | expressly stated in this notice, no other rights or licenses, express or 78 | implied, are granted by Apple herein, including but not limited to any 79 | patent rights that may be infringed by your derivative works or by other 80 | works in which the Apple Software may be incorporated. 81 | 82 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES 83 | NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE 84 | IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR 85 | A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 86 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 87 | 88 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 89 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 90 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 91 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 92 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 93 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 94 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 95 | POSSIBILITY OF SUCH DAMAGE. 96 | 97 | EA1002 98 | 5/3/2013 99 | 100 | JMF 101 | 9/2/2013 102 | */ 103 | 104 | #import 105 | 106 | @interface UIImage (ImageEffects) 107 | 108 | - (UIImage *)applyBlurWithCrop:(CGRect) bounds resize:(CGSize) size blurRadius:(CGFloat) blurRadius tintColor:(UIColor *) tintColor saturationDeltaFactor:(CGFloat) saturationDeltaFactor maskImage:(UIImage *) maskImage; 109 | 110 | @end 111 | -------------------------------------------------------------------------------- /7blur/BLR/BLRView.m: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013 Justin M Fischer 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | // this software and associated documentation files (the "Software"), to deal in 6 | // the Software without restriction, including without limitation the rights to 7 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 8 | // the Software, and to permit persons to whom the Software is furnished to do so, 9 | // subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in all 12 | // copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 16 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 17 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | // 21 | // UBLRView.m 22 | // 7blur 23 | // 24 | // Created by JUSTIN M FISCHER on 9/02/13. 25 | // Copyright (c) 2013 Justin M Fischer. All rights reserved. 26 | // 27 | 28 | #import "BLRView.h" 29 | #import "UIImage+ImageEffects.h" 30 | 31 | @interface BLRView () 32 | 33 | @property(nonatomic, weak) UIView *parent; 34 | @property(nonatomic, assign) CGPoint location; 35 | @property(nonatomic, assign) BlurType blurType; 36 | @property(nonatomic, strong) BLRColorComponents *colorComponents; 37 | @property(nonatomic, strong) IBOutlet UIImageView *backgroundImageView; 38 | @property(nonatomic, strong) dispatch_source_t timer; 39 | 40 | @end 41 | 42 | @implementation BLRView 43 | 44 | - (id) initWithCoder:(NSCoder *) aDecoder { 45 | self = [super initWithCoder:aDecoder]; 46 | 47 | if (self) { 48 | 49 | } 50 | 51 | return self; 52 | } 53 | 54 | + (BLRView *) load:(UIView *) view { 55 | BLRView *blur = [[[NSBundle mainBundle] loadNibNamed:@"BLRView" owner:nil options:nil] objectAtIndex:0]; 56 | 57 | blur.parent = view; 58 | blur.location = CGPointMake(0, 64); 59 | 60 | blur.frame = CGRectMake(blur.location.x, -(blur.frame.size.height + blur.location.y), blur.frame.size.width, blur.frame.size.height); 61 | 62 | return blur; 63 | } 64 | 65 | + (BLRView *) loadWithLocation:(CGPoint) point parent:(UIView *) view { 66 | BLRView *blur = [[[NSBundle mainBundle] loadNibNamed:@"BLRView" owner:nil options:nil] objectAtIndex:0]; 67 | 68 | blur.parent = view; 69 | blur.location = point; 70 | 71 | blur.frame = CGRectMake(0, 0, blur.frame.size.width, blur.frame.size.height); 72 | 73 | return blur; 74 | } 75 | 76 | - (void) awakeFromNib { 77 | self.gripBarView.layer.cornerRadius = 6; 78 | } 79 | 80 | - (void) unload { 81 | if(self.timer != nil) { 82 | 83 | dispatch_source_cancel(self.timer); 84 | self.timer = nil; 85 | } 86 | 87 | [self removeFromSuperview]; 88 | } 89 | 90 | - (void) blurBackground { 91 | UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.parent.frame), CGRectGetHeight(self.parent.frame)), NO, 1); 92 | 93 | //Snapshot finished in 0.051982 seconds. 94 | [self.parent drawViewHierarchyInRect:CGRectMake(0, 0, CGRectGetWidth(self.parent.frame), CGRectGetHeight(self.parent.frame)) afterScreenUpdates:NO]; 95 | 96 | __block UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); 97 | 98 | UIGraphicsEndImageContext(); 99 | 100 | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 101 | 102 | //Blur finished in 0.004884 seconds. 103 | snapshot = [snapshot applyBlurWithCrop:CGRectMake(self.location.x, self.location.y, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)) resize:CGSizeMake(CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)) blurRadius:self.colorComponents.radius tintColor:self.colorComponents.tintColor saturationDeltaFactor:self.colorComponents.saturationDeltaFactor maskImage:self.colorComponents.maskImage]; 104 | 105 | dispatch_sync(dispatch_get_main_queue(), ^{ 106 | self.backgroundImageView.image = snapshot; 107 | }); 108 | }); 109 | } 110 | 111 | - (void) blurWithColor:(BLRColorComponents *) components { 112 | if(self.blurType == KBlurUndefined) { 113 | 114 | self.blurType = KStaticBlur; 115 | self.colorComponents = components; 116 | } 117 | 118 | [self blurBackground]; 119 | } 120 | 121 | - (void) blurWithColor:(BLRColorComponents *) components updateInterval:(float) interval { 122 | self.blurType = KLiveBlur; 123 | self.colorComponents = components; 124 | 125 | self.timer = CreateDispatchTimer(interval * NSEC_PER_SEC, 1ull * NSEC_PER_SEC, dispatch_get_main_queue(), ^{[self blurWithColor:components];}); 126 | } 127 | 128 | dispatch_source_t CreateDispatchTimer(uint64_t interval, uint64_t leeway, dispatch_queue_t queue, dispatch_block_t block) { 129 | 130 | dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); 131 | 132 | if (timer) { 133 | dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval, leeway); 134 | dispatch_source_set_event_handler(timer, block); 135 | 136 | dispatch_resume(timer); 137 | } 138 | 139 | return timer; 140 | } 141 | 142 | - (void) slideDown { 143 | [UIView animateWithDuration:0.25f animations:^{ 144 | 145 | self.frame = CGRectMake(self.location.x, self.location.y, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)); 146 | self.alpha = 1; 147 | 148 | } completion:^(BOOL finished) { 149 | if(self.blurType == KStaticBlur) { 150 | [self blurWithColor:self.colorComponents]; 151 | } 152 | }]; 153 | } 154 | 155 | - (void) slideUp { 156 | if(self.timer != nil) { 157 | 158 | dispatch_source_cancel(self.timer); 159 | self.timer = nil; 160 | } 161 | 162 | [UIView animateWithDuration:0.15f animations:^{ 163 | 164 | self.frame = CGRectMake(self.location.x, -(self.frame.size.height + self.location.y), self.frame.size.width, self.frame.size.height); 165 | self.alpha = 0; 166 | 167 | } completion:^(BOOL finished) { 168 | 169 | }]; 170 | } 171 | 172 | @end 173 | 174 | @interface BLRColorComponents() 175 | @end 176 | 177 | @implementation BLRColorComponents 178 | 179 | + (BLRColorComponents *) lightEffect { 180 | BLRColorComponents *components = [[BLRColorComponents alloc] init]; 181 | 182 | components.radius = 6; 183 | components.tintColor = [UIColor colorWithWhite:.8f alpha:.2f]; 184 | components.saturationDeltaFactor = 1.8f; 185 | components.maskImage = nil; 186 | 187 | return components; 188 | } 189 | 190 | + (BLRColorComponents *) darkEffect { 191 | BLRColorComponents *components = [[BLRColorComponents alloc] init]; 192 | 193 | components.radius = 8; 194 | components.tintColor = [UIColor colorWithRed:0.0f green:0.0 blue:0.0f alpha:.5f]; 195 | components.saturationDeltaFactor = 3.0f; 196 | components.maskImage = nil; 197 | 198 | return components; 199 | } 200 | 201 | + (BLRColorComponents *) coralEffect { 202 | BLRColorComponents *components = [[BLRColorComponents alloc] init]; 203 | 204 | components.radius = 8; 205 | components.tintColor = [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:.1f]; 206 | components.saturationDeltaFactor = 3.0f; 207 | components.maskImage = nil; 208 | 209 | return components; 210 | } 211 | 212 | + (BLRColorComponents *) neonEffect { 213 | BLRColorComponents *components = [[BLRColorComponents alloc] init]; 214 | 215 | components.radius = 8; 216 | components.tintColor = [UIColor colorWithRed:0.0f green:1.0f blue:0.0f alpha:.1f]; 217 | components.saturationDeltaFactor = 3.0f; 218 | components.maskImage = nil; 219 | 220 | return components; 221 | } 222 | 223 | + (BLRColorComponents *) skyEffect { 224 | BLRColorComponents *components = [[BLRColorComponents alloc] init]; 225 | 226 | components.radius = 8; 227 | components.tintColor = [UIColor colorWithRed:0.0f green:0.0f blue:1.0f alpha:.1f]; 228 | components.saturationDeltaFactor = 3.0f; 229 | components.maskImage = nil; 230 | 231 | return components; 232 | } 233 | 234 | // ... 235 | 236 | @end 237 | -------------------------------------------------------------------------------- /7blur/Sample Project/Sample Data/Countries.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AC 6 | Ascension Island 7 | AD 8 | Andorra 9 | AE 10 | United Arab Emirates 11 | AF 12 | Afghanistan 13 | AG 14 | Antigua & Barbuda 15 | AI 16 | Anguilla 17 | AL 18 | Albania 19 | AM 20 | Armenia 21 | AN 22 | Netherlands Antilles 23 | AO 24 | Angola 25 | AQ 26 | Antarctica 27 | AR 28 | Argentina 29 | AS 30 | American Samoa 31 | AT 32 | Austria 33 | AU 34 | Australia 35 | AW 36 | Aruba 37 | AX 38 | Aland Islands 39 | AZ 40 | Azerbaijan 41 | BA 42 | Bosnia & Herzegovina 43 | BB 44 | Barbados 45 | BD 46 | Bangladesh 47 | BE 48 | Belgium 49 | BF 50 | Burkina Faso 51 | BG 52 | Bulgaria 53 | BH 54 | Bahrain 55 | BI 56 | Burundi 57 | BJ 58 | Benin 59 | BM 60 | Bermuda 61 | BN 62 | Brunei Darussalam 63 | BO 64 | Bolivia 65 | BR 66 | Brazil 67 | BS 68 | Bahamas 69 | BT 70 | Bhutan 71 | BV 72 | Bouvet Island 73 | BW 74 | Botswana 75 | BY 76 | Belarus 77 | BZ 78 | Belize 79 | CA 80 | Canada 81 | CC 82 | Cocos (Keeling) Islands 83 | CD 84 | Congo, Democratic Republic 85 | CF 86 | Central African Republic 87 | CG 88 | Congo 89 | CH 90 | Switzerland 91 | CI 92 | Cote D'Ivoire (Ivory Coast) 93 | CK 94 | Cook Islands 95 | CL 96 | Chile 97 | CM 98 | Cameroon 99 | CN 100 | China 101 | CO 102 | Colombia 103 | CR 104 | Costa Rica 105 | CU 106 | Cuba 107 | CV 108 | Cape Verde 109 | CX 110 | Christmas Island 111 | CY 112 | Cyprus 113 | CZ 114 | Czech Republic 115 | DE 116 | Germany 117 | DJ 118 | Djibouti 119 | DK 120 | Denmark 121 | DM 122 | Dominica 123 | DO 124 | Dominican Republic 125 | DZ 126 | Algeria 127 | EC 128 | Ecuador 129 | EE 130 | Estonia 131 | EG 132 | Egypt 133 | EH 134 | Western Sahara 135 | ER 136 | Eritrea 137 | ES 138 | Spain 139 | ET 140 | Ethiopia 141 | FI 142 | Finland 143 | FJ 144 | Fiji 145 | FK 146 | Falkland Islands (Malvinas) 147 | FM 148 | Micronesia 149 | FO 150 | Faroe Islands 151 | FR 152 | France 153 | GA 154 | Gabon 155 | GB 156 | United Kingdom 157 | GD 158 | Grenada 159 | GE 160 | Georgia 161 | GF 162 | French Guiana 163 | GG 164 | Guernsey 165 | GH 166 | Ghana 167 | GI 168 | Gibraltar 169 | GL 170 | Greenland 171 | GM 172 | Gambia 173 | GN 174 | Guinea 175 | GP 176 | Guadeloupe 177 | GQ 178 | Equatorial Guinea 179 | GR 180 | Greece 181 | GS 182 | South Georgia and South Sandwich 183 | GT 184 | Guatemala 185 | GU 186 | Guam 187 | GW 188 | Guinea-Bissau 189 | GY 190 | Guyana 191 | HK 192 | Hong Kong 193 | HM 194 | Heard and McDonald Islands 195 | HN 196 | Honduras 197 | HR 198 | Croatia 199 | HT 200 | Haiti 201 | HU 202 | Hungary 203 | ID 204 | Indonesia 205 | IE 206 | Ireland 207 | IL 208 | Israel 209 | IM 210 | Isle of Man 211 | IN 212 | India 213 | IO 214 | British Indian Ocean Territory 215 | IQ 216 | Iraq 217 | IR 218 | Iran 219 | IS 220 | Iceland 221 | IT 222 | Italy 223 | JE 224 | Jersey 225 | JM 226 | Jamaica 227 | JO 228 | Jordan 229 | JP 230 | Japan 231 | KE 232 | Kenya 233 | KG 234 | Kyrgyzstan 235 | KH 236 | Cambodia 237 | KI 238 | Kiribati 239 | KM 240 | Comoros 241 | KN 242 | Saint Kitts & Nevis 243 | KP 244 | North Korea 245 | KR 246 | South Korea 247 | KW 248 | Kuwait 249 | KY 250 | Cayman Islands 251 | KZ 252 | Kazakhstan 253 | LA 254 | Laos 255 | LB 256 | Lebanon 257 | LC 258 | Saint Lucia 259 | LI 260 | Liechtenstein 261 | LK 262 | Sri Lanka 263 | LR 264 | Liberia 265 | LS 266 | Lesotho 267 | LT 268 | Lithuania 269 | LU 270 | Luxembourg 271 | LV 272 | Latvia 273 | LY 274 | Libya 275 | MA 276 | Morocco 277 | MC 278 | Monaco 279 | MD 280 | Moldova 281 | ME 282 | Montenegro 283 | MF 284 | Saint Martin (French) 285 | MG 286 | Madagascar 287 | MH 288 | Marshall Islands 289 | MK 290 | Macedonia 291 | ML 292 | Mali 293 | MM 294 | Myanmar (Burma) 295 | MN 296 | Mongolia 297 | MO 298 | Macau 299 | MP 300 | Northern Mariana Islands 301 | MQ 302 | Martinique 303 | MR 304 | Mauritania 305 | MS 306 | Montserrat 307 | MT 308 | Malta 309 | MU 310 | Mauritius 311 | MV 312 | Maldives 313 | MW 314 | Malawi 315 | MX 316 | Mexico 317 | MY 318 | Malaysia 319 | MZ 320 | Mozambique 321 | NA 322 | Namibia 323 | NC 324 | New Caledonia 325 | NE 326 | Niger 327 | NF 328 | Norfolk Island 329 | NG 330 | Nigeria 331 | NI 332 | Nicaragua 333 | NO 334 | Norway 335 | NP 336 | Nepal 337 | NR 338 | Nauru 339 | NU 340 | Niue 341 | NZ 342 | New Zealand 343 | OM 344 | Oman 345 | PA 346 | Panama 347 | PE 348 | Peru 349 | PF 350 | Tahiti (French Polinesia) 351 | PG 352 | Papua New Guinea 353 | PH 354 | Philippines 355 | PK 356 | Pakistan 357 | PL 358 | Poland 359 | PM 360 | Saint Pierre and Miquelon 361 | PN 362 | Pitcairn 363 | PR 364 | Puerto Rico 365 | PS 366 | Palestinian Territory, Occupied 367 | PT 368 | Portugal 369 | PW 370 | Palau 371 | PY 372 | Paraguay 373 | QA 374 | Qatar 375 | RE 376 | Reunion 377 | RO 378 | Romania 379 | RS 380 | Serbia (Yugoslavia) 381 | RU 382 | Russian Federation 383 | RW 384 | Rwanda 385 | SA 386 | Saudi Arabia 387 | SB 388 | Solomon Islands 389 | SC 390 | Seychelles 391 | SD 392 | Sudan 393 | SS 394 | South Sudan 395 | SE 396 | Sweden 397 | SG 398 | Singapore 399 | SH 400 | Saint Helena 401 | SI 402 | Slovenia 403 | SJ 404 | Svalbard and Jan Mayen Islands 405 | SK 406 | Slovak Republic 407 | SL 408 | Sierra Leone 409 | SM 410 | San Marino 411 | SN 412 | Senegal 413 | SO 414 | Somalia 415 | SR 416 | Suriname 417 | ST 418 | Sao Tome & Principe 419 | SV 420 | El Salvador 421 | SY 422 | Syria 423 | SZ 424 | Swaziland 425 | TC 426 | Turks and Caicos Islands 427 | TD 428 | Chad 429 | TF 430 | French Southern Territories 431 | TG 432 | Togo 433 | TH 434 | Thailand 435 | TJ 436 | Tajikistan 437 | TK 438 | Tokelau 439 | TM 440 | Turkmenistan 441 | TN 442 | Tunisia 443 | TO 444 | Tonga 445 | TL 446 | East Timor 447 | TR 448 | Turkey 449 | TT 450 | Trinidad & Tobago 451 | TV 452 | Tuvalu 453 | TW 454 | Taiwan 455 | TZ 456 | Tanzania 457 | UA 458 | Ukraine 459 | UG 460 | Uganda 461 | UM 462 | United States Minor Islands 463 | US 464 | United States 465 | UY 466 | Uruguay 467 | UZ 468 | Uzbekistan 469 | VA 470 | Vatican City 471 | VC 472 | Saint Vincent & the Grenadines 473 | VE 474 | Venezuela 475 | VG 476 | British Virgin Islands 477 | VI 478 | Virgin Islands (US) 479 | VN 480 | Viet Nam 481 | VU 482 | Vanuatu 483 | WF 484 | Wallis and Futuna 485 | WS 486 | Samoa 487 | XK 488 | Kosovo 489 | YE 490 | Yemen 491 | YT 492 | Mayotte 493 | YU 494 | Serbia and Montenegro 495 | ZA 496 | South Africa 497 | ZM 498 | Zambia 499 | ZW 500 | Zimbabwe 501 | 502 | 503 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-overview.gif) 2 | 3 | ```HTML 4 | Sample project .gif (4.4MB) 5 | ``` 6 | 7 | ## Overview 8 | ![7blur](http://www.funtouchapps.com/github/7blur/images/Icon-60x60.png) IOS 7 introduces a new efficient snapshot API. The 7blur project builds on these frameworks to produce Control Center and Notification Center like blur effects enforcing the 3rd design pattern of depth for iOS 7 apps. It should be noted that iOS 7 has reached GM (11A465) status. This specific API was discussed publicly at WWDC 2013 and 7blur can be used freely and improved by the community. 9 | 10 | 7blur supports both two styles of blur, two styles of positioning and many blur color components. 11 | 12 | * **Supported blurs** 13 | * Live real time blur 14 | * Static blur 15 | 16 | * **Supported positioning** 17 | * Drop down menu style 18 | * Fixed position 19 | 20 | * **Blur color components** 21 | * Blur radius 22 | * Tint color 23 | * Saturation delta factor 24 | * Mask image 25 | 26 | By combining the attributes above one can produce many desired visual effects and human interfaces. 7blur only has a handful of API tasks and the view content can be visually edited in Interface Builder for productivity. The next section will go over the API followed by common use cases contained in the sample project. Let's get started! 27 | 28 | ## Getting Started 29 | 7blur only requires _**iOS 7**_ and _**Xcode 5**_. Integration is simple and entails 3 tasks. **(1)** Loading the `BLRView` and possibly sliding it into place for drop down menu style, **(2)** blurring it with color components and lastly **(3)** unloading the `BLRView` to remove. The API is listed below for reference and the Xcode 5 project contains structured comments (Doxygen). 30 | 31 | ## API 32 | 33 | ```Objective-C 34 | BLRView.h 35 | 36 | //Drop down menu style 37 | + (BLRView *) load:(UIView *) view; 38 | 39 | //Fixed position style 40 | + (BLRView *) loadWithLocation:(CGPoint) point parent:(UIView *) view; 41 | 42 | //Remove 43 | - (void) unload; 44 | 45 | //Down 46 | - (void) slideDown; 47 | 48 | //Up 49 | - (void) slideUp; 50 | 51 | //Static blur 52 | - (void) blurWithColor:(BLRColorComponents *) components; 53 | 54 | //Live real time blur 55 | - (void) blurWithColor:(BLRColorComponents *) components updateInterval:(float) interval; 56 | ```` 57 | 58 | ## Code : Sample Project 59 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-home.png) 60 | 61 | The sample Xcode 5 project contains **(3)** common iOS 7 use cases and supports in-call status bar, iPhone 4" and 3.5" retina devices. 62 | 63 | ## 1. Live Real Time Blur 64 | This is an example of the drop down menu style live real time blur. Background content is blurred in real time behind the foreground. 65 | 66 | ```Objective-C 67 | LiveBlurVC.m 68 | 69 | - (void) viewDidLoad { 70 | [super viewDidLoad]; 71 | 72 | ... 73 | 74 | //Load BLRView with UITableView as background content 75 | self.blrView = [BLRView load:self.tableView]; 76 | 77 | //Add BLRView to main view 78 | [self.view addSubview:self.blrView]; 79 | } 80 | 81 | - (IBAction) toggleViewDirection:(id) sender { 82 | switch (self.viewDirection) { 83 | case KShouldMoveDown: { 84 | 85 | //Start live real time blur with .2f update interval 86 | [self.blrView blurWithColor:[BLRColorComponents lightEffect] updateInterval:.2f]; 87 | 88 | //Slide down - drop down style 89 | [self.blrView slideDown]; 90 | 91 | ... 92 | } 93 | 94 | case KShouldMoveUp: { 95 | 96 | //Slide up 97 | [self.blrView slideUp]; 98 | 99 | ... 100 | } 101 | 102 | ... 103 | } 104 | } 105 | 106 | ```` 107 | 108 | ## 2. Static Blur 109 | Similar to the example above but this version stops the `UITableView` from scrolling, fades in a vignette and then drops down a static blurred view. Background content is blurred using a dark color behind the foreground while touch events are disable. 110 | 111 | ```Objective-C 112 | StaticBlurVC.m 113 | 114 | - (void) viewDidLoad { 115 | [super viewDidLoad]; 116 | 117 | ... 118 | 119 | //Load BLRView with UITableView as background content 120 | self.blrView = [BLRView load:self.tableView]; 121 | 122 | ... 123 | 124 | //Add BLRView to main view 125 | [self.view addSubview:self.blrView]; 126 | } 127 | 128 | - (IBAction) toggleViewDirection:(id) sender { 129 | switch (self.viewDirection) { 130 | case KShouldMoveDown: { 131 | 132 | //Stop UITableView : UIScrollView from scrolling 133 | [self.tableView setContentOffset:self.tableView.contentOffset animated:NO]; 134 | 135 | //Show vignette 136 | [UIView animateWithDuration:.2f animations:^{ 137 | self.blackoutView.alpha = .2f; 138 | } completion:^(BOOL finished) { 139 | 140 | }]; 141 | 142 | //Static blur with dark color components 143 | [self.blrView blurWithColor:[BLRColorComponents darkEffect]]; 144 | 145 | //Slide down - drop down style 146 | [self.blrView slideDown]; 147 | 148 | ... 149 | } 150 | 151 | case KShouldMoveUp: { 152 | 153 | //Hide vignette 154 | [UIView animateWithDuration:.5f animations:^{ 155 | self.blackoutView.alpha = 0; 156 | } completion:^(BOOL finished) { 157 | 158 | }]; 159 | 160 | //Slide up 161 | [self.blrView slideUp]; 162 | 163 | ... 164 | } 165 | 166 | ... 167 | } 168 | } 169 | 170 | ```` 171 | 172 | ## 3. Live Positioned Blur 173 | The final example differs from the previous two by supporting view positioning inside a subview. 174 | 175 | ```Objective-C 176 | PositionedBlurVC.m 177 | 178 | - (IBAction) toggleView:(id) sender { 179 | switch (self.viewDisplayAction) { 180 | case KShouldPresent: { 181 | 182 | //Location point to place BLRView 183 | CGPoint point = CGPointMake(0, 200); 184 | 185 | //Load BLRView with UIView as background content 186 | self.blrView = [BLRView loadWithLocation:point parent:self.backgroundView]; 187 | 188 | //Container foreground frame updated to match BLRView (x, y, w, h) 189 | self.foregroundView.frame = CGRectMake(point.x, point.y, CGRectGetWidth(self.blrView.frame), CGRectGetHeight(self.blrView.frame)); 190 | 191 | //Add BLRView to foreground view 192 | [self.foregroundView addSubview:self.blrView]; 193 | 194 | //Start live real time blur with .2f update interval 195 | [self.blrView blurWithColor:[BLRColorComponents lightEffect] updateInterval:.2f]; 196 | 197 | ... 198 | } 199 | 200 | case KShouldDismiss: { 201 | 202 | //Remove BLRView 203 | [self.blrView unload]; 204 | 205 | ... 206 | } 207 | 208 | ... 209 | } 210 | } 211 | 212 | ```` 213 | 214 | ### Unloading 215 | All examples unload or remove `BLRView` from the view heirarchy. 216 | 217 | ```Objective-C 218 | - (void) viewWillDisappear:(BOOL) animated { 219 | 220 | //Remove BLRView if not done previously 221 | [self.blrView unload]; 222 | } 223 | ```` 224 | 225 | ## Interface Builder 226 | 7blur can be customized for many use cases and visually edited in Interface Builder for productivity. This promotes the MVC design pattern and increases productivity. One could also subclass for further reuse. 227 | 228 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-interfacebuilder.gif) 229 | 230 | ## Performance and Implementation Details 231 | 232 | 7blur is efficient for static blurs and live or real time blur perform averagely. One of the intentions about opening this project up to the community is to improve this. Before making these improvements lets discuss how 7blur works. 233 | 234 | First **(1)** 7blur takes a snapshot using the new iOS 7 `UIView` (UISnapshotting) category `drawViewHierarchyInRect:afterScreenUpdates:`. Apple in [WWDC 2013 - Session 226](http://devstreaming.apple.com/videos/wwdc/2013/226xbx5xinmlvbdabxux9k3kt/226/226.pdf) mentioned that this is the preferred method for graphical effects and is fast. API renamed in seed 2 from `snapshotView:`. 235 | 236 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-WWDC-226.png) 237 | 238 | Pending screen updates are discarded for performance and live snapshots. 239 | 240 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-1.png) 241 | 242 | Original - 320x568 243 | 244 | Second **(2)** 7blur grabs the new snapshot image from the graphics context at x1 point scale and crops the background snapshot from the `BLRView` frame attributes. The sample project has a `BLRView` with the following dimensions 320x200. 245 | 246 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-2.png) 247 | 248 | Cropped - 320x200 249 | 250 | Third **(3)** the cropped snapshot is re-sized down by a scale factor of x4. 251 | 252 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-3.png) 253 | 254 | Re-sized - 80x50 255 | 256 | Forth **(4)** the scaled down image is applied the blur effect using a modified version of Apple’s `UIImage+ImageEffects` `UIImage` categories. The blur operation is further improved using the smaller image size from the previous step. Methods in this category are fast and include the following vImage functions from the _**Accelerate.framework**_ 257 | 258 | * vImageScale_ARGB8888 **_(scale)_** 259 | * vImageBoxConvolve_ARGB8888 **_(blur)_** 260 | * vImageMatrixMultiply_ARGB8888 **_(saturation)_** 261 | 262 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-4a.png) 263 | 264 | Blur applied - 80x50 265 | 266 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-4b.png) 267 | 268 | Blur scaled up by UIImageView default contentMode - 320x200 269 | 270 | Lastly **(5)** the blurred snapshot is assigned to the `backgroundImageView` property of `BLRView` and the default `contentMode` will scale it back up and retain the aspect ratio. 271 | 272 | ![7blur](http://www.funtouchapps.com/github/7blur/images/7blur-5.png) 273 | 274 | Final - 320x568 275 | 276 | ### Threading 277 | 278 | The snapshot must occur on the main thread while the crop, re-size and blur operations are off loaded to a background global queue. These operations are fast thanks to the _**Accelerate.framework**_. Once complete the UI changes are synchronized on the main run loop. Low level GCD dispatch timers are used in favor of `NSTimer` for live real time blur implementation. On iOS, `NSTimer` events are suppressed during certain cocoa touch events such as `UIScrollView` scrolling as an example. By using GCD dispatch timers live blur effects can be achieved even during such events. `CADisplayLink` in `NSRunLoopCommonModes` is another good option. 279 | 280 | ### What About Apple? 281 | 282 | Apple’s live burs in the Control Center, Notification Center, status bar, under keyboards and in other views on iOS 7 are smooth and efficient. This is because UIKit is built on top of OpenGL. Apple has private APIs that can listen for child re-drawing cycles thus eliminating the need for inefficient polling. The sample project incurs resources for live real time blurs even when the background content has not changed or been invalidated. Apple does not have to pay this tax. 283 | 284 | Additionally, Apple's blur effects are implemented in hardware. Even using the _**Accelerate.framework**_ vImage processing is still a hybrid CPU/GPU implementation. While these limitations do exist there is room for the open source community to improve projects like 7blur. Please fork and improve. 285 | 286 | ## History 287 | * Initial private (NDA) release : _8/28/2013_ 288 | * Initial public release 1.0.0 : _9/10/2013_ 289 | 290 | ## Copyright and Software Licenses 291 | * UIImage Image Effects Category Methods : _Apple, Inc._ 292 | * Eadweard Muybridge "Sallie Gardner at a Gallop" : _Palo Alto, CA 1878_ 293 | * Royalty Free F L A G S : _Naaty Design_ 294 | * [http://www.content-pack.com/category/freebies/world-flags/](http://www.content-pack.com/category/freebies/world-flags/) 295 | 296 | The MIT License (MIT) 297 | 298 | Copyright (c) 2013 Justin M Fischer 299 | 300 | Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: 301 | The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software. 302 | 303 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. 304 | 305 | ## Contact 306 | * Justin M Fischer : _justinmfischer@gmail.com_ 307 | 308 | ## Links 309 | * [iOS 7 UI Transition Guide](https://developer.apple.com/library/etc/redirect/WWDR/iOSUITransitionGuide) 310 | * [iOS Human Interface Guidelines](https://developer.apple.com/library/etc/redirect/WWDR/iOSHIG) 311 | 312 | [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/6873d2b258da92b5313614234ef26fde "githalytics.com")](http://githalytics.com/justinmfischer/7blur) 313 | -------------------------------------------------------------------------------- /7blur/BLR/Categories/UIImage+ImageEffects.m: -------------------------------------------------------------------------------- 1 | /* 2 | File: UIImage+ImageEffects.m 3 | Abstract: This is a category of UIImage that adds methods to apply blur and tint effects to an image. This is the code you’ll want to look out to find out how to use vImage to efficiently calculate a blur. 4 | Version: 1.0 5 | 6 | Version: 1.1 7 | Created by JUSTIN M FISCHER on 9/02/13. 8 | Copyright (c) 2013 Justin M Fischer. All rights reserved. 9 | 10 | Abstract: This category crops and scales image efficiently using vImage prior to applying blur. 11 | 12 | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple 13 | Inc. ("Apple") in consideration of your agreement to the following 14 | terms, and your use, installation, modification or redistribution of 15 | this Apple software constitutes acceptance of these terms. If you do 16 | not agree with these terms, please do not use, install, modify or 17 | redistribute this Apple software. 18 | 19 | In consideration of your agreement to abide by the following terms, and 20 | subject to these terms, Apple grants you a personal, non-exclusive 21 | license, under Apple's copyrights in this original Apple software (the 22 | "Apple Software"), to use, reproduce, modify and redistribute the Apple 23 | Software, with or without modifications, in source and/or binary forms; 24 | provided that if you redistribute the Apple Software in its entirety and 25 | without modifications, you must retain this notice and the following 26 | text and disclaimers in all such redistributions of the Apple Software. 27 | Neither the name, trademarks, service marks or logos of Apple Inc. may 28 | be used to endorse or promote products derived from the Apple Software 29 | without specific prior written permission from Apple. Except as 30 | expressly stated in this notice, no other rights or licenses, express or 31 | implied, are granted by Apple herein, including but not limited to any 32 | patent rights that may be infringed by your derivative works or by other 33 | works in which the Apple Software may be incorporated. 34 | 35 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE 36 | MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION 37 | THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS 38 | FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 39 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 40 | 41 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 42 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 43 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 44 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 45 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 46 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 47 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 48 | POSSIBILITY OF SUCH DAMAGE. 49 | 50 | Copyright (C) 2013 Apple Inc. All Rights Reserved. 51 | 52 | Copyright © 2013 Apple Inc. All rights reserved. 53 | WWDC 2013 License 54 | 55 | NOTE: This Apple Software was supplied by Apple as part of a WWDC 2013 56 | Session. Please refer to the applicable WWDC 2013 Session for further 57 | information. 58 | 59 | IMPORTANT: This Apple software is supplied to you by Apple Inc. 60 | ("Apple") in consideration of your agreement to the following terms, and 61 | your use, installation, modification or redistribution of this Apple 62 | software constitutes acceptance of these terms. If you do not agree with 63 | these terms, please do not use, install, modify or redistribute this 64 | Apple software. 65 | 66 | In consideration of your agreement to abide by the following terms, and 67 | subject to these terms, Apple grants you a non-exclusive license, under 68 | Apple's copyrights in this original Apple software (the "Apple 69 | Software"), to use, reproduce, modify and redistribute the Apple 70 | Software, with or without modifications, in source and/or binary forms; 71 | provided that if you redistribute the Apple Software in its entirety and 72 | without modifications, you must retain this notice and the following 73 | text and disclaimers in all such redistributions of the Apple Software. 74 | Neither the name, trademarks, service marks or logos of Apple Inc. may 75 | be used to endorse or promote products derived from the Apple Software 76 | without specific prior written permission from Apple. Except as 77 | expressly stated in this notice, no other rights or licenses, express or 78 | implied, are granted by Apple herein, including but not limited to any 79 | patent rights that may be infringed by your derivative works or by other 80 | works in which the Apple Software may be incorporated. 81 | 82 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES 83 | NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE 84 | IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR 85 | A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 86 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 87 | 88 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 89 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 90 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 91 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 92 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 93 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 94 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 95 | POSSIBILITY OF SUCH DAMAGE. 96 | 97 | EA1002 98 | 5/3/2013 99 | 100 | JMF 101 | 9/2/2013 102 | */ 103 | 104 | #import "UIImage+ImageEffects.h" 105 | #import 106 | 107 | #define scaleDownFactor 4 108 | 109 | @implementation UIImage (ImageEffects) 110 | 111 | - (UIImage *)applyBlurWithCrop:(CGRect) bounds resize:(CGSize) size blurRadius:(CGFloat) blurRadius tintColor:(UIColor *) tintColor saturationDeltaFactor:(CGFloat) saturationDeltaFactor maskImage:(UIImage *) maskImage { 112 | 113 | if (self.size.width < 1 || self.size.height < 1) { 114 | NSLog (@"*** error: invalid size: (%.2f x %.2f). Both dimensions must be >= 1: %@", self.size.width, self.size.height, self); 115 | return nil; 116 | } 117 | 118 | if (!self.CGImage) { 119 | NSLog (@"*** error: image must be backed by a CGImage: %@", self); 120 | return nil; 121 | } 122 | 123 | if (maskImage && !maskImage.CGImage) { 124 | NSLog (@"*** error: maskImage must be backed by a CGImage: %@", maskImage); 125 | return nil; 126 | } 127 | 128 | //Crop 129 | UIImage *outputImage = nil; 130 | 131 | CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds); 132 | outputImage = [UIImage imageWithCGImage:imageRef]; 133 | 134 | CGImageRelease(imageRef); 135 | 136 | //Re-Size 137 | CGImageRef sourceRef = [outputImage CGImage]; 138 | NSUInteger sourceWidth = CGImageGetWidth(sourceRef); 139 | NSUInteger sourceHeight = CGImageGetHeight(sourceRef); 140 | 141 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 142 | 143 | unsigned char *sourceData = (unsigned char*) calloc(sourceHeight * sourceWidth * 4, sizeof(unsigned char)); 144 | 145 | NSUInteger bytesPerPixel = 4; 146 | NSUInteger sourceBytesPerRow = bytesPerPixel * sourceWidth; 147 | NSUInteger bitsPerComponent = 8; 148 | 149 | CGContextRef context = CGBitmapContextCreate(sourceData, sourceWidth, sourceHeight, bitsPerComponent, sourceBytesPerRow, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big); 150 | 151 | CGContextDrawImage(context, CGRectMake(0, 0, sourceWidth, sourceHeight), sourceRef); 152 | CGContextRelease(context); 153 | 154 | NSUInteger destWidth = (NSUInteger) size.width / scaleDownFactor; 155 | NSUInteger destHeight = (NSUInteger) size.height / scaleDownFactor; 156 | NSUInteger destBytesPerRow = bytesPerPixel * destWidth; 157 | 158 | unsigned char *destData = (unsigned char*) calloc(destHeight * destWidth * 4, sizeof(unsigned char)); 159 | 160 | vImage_Buffer src = { 161 | .data = sourceData, 162 | .height = sourceHeight, 163 | .width = sourceWidth, 164 | .rowBytes = sourceBytesPerRow 165 | }; 166 | 167 | vImage_Buffer dest = { 168 | .data = destData, 169 | .height = destHeight, 170 | .width = destWidth, 171 | .rowBytes = destBytesPerRow 172 | }; 173 | 174 | vImageScale_ARGB8888 (&src, &dest, NULL, kvImageNoInterpolation); 175 | 176 | free(sourceData); 177 | 178 | CGContextRef destContext = CGBitmapContextCreate(destData, destWidth, destHeight, bitsPerComponent, destBytesPerRow, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big); 179 | 180 | CGImageRef destRef = CGBitmapContextCreateImage(destContext); 181 | 182 | outputImage = [UIImage imageWithCGImage:destRef]; 183 | 184 | CGImageRelease(destRef); 185 | 186 | CGColorSpaceRelease(colorSpace); 187 | CGContextRelease(destContext); 188 | 189 | free(destData); 190 | 191 | //Blur 192 | CGRect imageRect = { CGPointZero, outputImage.size }; 193 | 194 | BOOL hasBlur = blurRadius > __FLT_EPSILON__; 195 | BOOL hasSaturationChange = fabs(saturationDeltaFactor - 1.) > __FLT_EPSILON__; 196 | 197 | if (hasBlur || hasSaturationChange) { 198 | 199 | UIGraphicsBeginImageContextWithOptions(outputImage.size, NO, 1); 200 | 201 | CGContextRef effectInContext = UIGraphicsGetCurrentContext(); 202 | 203 | CGContextScaleCTM(effectInContext, 1.0, -1.0); 204 | CGContextTranslateCTM(effectInContext, 0, -outputImage.size.height); 205 | CGContextDrawImage(effectInContext, imageRect, outputImage.CGImage); 206 | 207 | vImage_Buffer effectInBuffer; 208 | 209 | effectInBuffer.data = CGBitmapContextGetData(effectInContext); 210 | effectInBuffer.width = CGBitmapContextGetWidth(effectInContext); 211 | effectInBuffer.height = CGBitmapContextGetHeight(effectInContext); 212 | effectInBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectInContext); 213 | 214 | UIGraphicsBeginImageContextWithOptions(outputImage.size, NO, 1); 215 | 216 | CGContextRef effectOutContext = UIGraphicsGetCurrentContext(); 217 | vImage_Buffer effectOutBuffer; 218 | 219 | effectOutBuffer.data = CGBitmapContextGetData(effectOutContext); 220 | effectOutBuffer.width = CGBitmapContextGetWidth(effectOutContext); 221 | effectOutBuffer.height = CGBitmapContextGetHeight(effectOutContext); 222 | effectOutBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectOutContext); 223 | 224 | if (hasBlur) { 225 | CGFloat inputRadius = blurRadius * 1; 226 | NSUInteger radius = floor(inputRadius * 3. * sqrt(2 * M_PI) / 4 + 0.5); 227 | 228 | if (radius % 2 != 1) { 229 | radius += 1; 230 | } 231 | 232 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend); 233 | vImageBoxConvolve_ARGB8888(&effectOutBuffer, &effectInBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend); 234 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend); 235 | } 236 | 237 | BOOL effectImageBuffersAreSwapped = NO; 238 | 239 | if (hasSaturationChange) { 240 | 241 | CGFloat s = saturationDeltaFactor; 242 | CGFloat floatingPointSaturationMatrix[] = { 243 | 0.0722 + 0.9278 * s, 0.0722 - 0.0722 * s, 0.0722 - 0.0722 * s, 0, 244 | 0.7152 - 0.7152 * s, 0.7152 + 0.2848 * s, 0.7152 - 0.7152 * s, 0, 245 | 0.2126 - 0.2126 * s, 0.2126 - 0.2126 * s, 0.2126 + 0.7873 * s, 0, 246 | 0, 0, 0, 1, 247 | }; 248 | 249 | const int32_t divisor = 256; 250 | NSUInteger matrixSize = sizeof(floatingPointSaturationMatrix)/sizeof(floatingPointSaturationMatrix[0]); 251 | int16_t saturationMatrix[matrixSize]; 252 | 253 | for (NSUInteger i = 0; i < matrixSize; ++i) { 254 | saturationMatrix[i] = (int16_t)roundf(floatingPointSaturationMatrix[i] * divisor); 255 | } 256 | 257 | if (hasBlur) { 258 | vImageMatrixMultiply_ARGB8888(&effectOutBuffer, &effectInBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags); 259 | effectImageBuffersAreSwapped = YES; 260 | } else { 261 | vImageMatrixMultiply_ARGB8888(&effectInBuffer, &effectOutBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags); 262 | } 263 | } 264 | 265 | if (!effectImageBuffersAreSwapped) 266 | outputImage = UIGraphicsGetImageFromCurrentImageContext(); 267 | UIGraphicsEndImageContext(); 268 | 269 | if (effectImageBuffersAreSwapped) 270 | outputImage = UIGraphicsGetImageFromCurrentImageContext(); 271 | UIGraphicsEndImageContext(); 272 | } 273 | 274 | UIGraphicsBeginImageContextWithOptions(outputImage.size, NO, 1); 275 | CGContextRef outputContext = UIGraphicsGetCurrentContext(); 276 | CGContextScaleCTM(outputContext, 1.0, -1.0); 277 | CGContextTranslateCTM(outputContext, 0, -outputImage.size.height); 278 | 279 | CGContextDrawImage(outputContext, imageRect, outputImage.CGImage); 280 | 281 | if (hasBlur) { 282 | CGContextSaveGState(outputContext); 283 | if (maskImage) { 284 | CGContextClipToMask(outputContext, imageRect, maskImage.CGImage); 285 | } 286 | CGContextDrawImage(outputContext, imageRect, outputImage.CGImage); 287 | CGContextRestoreGState(outputContext); 288 | } 289 | 290 | if (tintColor) { 291 | CGContextSaveGState(outputContext); 292 | CGContextSetFillColorWithColor(outputContext, tintColor.CGColor); 293 | CGContextFillRect(outputContext, imageRect); 294 | CGContextRestoreGState(outputContext); 295 | } 296 | 297 | outputImage = UIGraphicsGetImageFromCurrentImageContext(); 298 | UIGraphicsEndImageContext(); 299 | 300 | return outputImage; 301 | } 302 | 303 | @end 304 | -------------------------------------------------------------------------------- /7blur/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 32 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 59 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 86 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. 153 | 154 | 155 | 156 | 157 | 158 | 159 | Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. 160 | 161 | 162 | 163 | 175 | 182 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | --------------------------------------------------------------------------------