├── GlassPackage.res ├── misc └── screenshot.png ├── FrostGlassPackage.res ├── Demo multi device ├── Images │ └── back7.png ├── FrostGlassDemo.res ├── Entitlement.TemplateOSX32.xml ├── info.plist.TemplateOSX.xml ├── info.plist.TemplateiOS.xml ├── FrostGlassDemo.dpr ├── Entitlement.TemplateiOS.xml ├── Unit19.vlb ├── AndroidManifest.template.xml ├── Unit19.pas └── FrostGlassDemo.deployproj ├── Statistics.txt ├── FrostGlassPackage.dpk ├── .gitignore ├── README.md ├── GlassProjectGroup.groupproj ├── FrostGlass.pas └── FrostGlassPackage.dproj /GlassPackage.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Spelt/Frost-Glass/HEAD/GlassPackage.res -------------------------------------------------------------------------------- /misc/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Spelt/Frost-Glass/HEAD/misc/screenshot.png -------------------------------------------------------------------------------- /FrostGlassPackage.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Spelt/Frost-Glass/HEAD/FrostGlassPackage.res -------------------------------------------------------------------------------- /Demo multi device/Images/back7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Spelt/Frost-Glass/HEAD/Demo multi device/Images/back7.png -------------------------------------------------------------------------------- /Demo multi device/FrostGlassDemo.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Spelt/Frost-Glass/HEAD/Demo multi device/FrostGlassDemo.res -------------------------------------------------------------------------------- /Demo multi device/Entitlement.TemplateOSX32.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%appSandboxKeys%> 6 | 7 | 8 | -------------------------------------------------------------------------------- /Statistics.txt: -------------------------------------------------------------------------------- 1 | 2 | -release mode - 3 | PC(32) Android 4 | Blend + Blur 6 35-40 5 | Blur 5 28-35 6 | 7 | 8 | 9 | (Release) 10 | PC(32) Android 11 | Screenshot 1 6 ** 12 | Copy 2 13 ** 13 | blend 0 6 * 14 | blur 4 12 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Demo multi device/info.plist.TemplateOSX.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%VersionInfoPListKeys%> 6 | <%ExtraInfoPListKeys%> 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo multi device/info.plist.TemplateiOS.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%VersionInfoPListKeys%> 6 | <%ExtraInfoPListKeys%> 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo multi device/FrostGlassDemo.dpr: -------------------------------------------------------------------------------- 1 | program FrostGlassDemo; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | Unit19 in 'Unit19.pas' {Form19}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TForm19, Form19); 13 | Application.Run; 14 | end. 15 | -------------------------------------------------------------------------------- /Demo multi device/Entitlement.TemplateiOS.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%getTaskAllowKey%> 6 | <%applicationIdentifier%> 7 | <%pushNotificationKey%> 8 | <%keychainAccessGroups%> 9 | 10 | 11 | -------------------------------------------------------------------------------- /FrostGlassPackage.dpk: -------------------------------------------------------------------------------- 1 | package FrostGlassPackage; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$IMPLICITBUILD ON} 29 | 30 | requires 31 | fmx; 32 | 33 | contains 34 | FrostGlass in 'FrostGlass.pas'; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.dcu 2 | *.user 3 | *.aps 4 | *.pch 5 | *.vspscc 6 | *_i.c 7 | *_p.c 8 | *.ncb 9 | *.suo 10 | *.bak 11 | *.cache 12 | *.ilk 13 | *.log 14 | [Bb]in 15 | [Dd]ebug*/ 16 | *.sbr 17 | obj/ 18 | [Rr]elease*/ 19 | _ReSharper*/ 20 | 21 | #ignore thumbnails created by windows 22 | Thumbs.db 23 | #Ignore files build by Visual Studio 24 | *.obj 25 | *.exe 26 | *.pdb 27 | *.tlb 28 | *.tlh 29 | *.lib 30 | Win32/ 31 | [Tt]est[Rr]esult* 32 | 33 | 34 | *.~* 35 | *.*~* 36 | *.stat 37 | *.*cache 38 | 39 | 40 | 41 | # Delphi compiler-generated binaries (safe to delete) 42 | *.exe 43 | *.dll 44 | *.bpl 45 | *.bpi 46 | *.dcp 47 | *.so 48 | *.apk 49 | *.drc 50 | *.map 51 | *.dres 52 | *.rsm 53 | *.tds 54 | *.dcu 55 | *.lib 56 | 57 | # Delphi autogenerated files (duplicated info) 58 | *.cfg 59 | *Resource.rc 60 | 61 | # Delphi local files (user-specific info) 62 | *.local 63 | *.identcache 64 | *.projdata 65 | *.tvsconfig 66 | *.dsk 67 | 68 | # Delphi history and backups 69 | __history/ 70 | *.~* 71 | 72 | # Castalia statistics file 73 | *.stat 74 | *.*cache 75 | *.local 76 | *.identcache 77 | *.dsk 78 | *.dsk 79 | -------------------------------------------------------------------------------- /Demo multi device/Unit19.vlb: -------------------------------------------------------------------------------- 1 | [Label2] 2 | Coordinates=385,10,53,58 3 | 4 | [DialogTitleFloatAnimation] 5 | Coordinates=296,1,162,36 6 | 7 | [FrostGlass1] 8 | Coordinates=300,120,88,102 9 | ExplicitSubNodes=BlurEnabled;CacheEnabled;FrostColor 10 | 11 | [RectDialog] 12 | Coordinates=75,300,78,36 13 | 14 | [Panel1] 15 | Coordinates=10,300,55,36 16 | 17 | [FloatAnimationScaleFrostDialog] 18 | Coordinates=296,166,199,36 19 | 20 | [FloatAnimationBlurBackground] 21 | Coordinates=296,221,192,36 22 | 23 | [GaussianBlurEffect1] 24 | Coordinates=315,276,132,36 25 | 26 | [Layout1] 27 | Coordinates=388,232,60,36 28 | 29 | [btnClear] 30 | Coordinates=139,232,63,58 31 | 32 | [Image1] 33 | Coordinates=243,10,57,58 34 | 35 | [RectColorLayer] 36 | Coordinates=274,232,104,36 37 | 38 | [lblTitle] 39 | Coordinates=212,232,52,58 40 | 41 | [Switch1] 42 | Coordinates=310,50,65,58 43 | Visible=True 44 | 45 | [lblHasBlur] 46 | Coordinates=159,10,74,58 47 | Visible=True 48 | 49 | [] 50 | Coordinates=10,10,139,212 51 | 52 | [BindingsList1] 53 | Coordinates=168,87,91,36 54 | 55 | [Label1] 56 | Coordinates=145,80,53,58 57 | 58 | [SwitchCache] 59 | Coordinates=420,120,89,58 60 | 61 | [Layout2] 62 | Coordinates=302,331,60,36 63 | 64 | [Label3] 65 | Coordinates=168,157,53,58 66 | 67 | [ComboColorBox1] 68 | Coordinates=416,331,116,58 69 | Visible=True 70 | 71 | [SwitchBackBlur] 72 | Coordinates=30,241,104,58 73 | 74 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #Delphi Frost Glass Control 2 | 3 | A little pet project ;-) 4 | 5 | It's a frost glass (blur+background coloring) Delphi Firemonkey component for use with all Firemonkey platforms. This component is just like the IOS 8/10 popup sound control and IOS Control Centre (bottom slide up) but with a bonus: you can give it a nice background color tint. I tested it on Delphi Berlin 10.1 update 2. 6 | 7 | 8 | ### About the project 9 | Performance is utterly important here, it was/is a challenge to get this component as smooth as possible. If you think you can shave off some milli seconds? Let me know! 10 | 11 | In some cases it is wise to use the build-in cache feature and somtimes it's not (like with changing backgrounds or with slide popins because you want continue updates). Anyway you can test for yourself via the included test project. Just resize the form at runtime to see the speed result in ms in the lisbox via the onTickEvent. I added a build-in TStopwatch to measure performance. If you click on the image a Frost Glass will popup. 12 | 13 | Example: 14 | ![Frost-Glass Example](https://github.com/Spelt/Frost-Glass/blob/master/misc/screenshot.png) 15 | 16 | The inspiration for this component are the IOS 8/10 popup sound controls and IOS Control Centre (bottom slide up). Code inspiration comes from this stack overflow post: http://stackoverflow.com/questions/23898849/ios7-blurred-overlay-in-delphi-xe6 17 | 18 | 19 | ###Changes 20 | - v1 Date: 2017/03/05 21 | - Initial upload to github 22 | 23 | 24 | ###Features 25 | - Demo project 26 | 27 | Properties available 28 | - Blur (Gaussian) enabled 29 | - FrostColor 30 | - FrostColor Enabled 31 | - Caching 32 | 33 | 34 | Important inherited properties of TRectangle which will make it look more great. 35 | - Border functionality 36 | - Corner functionality 37 | 38 | 39 | ###Licence 40 | Frost Glass is released under the Apache 2.0 license. A copy of the Apache 2.0 license can be found here: http://www.apache.org/licenses/LICENSE-2.0 41 | 42 | -------------------------------------------------------------------------------- /Demo multi device/AndroidManifest.template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | <%uses-permission%> 12 | 13 | 21 | 22 | <%application-meta-data%> 23 | <%services%> 24 | 26 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | 38 | <%activity%> 39 | <%receivers%> 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /GlassProjectGroup.groupproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {84FF71E8-9560-4BFB-9645-4BA9964ECE68} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Demo multi device/Unit19.pas: -------------------------------------------------------------------------------- 1 | unit Unit19; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Types, System.UITypes, System.Classes, 7 | System.Variants, 8 | FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListBox, 9 | FMX.Layouts, FMX.Ani, FMX.StdCtrls, FMX.Objects, 10 | FMX.Controls.Presentation, FMX.Effects, FMX.Filter.Effects, 11 | FMX.MagnifierGlass, System.Diagnostics, FrostGlass, Data.Bind.EngExt, 12 | FMX.Bind.DBEngExt, System.Rtti, System.Bindings.Outputs, FMX.Bind.Editors, 13 | Data.Bind.Components, FMX.Colors, FMX.ScrollBox, FMX.Memo, FMX.Memo.Types; 14 | 15 | const 16 | 17 | BLUR_MAX: Single = 5; 18 | DURATION_ANIMATION = 100; // in milli seconds 19 | 20 | type 21 | TForm19 = class(TForm) 22 | lblTitle: TLabel; 23 | RectDialog: TRectangle; 24 | Label2: TLabel; 25 | DialogTitleFloatAnimation: TFloatAnimation; 26 | Image1: TImage; 27 | GaussianBlurEffect1: TGaussianBlurEffect; 28 | RectColorLayer: TRectangle; 29 | btnClear: TButton; 30 | FrostGlass1: TFrostGlass; 31 | Panel1: TPanel; 32 | Layout1: TLayout; 33 | FloatAnimationBlurBackground: TFloatAnimation; 34 | FloatAnimationScaleFrostDialog: TFloatAnimation; 35 | Switch1: TSwitch; 36 | lblHasBlur: TLabel; 37 | BindingsList1: TBindingsList; 38 | LinkControlToPropertyBlurEnabled: TLinkControlToProperty; 39 | SwitchCache: TSwitch; 40 | Label1: TLabel; 41 | LinkControlToPropertyCacheEnabled: TLinkControlToProperty; 42 | SwitchBackBlur: TSwitch; 43 | Label3: TLabel; 44 | Layout2: TLayout; 45 | ComboColorBox1: TComboColorBox; 46 | LinkControlToPropertyFrostColor: TLinkControlToProperty; 47 | Memo1: TMemo; 48 | procedure FormCreate(Sender: TObject); 49 | procedure Image1Click(Sender: TObject); 50 | procedure btnClearClick(Sender: TObject); 51 | procedure FloatAnimationBlurBackgroundFinish(Sender: TObject); 52 | procedure FloatAnimationScaleFrostDialogProcess(Sender: TObject); 53 | procedure FloatAnimationScaleFrostDialogFinish(Sender: TObject); 54 | private 55 | // FBlurEffect: TGaussianBlurEffect; 56 | FStopwatch: TStopwatch; 57 | OrgBitmap: TBitmap; 58 | FBusyAnim: Boolean; 59 | FOpacityAmount, FblurAmount: Single; 60 | FAnimationCount: Integer; 61 | procedure StartAnimation(); 62 | procedure Clear(); 63 | { Private declarations } 64 | public 65 | { Public declarations } 66 | 67 | end; 68 | 69 | var 70 | Form19: TForm19; 71 | 72 | implementation 73 | 74 | {$R *.fmx} 75 | 76 | procedure TForm19.btnClearClick(Sender: TObject); 77 | begin 78 | Clear(); 79 | end; 80 | 81 | procedure TForm19.Clear(); 82 | begin 83 | FrostGlass1.Visible := False; 84 | FAnimationCount := 0; 85 | FBusyAnim := False; 86 | FblurAmount := 0; 87 | GaussianBlurEffect1.BlurAmount := 0; 88 | RectColorLayer.Opacity := 0; 89 | lblTitle.Visible := False; 90 | lblTitle.Opacity := 0; 91 | end; 92 | 93 | procedure TForm19.FormCreate(Sender: TObject); 94 | begin 95 | 96 | //{$IFDEF DEBUG} 97 | 98 | FrostGlass1.OnTickChanged := procedure(progress: string) 99 | begin 100 | //if (ListBox1.Items.Count < 250) then 101 | memo1.lines.insert(0, progress); 102 | Memo1.CaretPosition.Create(0,0); 103 | end; 104 | 105 | //{$ENDIF} 106 | 107 | Clear(); 108 | 109 | // {$IFDEF DEBUG} 110 | // Panel1.Visible := true; 111 | // {$ENDIF} 112 | end; 113 | 114 | procedure TForm19.Image1Click(Sender: TObject); 115 | begin 116 | 117 | if (OrgBitmap <> nil) then 118 | Image1.Bitmap.Assign(OrgBitmap); 119 | 120 | RectColorLayer.Opacity := 0; 121 | Memo1.lines.Clear(); 122 | FAnimationCount := 0; 123 | FOpacityAmount := 0; 124 | FBusyAnim := False; 125 | FblurAmount := 0; 126 | Application.ProcessMessages(); 127 | 128 | StartAnimation(); 129 | end; 130 | 131 | procedure TForm19.StartAnimation(); 132 | begin 133 | lblTitle.Opacity := 0; 134 | lblTitle.Visible := False; 135 | FrostGlass1.Visible := true; 136 | FStopwatch := TStopwatch.StartNew(); 137 | if SwitchBackBlur.IsChecked then 138 | FloatAnimationBlurBackground.Start(); 139 | 140 | FloatAnimationScaleFrostDialog.Start(); 141 | end; 142 | 143 | procedure TForm19.FloatAnimationBlurBackgroundFinish(Sender: TObject); 144 | begin 145 | FStopwatch.Stop(); 146 | end; 147 | 148 | procedure TForm19.FloatAnimationScaleFrostDialogFinish(Sender: TObject); 149 | begin 150 | lblTitle.Visible := true; 151 | DialogTitleFloatAnimation.Start(); 152 | end; 153 | 154 | procedure TForm19.FloatAnimationScaleFrostDialogProcess(Sender: TObject); 155 | begin 156 | FrostGlass1.Scale.Y := FrostGlass1.Scale.X; 157 | FrostGlass1.RecalcSize(); 158 | end; 159 | 160 | end. 161 | -------------------------------------------------------------------------------- /FrostGlass.pas: -------------------------------------------------------------------------------- 1 | unit FrostGlass; 2 | 3 | interface 4 | 5 | uses System.SysUtils, System.Classes, System.UITypes, FMX.Types, FMX.Controls, 6 | FMX.Objects, FMX.Graphics, FMX.Filter.Effects, FMX.Forms, System.Types, Math, 7 | System.Diagnostics; 8 | 9 | type 10 | 11 | TRGB32 = record 12 | B, G, R, A: Byte; 13 | end; 14 | 15 | TRGB32Array = array [0 .. 4096] of TRGB32; 16 | PRGB32Array = ^TRGB32Array; 17 | 18 | TFrostGlass = class(TRectangle) 19 | private 20 | FIsPainting, FCacheEnabled, FFrostEnabled, FBlurEnabled: Boolean; 21 | FBlurEffect: TGaussianBlurEffect; 22 | FFrostColor: TAlphaColor; 23 | 24 | FCachedBitmap, FParentScreenshotBitmap: TBitmap; 25 | 26 | procedure SetBlurAmount(Value: Single); 27 | procedure SetHasFrostColor(Value: Boolean); 28 | procedure SetHasBlur(Value: Boolean); 29 | procedure SetHasCache(Value: Boolean); 30 | procedure SetFrostColor(Value: TAlphaColor); 31 | 32 | function GetBlurAmount: Single; 33 | procedure SetEffects(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); 34 | 35 | public 36 | OnTickChanged: TProc; 37 | constructor Create(AOwner: TComponent); override; 38 | destructor Destroy; override; 39 | published 40 | 41 | property FrostBlur: Single read GetBlurAmount write SetBlurAmount; 42 | property FrostColorEnabled: Boolean read FFrostEnabled 43 | write SetHasFrostColor; 44 | 45 | property BlurEnabled: Boolean read FBlurEnabled write SetHasBlur; 46 | property CacheEnabled: Boolean read FCacheEnabled write SetHasCache; 47 | 48 | property FrostColor: TAlphaColor read FFrostColor write SetFrostColor; 49 | 50 | property Align; 51 | property Position; 52 | property Width; 53 | property Height; 54 | property Size; 55 | property Visible; 56 | 57 | property Anchors; 58 | property ClipChildren default False; 59 | property ClipParent default False; 60 | property Corners; 61 | property CornerType; 62 | property Cursor default crDefault; 63 | property DragMode default TDragMode.dmManual; 64 | property EnableDragHighlight default True; 65 | property Enabled default True; 66 | 67 | property Locked default False; 68 | property HitTest default True; 69 | property Padding; 70 | property Opacity; 71 | property Margins; 72 | property PopupMenu; 73 | property RotationAngle; 74 | property RotationCenter; 75 | property Scale; 76 | property Sides; 77 | property Stroke; 78 | property XRadius; 79 | property YRadius; 80 | { Drag and Drop events } 81 | property OnDragEnter; 82 | property OnDragLeave; 83 | property OnDragOver; 84 | property OnDragDrop; 85 | property OnDragEnd; 86 | { Mouse events } 87 | property OnClick; 88 | property OnDblClick; 89 | 90 | property OnMouseDown; 91 | property OnMouseMove; 92 | property OnMouseUp; 93 | property OnMouseWheel; 94 | property OnMouseEnter; 95 | property OnMouseLeave; 96 | 97 | property OnPainting; 98 | property OnPaint; 99 | property OnResize; 100 | 101 | end; 102 | 103 | procedure Register; 104 | 105 | implementation 106 | 107 | { TGlass } 108 | 109 | constructor TFrostGlass.Create(AOwner: TComponent); 110 | begin 111 | inherited Create(AOwner); 112 | Width := 200; 113 | Height := 200; 114 | 115 | Fill.Kind := TBrushKind.Bitmap; 116 | Fill.Bitmap.WrapMode := TWrapmode.TileOriginal; 117 | 118 | FIsPainting := False; 119 | FCacheEnabled := True; 120 | FBlurEnabled := True; 121 | FFrostEnabled := True; // this crashes, something with componentstate 122 | FFrostColor := TAlphaColors.White; 123 | 124 | // Create parent background 125 | FParentScreenshotBitmap := TBitmap.Create(0, 0); 126 | FCachedBitmap := TBitmap.Create(0, 0); 127 | 128 | // Create blur 129 | FBlurEffect := TGaussianBlurEffect.Create(self); 130 | FBlurEffect.BlurAmount := 0.6; 131 | 132 | OnPaint := SetEffects; 133 | 134 | end; 135 | 136 | destructor TFrostGlass.Destroy; 137 | begin 138 | FBlurEffect.Free; 139 | FParentScreenshotBitmap.Free; 140 | FCachedBitmap.Free; 141 | 142 | inherited Destroy; 143 | end; 144 | 145 | procedure TFrostGlass.SetBlurAmount(Value: Single); 146 | begin 147 | if FBlurEffect.BlurAmount = Value then 148 | Exit; 149 | 150 | FBlurEffect.BlurAmount := Value; 151 | Repaint(); 152 | end; 153 | 154 | function TFrostGlass.GetBlurAmount(): Single; 155 | begin 156 | Result := FBlurEffect.BlurAmount; 157 | end; 158 | 159 | procedure TFrostGlass.SetHasFrostColor(Value: Boolean); 160 | begin 161 | if FFrostEnabled = Value then 162 | Exit; 163 | 164 | FFrostEnabled := Value; 165 | Repaint(); 166 | end; 167 | 168 | procedure TFrostGlass.SetHasBlur(Value: Boolean); 169 | begin 170 | if FBlurEnabled = Value then 171 | Exit; 172 | 173 | FBlurEnabled := Value; 174 | Repaint(); 175 | end; 176 | 177 | procedure TFrostGlass.SetHasCache(Value: Boolean); 178 | begin 179 | if FCacheEnabled = Value then 180 | Exit; 181 | 182 | FCacheEnabled := Value; 183 | Repaint(); 184 | end; 185 | 186 | procedure TFrostGlass.SetFrostColor(Value: TAlphaColor); 187 | begin 188 | if Value = FFrostColor then 189 | Exit; 190 | 191 | FFrostColor := Value; 192 | Repaint; 193 | end; 194 | 195 | procedure TFrostGlass.SetEffects(Sender: TObject; Canvas: TCanvas; 196 | const ARect: TRectF); 197 | var 198 | ParentWidth: Single; 199 | ParentHeight: Single; 200 | RectA: TRect; 201 | bmp: TBitmap; 202 | stopWatch: TStopwatch; 203 | stopwatchResult: string; 204 | 205 | procedure SetStopWatch(s: string; restart: Boolean = True); 206 | begin 207 | 208 | if (not Assigned(OnTickChanged)) then 209 | begin 210 | Exit; 211 | end; 212 | 213 | stopWatch.Stop; 214 | stopwatchResult := stopwatchResult + s + ' ' + 215 | stopWatch.ElapsedMilliseconds.ToString() + ' '; 216 | 217 | if restart then 218 | stopWatch.Start(); 219 | 220 | end; 221 | 222 | // Own blending sub cause build in blending does not work with android and ios 223 | procedure BlendBitmap(BitmapA: TBitmap); 224 | var 225 | x, y: Integer; 226 | currentData: TBitmapData; 227 | A, R, G, B: Byte; 228 | a2, r2, g2, b2: Byte; 229 | Pixels: PRGB32Array; 230 | 231 | begin 232 | 233 | a2 := TAlphaColorRec(FFrostColor).A; 234 | r2 := TAlphaColorRec(FFrostColor).R; 235 | g2 := TAlphaColorRec(FFrostColor).G; 236 | b2 := TAlphaColorRec(FFrostColor).B; 237 | 238 | if BitmapA.Map(TMapAccess.ReadWrite, currentData) then 239 | try 240 | for y := 0 to BitmapA.Height - 1 do 241 | begin 242 | 243 | Pixels := currentData.GetScanline(y); 244 | for x := 0 to BitmapA.Width - 1 do 245 | begin 246 | A := Pixels[x].A; 247 | R := Pixels[x].R; 248 | G := Pixels[x].G; 249 | B := Pixels[x].B; 250 | 251 | A := (A + a2) div 2; 252 | R := (R + r2) div 2; 253 | G := (G + g2) div 2; 254 | B := (B + b2) div 2; 255 | 256 | Pixels[x].A := A; 257 | Pixels[x].R := R; 258 | Pixels[x].G := G; 259 | Pixels[x].B := B; 260 | end; 261 | end; 262 | finally 263 | BitmapA.Unmap(currentData); 264 | end; 265 | 266 | end; 267 | 268 | procedure DefineParentSize; 269 | begin 270 | ParentWidth := 0; 271 | ParentHeight := 0; 272 | if Parent is TCustomForm then 273 | begin 274 | ParentWidth := (Parent as TCustomForm).ClientWidth; 275 | ParentHeight := (Parent as TCustomForm).ClientHeight; 276 | end; 277 | if Parent is TControl then 278 | begin 279 | ParentWidth := (Parent as TControl).Width; 280 | ParentHeight := (Parent as TControl).Height; 281 | end; 282 | end; 283 | 284 | function IsBitmapSizeChanged(ABitmap: TBitmap; 285 | const ANewWidth, ANewHeight: Single): Boolean; 286 | begin 287 | Result := not SameValue(ANewWidth * ABitmap.BitmapScale, ABitmap.Width) or 288 | not SameValue(ANewHeight * ABitmap.BitmapScale, ABitmap.Height); 289 | end; 290 | 291 | procedure MakeParentScreenshot; 292 | var 293 | Form: TCommonCustomForm; 294 | Child: TFmxObject; 295 | ParentControl: TControl; 296 | ClipRects: TClipRects; 297 | 298 | begin 299 | ClipRects := [TRectF.Create(BoundsRect)]; 300 | if FParentScreenshotBitmap.Canvas.BeginScene(@ClipRects) then 301 | 302 | try 303 | FDisablePaint := True; 304 | if Parent is TCommonCustomForm then 305 | begin 306 | Form := Parent as TCommonCustomForm; 307 | for Child in Form.Children do 308 | if (Child is TControl) and (Child as TControl).Visible then 309 | begin 310 | ParentControl := Child as TControl; 311 | ParentControl.PaintTo(FParentScreenshotBitmap.Canvas, 312 | ParentControl.BoundsRect); 313 | end; 314 | end 315 | else 316 | (Parent as TControl).PaintTo(FParentScreenshotBitmap.Canvas, 317 | RectF(0, 0, ParentWidth, ParentHeight)); 318 | 319 | finally 320 | FDisablePaint := False; 321 | FParentScreenshotBitmap.Canvas.EndScene; 322 | end; 323 | 324 | end; 325 | 326 | begin 327 | 328 | if FIsPainting then 329 | Exit; 330 | FIsPainting := True; 331 | 332 | if (Assigned(OnTickChanged)) then 333 | begin 334 | stopWatch := TStopwatch.StartNew(); 335 | end; 336 | 337 | // Make screenshot of Parent control 338 | DefineParentSize; 339 | if IsBitmapSizeChanged(FParentScreenshotBitmap, ParentWidth, ParentHeight) 340 | then 341 | FParentScreenshotBitmap.SetSize(round(ParentWidth), round(ParentHeight)); 342 | 343 | // Apply glass effect 344 | Canvas.BeginScene; 345 | try 346 | 347 | if (FCacheEnabled and (FCachedBitmap.Width <> 0)) then 348 | begin 349 | Fill.Bitmap.Bitmap := FCachedBitmap; 350 | Exit; 351 | end; 352 | 353 | MakeParentScreenshot; 354 | SetStopWatch('Sht'); 355 | 356 | RectA := BoundsRect.round; 357 | bmp := TBitmap.Create(RectA.Width, RectA.Height); 358 | try 359 | bmp.CopyFromBitmap(FParentScreenshotBitmap, RectA, 0, 0); 360 | 361 | SetStopWatch('Cpy'); 362 | 363 | if (FFrostEnabled) then 364 | begin 365 | BlendBitmap(bmp); 366 | SetStopWatch('Blnd'); 367 | end; 368 | 369 | if (FBlurEnabled) then 370 | begin 371 | FBlurEffect.ProcessEffect(Canvas, bmp, FBlurEffect.BlurAmount); 372 | SetStopWatch('blr'); 373 | end; 374 | 375 | Fill.Bitmap.Bitmap := bmp; 376 | if (FCacheEnabled) then 377 | FCachedBitmap.Assign(bmp); 378 | 379 | finally 380 | bmp.Free; 381 | end; 382 | 383 | finally 384 | Canvas.EndScene; 385 | 386 | SetStopWatch('final', False); 387 | if (Assigned(OnTickChanged)) then 388 | begin 389 | OnTickChanged(stopwatchResult); 390 | end; 391 | 392 | FIsPainting := False; 393 | 394 | end; 395 | 396 | end; 397 | 398 | procedure Register; 399 | begin 400 | RegisterComponents('FrostGlass', [TFrostGlass]); 401 | end; 402 | 403 | end. 404 | -------------------------------------------------------------------------------- /FrostGlassPackage.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {D65D66FD-BB01-48B0-AD8D-6642E3EDFCD3} 4 | FrostGlassPackage.dpk 5 | 18.2 6 | FMX 7 | True 8 | Debug 9 | Win64 10 | 1119 11 | Package 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Cfg_1 59 | true 60 | true 61 | 62 | 63 | true 64 | Cfg_1 65 | true 66 | true 67 | 68 | 69 | true 70 | Base 71 | true 72 | 73 | 74 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 75 | FrostGlassPackage 76 | true 77 | true 78 | All 79 | .\$(Platform)\$(Config) 80 | false 81 | false 82 | false 83 | false 84 | false 85 | 86 | 87 | 1 88 | rtl;fmx;$(DCC_UsePackage) 89 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 90 | android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar 91 | None 92 | Debug 93 | 94 | 95 | rtl;fmx;$(DCC_UsePackage) 96 | $(MSBuildProjectName) 97 | true 98 | iPhoneAndiPad 99 | None 100 | Debug 101 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 102 | 103 | 104 | rtl;fmx;$(DCC_UsePackage) 105 | $(MSBuildProjectName) 106 | true 107 | iPhoneAndiPad 108 | None 109 | Debug 110 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 111 | 112 | 113 | rtl;fmx;$(DCC_UsePackage) 114 | true 115 | iPhoneAndiPad 116 | None 117 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 118 | 119 | 120 | rtl;fmx;$(DCC_UsePackage) 121 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts 122 | Debug 123 | 124 | 125 | rtl;fmx;$(DCC_UsePackage) 126 | true 127 | 1033 128 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) 129 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 130 | 131 | 132 | rtl;fmx;$(DCC_UsePackage) 133 | true 134 | 1033 135 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) 136 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 137 | 138 | 139 | DEBUG;$(DCC_Define) 140 | true 141 | false 142 | true 143 | true 144 | true 145 | 146 | 147 | .\$(Platform)\$(Config) 148 | 1033 149 | true 150 | false 151 | 152 | 153 | 1033 154 | true 155 | 156 | 157 | false 158 | RELEASE;$(DCC_Define) 159 | 0 160 | 0 161 | 162 | 163 | 164 | MainSource 165 | 166 | 167 | 168 | 169 | Cfg_2 170 | Base 171 | 172 | 173 | Base 174 | 175 | 176 | Cfg_1 177 | Base 178 | 179 | 180 | 181 | Delphi.Personality.12 182 | Package 183 | 184 | 185 | 186 | FrostGlassPackage.dpk 187 | 188 | 189 | Microsoft Office 2000 Sample Automation Server Wrapper Components 190 | Microsoft Office XP Sample Automation Server Wrapper Components 191 | 192 | 193 | 194 | 195 | 196 | true 197 | 198 | 199 | 200 | 201 | true 202 | 203 | 204 | 205 | 206 | true 207 | 208 | 209 | 210 | 211 | true 212 | 213 | 214 | 215 | 216 | FrostGlassPackage.bpl 217 | true 218 | 219 | 220 | 221 | 222 | 0 223 | .dll;.bpl 224 | 225 | 226 | 1 227 | .dylib 228 | 229 | 230 | 231 | 232 | Contents\Resources 233 | 1 234 | 235 | 236 | 237 | 238 | classes 239 | 1 240 | 241 | 242 | 243 | 244 | Contents\MacOS 245 | 0 246 | 247 | 248 | 1 249 | 250 | 251 | 252 | 253 | 1 254 | 255 | 256 | 1 257 | 258 | 259 | 1 260 | 261 | 262 | 263 | 264 | res\drawable-xxhdpi 265 | 1 266 | 267 | 268 | 269 | 270 | library\lib\mips 271 | 1 272 | 273 | 274 | 275 | 276 | 1 277 | 278 | 279 | 1 280 | 281 | 282 | 0 283 | 284 | 285 | 1 286 | 287 | 288 | 1 289 | 290 | 291 | library\lib\armeabi-v7a 292 | 1 293 | 294 | 295 | 1 296 | 297 | 298 | 299 | 300 | 0 301 | 302 | 303 | 1 304 | .framework 305 | 306 | 307 | 308 | 309 | 1 310 | 311 | 312 | 1 313 | 314 | 315 | 316 | 317 | 1 318 | 319 | 320 | 1 321 | 322 | 323 | 1 324 | 325 | 326 | 327 | 328 | 1 329 | 330 | 331 | 1 332 | 333 | 334 | 1 335 | 336 | 337 | 338 | 339 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 340 | 1 341 | 342 | 343 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 344 | 1 345 | 346 | 347 | 348 | 349 | 1 350 | 351 | 352 | 1 353 | 354 | 355 | 1 356 | 357 | 358 | 359 | 360 | 361 | library\lib\armeabi 362 | 1 363 | 364 | 365 | 366 | 367 | 0 368 | 369 | 370 | 1 371 | 372 | 373 | 1 374 | 375 | 376 | 377 | 378 | 1 379 | 380 | 381 | 1 382 | 383 | 384 | 1 385 | 386 | 387 | 388 | 389 | res\drawable-normal 390 | 1 391 | 392 | 393 | 394 | 395 | res\drawable-xhdpi 396 | 1 397 | 398 | 399 | 400 | 401 | res\drawable-large 402 | 1 403 | 404 | 405 | 406 | 407 | 1 408 | 409 | 410 | 1 411 | 412 | 413 | 1 414 | 415 | 416 | 417 | 418 | Assets 419 | 1 420 | 421 | 422 | Assets 423 | 1 424 | 425 | 426 | 427 | 428 | 429 | res\drawable-hdpi 430 | 1 431 | 432 | 433 | 434 | 435 | library\lib\armeabi-v7a 436 | 1 437 | 438 | 439 | 440 | 441 | 442 | 443 | Assets 444 | 1 445 | 446 | 447 | Assets 448 | 1 449 | 450 | 451 | 452 | 453 | 1 454 | 455 | 456 | 1 457 | 458 | 459 | 1 460 | 461 | 462 | 463 | 464 | res\values 465 | 1 466 | 467 | 468 | 469 | 470 | res\drawable-small 471 | 1 472 | 473 | 474 | 475 | 476 | res\drawable 477 | 1 478 | 479 | 480 | 481 | 482 | 1 483 | 484 | 485 | 1 486 | 487 | 488 | 1 489 | 490 | 491 | 492 | 493 | 1 494 | 495 | 496 | 497 | 498 | res\drawable 499 | 1 500 | 501 | 502 | 503 | 504 | 0 505 | 506 | 507 | 0 508 | 509 | 510 | 0 511 | 512 | 513 | 0 514 | 515 | 516 | 0 517 | 518 | 519 | 0 520 | 521 | 522 | 523 | 524 | library\lib\armeabi-v7a 525 | 1 526 | 527 | 528 | 529 | 530 | 0 531 | .bpl 532 | 533 | 534 | 1 535 | .dylib 536 | 537 | 538 | 1 539 | .dylib 540 | 541 | 542 | 1 543 | .dylib 544 | 545 | 546 | 1 547 | .dylib 548 | 549 | 550 | 551 | 552 | res\drawable-mdpi 553 | 1 554 | 555 | 556 | 557 | 558 | res\drawable-xlarge 559 | 1 560 | 561 | 562 | 563 | 564 | res\drawable-ldpi 565 | 1 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | True 580 | True 581 | True 582 | True 583 | True 584 | True 585 | True 586 | 587 | 588 | 12 589 | 590 | 591 | 592 | 593 | 594 | -------------------------------------------------------------------------------- /Demo multi device/FrostGlassDemo.deployproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 5 | 6 | 7 | 8 | e566dde52f481c6273b88012d6a074a918c2fdfa 9 | e566dde52f481c6273b88012d6a074a918c2fdfa 10 | AAC11FB3-B1E6-4045-925B-73EC8359FFB5 11 | 12 | 13 | 14 | 15 | FrostGlassDemo.app\ 16 | FM_ApplicationIcon_57x57.png 17 | iPhone_AppIcon57 18 | 0 19 | 20 | 21 | True 22 | 23 | 24 | FrostGlassDemo.app\ 25 | FM_ApplicationIcon_180x180.png 26 | iPhone_AppIcon180 27 | 0 28 | 29 | 30 | True 31 | 32 | 33 | FrostGlassDemo.app\ 34 | FM_SpotlightSearchIcon_80x80.png 35 | iPhone_Spotlight80 36 | 0 37 | 38 | 39 | True 40 | 41 | 42 | FrostGlassDemo.app\ 43 | FM_ApplicationIcon_114x114.png 44 | iPhone_AppIcon114 45 | 0 46 | 47 | 48 | True 49 | 50 | 51 | FrostGlassDemo.app\ 52 | Default-736h@3x.png 53 | iPhone_Launch1242 54 | 0 55 | 56 | 57 | True 58 | 59 | 60 | FrostGlassDemo.app\ 61 | ResourceRules.plist 62 | ProjectiOSDeviceResourceRules 63 | 1 64 | 65 | 66 | True 67 | 68 | 69 | FrostGlassDemo.app\ 70 | Default-Portrait@2x.png 71 | iPad_Launch1536 72 | 1 73 | 74 | 75 | True 76 | 77 | 78 | FrostGlassDemo.app\ 79 | Default~ipad.png 80 | iPad_Launch768 81 | 1 82 | 83 | 84 | True 85 | 86 | 87 | FrostGlassDemo.app\ 88 | Default-Landscape@2x~ipad.png 89 | iPad_Launch2048x1536 90 | 0 91 | 92 | 93 | True 94 | 95 | 96 | FrostGlassDemo.app\ 97 | Default-Landscape~ipad.png 98 | iPad_Launch1024x768 99 | 0 100 | 101 | 102 | True 103 | 104 | 105 | FrostGlassDemo.app\ 106 | Default-Portrait~ipad.png 107 | iPad_Launch768x1024 108 | 0 109 | 110 | 111 | True 112 | 113 | 114 | FrostGlassDemo.app\ 115 | FM_ApplicationIcon_60x60.png 116 | iPhone_AppIcon60 117 | 0 118 | 119 | 120 | True 121 | 122 | 123 | FrostGlassDemo.app\ 124 | FM_SpotlightSearchIcon_80x80.png 125 | iPad_SpotLight80 126 | 0 127 | 128 | 129 | True 130 | 131 | 132 | FrostGlassDemo.app\ 133 | FM_ApplicationIcon_76x76.png 134 | iPad_AppIcon76 135 | 0 136 | 137 | 138 | True 139 | 140 | 141 | FrostGlassDemo.app\ 142 | Default-667h@2x.png 143 | iPhone_Launch750 144 | 0 145 | 146 | 147 | True 148 | 149 | 150 | FrostGlassDemo.app\ 151 | FrostGlassDemo 152 | ProjectOutput 153 | 1 154 | 155 | 156 | True 157 | True 158 | 159 | 160 | FrostGlassDemo.app\ 161 | FM_SpotlightSearchIcon_29x29.png 162 | iPhone_Spotlight29 163 | 0 164 | 165 | 166 | True 167 | 168 | 169 | FrostGlassDemo.app\ 170 | Default-Landscape-736h@3x.png 171 | iPhone_Launch2208 172 | 0 173 | 174 | 175 | True 176 | 177 | 178 | FrostGlassDemo.app\ 179 | FM_SpotlightSearchIcon_58x58.png 180 | iPhone_Spotlight58 181 | 0 182 | 183 | 184 | True 185 | 186 | 187 | FrostGlassDemo.app\ 188 | Default-Portrait@2x~ipad.png 189 | iPad_Launch1536x2048 190 | 0 191 | 192 | 193 | True 194 | 195 | 196 | FrostGlassDemo.app\..\ 197 | FrostGlassDemo.entitlements 198 | ProjectiOSEntitlements 199 | 1 200 | 201 | 202 | True 203 | 204 | 205 | FrostGlassDemo.app\ 206 | FM_SettingIcon_29x29.png 207 | iPad_Setting29 208 | 0 209 | 210 | 211 | True 212 | 213 | 214 | FrostGlassDemo.app\ 215 | Default-Landscape@2x.png 216 | iPad_Launch2048 217 | 1 218 | 219 | 220 | True 221 | 222 | 223 | FrostGlassDemo.app\ 224 | FM_ApplicationIcon_144x144.png 225 | iPad_AppIcon144 226 | 0 227 | 228 | 229 | True 230 | 231 | 232 | FrostGlassDemo.app\ 233 | FM_SpotlightSearchIcon_40x40.png 234 | iPhone_Spotlight40 235 | 0 236 | 237 | 238 | True 239 | 240 | 241 | FrostGlassDemo.app\ 242 | FM_SettingIcon_58x58.png 243 | iPad_Setting58 244 | 0 245 | 246 | 247 | True 248 | 249 | 250 | FrostGlassDemo.app\ 251 | FM_ApplicationIcon_87x87.png 252 | iPhone_AppIcon87 253 | 0 254 | 255 | 256 | True 257 | 258 | 259 | FrostGlassDemo.app\ 260 | Default-568h@2x.png 261 | iPhone_Launch640x1136 262 | 1 263 | 264 | 265 | True 266 | 267 | 268 | FrostGlassDemo.app\ 269 | FM_ApplicationIcon_120x120.png 270 | iPhone_AppIcon120 271 | 0 272 | 273 | 274 | True 275 | 276 | 277 | FrostGlassDemo.app\ 278 | Default-Landscape.png 279 | iPad_Launch1024 280 | 1 281 | 282 | 283 | True 284 | 285 | 286 | FrostGlassDemo.app\ 287 | FM_SpotlightSearchIcon_50x50.png 288 | iPad_SpotLight50 289 | 0 290 | 291 | 292 | True 293 | 294 | 295 | FrostGlassDemo.app\ 296 | Default.png 297 | iPhone_Launch320 298 | 1 299 | 300 | 301 | True 302 | 303 | 304 | FrostGlassDemo.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\ 305 | FrostGlassDemo 306 | ProjectiOSDeviceDebug 307 | 1 308 | 309 | 310 | True 311 | 312 | 313 | FrostGlassDemo.app\ 314 | FM_ApplicationIcon_152x152.png 315 | iPad_AppIcon152 316 | 0 317 | 318 | 319 | True 320 | 321 | 322 | FrostGlassDemo.app\ 323 | FM_ApplicationIcon_72x72.png 324 | iPad_AppIcon72 325 | 0 326 | 327 | 328 | True 329 | 330 | 331 | FrostGlassDemo.app\ 332 | FM_SpotlightSearchIcon_40x40.png 333 | iPad_SpotLight40 334 | 0 335 | 336 | 337 | True 338 | 339 | 340 | FrostGlassDemo.app\ 341 | Info.plist 342 | ProjectiOSInfoPList 343 | 1 344 | 345 | 346 | True 347 | 348 | 349 | FrostGlassDemo.app\ 350 | FM_SpotlightSearchIcon_100x100.png 351 | iPad_SpotLight100 352 | 0 353 | 354 | 355 | True 356 | 357 | 358 | FrostGlassDemo.app\ 359 | Default@2x.png 360 | iPhone_Launch640 361 | 1 362 | 363 | 364 | True 365 | 366 | 367 | 368 | 369 | FrostGlassDemo.app\ 370 | FM_ApplicationIcon_87x87.png 371 | iPhone_AppIcon87 372 | 0 373 | 374 | 375 | True 376 | 377 | 378 | FrostGlassDemo.app\ 379 | FM_SpotlightSearchIcon_50x50.png 380 | iPad_SpotLight50 381 | 0 382 | 383 | 384 | True 385 | 386 | 387 | FrostGlassDemo.app\ 388 | ResourceRules.plist 389 | ProjectiOSDeviceResourceRules 390 | 1 391 | 392 | 393 | True 394 | 395 | 396 | FrostGlassDemo.app\ 397 | Default-Portrait@2x~ipad.png 398 | iPad_Launch1536x2048 399 | 0 400 | 401 | 402 | True 403 | 404 | 405 | FrostGlassDemo.app\ 406 | Default-Portrait@2x.png 407 | iPad_Launch1536 408 | 1 409 | 410 | 411 | True 412 | 413 | 414 | FrostGlassDemo.app\ 415 | FM_SettingIcon_58x58.png 416 | iPad_Setting58 417 | 0 418 | 419 | 420 | True 421 | 422 | 423 | FrostGlassDemo.app\ 424 | FM_SettingIcon_29x29.png 425 | iPad_Setting29 426 | 0 427 | 428 | 429 | True 430 | 431 | 432 | FrostGlassDemo.app\ 433 | FM_SpotlightSearchIcon_80x80.png 434 | iPhone_Spotlight80 435 | 0 436 | 437 | 438 | True 439 | 440 | 441 | FrostGlassDemo.app\ 442 | Default-Landscape.png 443 | iPad_Launch1024 444 | 1 445 | 446 | 447 | True 448 | 449 | 450 | FrostGlassDemo.app\ 451 | FrostGlassDemo 452 | ProjectOutput 453 | 1 454 | 455 | 456 | True 457 | True 458 | 459 | 460 | FrostGlassDemo.app\ 461 | FM_ApplicationIcon_76x76.png 462 | iPad_AppIcon76 463 | 0 464 | 465 | 466 | True 467 | 468 | 469 | FrostGlassDemo.app\ 470 | Default-667h@2x.png 471 | iPhone_Launch750 472 | 0 473 | 474 | 475 | True 476 | 477 | 478 | FrostGlassDemo.app\ 479 | Default-667h@2x.png 480 | iPhone_Launch750 481 | 0 482 | 483 | 484 | True 485 | 486 | 487 | FrostGlassDemo.app\..\ 488 | FrostGlassDemo.entitlements 489 | ProjectiOSEntitlements 490 | 1 491 | 492 | 493 | True 494 | 495 | 496 | FrostGlassDemo.app\ 497 | FM_ApplicationIcon_180x180.png 498 | iPhone_AppIcon180 499 | 0 500 | 501 | 502 | True 503 | 504 | 505 | FrostGlassDemo.app\ 506 | FM_SpotlightSearchIcon_40x40.png 507 | iPad_SpotLight40 508 | 0 509 | 510 | 511 | True 512 | 513 | 514 | FrostGlassDemo.app\ 515 | FM_SpotlightSearchIcon_80x80.png 516 | iPad_SpotLight80 517 | 0 518 | 519 | 520 | True 521 | 522 | 523 | FrostGlassDemo.app\ 524 | Info.plist 525 | ProjectiOSInfoPList 526 | 1 527 | 528 | 529 | True 530 | 531 | 532 | FrostGlassDemo.app\ 533 | Default-Landscape@2x.png 534 | iPad_Launch2048 535 | 1 536 | 537 | 538 | True 539 | 540 | 541 | FrostGlassDemo.app\ 542 | FM_SpotlightSearchIcon_40x40.png 543 | iPhone_Spotlight40 544 | 0 545 | 546 | 547 | True 548 | 549 | 550 | FrostGlassDemo.app\ 551 | FM_SpotlightSearchIcon_80x80.png 552 | iPhone_Spotlight80 553 | 0 554 | 555 | 556 | True 557 | 558 | 559 | FrostGlassDemo.app\ 560 | Default-736h@3x.png 561 | iPhone_Launch1242 562 | 0 563 | 564 | 565 | True 566 | 567 | 568 | FrostGlassDemo.app\ 569 | Default-Landscape~ipad.png 570 | iPad_Launch1024x768 571 | 0 572 | 573 | 574 | True 575 | 576 | 577 | FrostGlassDemo.app\ 578 | Default.png 579 | iPhone_Launch320 580 | 1 581 | 582 | 583 | True 584 | 585 | 586 | FrostGlassDemo.app\ 587 | FM_ApplicationIcon_144x144.png 588 | iPad_AppIcon144 589 | 0 590 | 591 | 592 | True 593 | 594 | 595 | FrostGlassDemo.app\ 596 | Default-Portrait@2x.png 597 | iPad_Launch1536 598 | 1 599 | 600 | 601 | True 602 | 603 | 604 | FrostGlassDemo.app\..\ 605 | FrostGlassDemo.entitlements 606 | ProjectiOSEntitlements 607 | 1 608 | 609 | 610 | True 611 | 612 | 613 | FrostGlassDemo.app\ 614 | FM_ApplicationIcon_144x144.png 615 | iPad_AppIcon144 616 | 0 617 | 618 | 619 | True 620 | 621 | 622 | FrostGlassDemo.app\ 623 | FrostGlassDemo 624 | ProjectOutput 625 | 1 626 | 627 | 628 | True 629 | True 630 | 631 | 632 | FrostGlassDemo.app\ 633 | Default-Landscape@2x~ipad.png 634 | iPad_Launch2048x1536 635 | 0 636 | 637 | 638 | True 639 | 640 | 641 | FrostGlassDemo.app\ 642 | Default-Landscape-736h@3x.png 643 | iPhone_Launch2208 644 | 0 645 | 646 | 647 | True 648 | 649 | 650 | FrostGlassDemo.app\ 651 | FM_ApplicationIcon_87x87.png 652 | iPhone_AppIcon87 653 | 0 654 | 655 | 656 | True 657 | 658 | 659 | FrostGlassDemo.app\ 660 | FM_SpotlightSearchIcon_58x58.png 661 | iPhone_Spotlight58 662 | 0 663 | 664 | 665 | True 666 | 667 | 668 | FrostGlassDemo.app\ 669 | FM_ApplicationIcon_180x180.png 670 | iPhone_AppIcon180 671 | 0 672 | 673 | 674 | True 675 | 676 | 677 | FrostGlassDemo.app\ 678 | FM_ApplicationIcon_60x60.png 679 | iPhone_AppIcon60 680 | 0 681 | 682 | 683 | True 684 | 685 | 686 | FrostGlassDemo.app\ 687 | FM_SettingIcon_29x29.png 688 | iPad_Setting29 689 | 0 690 | 691 | 692 | True 693 | 694 | 695 | FrostGlassDemo.app\ 696 | Default-Landscape.png 697 | iPad_Launch1024 698 | 1 699 | 700 | 701 | True 702 | 703 | 704 | FrostGlassDemo.app\ 705 | FM_ApplicationIcon_76x76.png 706 | iPad_AppIcon76 707 | 0 708 | 709 | 710 | True 711 | 712 | 713 | FrostGlassDemo.app\ 714 | FM_ApplicationIcon_72x72.png 715 | iPad_AppIcon72 716 | 0 717 | 718 | 719 | True 720 | 721 | 722 | FrostGlassDemo.app\ 723 | Default-568h@2x.png 724 | iPhone_Launch640x1136 725 | 1 726 | 727 | 728 | True 729 | 730 | 731 | FrostGlassDemo.app\ 732 | FM_ApplicationIcon_72x72.png 733 | iPad_AppIcon72 734 | 0 735 | 736 | 737 | True 738 | 739 | 740 | FrostGlassDemo.app\ 741 | FM_SpotlightSearchIcon_100x100.png 742 | iPad_SpotLight100 743 | 0 744 | 745 | 746 | True 747 | 748 | 749 | FrostGlassDemo.app\ 750 | Default-Landscape-736h@3x.png 751 | iPhone_Launch2208 752 | 0 753 | 754 | 755 | True 756 | 757 | 758 | FrostGlassDemo.app\ 759 | FM_ApplicationIcon_57x57.png 760 | iPhone_AppIcon57 761 | 0 762 | 763 | 764 | True 765 | 766 | 767 | FrostGlassDemo.app\ 768 | FM_SpotlightSearchIcon_100x100.png 769 | iPad_SpotLight100 770 | 0 771 | 772 | 773 | True 774 | 775 | 776 | FrostGlassDemo.app\ 777 | Default.png 778 | iPhone_Launch320 779 | 1 780 | 781 | 782 | True 783 | 784 | 785 | FrostGlassDemo.app\ 786 | Default~ipad.png 787 | iPad_Launch768 788 | 1 789 | 790 | 791 | True 792 | 793 | 794 | FrostGlassDemo.app\ 795 | FM_SpotlightSearchIcon_40x40.png 796 | iPad_SpotLight40 797 | 0 798 | 799 | 800 | True 801 | 802 | 803 | FrostGlassDemo.app\ 804 | FM_ApplicationIcon_152x152.png 805 | iPad_AppIcon152 806 | 0 807 | 808 | 809 | True 810 | 811 | 812 | FrostGlassDemo.app\ 813 | FM_ApplicationIcon_114x114.png 814 | iPhone_AppIcon114 815 | 0 816 | 817 | 818 | True 819 | 820 | 821 | FrostGlassDemo.app\ 822 | FM_SpotlightSearchIcon_29x29.png 823 | iPhone_Spotlight29 824 | 0 825 | 826 | 827 | True 828 | 829 | 830 | FrostGlassDemo.app\ 831 | FM_ApplicationIcon_60x60.png 832 | iPhone_AppIcon60 833 | 0 834 | 835 | 836 | True 837 | 838 | 839 | FrostGlassDemo.app\ 840 | Default-Portrait~ipad.png 841 | iPad_Launch768x1024 842 | 0 843 | 844 | 845 | True 846 | 847 | 848 | FrostGlassDemo.app\ 849 | FM_ApplicationIcon_120x120.png 850 | iPhone_AppIcon120 851 | 0 852 | 853 | 854 | True 855 | 856 | 857 | FrostGlassDemo.app\ 858 | Default@2x.png 859 | iPhone_Launch640 860 | 1 861 | 862 | 863 | True 864 | 865 | 866 | FrostGlassDemo.app\ 867 | FM_ApplicationIcon_57x57.png 868 | iPhone_AppIcon57 869 | 0 870 | 871 | 872 | True 873 | 874 | 875 | FrostGlassDemo.app\ 876 | ResourceRules.plist 877 | ProjectiOSDeviceResourceRules 878 | 1 879 | 880 | 881 | True 882 | 883 | 884 | FrostGlassDemo.app\ 885 | FM_SpotlightSearchIcon_29x29.png 886 | iPhone_Spotlight29 887 | 0 888 | 889 | 890 | True 891 | 892 | 893 | FrostGlassDemo.app\ 894 | Default-568h@2x.png 895 | iPhone_Launch640x1136 896 | 1 897 | 898 | 899 | True 900 | 901 | 902 | FrostGlassDemo.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\ 903 | FrostGlassDemo 904 | ProjectiOSDeviceDebug 905 | 1 906 | 907 | 908 | True 909 | 910 | 911 | FrostGlassDemo.app\ 912 | FM_SpotlightSearchIcon_40x40.png 913 | iPhone_Spotlight40 914 | 0 915 | 916 | 917 | True 918 | 919 | 920 | FrostGlassDemo.app\ 921 | FM_SpotlightSearchIcon_80x80.png 922 | iPad_SpotLight80 923 | 0 924 | 925 | 926 | True 927 | 928 | 929 | FrostGlassDemo.app\ 930 | FM_SpotlightSearchIcon_50x50.png 931 | iPad_SpotLight50 932 | 0 933 | 934 | 935 | True 936 | 937 | 938 | FrostGlassDemo.app\ 939 | Default@2x.png 940 | iPhone_Launch640 941 | 1 942 | 943 | 944 | True 945 | 946 | 947 | FrostGlassDemo.app\ 948 | FM_ApplicationIcon_152x152.png 949 | iPad_AppIcon152 950 | 0 951 | 952 | 953 | True 954 | 955 | 956 | FrostGlassDemo.app\ 957 | Default-Portrait~ipad.png 958 | iPad_Launch768x1024 959 | 0 960 | 961 | 962 | True 963 | 964 | 965 | FrostGlassDemo.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\ 966 | FrostGlassDemo 967 | ProjectiOSDeviceDebug 968 | 1 969 | 970 | 971 | True 972 | 973 | 974 | FrostGlassDemo.app\ 975 | FM_SettingIcon_58x58.png 976 | iPad_Setting58 977 | 0 978 | 979 | 980 | True 981 | 982 | 983 | FrostGlassDemo.app\ 984 | Info.plist 985 | ProjectiOSInfoPList 986 | 1 987 | 988 | 989 | True 990 | 991 | 992 | FrostGlassDemo.app\ 993 | Default-Landscape@2x~ipad.png 994 | iPad_Launch2048x1536 995 | 0 996 | 997 | 998 | True 999 | 1000 | 1001 | FrostGlassDemo.app\ 1002 | FM_SpotlightSearchIcon_58x58.png 1003 | iPhone_Spotlight58 1004 | 0 1005 | 1006 | 1007 | True 1008 | 1009 | 1010 | FrostGlassDemo.app\ 1011 | FM_ApplicationIcon_120x120.png 1012 | iPhone_AppIcon120 1013 | 0 1014 | 1015 | 1016 | True 1017 | 1018 | 1019 | FrostGlassDemo.app\ 1020 | Default~ipad.png 1021 | iPad_Launch768 1022 | 1 1023 | 1024 | 1025 | True 1026 | 1027 | 1028 | FrostGlassDemo.app\ 1029 | Default-736h@3x.png 1030 | iPhone_Launch1242 1031 | 0 1032 | 1033 | 1034 | True 1035 | 1036 | 1037 | FrostGlassDemo.app\ 1038 | FM_ApplicationIcon_114x114.png 1039 | iPhone_AppIcon114 1040 | 0 1041 | 1042 | 1043 | True 1044 | 1045 | 1046 | FrostGlassDemo.app\ 1047 | Default-Landscape~ipad.png 1048 | iPad_Launch1024x768 1049 | 0 1050 | 1051 | 1052 | True 1053 | 1054 | 1055 | FrostGlassDemo.app\ 1056 | Default-Landscape@2x.png 1057 | iPad_Launch2048 1058 | 1 1059 | 1060 | 1061 | True 1062 | 1063 | 1064 | FrostGlassDemo.app\ 1065 | Default-Portrait@2x~ipad.png 1066 | iPad_Launch1536x2048 1067 | 0 1068 | 1069 | 1070 | True 1071 | 1072 | 1073 | 1074 | 1075 | FrostGlassDemo\ 1076 | FrostGlassDemo.exe 1077 | ProjectOutput 1078 | 0 1079 | 1080 | 1081 | True 1082 | True 1083 | 1084 | 1085 | 1086 | 1087 | FrostGlassDemo.app\Contents\Resources\ 1088 | FrostGlassDemo.icns 1089 | ProjectOSXResource 1090 | 1 1091 | 1092 | 1093 | True 1094 | 1095 | 1096 | FrostGlassDemo.app\Contents\MacOS\ 1097 | libcgsqlite3.dylib 1098 | DependencyModule 1099 | 1 1100 | 1101 | 1102 | True 1103 | 1104 | 1105 | FrostGlassDemo.app\Contents\MacOS\ 1106 | libcgunwind.1.0.dylib 1107 | DependencyModule 1108 | 1 1109 | 1110 | 1111 | True 1112 | 1113 | 1114 | FrostGlassDemo.app\Contents\ 1115 | Info.plist 1116 | ProjectOSXInfoPList 1117 | 1 1118 | 1119 | 1120 | True 1121 | 1122 | 1123 | FrostGlassDemo.app\..\ 1124 | FrostGlassDemo.entitlements 1125 | ProjectOSXEntitlements 1126 | 1 1127 | 1128 | 1129 | True 1130 | 1131 | 1132 | FrostGlassDemo.app\Contents\MacOS\ 1133 | FrostGlassDemo 1134 | ProjectOutput 1135 | 1 1136 | 1137 | 1138 | True 1139 | True 1140 | 1141 | 1142 | 1143 | 1144 | FrostGlassDemo\res\drawable-small\ 1145 | splash_image.png 1146 | Android_SplashImage426 1147 | 1 1148 | 1149 | 1150 | True 1151 | 1152 | 1153 | FrostGlassDemo\library\lib\armeabi-v7a\ 1154 | gdbserver 1155 | AndroidGDBServer 1156 | 1 1157 | 1158 | 1159 | True 1160 | 1161 | 1162 | FrostGlassDemo\res\drawable\ 1163 | splash_image_def.xml 1164 | AndroidSplashImageDef 1165 | 1 1166 | 1167 | 1168 | True 1169 | 1170 | 1171 | FrostGlassDemo\res\drawable-mdpi\ 1172 | ic_launcher.png 1173 | Android_LauncherIcon48 1174 | 1 1175 | 1176 | 1177 | True 1178 | 1179 | 1180 | FrostGlassDemo\res\drawable-small\ 1181 | splash_image.png 1182 | Android_SplashImage426 1183 | 1 1184 | 1185 | 1186 | True 1187 | 1188 | 1189 | FrostGlassDemo\res\drawable-large\ 1190 | splash_image.png 1191 | Android_SplashImage640 1192 | 1 1193 | 1194 | 1195 | True 1196 | 1197 | 1198 | FrostGlassDemo\res\values\ 1199 | styles.xml 1200 | AndroidSplashStyles 1201 | 1 1202 | 1203 | 1204 | True 1205 | 1206 | 1207 | FrostGlassDemo\library\lib\armeabi-v7a\ 1208 | libFrostGlassDemo.so 1209 | ProjectOutput 1210 | 1 1211 | 1212 | 1213 | True 1214 | True 1215 | 1216 | 1217 | FrostGlassDemo\res\drawable-hdpi\ 1218 | ic_launcher.png 1219 | Android_LauncherIcon72 1220 | 1 1221 | 1222 | 1223 | True 1224 | 1225 | 1226 | FrostGlassDemo\library\lib\mips\ 1227 | libFrostGlassDemo.so 1228 | AndroidLibnativeMipsFile 1229 | 1 1230 | 1231 | 1232 | True 1233 | 1234 | 1235 | FrostGlassDemo\library\lib\armeabi-v7a\ 1236 | libFrostGlassDemo.so 1237 | ProjectOutput 1238 | 1 1239 | 1240 | 1241 | True 1242 | True 1243 | 1244 | 1245 | FrostGlassDemo\ 1246 | AndroidManifest.xml 1247 | ProjectAndroidManifest 1248 | 1 1249 | 1250 | 1251 | True 1252 | 1253 | 1254 | FrostGlassDemo\res\drawable-xxhdpi\ 1255 | ic_launcher.png 1256 | Android_LauncherIcon144 1257 | 1 1258 | 1259 | 1260 | True 1261 | 1262 | 1263 | FrostGlassDemo\res\drawable-xhdpi\ 1264 | ic_launcher.png 1265 | Android_LauncherIcon96 1266 | 1 1267 | 1268 | 1269 | True 1270 | 1271 | 1272 | FrostGlassDemo\classes\ 1273 | classes.dex 1274 | AndroidClassesDexFile 1275 | 1 1276 | 1277 | 1278 | True 1279 | 1280 | 1281 | FrostGlassDemo\res\drawable-xlarge\ 1282 | splash_image.png 1283 | Android_SplashImage960 1284 | 1 1285 | 1286 | 1287 | True 1288 | 1289 | 1290 | FrostGlassDemo\res\drawable-xlarge\ 1291 | splash_image.png 1292 | Android_SplashImage960 1293 | 1 1294 | 1295 | 1296 | True 1297 | 1298 | 1299 | FrostGlassDemo\res\drawable-hdpi\ 1300 | ic_launcher.png 1301 | Android_LauncherIcon72 1302 | 1 1303 | 1304 | 1305 | True 1306 | 1307 | 1308 | FrostGlassDemo\library\lib\armeabi-v7a\ 1309 | gdbserver 1310 | AndroidGDBServer 1311 | 1 1312 | 1313 | 1314 | True 1315 | 1316 | 1317 | FrostGlassDemo\res\drawable-xhdpi\ 1318 | ic_launcher.png 1319 | Android_LauncherIcon96 1320 | 1 1321 | 1322 | 1323 | True 1324 | 1325 | 1326 | FrostGlassDemo\res\drawable-normal\ 1327 | splash_image.png 1328 | Android_SplashImage470 1329 | 1 1330 | 1331 | 1332 | True 1333 | 1334 | 1335 | FrostGlassDemo\res\drawable-normal\ 1336 | splash_image.png 1337 | Android_SplashImage470 1338 | 1 1339 | 1340 | 1341 | True 1342 | 1343 | 1344 | FrostGlassDemo\res\values\ 1345 | styles.xml 1346 | AndroidSplashStyles 1347 | 1 1348 | 1349 | 1350 | True 1351 | 1352 | 1353 | FrostGlassDemo\res\drawable-ldpi\ 1354 | ic_launcher.png 1355 | Android_LauncherIcon36 1356 | 1 1357 | 1358 | 1359 | True 1360 | 1361 | 1362 | FrostGlassDemo\library\lib\armeabi\ 1363 | libFrostGlassDemo.so 1364 | AndroidLibnativeArmeabiFile 1365 | 1 1366 | 1367 | 1368 | True 1369 | 1370 | 1371 | FrostGlassDemo\res\drawable-mdpi\ 1372 | ic_launcher.png 1373 | Android_LauncherIcon48 1374 | 1 1375 | 1376 | 1377 | True 1378 | 1379 | 1380 | FrostGlassDemo\classes\ 1381 | classes.dex 1382 | AndroidClassesDexFile 1383 | 1 1384 | 1385 | 1386 | True 1387 | 1388 | 1389 | FrostGlassDemo\res\drawable-xxhdpi\ 1390 | ic_launcher.png 1391 | Android_LauncherIcon144 1392 | 1 1393 | 1394 | 1395 | True 1396 | 1397 | 1398 | FrostGlassDemo\res\drawable-large\ 1399 | splash_image.png 1400 | Android_SplashImage640 1401 | 1 1402 | 1403 | 1404 | True 1405 | 1406 | 1407 | FrostGlassDemo\ 1408 | AndroidManifest.xml 1409 | ProjectAndroidManifest 1410 | 1 1411 | 1412 | 1413 | True 1414 | 1415 | 1416 | FrostGlassDemo\res\drawable-ldpi\ 1417 | ic_launcher.png 1418 | Android_LauncherIcon36 1419 | 1 1420 | 1421 | 1422 | True 1423 | 1424 | 1425 | FrostGlassDemo\res\drawable\ 1426 | splash_image_def.xml 1427 | AndroidSplashImageDef 1428 | 1 1429 | 1430 | 1431 | True 1432 | 1433 | 1434 | FrostGlassDemo\library\lib\armeabi\ 1435 | libFrostGlassDemo.so 1436 | AndroidLibnativeArmeabiFile 1437 | 1 1438 | 1439 | 1440 | True 1441 | 1442 | 1443 | FrostGlassDemo\library\lib\mips\ 1444 | libFrostGlassDemo.so 1445 | AndroidLibnativeMipsFile 1446 | 1 1447 | 1448 | 1449 | True 1450 | 1451 | 1452 | 1453 | 1454 | FrostGlassDemo.app\ 1455 | FM_ApplicationIcon_144x144.png 1456 | iPad_AppIcon144 1457 | 0 1458 | 1459 | 1460 | True 1461 | 1462 | 1463 | FrostGlassDemo.app\ 1464 | FM_ApplicationIcon_144x144.png 1465 | iPad_AppIcon144 1466 | 0 1467 | 1468 | 1469 | True 1470 | 1471 | 1472 | FrostGlassDemo.app\ 1473 | FM_ApplicationIcon_120x120.png 1474 | iPhone_AppIcon120 1475 | 0 1476 | 1477 | 1478 | True 1479 | 1480 | 1481 | FrostGlassDemo.app\ 1482 | FM_ApplicationIcon_152x152.png 1483 | iPad_AppIcon152 1484 | 0 1485 | 1486 | 1487 | True 1488 | 1489 | 1490 | FrostGlassDemo.app\ 1491 | FM_SpotlightSearchIcon_80x80.png 1492 | iPad_SpotLight80 1493 | 0 1494 | 1495 | 1496 | True 1497 | 1498 | 1499 | FrostGlassDemo.app\ 1500 | Default-736h@3x.png 1501 | iPhone_Launch1242 1502 | 0 1503 | 1504 | 1505 | True 1506 | 1507 | 1508 | FrostGlassDemo.app\ 1509 | FM_ApplicationIcon_72x72.png 1510 | iPad_AppIcon72 1511 | 0 1512 | 1513 | 1514 | True 1515 | 1516 | 1517 | FrostGlassDemo.app\ 1518 | libcgunwind.1.0.dylib 1519 | DependencyModule 1520 | 1 1521 | 1522 | 1523 | True 1524 | 1525 | 1526 | FrostGlassDemo.app\ 1527 | Default-Portrait~ipad.png 1528 | iPad_Launch768x1024 1529 | 0 1530 | 1531 | 1532 | True 1533 | 1534 | 1535 | FrostGlassDemo.app\ 1536 | Default-Landscape@2x.png 1537 | iPad_Launch2048 1538 | 1 1539 | 1540 | 1541 | True 1542 | 1543 | 1544 | FrostGlassDemo.app\ 1545 | Default@2x.png 1546 | iPhone_Launch640 1547 | 1 1548 | 1549 | 1550 | True 1551 | 1552 | 1553 | FrostGlassDemo.app\ 1554 | FM_SpotlightSearchIcon_40x40.png 1555 | iPhone_Spotlight40 1556 | 0 1557 | 1558 | 1559 | True 1560 | 1561 | 1562 | FrostGlassDemo.app\ 1563 | Default.png 1564 | iPhone_Launch320 1565 | 1 1566 | 1567 | 1568 | True 1569 | 1570 | 1571 | FrostGlassDemo.app\ 1572 | FM_ApplicationIcon_180x180.png 1573 | iPhone_AppIcon180 1574 | 0 1575 | 1576 | 1577 | True 1578 | 1579 | 1580 | FrostGlassDemo.app\ 1581 | FM_ApplicationIcon_180x180.png 1582 | iPhone_AppIcon180 1583 | 0 1584 | 1585 | 1586 | True 1587 | 1588 | 1589 | FrostGlassDemo.app\ 1590 | FM_SettingIcon_58x58.png 1591 | iPad_Setting58 1592 | 0 1593 | 1594 | 1595 | True 1596 | 1597 | 1598 | FrostGlassDemo.app\ 1599 | Default@2x.png 1600 | iPhone_Launch640 1601 | 1 1602 | 1603 | 1604 | True 1605 | 1606 | 1607 | FrostGlassDemo.app\ 1608 | Default-Portrait@2x~ipad.png 1609 | iPad_Launch1536x2048 1610 | 0 1611 | 1612 | 1613 | True 1614 | 1615 | 1616 | FrostGlassDemo.app\ 1617 | FM_SpotlightSearchIcon_80x80.png 1618 | iPad_SpotLight80 1619 | 0 1620 | 1621 | 1622 | True 1623 | 1624 | 1625 | FrostGlassDemo.app\ 1626 | FM_SpotlightSearchIcon_100x100.png 1627 | iPad_SpotLight100 1628 | 0 1629 | 1630 | 1631 | True 1632 | 1633 | 1634 | FrostGlassDemo.app\ 1635 | FM_ApplicationIcon_120x120.png 1636 | iPhone_AppIcon120 1637 | 0 1638 | 1639 | 1640 | True 1641 | 1642 | 1643 | FrostGlassDemo.app\ 1644 | FrostGlassDemo 1645 | ProjectOutput 1646 | 1 1647 | 1648 | 1649 | True 1650 | True 1651 | 1652 | 1653 | FrostGlassDemo.app\ 1654 | FM_SpotlightSearchIcon_50x50.png 1655 | iPad_SpotLight50 1656 | 0 1657 | 1658 | 1659 | True 1660 | 1661 | 1662 | FrostGlassDemo.app\ 1663 | FM_SpotlightSearchIcon_29x29.png 1664 | iPhone_Spotlight29 1665 | 0 1666 | 1667 | 1668 | True 1669 | 1670 | 1671 | FrostGlassDemo.app\ 1672 | Default-568h@2x.png 1673 | iPhone_Launch640x1136 1674 | 1 1675 | 1676 | 1677 | True 1678 | 1679 | 1680 | FrostGlassDemo.app\ 1681 | FrostGlassDemo 1682 | ProjectOutput 1683 | 1 1684 | 1685 | 1686 | True 1687 | True 1688 | 1689 | 1690 | FrostGlassDemo.app\ 1691 | FM_ApplicationIcon_87x87.png 1692 | iPhone_AppIcon87 1693 | 0 1694 | 1695 | 1696 | True 1697 | 1698 | 1699 | FrostGlassDemo.app\ 1700 | FM_ApplicationIcon_60x60.png 1701 | iPhone_AppIcon60 1702 | 0 1703 | 1704 | 1705 | True 1706 | 1707 | 1708 | FrostGlassDemo.app\ 1709 | Info.plist 1710 | ProjectiOSInfoPList 1711 | 1 1712 | 1713 | 1714 | True 1715 | 1716 | 1717 | FrostGlassDemo.app\ 1718 | FM_ApplicationIcon_152x152.png 1719 | iPad_AppIcon152 1720 | 0 1721 | 1722 | 1723 | True 1724 | 1725 | 1726 | FrostGlassDemo.app\ 1727 | Default-Portrait@2x.png 1728 | iPad_Launch1536 1729 | 1 1730 | 1731 | 1732 | True 1733 | 1734 | 1735 | FrostGlassDemo.app\ 1736 | Default-Landscape-736h@3x.png 1737 | iPhone_Launch2208 1738 | 0 1739 | 1740 | 1741 | True 1742 | 1743 | 1744 | FrostGlassDemo.app\ 1745 | FM_ApplicationIcon_114x114.png 1746 | iPhone_AppIcon114 1747 | 0 1748 | 1749 | 1750 | True 1751 | 1752 | 1753 | FrostGlassDemo.app\ 1754 | Default-Landscape@2x~ipad.png 1755 | iPad_Launch2048x1536 1756 | 0 1757 | 1758 | 1759 | True 1760 | 1761 | 1762 | FrostGlassDemo.app\ 1763 | libPCRE.dylib 1764 | DependencyModule 1765 | 1 1766 | 1767 | 1768 | True 1769 | 1770 | 1771 | FrostGlassDemo.app\ 1772 | FM_SpotlightSearchIcon_50x50.png 1773 | iPad_SpotLight50 1774 | 0 1775 | 1776 | 1777 | True 1778 | 1779 | 1780 | FrostGlassDemo.app\ 1781 | FM_ApplicationIcon_57x57.png 1782 | iPhone_AppIcon57 1783 | 0 1784 | 1785 | 1786 | True 1787 | 1788 | 1789 | FrostGlassDemo.app\ 1790 | FM_ApplicationIcon_57x57.png 1791 | iPhone_AppIcon57 1792 | 0 1793 | 1794 | 1795 | True 1796 | 1797 | 1798 | FrostGlassDemo.app\ 1799 | FM_SpotlightSearchIcon_29x29.png 1800 | iPhone_Spotlight29 1801 | 0 1802 | 1803 | 1804 | True 1805 | 1806 | 1807 | FrostGlassDemo.app\ 1808 | FM_SettingIcon_29x29.png 1809 | iPad_Setting29 1810 | 0 1811 | 1812 | 1813 | True 1814 | 1815 | 1816 | FrostGlassDemo.app\ 1817 | Default~ipad.png 1818 | iPad_Launch768 1819 | 1 1820 | 1821 | 1822 | True 1823 | 1824 | 1825 | FrostGlassDemo.app\ 1826 | FM_SpotlightSearchIcon_58x58.png 1827 | iPhone_Spotlight58 1828 | 0 1829 | 1830 | 1831 | True 1832 | 1833 | 1834 | FrostGlassDemo.app\ 1835 | FM_SpotlightSearchIcon_100x100.png 1836 | iPad_SpotLight100 1837 | 0 1838 | 1839 | 1840 | True 1841 | 1842 | 1843 | FrostGlassDemo.app\ 1844 | FM_SpotlightSearchIcon_58x58.png 1845 | iPhone_Spotlight58 1846 | 0 1847 | 1848 | 1849 | True 1850 | 1851 | 1852 | FrostGlassDemo.app\ 1853 | FM_ApplicationIcon_114x114.png 1854 | iPhone_AppIcon114 1855 | 0 1856 | 1857 | 1858 | True 1859 | 1860 | 1861 | FrostGlassDemo.app\ 1862 | Default-Landscape@2x~ipad.png 1863 | iPad_Launch2048x1536 1864 | 0 1865 | 1866 | 1867 | True 1868 | 1869 | 1870 | FrostGlassDemo.app\ 1871 | FM_SpotlightSearchIcon_40x40.png 1872 | iPhone_Spotlight40 1873 | 0 1874 | 1875 | 1876 | True 1877 | 1878 | 1879 | FrostGlassDemo.app\ 1880 | Default-667h@2x.png 1881 | iPhone_Launch750 1882 | 0 1883 | 1884 | 1885 | True 1886 | 1887 | 1888 | FrostGlassDemo.app\ 1889 | FrostGlassDemo.entitlements 1890 | ProjectiOSEntitlements 1891 | 0 1892 | 1893 | 1894 | True 1895 | 1896 | 1897 | FrostGlassDemo.app\ 1898 | FM_SettingIcon_29x29.png 1899 | iPad_Setting29 1900 | 0 1901 | 1902 | 1903 | True 1904 | 1905 | 1906 | FrostGlassDemo.app\ 1907 | FM_SpotlightSearchIcon_40x40.png 1908 | iPad_SpotLight40 1909 | 0 1910 | 1911 | 1912 | True 1913 | 1914 | 1915 | FrostGlassDemo.app\ 1916 | FM_ApplicationIcon_87x87.png 1917 | iPhone_AppIcon87 1918 | 0 1919 | 1920 | 1921 | True 1922 | 1923 | 1924 | FrostGlassDemo.app\ 1925 | FrostGlassDemo.entitlements 1926 | ProjectiOSEntitlements 1927 | 0 1928 | 1929 | 1930 | True 1931 | 1932 | 1933 | FrostGlassDemo.app\ 1934 | FM_ApplicationIcon_72x72.png 1935 | iPad_AppIcon72 1936 | 0 1937 | 1938 | 1939 | True 1940 | 1941 | 1942 | FrostGlassDemo.app\ 1943 | Default-667h@2x.png 1944 | iPhone_Launch750 1945 | 0 1946 | 1947 | 1948 | True 1949 | 1950 | 1951 | FrostGlassDemo.app\ 1952 | FM_SpotlightSearchIcon_80x80.png 1953 | iPhone_Spotlight80 1954 | 0 1955 | 1956 | 1957 | True 1958 | 1959 | 1960 | FrostGlassDemo.app\ 1961 | Default-568h@2x.png 1962 | iPhone_Launch640x1136 1963 | 1 1964 | 1965 | 1966 | True 1967 | 1968 | 1969 | FrostGlassDemo.app\ 1970 | Default-Landscape.png 1971 | iPad_Launch1024 1972 | 1 1973 | 1974 | 1975 | True 1976 | 1977 | 1978 | FrostGlassDemo.app\ 1979 | Default-Landscape~ipad.png 1980 | iPad_Launch1024x768 1981 | 0 1982 | 1983 | 1984 | True 1985 | 1986 | 1987 | FrostGlassDemo.app\ 1988 | Info.plist 1989 | ProjectiOSInfoPList 1990 | 1 1991 | 1992 | 1993 | True 1994 | 1995 | 1996 | FrostGlassDemo.app\ 1997 | FM_SpotlightSearchIcon_40x40.png 1998 | iPad_SpotLight40 1999 | 0 2000 | 2001 | 2002 | True 2003 | 2004 | 2005 | FrostGlassDemo.app\ 2006 | FM_ApplicationIcon_60x60.png 2007 | iPhone_AppIcon60 2008 | 0 2009 | 2010 | 2011 | True 2012 | 2013 | 2014 | FrostGlassDemo.app\ 2015 | Default-Portrait@2x.png 2016 | iPad_Launch1536 2017 | 1 2018 | 2019 | 2020 | True 2021 | 2022 | 2023 | FrostGlassDemo.app\ 2024 | Default-736h@3x.png 2025 | iPhone_Launch1242 2026 | 0 2027 | 2028 | 2029 | True 2030 | 2031 | 2032 | FrostGlassDemo.app\ 2033 | Default~ipad.png 2034 | iPad_Launch768 2035 | 1 2036 | 2037 | 2038 | True 2039 | 2040 | 2041 | FrostGlassDemo.app\ 2042 | FM_SettingIcon_58x58.png 2043 | iPad_Setting58 2044 | 0 2045 | 2046 | 2047 | True 2048 | 2049 | 2050 | FrostGlassDemo.app\ 2051 | Default.png 2052 | iPhone_Launch320 2053 | 1 2054 | 2055 | 2056 | True 2057 | 2058 | 2059 | FrostGlassDemo.app\ 2060 | FM_ApplicationIcon_76x76.png 2061 | iPad_AppIcon76 2062 | 0 2063 | 2064 | 2065 | True 2066 | 2067 | 2068 | FrostGlassDemo.app\ 2069 | Default-Landscape~ipad.png 2070 | iPad_Launch1024x768 2071 | 0 2072 | 2073 | 2074 | True 2075 | 2076 | 2077 | FrostGlassDemo.app\ 2078 | FM_SpotlightSearchIcon_80x80.png 2079 | iPhone_Spotlight80 2080 | 0 2081 | 2082 | 2083 | True 2084 | 2085 | 2086 | FrostGlassDemo.app\ 2087 | FM_ApplicationIcon_76x76.png 2088 | iPad_AppIcon76 2089 | 0 2090 | 2091 | 2092 | True 2093 | 2094 | 2095 | FrostGlassDemo.app\ 2096 | Default-Landscape.png 2097 | iPad_Launch1024 2098 | 1 2099 | 2100 | 2101 | True 2102 | 2103 | 2104 | FrostGlassDemo.app\ 2105 | Default-Landscape-736h@3x.png 2106 | iPhone_Launch2208 2107 | 0 2108 | 2109 | 2110 | True 2111 | 2112 | 2113 | FrostGlassDemo.app\ 2114 | Default-Portrait@2x~ipad.png 2115 | iPad_Launch1536x2048 2116 | 0 2117 | 2118 | 2119 | True 2120 | 2121 | 2122 | FrostGlassDemo.app\ 2123 | Default-Landscape@2x.png 2124 | iPad_Launch2048 2125 | 1 2126 | 2127 | 2128 | True 2129 | 2130 | 2131 | FrostGlassDemo.app\ 2132 | Default-Portrait~ipad.png 2133 | iPad_Launch768x1024 2134 | 0 2135 | 2136 | 2137 | True 2138 | 2139 | 2140 | 2141 | --------------------------------------------------------------------------------